Требуется * очень * много времени, чтобы извлечь мои флэш-накопители

Я запускаю новую установку на Debian 8, и мне часто приходится ждать смешного времени, прежде чем мои флэш-накопители будут извлечены (в диапазоне от 1 до 10.. 15 минут). В течение этого времени я не могу получить доступ к диску, потому что получаю ошибку An operation is already pending.

Кажется, что он не имеет ничего общего с форматом flashdrive (я пробовал FAT, ext4, NTFS), но он также запускается, когда я начинаю помещать в них файлы. (ничего тяжелого, хотя ~500Mb).

Что может быть причиной этой проблемы? Что я могу сделать, чтобы ускорить выброс?

2 ответа

Решение

Хотя я не знаю, является ли это фактическим объяснением / решением вашего вопроса, я считаю, что это проблема с USB в целом.

Если вы копируете большие файлы или много файлов, устройство USB доставит хосту сообщение "Я собираюсь отправить вам эти файлы". Затем устройство отправит все файлы асинхронно и займет время, необходимое для этого. Это означает, что когда вы делаете cp /my/flash/drive/foo.txt /home/bar/foo.txt устройство сообщит операционной системе, что файлы копируются, а затем отправит файлы.

Единственный известный мне способ проверить, все ли данные фактически были переданы, - это ввести sync после выполнения команды, которая копирует / перемещает или удаляет файлы на флешке. Команда синхронизации будет просто блокироваться, пока привод не завершит передачу данных. После этого должно быть безопасно отключить / извлечь USB-накопитель.


[РЕДАКТИРОВАТЬ]: Проверьте этот пост, чтобы посмотреть прогресс sync операция: номер, напечатанный при запуске

watch grep -e Dirty: -e Writeback: /proc/meminfo

должно уменьшиться до нуля, поскольку происходят фоновые передачи данных. Когда это будет сделано, ваш sync будет завершено, и ваш флэш-накопитель будет извлечен.


Другая распространенная проблема с извлечением USB-накопителей заключается в том, что, по крайней мере, Debian не разрешит это, если на этом флэш-накопителе в настоящее время работает программа, терминал или подобное устройство. Таким образом, если вы изменили каталог на папку на этом флэш-накопителе в терминале, а затем попытаетесь извлечь флэш-накопитель с помощью другого терминала, это не допустит этого, пока вы не измените каталог на другое место, не на флэш-накопителе в первом терминале.

Вероятно, это связано с накоплением кэшированных записей, которые еще не были записаны на устройство, как описано в разделе «Пагубная проблема с зависанием USB-накопителя» .

В качестве обходного пути вы можете ограничить объем грязной памяти из-за невыполненного ввода-вывода:

      echo $((16*1024*1024)) | sudo tee /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) | sudo tee /proc/sys/vm/dirty_bytes
Другие вопросы по тегам