отключение флешки без umount

classic Classic list List threaded Threaded
16 messages Options
Reply | Threaded
Open this post in threaded view
|

отключение флешки без umount

Alex Efros-4
Hi!

Возникла идея сделать авто-подключение и отключение флешки через udev.
Но чтобы её можно было безопасно выдёргивать без ручного отмонтирования,
её нужно монтировать с опцией sync. Я сейчас это немного потестировал,
и получается, что скорость копирования на флешку подключенную с sync
чуть ли не в 70 раз медленнее - т.е. тормозит до состояния неюзабельности.

Это не баг, так всё и должно быть? Если да, то делать автомонтирование
флешки при том, что отмонтировать всё-равно нужно будет ручками смысла нет.

--
                        WBR, Alex.

Reply | Threaded
Open this post in threaded view
|

Re: [gentoo-user-ru] отключение флешки без umount

Aleksandr Dezhin
27 мая 2012 г., 20:33 пользователь Alex Efros <[hidden email]> написал:
Возникла идея сделать авто-подключение и отключение флешки через udev.
Но чтобы её можно было безопасно выдёргивать без ручного отмонтирования,
её нужно монтировать с опцией sync. Я сейчас это немного потестировал,
и получается, что скорость копирования на флешку подключенную с sync
чуть ли не в 70 раз медленнее - т.е. тормозит до состояния неюзабельности.

Какие получились абсолютные значения скоростей? Насколько я помню, копирование на флешку без sync по началу происходит со скоростью существенно превышающей скорость самой флешки, то есть в некий буфер. Потом скорость сильно падает. Если сравнивать со скоростью копирования в этот буфер, то вполне нормален и 70 кратный выигрыш.
Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Mad Deer
In reply to this post by Alex Efros-4
On 27.05.2012 16:33, Alex Efros wrote:

> Hi!
>
> Возникла идея сделать авто-подключение и отключение флешки через udev.
> Но чтобы её можно было безопасно выдёргивать без ручного отмонтирования,
> её нужно монтировать с опцией sync. Я сейчас это немного потестировал,
> и получается, что скорость копирования на флешку подключенную с sync
> чуть ли не в 70 раз медленнее - т.е. тормозит до состояния неюзабельности.
>
> Это не баг, так всё и должно быть? Если да, то делать автомонтирование
> флешки при том, что отмонтировать всё-равно нужно будет ручками смысла нет.
>
для vfat есть опция flush
man mount
        flush  If set, the filesystem will try to flush to disk more early than
               normal.  Not set by default.
и отслеживать по лампочке на флешке :)

--
Да здравствует то, благодаря чему мы, несмотря ни на что.(c) Задорнов
Registered Linux User #317544
Linux 3.2.12-gentoo i686 AMD Phenom(tm) II X4 810 Processor

Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Nikolay Ostanen
In reply to this post by Alex Efros-4
> Hi!
>
> Возникла идея сделать авто-подключение и отключение флешки через udev.
> Но чтобы её можно было безопасно выдёргивать без ручного
> отмонтирования, её нужно монтировать с опцией sync. Я сейчас это
> немного потестировал, и получается, что скорость копирования на
> флешку подключенную с sync чуть ли не в 70 раз медленнее - т.е.
> тормозит до состояния неюзабельности.
>
> Это не баг, так всё и должно быть? Если да, то делать автомонтирование
> флешки при том, что отмонтировать всё-равно нужно будет ручками
> смысла нет.
>

Монтирую-размонтирую так: http://daath.tk/conf/udev
Пишу sync перед тем, как выдернуть флешку (вполне можно на хоткей
повесить). Проблем не обнаружено.


--
# Nikolay Ostanen
# http://daath.tk

Reply | Threaded
Open this post in threaded view
|

Re: Re: [gentoo-user-ru] отключение флешки без umount

Alex Efros-4
In reply to this post by Aleksandr Dezhin
Hi!

