@Redproxima
Студент технического ВВУЗ'а

Как устранить медленную скорость при копировании на USB устройства?

Товарищи, здравствуйте! Помогите с решением очень старой и, как показал трехдневный поиск в интернете, частично решенной, но местами проявляющей себя проблемы уровня ядра, берущей корни еще с "бага 12309", вроде как.
Суть проблемы: при копировании относительно тяжелых фалов (от 1 ГБ и более) на блочные USB устройства (конкретно - флешки на разных чипах и разных объемов с фс NTFS) наблюдаю следующее - на скорости ~45МБ\с заполняется буфер I\O и после этого скорость падает до критически малых показателей в ~ 130 Кб/сек, пока буфер не освободится снова и в итоге 1,5 ГБ копируются на флешки непростительных минут 30-40. Система не виснет в ноль, может быть какие-то фризы и наблюдаются. но они не значительны. Прогресс-бары трех разных проводников (Nemo 4.4.2, Thunar 18.04.0 и консольный mc) имеют поведение примерно такое, как описано выше - до середины ползет быстро (~45МБ\с), потом неопределенно долго, ОДНАКО, бывает и так, что прогресс-бар худо-бедно доползет до конца, но штатно отмонтировать флешку не выходит - она все еще занята копированием. То есть в момент, когда файл до конца отправился в буфер - система отчиталась процессу проводника о выполнении, а проводник отчитался мне, но де-факто - копирование из буфера быть может только на середине и это лишь визуальный обман.
Что пробовал:
1) Монтировал флешку с опцией sync - скорость стабильно... Стабильно ничтожная - 130 Кб/сек, как я понял - это минование буфера с последующей прямой записью, но как видите - скорость все равно никчемная.
2) Устанавливал ограничения на дисковый буфер в значение 4 Мб (sysctl переменные: vm_dirty_bytes и vm_backgrounds_ditry_bytes) - не помогло ровным счетом никак (потом выяснил, что это вообще не лекарство)
3) Проверял на режим, в котором примонтирована флешка - режим 2.0.

Как решал проблему:
Получилось случайно, с помощью dd удачно скопировал 10 гиговый фильм блоками по 4 Мб, указав размер блока в параметре bs=, предварительно посмотрев, какие оптимальные размеры блока установлены во флешке командой fdisk. Времени заняло примерно 7 минут, что считаю оптимальным вариантом для 2.0 стандарта. Однако поймите меня правильно, я не хочу применять костыли. Программа dd шикарная, но для своего спектра задач и совсем не хочется прописывать alias'ы и переплетать все сикось-накось.

Что имею:
- Linux Mint 18.04.1 с ядром 5.3.0-46-generic
- BIOS древних ревизий, без возможности настройки Legacy-mode для USB.
- 8 ГБ ОЗУ
- Единственный HDD, разбитый максимально примитивно - / и swap на 16ГБ

Какие крутилки крутить и что менять, прописывать, что делать, в общем, чтобы копированием я пользовался максимально по-домохозяски? Я прошу проявить вашу сдержанность и если этот вопрос в кругу знающих считается детским и глупым - все же дать мне действенный совет, который общепринят. Если нужно больше конкретики по системе (выводы логов, показания мониторов и тд), то я с удовольствием все предоставлю. Всем заранее спасибо!
  • Вопрос задан
  • 1317 просмотров
Пригласить эксперта
Ответы на вопрос 5
alfss
@alfss
https://career.habr.com/alfss
Используйте exfat
Ответ написан
Комментировать
jamakasi666
@jamakasi666 Куратор тега Linux
Просто IT'шник.
А если при монтировании указать опцию big_writes?
А если попробовать собрать самую свежую версию NTFS-3G?

Ну и на заметку:
1) держите в голове что драйвер NTFS-3G userspace и он априори будет гораздо медленнее.
2) для себя же старайтесь избегать ntfs, есть куча нативных фс которые понимают андроиды да телевизоры. Есть компромисс в виде exfat(тут уже есть вариант как медленный fuse так и быстрый kernel)
Ответ написан
Zoominger
@Zoominger
System Integrator
К сожалению, точного однозначного решения нет. Если не получилось сразу, то и не получится, USB-подсистема в Linux определённо худшая из всех.
Серьёзно, проблема известная и очень старая.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
У меня было 3 флешки. И у всех трёх наблюдалось разное поведение при копировании. Скорость. Буфер. Зависание.

Согласен со всеми ораторами.
Ответ написан
Комментировать
@igor-t
Добрый день всем

Извиняюсь, что старую тему поднимаю.
Но у меня на достаточно новой системе такая проблема

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy


Флешек несколько штук. Все довольно новые (1-2 года) с USB 3. Последнюю вчера купил.

Когда копирую большой файл (гигов 10), то до процентов 50% добегает за пару секунд, а потом стопорится и невероятно медленно доходит до 10%. После попытки отмонтировать еще приходится столько же ждать пока система сообщит о том, что устройство отключено.

Нет ли у кого правильного рецепта это решить?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы