Извлечение моих флешек занимает *очень* много времени

Извлечение моих флешек занимает *очень* много времени

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

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

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

решение1

Хотя я не знаю, является ли это фактическим объяснением/решением вашего вопроса, я считаю, что это проблема 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 не позволит этого сделать, если в данный момент на этом флэш-накопителе работает программа, терминал или что-то подобное. Поэтому, если вы изменили каталог на папку на этом флэш-накопителе в терминале, а затем попытаетесь извлечь флэш-накопитель с помощью другого терминала, он не позволит этого сделать, пока вы не измените каталог на что-то другое, не на флэш-накопителе, в первом терминале.

решение2

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

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

echo $((16*1024*1024)) | sudo tee /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) | sudo tee /proc/sys/vm/dirty_bytes

Связанный контент