On Mon, May 28, 2012 at 12:19:07AM +0400, Aleksandr Dezhin wrote:
> Какие получились абсолютные значения скоростей? Насколько я помню,
> копирование на флешку без sync по началу происходит со скоростью
> существенно превышающей скорость самой флешки, то есть в некий буфер. Потом
> скорость сильно падает. Если сравнивать со скоростью копирования в этот
> буфер, то вполне нормален и 70 кратный выигрыш.

Вот так:

# time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp1.iso; time umount /mnt/usb/

real    0m6.632s
user    0m0.005s
sys     0m0.819s

real    1m14.152s
user    0m0.000s
sys     0m0.160s

# time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp2.iso; time umount /mnt/usb/

real    83m13.344s
user    0m0.028s
sys     0m11.239s

real    0m0.177s
user    0m0.000s
sys     0m0.166s

Первая попытка без sync - время в основном ушло на umount - вторая с sync -
время ушло на cp. Размер образа 729067520 байт делю на суммарное cp+umount
время и получаю скорость. Примерно 9MB/sec в первом случае, и 150KB/sec во
втором. Это разница в 60 раз!

Более того, даже при использовании dd с большим значением bs= вместо cp
скорость при sync остаётся равной 150KB/sec вне зависимости от размера
буфера dd - хотя теоретически при большом размере буфера с sync скорость
должна быть не намного медленнее чем без sync (если предполагать, что при
sync вызов write(2) блокируется пока данные не будут физически записаны,
и никаких других эффектов от него нет, то использование больших буферов
при вызове write(2) должно для производительности давать схожий эффект с
отложенной записью, используемой без sync).

--
                        WBR, Alex.

Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Alex Efros-4
In reply to this post by Nikolay Ostanen
Hi!

On Mon, May 28, 2012 at 01:13:52AM +0400, Nikolay Ostanen wrote:
> Монтирую-размонтирую так: http://daath.tk/conf/udev
> Пишу sync перед тем, как выдернуть флешку (вполне можно на хоткей
> повесить). Проблем не обнаружено.

А с чего им взяться? При таком подходе никакой разницы делать sync или umount.
Точнее, umount делать правильнее - во-первых при umount будут сброшены
только относящиеся к флешке буфера, а не вообще все, а во-вторых выход
umount даёт гарантию, что никто не начнёт писать на флешку между выходом
sync и её вытаскиванием.

Мне просто хочется воткнуть флешку, скопировать файл, и как только команда
cp или окно копирования в mc завершатся - безопасно вытащить флешку, не
делая никаких дополнительных команд вроде sync или umount. А для этого
нужен mount -o sync.

--
                        WBR, Alex.

Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Alex Efros-4
In reply to this post by Mad Deer
Hi!

On Mon, May 28, 2012 at 12:18:31AM +0000, Mad Deer wrote:
> для vfat есть опция flush
> man mount
>         flush  If set, the filesystem will try to flush to disk more early than
>                normal.  Not set by default.
> и отслеживать по лампочке на флешке :)

Спасибо, надо будет попробовать. Но flush всё-таки не sync, он не даёт
никаких гарантий что лампочка погасла потому, что всё записалось, а не
потому, что система очень занята другими задачами.

--
                        WBR, Alex.

Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Alex Efros-4
Hi!

On Mon, May 28, 2012 at 12:33:11AM +0300, Alex Efros wrote:
> > для vfat есть опция flush
> > man mount
> >         flush  If set, the filesystem will try to flush to disk more early than
> >                normal.  Not set by default.
> > и отслеживать по лампочке на флешке :)
> Спасибо, надо будет попробовать. Но flush всё-таки не sync, он не даёт
> никаких гарантий что лампочка погасла потому, что всё записалось, а не
> потому, что система очень занята другими задачами.

Кстати, действительно, работает весьма неплохо. Скорость 6MB/sec вместо 9MB/sec,
с этим уже можно жить.

# time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp1.iso; sleep 3; time umount /mnt/usb/

real    1m54.737s
user    0m0.002s
sys     0m0.539s

real    0m0.170s
user    0m0.000s
sys     0m0.158s

Жаль, что эта опция поддерживается только для FAT.

