Почему копирование на мой USB-накопитель настолько медленное в Linux (и быстрее в Windows)?
р>
Причина 1. Кэширование файлов может сделать записи появляться медленнее или быстрее
Проблема, которую я вижу в графическом интерфейсе, заключается в том, что индикатор выполнения достигает 90% почти мгновенно, заканчивается на 100% немного медленнее, а затем висит там в течение 10 минут.
Одна вещь, которую вам нужно понять, это кэширование файлов. Linux (и Windows) будет использовать в противном случае «пустую» оперативную память для кэширования операций чтения / записи и ускорения их при последующих обращениях. Кэширование операций копирования для медленных устройств приводит к поведению, которое вы видите - «быстрое завершение» на самом деле записывается в кеш, а затем оно замедляется и останавливается, поскольку фактическая очистка данных в кеше (синхронизация) с медленным устройством занимая очень много времени. Если вы прервете в этот момент, данные будут повреждены (как вы отметили), так как синхронизация не была завершена.
Такое копирование в Windows может показаться более быстрым (включая скорость передачи сообщений в режиме MB / sec), потому что иногда Windows не ждет для синхронизации и объявляет о завершении задания поскольку данные записываются в кеш.
Причина 2. Написание большого количества файлов, особенно маленьких, выполняется медленно
Чтобы скопировать 1,8 ГБ
Из-за того, как работают флеш-память и файловые системы, самая быстрая пропускная способность (скорость) достигается при записи очень больших файлов. Запись большого количества небольших файлов или даже смешанных данных, содержащих несколько небольших файлов, может замедлить процесс. Это также влияет на жесткие диски, но в несколько меньшей степени.
Причина 3. Скорость записи USB-накопителя и SSD не сравнивается
У меня есть супер-талант 32 ГБ USB SSD в соседнем порту, и он работает на ожидаемых скоростях.
-
USB-накопитель с садовым разнообразием обычно состоит из микросхем флэш-памяти, которые записываются последовательно (последовательно) и не имеют собственного кеша. Р>
-
С другой стороны, SSD содержит контроллер, который записывает микросхемы флэш-памяти parallel , увеличивая пропускную способность в 2 раза и более по USB-накопителю.
- Если ваш 32-гигабайтный SSD имеет 4x 8GB-чипы, он все равно будет в 4 раза быстрее, чем USB-накопитель при любой операции записи.
- SSD также содержит кеш RAM (например, жесткие диски), поэтому он может быстро хранить входящие данные в кеше и сообщать ОС, что он сделан, в то время как он по-прежнему должен фактически записывать эти данные в флэш-памяти.
-
Итак, с одним большим файлом, ваш 32 ГБ GB с 4х структурой, которую мы предположили, будет 4 раза быстрее; с большим количеством небольших файлов, это будет 10x или более быстрее, потому что это может разумно хранить их в кеше.
Подводя итог , это причины, по которым копирование файлов на USB-накопители может выглядеть медленнее в Linux. Это на самом деле медленнее из-за проблемы с оборудованием / драйвером или что-то еще ....
Выполнение правильного сравнения скоростей записи между Linux и Windows
- Прежде всего, забудьте о SSD из-за причины 3. Это похоже на апельсины и яблоки.
- Чтобы свести на нет эффекты разума 1 (кэширование) и причины 2 (небольшие файлы), вам необходимо протестировать один большой файл, превышающий объем оперативной памяти в тестовой системе.
- В Linux вы можете создать его с
dd if=/dev/urandom of=largetest bs=1M count=7500
, который даст вам тестовый файл 7500 МБ. Предполагая, что ваша система имеет объем памяти менее 4 ГБ, это достаточно хорошо. Скопируйте это в только что отформатированный джойстик Sandisk 8GB и запустите его.
- Перезагрузитесь в Windows и скопируйте
largetest
с USB-накопителя на ваш жесткий диск. Перезагрузите снова (чтобы удалить его из кеша). Затем отформатируйте USB-накопитель (тот же vfat / FAT32!) И скопируйте largetest
с жесткого диска на палку.
- Как сравнить время?