
Я запускаю новую установку на 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