--
                        WBR, Alex.

Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Vanush "Misha" Paturyan
In reply to this post by Alex Efros-4
On Mon, 28 May 2012 00:22:07 +0300 Alex Efros <[hidden email]>
wrote:

> Hi!
>
> On Mon, May 28, 2012 at 12:19:07AM +0400, Aleksandr Dezhin wrote:
> > Какие получились абсолютные значения скоростей? Насколько я помню,
> > копирование на флешку без sync по началу происходит со скоростью
> > существенно превышающей скорость самой флешки, то есть в некий
> > буфер. Потом скорость сильно падает. Если сравнивать со скоростью
> > копирования в этот буфер, то вполне нормален и 70 кратный выигрыш.  
>
> Вот так:
>
> # time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp1.iso; time
> umount /mnt/usb/
>
> real    0m6.632s
> user    0m0.005s
> sys     0m0.819s
>
> real    1m14.152s
> user    0m0.000s
> sys     0m0.160s
>
> # time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp2.iso; time
> umount /mnt/usb/
>
> real    83m13.344s
> user    0m0.028s
> sys     0m11.239s
>
> real    0m0.177s
> user    0m0.000s
> sys     0m0.166s
>
> Первая попытка без sync - время в основном ушло на umount - вторая с
> sync - время ушло на cp. Размер образа 729067520 байт делю на
> суммарное cp+umount время и получаю скорость. Примерно 9MB/sec в
> первом случае, и 150KB/sec во втором. Это разница в 60 раз!

А можно поопросить при всем при этом в другом окне запустить "iostat
1" (из app-admin/sysstat) и проследить за avg-cpu, где CPU дольше всего
"живет?" Если в обоих случаях в %iowait - значит все работает "как
задуманно" (хотя странно что при sync все настолько тормозится, по
логике не должно вроде как). Если в случае с sync-ом %idle подпрыгивает
значит где-то что-то не совсем правильно работает.

Миша.


--
Vanush "Misha" Paturyan
Senior Technical Officer
Room 1.37
Computer Science Department
NUI Maynooth

Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Alex Efros-4
In reply to this post by Alex Efros-4
Hi!

Всем спасибо за помощь. Вот, что получилось в результате:


--- /etc/udev/rules.d/99-usb-automount.rules ---

# Allow user mount/umount (set device owner and use 'owner' option in fstab).
# Create mount point directories for vfat/ext2/ext3/ext4/ntfs partitions.
# Create symlinks using partition label (overwrite duplicates).
# Auto-mount vfat with 'flush' option.
# No auto-mount for other filesystems (because there is NO SAFE auto-unmount).
# Auto-unmount vfat/ext2/ext3/ext4/ntfs and cleanup directories/symlinks.

ENV{mount_user}="powerman"
ENV{mount_path}="/mnt"

KERNEL=="sd*", DRIVERS=="usb-storage", ENV{ID_FS_TYPE}!="", \
    OWNER="%E{mount_user}", \
    ENV{mount_point}="usb.%k"

ACTION=="add",    ENV{mount_point}!="", ENV{ID_FS_TYPE}=="vfat", \
    ENV{mount_fs}="vfat", \
    ENV{mount_opts}="flush,owner,umask=007,showexec,quiet"
ACTION=="add",    ENV{mount_point}!="", ENV{ID_FS_TYPE}=="ext2|ext3|ext4", \
    ENV{mount_fs}="%E{ID_FS_TYPE}", \
    ENV{mount_opts}="owner"
ACTION=="add",    ENV{mount_point}!="", ENV{ID_FS_TYPE}=="ntfs", \
    ENV{mount_fs}="ntfs-3g", \
    ENV{mount_opts}="owner,umask=007,fmask=111"

ACTION=="add",    ENV{mount_point}!="", \
    RUN+="/bin/mkdir -p %E{mount_path}/%E{mount_point}", \
    RUN+="/bin/sed -i.bak '$a/dev/%k %E{mount_path}/%E{mount_point} %E{mount_fs} %E{mount_opts} 0 0' /etc/fstab"
