Копіювання файлів Gnome, nautilus на USB зупиняється на 100% або близько


29

У мене були подібні проблеми раніше, але я не пам'ятаю, як я це вирішив.

Коли я намагаюся скопіювати щось на USB-накопичувач, за допомогою FAT, він зупиняється наприкінці, іноді на 100%. І звичайно, коли я переношу флешку пам'яті кудись інше, він не містить повного файлу. (файл - фільм!)

Я спробував встановити пристрій з монтажем -o флеш, але у мене виникає така ж проблема.

Крім того, я відформатував USB-накопичувач з новим розділом FAT ...

Будь-яка ідея, що мені холодно?

ps Я вважаю, що це не пов'язано з ОС, яка є Debian, і я вважаю, що копіювання з SSD-накопичувача не зациклюється.


3
Десь я зустрів таке пояснення справи. У випадку копіювання було зроблено за допомогою оперативної пам'яті, і idicator показує процес зчитування даних з накопичувача. Але процес перебирання набагато довший, особливо на USB-накопичувачі (це може бути в 100 разів повільніше: як, наприклад, 2Mb / сек, проти 200Mb / сек читання, наприклад) і більше, якщо ви використовуєте не рідні файлові системи, такі як FAT або NTFS під Linux . Тому спробуйте дочекатися закінчення транзакції, навіть якщо зупинено на 100%, але не закрито (що повинно вказувати на закінчення).
Костас

просто цікаво, чи взагалі можна перевірити хід у цій ситуації ???

спробуйте відформатувати pendrive з опцією перезаписати вихідні дані з нулями. Це працює на моєму трансанді 8 Гб pendrive
Akshay Daundkar

Для всіх, хто стикається з цією проблемою, просто відформатуйте свій привід до 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>?
Brofessor

@Brofessor О, вибачте, я мав би описати це офіційною назвою замість / proc деталей. Відповідь оновлюється.
даних

1
Це схоже на unix.stackexchange.com/questions/107703/… --- треба було виправити, але повірте, це не так. Мені довелося додати його до Ubuntu 18.04, щоб перестати вести себе смішно ...
Rmano

Працює і Fedora 30. Я здивований, коли бачу таку дурну поведінку навіть у сучасних дистрибутивах Linux.
sziraqui

0

Старе питання, але здається, що проблема все-таки виникає. Встановлення буфера на 15 Мб, як було запропоновано тут , не працювало на Ubuntu 19.04, і призвело до того, що моя система зупинилась.

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.