У меня есть флешка USB 2.0. Отформатировал ее в ext4. Пытался записать файлы общим объемом несколько гигабайт. Пробовал записывать как множество небольших файлов, размером от нескольких мегабайт до нескольких десятков мегабайт, так и большие, в несколько гигабайт. Всегда картина одинаковая: вначале скорость копирования очень высокая, но после копирования примерно половины гигабайта скорость резко падает. Я знаю, что это USB 2.0, я знаю, что первоначальная скорость копирования - это копирование куда-то в буфер, но скорость около 500 KiB/s мне кажется это ненормально. Кроме того, часто копирование вообще приостанавливается надолго, может быть навсегда, - у меня не хватало терпения и я выдергивал флешку после 10 минут ожидания. Даже если копирование завершилось удачно, флешку еще долго после этого не удается отмонтировать.
Для сравнения, гораздо более древняя флешка, форматированная в mbr/fat32 записывает те же файлы в разы быстрее. Я думал, что мне попалась бракованая и купил другую, с USB 3.0, но с ней точно такая же картина: скорость записи на линуксовые файловые системы (ext4, xfs) крайне низкая и часто копирование вообще останавливается, но скорость записи на раздел с ntfs заметно выше, хотя тоже сильно скачет.
У вас бывало такое, что скорость записи на флешку на линуксовые файловые системы очень назкая? Имеет ли значение для скорости таблица разделов - ms-dos или gpt? Какими программами вы форматируете?
Надо использовать ту файловую систему, которая была по-умолчанию. В интернете упоминается, что контроллеры во флешках зачастую адаптированы под конкретную файловую систему. Можно попробовать использовать YAFFS/YAFFS2, разработанные для флеш-памяти. Но не могу гарантировать, что будет нормально работать. Ибо с ней не работал.
Asparagales, используется файловая система exFAT. Она тоже реализована специально для флешек и поддерживает файлы больше 4 ГБ.
P.S. И она является основной файловой системой по-умолчанию всех современных флешек.
John Smith, USB3 не гарантия скорости, но все же скорость должна быть выше нуля. У меня две разные флешки от двух разных производителей и у обеих средняя скорость записи около 500 KiB/s. Иногда она может подниматься до 1-3 MiB/s, или падать до нуля на длительное время.
Три других флешки имеют более нормальную скорость записи - одна 8-10 Mib/s, другая 10-12 MiB/s, третья - 12 -15. Не фонтан, но все же...
Вы правы в началае скорость высокая потому что все падает в буфер которы находится в оперативной памяти, потом скорость падает, скорость записи на флешку очень зависит от размера блока, вы можете с помощью утилиты dd произвести тесты записи на вашу флешку:
dd if=/dev/zero of=/dev/sdХ bs=$BLOCK_SIZE count=100000 conv=fsync
в переменную BLOCK_SIZE подставляйте 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16777216 33554432 67108864
после каждого теста сбрасывайте куши командой echo 3 > /proc/sys/vm/drop_caches
получив размер блока с хорошей скоростью записи можете отформатирывать флешку в ext4 указав этот размер блока например mkfs.ext4 -b 4096 /dev/sdb
Я не стал подставлять все значения, это слишком долго. Значение 8192 дало наибольшую скорость - около 10 MiB/s, однако mkfs.ext4 начала ругаться на этот размер блока. Я все же выполнил команду, но флешка после этого отказалась монтироваться. Были какие-то сообщения насчет неверных параметров.
На флешке лучше использовать файловую систему FAT16 (до 2 Гб), FAT32 (2-4Гб), exFAT(4+ Гб), ext2. Если хотите использовать ext4 или ntfs, то выключайте журналирование, потому что дешёвые шлешки не умеют быстро записывать в несколько потоков. При записи файлов на флешку с включённым кэшем и журналированием данные сперва копируются в оперативную память, далее эти данные начинают записываться на накопитель, т.к. его скорость значительно меньше, кэш не успевает переписаться на флешку, отчего в этот момент скорость резко проседает. А во время записи все операции с файловой системой логгируются в журнал файловой системы, а так как флешка не умеет писать в несколько потоков быстро, скорость ещё более сильно проседает.
Поэтому по-умолчанию, в Windows флешки монтируются без кэша и отформатированы в файловые системы без журналирования.
В общем, если это кому-то еще интересно, я создал таблицу разделов ms-dos и собственно раздел с помощью fdisk. Затем с помощью dd заполнил раздел нулями и после этого создал файловые системы ntfs и ext4. Вроде бы это немного помогло, хотя точных замеров до и после я не проводил.
Хм... "Более древняя флешка" скорее всего просто сделана на MLC, а то и SLC-памяти, которая чисто технологически быстрее (а заодно, долговечнее и надежнее) дешевой и емкой современной TLC.