ACTION=="add",    ENV{mount_point}!="", ENV{ID_FS_TYPE}=="vfat", \
    RUN+="/usr/bin/sudo -u %E{mount_user} /bin/mount %E{mount_path}/%E{mount_point}", \
    RUN+="/usr/bin/sudo -u %E{mount_user} /usr/bin/env DISPLAY=:0 /usr/bin/notify-send -t 2500 -u normal -i /usr/share/icons/oxygen/48x48/devices/drive-removable-media-usb-pendrive.png 'USB Flash automounted' '%E{mount_point}\n%E{ID_FS_LABEL}'"
ACTION=="remove", ENV{mount_point}!="", \
    RUN+="/bin/umount -l %E{mount_path}/%E{mount_point}", \
    RUN+="/bin/sed -i.bak '/^\/dev\/%k \S\+\/%E{mount_point} /d' /etc/fstab", \
    RUN+="/bin/rmdir %E{mount_path}/%E{mount_point}", \
    RUN+="/usr/bin/sudo -u %E{mount_user} /usr/bin/env DISPLAY=:0 /usr/bin/notify-send -t 1000 -u normal -i /usr/share/icons/oxygen/48x48/devices/drive-removable-media-usb-pendrive.png 'USB Flash disconnected' '%E{mount_point}\n%E{ID_FS_LABEL}'"

ACTION=="add",    ENV{mount_point}!="", ENV{ID_FS_LABEL}!="", \
    RUN+="/bin/ln -nsf %E{mount_point} %E{mount_path}/%E{ID_FS_LABEL}"
ACTION=="remove", ENV{mount_point}!="", ENV{ID_FS_LABEL}!="", \
    RUN+="/bin/rm %E{mount_path}/%E{ID_FS_LABEL}"

--- /etc/udev/rules.d/99-usb-automount.rules ---


P.S. В процессе отладки после частого подключения/отключения разных флешек
два раза что-то ломалось в ядре и оно переставало реагировать на
подключение/отключение флешек, приходилось перегружаться. Не думаю, что
это вызвано моими правилами udev, скорее это просто баг в ядре. "Умирало"
оно оба раза в момент подключения флешки, и последние сообщения в логе
касающиеся usb были примерно такие:

2012-05-28_11:33:15.40111 kern.info: usb 2-1.1: new high-speed USB device number 118 using ehci_hcd
2012-05-28_11:33:15.48422 kern.err: ehci_hcd 0000:00:1d.0: fatal error
2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: HC died; cleaning up
2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: force halt; handshake ffffc9000002e024 00004000 00004000 -> -110
2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: HC died; cleaning up
2012-05-28_11:33:15.49011 kern.err: usb 2-1.1: device descriptor read/all, error -108
2012-05-28_11:33:15.49013 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
2012-05-28_11:33:15.49013 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: unable to enumerate USB device on port 1
2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
2012-05-28_11:33:15.49016 kern.info: usb 2-1: USB disconnect, device number 2

Не знаю, куда можно этот баг отправить, т.к. по желанию его воспроизвести
не получается. Да и ядро 3.2.11-hardened - далеко не последняя версия,
может в более новых это уже пофиксили.

--
                        WBR, Alex.

Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Alex Efros-4
In reply to this post by Vanush "Misha" Paturyan
Hi!

On Mon, May 28, 2012 at 03:15:42PM +0100, Vanush Misha Paturyan wrote:

> > # time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp1.iso; time
> > umount /mnt/usb/
> >
> > real    0m6.632s
> > user    0m0.005s
> > sys     0m0.819s
> >
> > real    1m14.152s
> > user    0m0.000s
> > sys     0m0.160s
> А можно поопросить при всем при этом в другом окне запустить "iostat
> 1" (из app-admin/sysstat) и проследить за avg-cpu, где CPU дольше всего
> "живет?" Если в обоих случаях в %iowait - значит все работает "как
> задуманно" (хотя странно что при sync все настолько тормозится, по
> логике не должно вроде как). Если в случае с sync-ом %idle подпрыгивает
> значит где-то что-то не совсем правильно работает.

