Почему копирование на мой USB-накопитель происходит так медленно в Linux (и быстрее в Windows)?
Кэширование Причина 1. Файл может сделать запись появляются медленнее или быстрее
Проблема, которую я, похоже, вижу в графическом интерфейсе, заключается в том, что индикатор выполнения почти мгновенно достигает 90%, чуть медленнее завершает работу на 100% и затем зависает там в течение 10 минут.
Одна вещь, которую вы должны понять, это кеширование файлов. Linux (и Windows) будут использовать в противном случае «пустую» оперативную память для кэширования операций чтения / записи и ускорения их при последующих обращениях. Кэширование операций копирования для медленных устройств приводит к поведению, которое вы видите - «быстрое завершение» фактически записывает в кеш, а затем замедляется и останавливается, потому что фактическая сброс данных в кеше (синхронизация) на медленное устройство очень долго Если вы прервете в этот момент, данные будут повреждены (как вы заметили), поскольку синхронизация никогда не завершается.
Такое копирование в Windows может показаться более быстрым (включая заявленные скорости в МБ / с), поскольку иногда Windows не будет ожидать синхронизации и объявляет задание выполненным, как только данные записываются в кэш.
Причина 2. Запись большого количества файлов, особенно маленьких, идет медленно
Для копирования 1,8 ГБ
Благодаря тому, как работают флэш-память и файловые системы, самая высокая пропускная способность (скорость) достигается при записи очень больших файлов. Запись большого количества маленьких файлов или даже смешанных данных, содержащих множество маленьких файлов, может сильно замедлить процесс. Это касается и жестких дисков, но в несколько меньшей степени.
Причина 3. Невозможно сравнить скорости записи на USB-накопитель и твердотельный накопитель
У меня есть супер талантливый 32 ГБ USB SSD в соседнем порту, и он работает с ожидаемой скоростью.
USB-флешка садового сорта обычно состоит из микросхем флэш-памяти, которые записываются последовательно (последовательно), и не имеет собственного кэша.
SSD, с другой стороны, содержит контроллер, который записывает данные на микросхемы флэш-памяти параллельно , увеличивая пропускную способность в 2 раза или более по сравнению с USB-накопителем.
- Если бы ваш SSD на 32 ГБ имел 4x 8 ГБ чипов, он все равно был бы в 4 раза быстрее, чем USB-накопитель при любой операции записи.
- Твердотельный накопитель также содержит кэш-память ОЗУ (например, жесткие диски), поэтому он может быстро сохранять входящие данные в кэш-памяти и сообщать ОС об этом, в то время как ему все еще приходится записывать эти данные во флэш-память.
Таким образом, с одним большим файлом ваши 32 ГБ ГБ с предполагаемой структурой 4x будут в 4 раза быстрее; со многими небольшими файлами это будет в 10 или более раз быстрее, поскольку он может разумно хранить их в своем кэше.
Подводя итог , можно сказать, что это причины, по которым копирование файлов на 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-накопитель (тот же vfat / FAT32!) И скопируйте largetest
с жесткого диска на флешку.
- Как сравниваются времена?
sync
и посмотреть, не ускоряет ли это процесс. <- не проверено, но возможно