Требуется * очень * много времени, чтобы извлечь мои флэш-накопители
Я запускаю новую установку на 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