Учитывая отсталость FAT, я решил проверить sync с другими файловыми
системами.


EXT4: скорость записи 4.5MB/sec!

    # time cp /mnt/storage/iso/ubuntu-11.10-desktop-i386.iso /mnt/usb.sdb1/; time umount /mnt/usb.sdb1/

    real    2m42.545s
    user    0m0.029s
    sys     0m1.326s

    real    0m0.510s
    user    0m0.000s
    sys     0m0.066s

Вывод iostat в среднем такой:

    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
            0.37    0.00    0.37   12.23    0.00   87.02

    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda              36.00      4608.00         0.00       4608          0
    scd1              0.00         0.00         0.00          0          0
    sdb             435.00         0.00      8120.00          0       8120

Значение iowait ~12.5% - это фактически 100% одного ядра (у меня 8 ядер).
Не понятно, почему он показывает запись на sdb порядка 8MB/sec, это явно
некорректная цифра.

Что странно: после монтирования каждые несколько секунд мигает лампочка на
флешке, хотя никто ничего с флешкой не делает. Это какие-то внутренние
дела ext4, типа онлайн дефрагментации? Для флешки это не очень хорошо,
наверное.


EXT3: скорость записи 2.8MB/sec.

    # time cp /mnt/storage/iso/ubuntu-11.10-desktop-i386.iso /mnt/usb.sdb1/; time umount /mnt/usb.sdb1/

    real    4m6.232s
    user    0m0.025s
    sys     0m1.155s

    real    0m11.337s
    user    0m0.000s
    sys     0m0.068s

Вывод iowait примерно как для ext4, но если на ext4 в поле kB_wrtn/s всё
время выдавало примерно 8MB, то на ext3 наблюдаются постоянные колебания
между 700KB-2MB-3MB-4MB-5MB-6MB.

Что странно: очень долго отрабатывает umount. Даже в режиме flush на vfat
это занимает 2-3 секунды, а в режиме sync вообще не должно занимать время.


EXT2: скорость записи 600KB/sec.
Вывод iowait как на ext3, только колеблется между 600KB и 1.8MB.


NTFS-3G: скорость записи 225KB/sec.
Вывод iowait как на ext3, только колеблется между 600KB и 2MB.


VFAT: скорость записи 150KB/sec.
Вывод iowait как на ext3, только колеблется между 100KB и 280KB.


Резюмируя:
- sync на ext4 использовать можно, но смущает постоянная активность флешки
  (впрочем, активность есть и без sync)
- sync на ext3 вероятно поломан (судя по времени на umount)
- sync на ext2/ntfs/vfat не юзабелен из-за тормозов


P.S. И, кстати, максимальная скорость флешки оказалась не 9MB/sec, как я
раньше писал, а 11MB/sec (на ext4 без sync).

--
                        WBR, Alex.

Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Alex Efros-4
Hi!

Ещё одну странность обнаружил. Если скорость копирования файла cp и mc на
vfat+flush одинаковая (6MB/sec), то скорость копирования на ext4+sync
сильно отличается (4.5MB/sec у cp и 1.5MB/sec у mc).
Что навело на мысль поиграться с размером буфера с помощью dd.
И точно, при размере буфера 2MB мы получаем скорость копирования 11.5MB/sec!

--
                        WBR, Alex.

Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Vanush "Misha" Paturyan
In reply to this post by Alex Efros-4

On 28 May 2012, at 19:30, Alex Efros wrote:

