Добрый день всем
Извиняюсь, что старую тему поднимаю. Видел архивные затухшие темы на этот счет. Но у меня на достаточно новой системе такая проблема
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%. После попытки отмонтировать еще приходится столько же ждать пока система сообщит о том, что устройство отключено.
Нет ли у кого правильного рецепта это решить?
PS
-
Да, забыл сказать, что дело не в NTFS. Я сначала его использовал, а затем стал пробовать extFAT. На нем и продолжил все эксперименты. Так вот с extFAT та же проблема.
-
Находил такой совет
Открыть файл /etc/sysctl.conf и дописать строки:
vm.dirty_bytes = 4194304 vm.dirty_background_bytes = 4194304
применить изменения: sudo sysctl -p
Однако, эта настройка повлияет не только на флешки, но и на все файловые операции. Я не уверен в ее безопасности и правильности. Хотелось бы более верное решение.
PS2
РЕЗЮМИРУЮ ПО ТЕМЕ
Было 2 проблемы - неравномерное заполнение прогрессбара и медленное копирование (на глаз).
Посоветовали включить sync
. Надо было создать файл /etc/udisks2/mount_options.conf
и добавить в него строки:
[defaults]
ntfs_drivers=ntfs3,ntfs
ntfs:ntfs3_defaults=uid=$UID,gid=$GID,sync
exfat_defaults=uid=$UID,gid=$GID,iocharset=utf8,errors=remount-ro,sync
Индикация после этого стала нормальной. Но скорость копирования в сравнении с Виндой стала в 5 раз медленнее. Отключил sync
, прогрессбар стал показывать не плавный прогресс, также долго стало отмонтироваться, но копироваться, и правда, стало быстрее. Причем сильно. И данные теперь с виндой совпадают.
Попутно выяснилось, что порт, в который втыкалась флешка, хоть и был синего цвета, но работал не как USB 3.
Вот выдача lsusb
lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 004: ID 0bda:568a Realtek Semiconductor Corp. Integrated Webcam
Bus 001 Device 003: ID 062a:4c01 MosArt Semiconductor Corp. 2,4Ghz Wireless Transceiver [for Delux M618 Plus Wireless Vertical Mouse]
Bus 001 Device 010: ID 0951:1666 Kingston Technology DataTraveler 100 G3/G4/SE9 G2/50
Bus 001 Device 006: ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)
Bus 001 Device 002: ID 09da:0025 A4Tech Co., Ltd. A4tech 2.4G Wireless Device
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
- это шина USB 3.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
- это шина USB 2.
Bus 001 Device 010: ID 0951:1666 Kingston Technology DataTraveler 100 G3/G4/SE9 G2/50
- флешка, которая, как видно сидит на Bus 001
, т.е. USB 2.
Переткнул в другой разъем и картина поменялась, на такую:
lsusb
Bus 002 Device 002: ID 0951:1666 Kingston Technology DataTraveler 100 G3/G4/SE9 G2/50
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 004: ID 0bda:568a Realtek Semiconductor Corp. Integrated Webcam
Bus 001 Device 011: ID 062a:4c01 MosArt Semiconductor Corp. 2,4Ghz Wireless Transceiver [for Delux M618 Plus Wireless Vertical Mouse]
Bus 001 Device 015: ID 09da:0025 A4Tech Co., Ltd. A4tech 2.4G Wireless Device
Bus 001 Device 006: ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
В режиме дерева:
lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 10000M
|__ Port 1: Dev 6, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
|__ Port 2: Dev 16, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 16, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 11, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 5: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 5: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 6: Dev 5, If 0, Class=Vendor Specific Class, Driver=rtsx_usb, 480M
|__ Port 14: Dev 6, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 14: Dev 6, If 1, Class=Wireless, Driver=btusb, 12M
Чтобы еще точнее убедиться можно также смотреть выдачу lsusb -v
или dmesg
Копирование в медленном порту (хоть он и тоже синий) - 10 Гигов за 8 минут (с sync было 25 -28 минут). Копирование в быстром порту - 10 Гигов за 3 минуты. Причем в это время я и включаю отмонтирование (засекал по часам).
Для того, чтобы прогрессбар был плавным и не было задержек с отмонтированием можно использовать библиотеку autofsync https://github.com/i-rinat/autofsync. Воспользоваться ей можно так:
-
Клонируем или качаем репозиторий
-
Выполняем в рабочей копии (или каталоге с кодом репозитрия)
cmake CMakeLists.txt make
и получаем файл autofsync.so
-
Копируем этот файл в удобное место; например в
/home/me_user/.local/lib/
(оставшийся каталог autofsync-master можно удалить). -
Добавляем в ~/.bashrc алиас
alias mc='LD_PRELOAD=/home/me_user/.local/lib/autofsync.so mc'
ИТОГ
Таким образом, медленно копировалось из-за того, что один из портов в компе на самом деле работает медленнее, чем должен (не поддерживает USB3, хоть и синий). И эта проблема решилась выбором другого порта.
А прогресс бар сделать плавным и избавиться от задержек при отмонтировании можно через библиотеку autofsync. Штатных средств решения проблемы не найдено.
БОНУС
Попутно скинули ссылки по полезные ресурс по флешкам - https://www.usbdev.ru/articles/
Там информация о том как узнать реальный объем флешки и как восстановить флешку.
Хотя более человеческим языком кратко это рассказано в статье https://lifehacker.ru/kak-vosstanovit-fleshku/