Гном, наутилус копирует файлы на USB останавливается на 100% или около

29

У меня были подобные проблемы раньше, но я не помню, как я решил это.

Когда я пытаюсь скопировать что-либо на USB-накопитель, с помощью FAT он останавливается ближе к концу, иногда на 100%. И, конечно, когда я передаю карту памяти куда-то еще, она не содержит полный файл. (файл это фильм!)

Я попытался смонтировать устройство с помощью команды -o flush, но у меня возникла та же проблема.

Кроме того, я отформатировал флешку с новым разделом FAT ...

Любая идея, что я делаю холодно?

PS Я считаю, что это не связано с ОС, то есть Debian, и я считаю, что копирование с SSD-накопителя не приводит к его зависанию.


источник
3
Где-то я встретил следующее объяснение вопроса. В случае, если копирование было сделано через оперативную память, а idicator показывает процесс чтения данных с диска. Но процесс записи гораздо дольше, особенно для USB-флешки (он может быть медленнее в 100 раз: например, 2 Мбит / с при скорости чтения 200 Мбит / с) и более, если вы используете не встроенные файловые системы, такие как FAT или NTFS под linux , Поэтому попробуйте дождаться завершения транзакции, даже если она остановлена ​​на 100%, но не закрыта (что должно указывать на завершение).
Костас
просто интересно, можно ли вообще проверить прогресс в этой ситуации ???
попробуйте отформатировать pendrive с опцией перезаписи выходных данных с нулями. Это работает на My trancend 8GB pendrive
Акшай Даундкар
Для тех, кто сталкивается с этой проблемой, просто отформатируйте ваш диск в NTFS.
Рики Бойс

Ответы:

37

Причина, по которой это происходит, заключается в том, что программа говорит «записать эти данные», а ядро ​​Linux копирует их в буфер памяти, который ставится в очередь для перехода на диск, а затем говорит «хорошо, готово». Таким образом, программа считает, что она скопировала все. Затем программа закрывает файл, но внезапно ядро ​​заставляет его ждать, пока этот буфер будет выгружен на диск.

Так что, к сожалению, программа не может сказать вам, сколько времени займет очистка буфера, потому что она не знает.

Если вы хотите попробовать некоторые хитрости для опытных пользователей, вы можете уменьшить размер буфера, который использует Linux, установив для параметра ядра vm.dirty_bytesчто-то вроде 15000000(15 МБ). Это означает, что приложение не может получить больше чем 15 МБ перед его фактическим прогрессом. (Вы можете изменять параметры ядра «на лету», sudo sysctl vm.dirty_bytes=15000000но для того, чтобы они оставались после перезагрузки, необходимо изменить файл конфигурации, подобный /etc/sysctl.confвашему дистрибутиву.)

Побочным эффектом является то, что ваш компьютер может иметь более низкую пропускную способность записи данных с этим параметром, но в целом я считаю полезным видеть, что программа работает долго, в то время как она пишет много данных, по сравнению с путаницей Программа, похоже, справилась со своей работой, но система сильно отстает, поскольку ядро ​​выполняет реальную работу. Установка dirty_bytesразумно небольшого значения также может помочь предотвратить зависание вашей системы, когда у вас мало свободной памяти и запустить программу, которая внезапно записывает большое количество данных.

Но не устанавливайте это слишком маленьким! Я использую 15 МБ для приблизительной оценки того, что ядро ​​может сбросить буфер на обычный жесткий диск за 1/4 секунды или меньше. Это удерживает мою систему от ощущения "отставания".

без данных
источник
Я искал решение этой проблемы в течение года или больше, я думал, что это просто ошибка в Linux. Большое спасибо.
Сидахмед
1
Linux noob здесь, может кто-нибудь опубликовать, как изменить значения <dirty_bytes>?
Брофессор
@ Профессор, извините, я должен был описать это по официальному названию вместо деталей / proc. Ответ обновлен.
без данных
1
Это похоже на unix.stackexchange.com/questions/107703/… --- должно было быть исправлено, но поверьте, это не так. Я должен был добавить его в Ubuntu 18.04, чтобы перестать вести себя забавно ...
Rmano
Работает на Fedora 30 тоже. Я удивлен, увидев такое глупое поведение даже в современных дистрибутивах Linux.
Сираки
0

Старый вопрос, но кажется, что проблема все еще возникает. Установка буфера в 15 МБ, как предложено здесь , не работала на Ubuntu 19.04 и привела мою систему к полной остановке.

Я пытался скопировать файл 1,5 ГБ на пустой (недавно отформатированный) диск 16 ГБ FAT32. Я дал ему поработать около 10 минут, чтобы посмотреть, закончится ли он, но безуспешно.

Переформатирование в NTFS позволяет завершить операцию менее чем за 10 секунд. Я не знаю, почему это будет иметь значение, потому что FAT32 должен разрешать что-либо менее 2 ГБ, но, похоже, все работает нормально Не идеальное решение для дисков, которые вы хотите использовать с MacOS, но легкий обходной путь для всех других случаев использования. Я полагаю, что exFAT работал бы аналогично, но я не проверял это.

Джейкоб Джонс
источник