> Hi!
>
> On Mon, May 28, 2012 at 03:15:42PM +0100, Vanush Misha Paturyan wrote:
>>> # time cp ubuntu-11.10-desktop-i386.iso /mnt/usb/tmp1.iso; time
>>> umount /mnt/usb/
>>>
>>> real    0m6.632s
>>> user    0m0.005s
>>> sys     0m0.819s
>>>
>>> real    1m14.152s
>>> user    0m0.000s
>>> sys     0m0.160s
>> А можно поопросить при всем при этом в другом окне запустить "iostat
>> 1" (из app-admin/sysstat) и проследить за avg-cpu, где CPU дольше всего
>> "живет?" Если в обоих случаях в %iowait - значит все работает "как
>> задуманно" (хотя странно что при sync все настолько тормозится, по
>> логике не должно вроде как). Если в случае с sync-ом %idle подпрыгивает
>> значит где-то что-то не совсем правильно работает.
>
> Учитывая отсталость FAT, я решил проверить sync с другими файловыми
> системами.
>
>
> EXT4: скорость записи 4.5MB/sec!
>
>    # time cp /mnt/storage/iso/ubuntu-11.10-desktop-i386.iso /mnt/usb.sdb1/; time umount /mnt/usb.sdb1/
>
>    real    2m42.545s
>    user    0m0.029s
>    sys     0m1.326s
>
>    real    0m0.510s
>    user    0m0.000s
>    sys     0m0.066s
>
> Вывод iostat в среднем такой:
>
>    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
>    0.37    0.00    0.37   12.23    0.00   87.02
>
>    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
>    sda              36.00      4608.00         0.00       4608          0
>    scd1              0.00         0.00         0.00          0          0
>    sdb             435.00         0.00      8120.00          0       8120
>
> Значение iowait ~12.5% - это фактически 100% одного ядра (у меня 8 ядер).
> Не понятно, почему он показывает запись на sdb порядка 8MB/sec, это явно
> некорректная цифра.
>
> Что странно: после монтирования каждые несколько секунд мигает лампочка на
> флешке, хотя никто ничего с флешкой не делает. Это какие-то внутренние
> дела ext4, типа онлайн дефрагментации? Для флешки это не очень хорошо,
> наверное.
>
Насколько я помню если это только чтение - то не страшно. Флешкам плохо когда
на них пишут (или стирают). Я всегда использую iostat когда мне надо проверить
активность на дисках, если кто нибудь знает альтернативы интересно было бы проверить
совпадает ли активность с миганием лампочки?

>
> EXT3: скорость записи 2.8MB/sec.
>
>    # time cp /mnt/storage/iso/ubuntu-11.10-desktop-i386.iso /mnt/usb.sdb1/; time umount /mnt/usb.sdb1/
>
>    real    4m6.232s
>    user    0m0.025s
>    sys     0m1.155s
>
>    real    0m11.337s
>    user    0m0.000s
>    sys     0m0.068s
>
> Вывод iowait примерно как для ext4, но если на ext4 в поле kB_wrtn/s всё
> время выдавало примерно 8MB, то на ext3 наблюдаются постоянные колебания
> между 700KB-2MB-3MB-4MB-5MB-6MB.
>

Похоже ext4 лучше всего работает с буферами в памяти?
с VFAT+sync возможно тормоза из-за необходимости обновлять две FAT таблицы
при записи каждого кластера информации. Если интересно то можно дальше
экспериментировать, меняя размер кластера файловой системы и/или размер сектора
(тогда в FAT будет меньше записей).

> Ещё одну странность обнаружил. Если скорость копирования файла cp и mc на
> vfat+flush одинаковая (6MB/sec), то скорость копирования на ext4+sync
> сильно отличается (4.5MB/sec у cp и 1.5MB/sec у mc).
> Что навело на мысль поиграться с размером буфера с помощью dd.
> И точно, при размере буфера 2MB мы получаем скорость копирования 11.5MB/sec!

А вот это уже баг в mc!

Миша.

---
Vanush "Misha" Paturyan
Senior Technical Officer
Computer Science Department
NUI Maynooth



Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Alex Efros-4
Hi!

On Mon, May 28, 2012 at 09:29:18PM +0100, Vanush Paturyan wrote:
> Насколько я помню если это только чтение - то не страшно. Флешкам плохо когда
> на них пишут (или стирают). Я всегда использую iostat когда мне надо проверить
> активность на дисках, если кто нибудь знает альтернативы интересно было бы проверить
> совпадает ли активность с миганием лампочки?

Было бы это чтение - оно бы давно закешировалось и не мигало. Так что это
точно запись. Впрочем, вот iostat, подряд 3 секунды:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.00    0.00    0.00   99.75

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
scd1              0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.12    0.00    0.37    0.00    0.00   99.50

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
scd1              0.00         0.00         0.00          0          0
sdb               1.00         0.00         4.00          0          4
--------------------------------------------^^^^

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.12    0.00    0.00   99.62

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
scd1              0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0

Впрочем, сейчас вроде бы это значительно реже происходит. Не знаю, что
изменилось. Тогда я просто отформатировал sdb1 в ext4, подключил, и увидел
регулярное (раз в 2-4 секунды) мигание. Несколько раз
отмонтировал/подмонтировал - убедился что оно не проходит. С тех пор эта
флешка многократно форматировалась во все возможные fs, в том числе
забивалась нулями. Сейчас в ext4 мигает крайне редко, можно сказать почти
вообще не мигает. Так что панику поднимать, наверное, смысла нет. Чем-то
оно занималось, а потом перестало. Настораживает, конечно, но не
смертельно. ;-)

> А вот это уже баг в mc!

Скорее, отсутствие фичи. Но тикет на увеличение размера буферов уже 2 года
висит.

--
                        WBR, Alex.

Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Ray Dudu
In reply to this post by Alex Efros-4
28.05.12 20:07, Alex Efros написав(ла):

> Hi!
>
> Всем спасибо за помощь. Вот, что получилось в результате:
>
>
> --- /etc/udev/rules.d/99-usb-automount.rules ---
>
> # Allow user mount/umount (set device owner and use 'owner' option in fstab).
> # Create mount point directories for vfat/ext2/ext3/ext4/ntfs partitions.
> # Create symlinks using partition label (overwrite duplicates).
> # Auto-mount vfat with 'flush' option.
> # No auto-mount for other filesystems (because there is NO SAFE auto-unmount).
> # Auto-unmount vfat/ext2/ext3/ext4/ntfs and cleanup directories/symlinks.
>
> ENV{mount_user}="powerman"
> ENV{mount_path}="/mnt"
>
> KERNEL=="sd*", DRIVERS=="usb-storage", ENV{ID_FS_TYPE}!="", \
>     OWNER="%E{mount_user}", \
>     ENV{mount_point}="usb.%k"
>
> ACTION=="add",    ENV{mount_point}!="", ENV{ID_FS_TYPE}=="vfat", \
>     ENV{mount_fs}="vfat", \
>     ENV{mount_opts}="flush,owner,umask=007,showexec,quiet"
> ACTION=="add",    ENV{mount_point}!="", ENV{ID_FS_TYPE}=="ext2|ext3|ext4", \
>     ENV{mount_fs}="%E{ID_FS_TYPE}", \
>     ENV{mount_opts}="owner"
> ACTION=="add",    ENV{mount_point}!="", ENV{ID_FS_TYPE}=="ntfs", \
>     ENV{mount_fs}="ntfs-3g", \
>     ENV{mount_opts}="owner,umask=007,fmask=111"
>
> ACTION=="add",    ENV{mount_point}!="", \
>     RUN+="/bin/mkdir -p %E{mount_path}/%E{mount_point}", \
>     RUN+="/bin/sed -i.bak '$a/dev/%k %E{mount_path}/%E{mount_point} %E{mount_fs} %E{mount_opts} 0 0' /etc/fstab"
> ACTION=="add",    ENV{mount_point}!="", ENV{ID_FS_TYPE}=="vfat", \
>     RUN+="/usr/bin/sudo -u %E{mount_user} /bin/mount %E{mount_path}/%E{mount_point}", \
>     RUN+="/usr/bin/sudo -u %E{mount_user} /usr/bin/env DISPLAY=:0 /usr/bin/notify-send -t 2500 -u normal -i /usr/share/icons/oxygen/48x48/devices/drive-removable-media-usb-pendrive.png 'USB Flash automounted' '%E{mount_point}\n%E{ID_FS_LABEL}'"
> ACTION=="remove", ENV{mount_point}!="", \
>     RUN+="/bin/umount -l %E{mount_path}/%E{mount_point}", \
>     RUN+="/bin/sed -i.bak '/^\/dev\/%k \S\+\/%E{mount_point} /d' /etc/fstab", \
>     RUN+="/bin/rmdir %E{mount_path}/%E{mount_point}", \
>     RUN+="/usr/bin/sudo -u %E{mount_user} /usr/bin/env DISPLAY=:0 /usr/bin/notify-send -t 1000 -u normal -i /usr/share/icons/oxygen/48x48/devices/drive-removable-media-usb-pendrive.png 'USB Flash disconnected' '%E{mount_point}\n%E{ID_FS_LABEL}'"
>
> ACTION=="add",    ENV{mount_point}!="", ENV{ID_FS_LABEL}!="", \
>     RUN+="/bin/ln -nsf %E{mount_point} %E{mount_path}/%E{ID_FS_LABEL}"
> ACTION=="remove", ENV{mount_point}!="", ENV{ID_FS_LABEL}!="", \
>     RUN+="/bin/rm %E{mount_path}/%E{ID_FS_LABEL}"
>
> --- /etc/udev/rules.d/99-usb-automount.rules ---
>
>
> P.S. В процессе отладки после частого подключения/отключения разных флешек
> два раза что-то ломалось в ядре и оно переставало реагировать на
> подключение/отключение флешек, приходилось перегружаться. Не думаю, что
> это вызвано моими правилами udev, скорее это просто баг в ядре. "Умирало"
> оно оба раза в момент подключения флешки, и последние сообщения в логе
> касающиеся usb были примерно такие:
>
> 2012-05-28_11:33:15.40111 kern.info: usb 2-1.1: new high-speed USB device number 118 using ehci_hcd
> 2012-05-28_11:33:15.48422 kern.err: ehci_hcd 0000:00:1d.0: fatal error
> 2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: HC died; cleaning up
> 2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: force halt; handshake ffffc9000002e024 00004000 00004000 -> -110
> 2012-05-28_11:33:15.48423 kern.err: ehci_hcd 0000:00:1d.0: HC died; cleaning up
> 2012-05-28_11:33:15.49011 kern.err: usb 2-1.1: device descriptor read/all, error -108
> 2012-05-28_11:33:15.49013 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
> 2012-05-28_11:33:15.49013 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
> 2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
> 2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
> 2012-05-28_11:33:15.49014 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
> 2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot reset port 1 (err = -19)
> 2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
> 2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: unable to enumerate USB device on port 1
> 2012-05-28_11:33:15.49015 kern.err: hub 2-1:1.0: cannot disable port 1 (err = -19)
> 2012-05-28_11:33:15.49016 kern.info: usb 2-1: USB disconnect, device number 2
>
> Не знаю, куда можно этот баг отправить, т.к. по желанию его воспроизвести
> не получается. Да и ядро 3.2.11-hardened - далеко не последняя версия,
> может в более новых это уже пофиксили.
>
Натыкались на такую же проблему на работе. Это баг в ядре. Нашли и
сделали патч. Если интерестно, могу поискать и выслать.

--
Kind regards,
RD18-UANIC


Reply | Threaded
Open this post in threaded view
|

Re: отключение флешки без umount

Alex Efros-4
Hi!

On Thu, May 31, 2012 at 12:01:31AM +0300, Ray Dudu wrote:
> > Не знаю, куда можно этот баг отправить, т.к. по желанию его воспроизвести
> > не получается. Да и ядро 3.2.11-hardened - далеко не последняя версия,
> > может в более новых это уже пофиксили.
> Натыкались на такую же проблему на работе. Это баг в ядре. Нашли и
> сделали патч. Если интерестно, могу поискать и выслать.

Да, конечно, интересно. Лучше всего ссылку на багтрекер генту/ядра/куда вы
его отправили, чтобы отслеживать прогресс.

--
                        WBR, Alex.