Когда я подключаю накопитель USB 2.0 к Xubuntu и пытаюсь передавать большие файлы, сначала скорость передачи данных хорошая, но через несколько секунд она падает до 1-2 Мбит / с. Из того, что я прочитал, быстрая передача в начале происходит только до заполнения кеша, а затем используется реальная скорость передачи USB.
В Windows скорость постоянна на уровне около 25 Мбит / с, та же карта памяти, подключенная к тому же порту.
Это вывод dmesg при подключении флешки:
[ 5237.580084] usb 1-4: new high speed USB device using ehci_hcd and address 6
[ 5237.714318] scsi4 : usb-storage 1-4:1.0
[ 5238.713909] scsi 4:0:0:0: Direct-Access SanDisk Cruzer 8.02 PQ: 0 ANSI: 0 CCS
[ 5238.715264] sd 4:0:0:0: Attached scsi generic sg2 type 0
[ 5238.727225] sd 4:0:0:0: [sdb] Attached SCSI removable disk
[ 5242.308981] sd 4:0:0:0: [sdb] 31301631 512-byte logical blocks: (16.0 GB/14.9 GiB)
[ 5242.309589] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311228] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311238] sdb: sdb1
Палка установлена автоматически, вот вывод «mount»:
/dev/sdb1 on /media/B82C-6B07 type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush)
Я должен использовать vfat, потому что я хочу перенести файлы в мою систему Playstation3. Приведенный ниже тест показывает, что это не главная причина.
Кажется, это распространенная проблема в (X) Ubuntu. Я еще не нашел четкого решения. Кажется, что флешка должна быть установлена как асинхронная, а не как флеш, но я не совсем уверен, как этого добиться. Я не против, если мне придется каждый раз отключать флешку, прежде чем отсоединять ее, если скорость передачи выше.
Есть идеи?
2 ноября. Этот отчет об ошибке, похоже, связан: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/182931 . Что меня беспокоит, так это то, что проблема старше двух лет и до сих пор не решена.
10 ноября. Я начал тест на чтение с palimpstest (из проекта утилиты gnome-disk). Это дает мне минимальную скорость передачи данных 23 Мбит / с. Также попробовал это сейчас в krusader, скорость чтения постоянно> 20 Мбит / с. Таким образом, проблема на самом деле просто писать на флешку!
Вот изображение теста чтения-записи в той же программе:
Перед тестом мне пришлось полностью удалить файловую систему, которая показывает, что vfat не является основной причиной, как упоминалось выше.
Еще один совет: если я передаю файл размером 100 МБ, когда он становится равным 100%, на завершение передачи требуется необычно много времени. Мне снова кажется, что файл действительно находится в кеше, но запись на USB-устройство идет очень медленно.
12 ноября: «Хорошие новости». Проблемы, кажется, сама карта памяти. Попытка внешнего жесткого диска (My Book Elite 1 ТБ) дает мне постоянную скорость записи около 20 МБ / с. Сначала я попытался переформатировать карту памяти, чтобы действительно сравнить их (файловые системы были разными). После переформатирования оба диска монтируются одинаково:
/dev/sdb1 on /media/My Book type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sdc1 on /media/cruzer_ type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
Cruzer - это флешка (скорость все еще падает через несколько секунд), My Book - это внешний жесткий диск с постоянной скоростью записи 20 МБ / с.
Трудно сказать, в чем проблема на самом деле. Как я уже говорил, в Windows я получаю одинаково быструю скорость записи и с SanCruzer.
Изменить в конце награды : К сожалению, проблема с флешкой до сих пор не решена. Однако через 7 дней я хочу присуждать награду, конечно. Комментарий от aking1012 был действительно полезным, поскольку он пролил новый свет на этот вопрос. Тем не менее, я чувствую, что должен отдать награду Харримсу, поскольку он приложил максимум усилий для решения проблемы. Спасибо всем.
flush
опция в вашем выводе монтирования вряд ли поможет. Я думаю, что это даже хуже, чемsync
.Ответы:
В статье « Медленная скорость передачи данных через USB 2.0» предполагается, что это может быть проблемой при подключении устройства по умолчанию с опцией синхронизации:
Еще несколько идей появилось в отчете об ошибках. Запись на внешнем жестком диске делает запись очень медленной.
См. Также обсуждение в статье относительно pmount, если это относится к вашей системе.
Еще одно волшебное решение - медленная запись на USB 2.0, но быстрое чтение, решение еще? и включает в себя повторное монтирование:
Смотрите эту статью и ссылку на «usbtree». Он говорит, как проверить, работает ли usb как 1.1 или 2.0:
Linux и USB 2.0 .
источник
Доступ к диску обычно буферизуется в асинхронном режиме. Первоначальный быстрый взрыв, скорее всего, к кэш-памяти. Низкая скорость - это фактическая скорость записи.
Если у вас есть USB-накопитель, который мигает во время передачи, попробуйте выполнить несколько тестов. Я обнаружил, что запись может продолжаться довольно долго после завершения копирования.
Монтирование в асинхронном режиме, а не в режиме синхронизации, позволяет копированию отображаться быстрее, но не обеспечивает такой же безопасности, как при копировании данных.
Проверьте параметры в
man mount
. Некоторые форматы позволяют откладывать обновления метаданных (каталог, таблица размещения файлов и т. Д.). Это сократит объем данных, которые необходимо скопировать. Это немного увеличивает риск потери данных.источник
Так что я зашел на эту страницу через поиск в Google той же проблемы («Ubuntu 15 ускоряет передачу по USB»), потому что мои передачи работали со скоростью 75 Кбит / с.
Вероятно, это было только решением для моей установки, но мой накопитель USB 3 объемом 16 ГБ был отформатирован в GPT fat32, я удалил все разделы, инициализировал MBR, сделал один раздел NTFS, подключил его обратно к своему компьютеру с Ubuntu, и теперь он передает файл 10 ГБ со скоростью более 50 МБ / с. Для меня проблема решена.
источник
Нам нужно убедиться, что система пытается записать в блоке программы / стирания блоков. С современной флэш-памятью они обычно имеют размер 1M-4M. Для этого вы хотите убедиться, что ваша FS выровнена для стирания блоков, и этот интерфейс позволяет передавать весь блок за один раз (для дешевых стиков). В противном случае мы получили бы усиление записи, так как система пытается записать фрагментами, которые меньше, чем блок стирания (делает чтение / мод / запись) + смещение блока.
Чтобы проверить ваши текущие настройки, выполните:
cat /sys/block/sd**X**/device/max_sectors
Вы можете настроить правила зала для этих устройств. См. Https://unix.stackexchange.com/questions/67719/change-value-of-usb-max-sectors-for-an-entire-family-of-devices .
В этом случае я заменил max_sectors для всех устройств, которые использовали значение по умолчанию 240 (USB-накопитель) для секторов 32K или 2K:
(используйте == для проверки и = для назначения):
В моей системе (Mageia 4, 3.14.24 core i7) я должен был сделать это из-за ужасно низкой скорости записи (2 МБ / с) на Kingston DT101 G2 16 ГБ:
vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules
и добавить:SUBSYSTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "32678"
И скорость записи в dd увеличилась в 3 раза :-) mc cp, вероятно, в 10-20 раз (после того, как я запустил первый раздел на 8192-м секторе и переформатировал с кластерами, выровненными по 64 тыс.):
fdisk -u /dev/sdh
(выключите DOS, если включено),mkfs.vfat /dev/sdh1 -n KINGSTON16G -s 128 **-R 4592**
и используйтеfsck.vfat -v /dev/sdh1
для проверки выравнивания (отметьте [начальный сектор данных] должно быть кратным 128 (размер кластера)). При необходимости измените количество зарезервированных секторов (-R).По умолчанию max_sectors (240), по-видимому, вызывает сильное усиление записи на некоторых дешевых новых накопителях. Но будьте очень осторожны с такими высокими настройками, подобный эффект достигается в 2048 секторах (вероятно, 1M стереть блоки:
SUBSYSTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "2048"
Проверьте все ваши старые USB-устройства, чтобы они все еще работали хорошо. Используйте атрибуты vendor / model в файлах правил, чтобы быть более конкретными.
PS: при использовании ext3 / 4:
Отключите ведение журнала и установите stride / stripe_width для mkfs.ext3:
mkfs.ext3 -O ^ has_journal -E stride = [прочитать страницу блоков fs] -E stripe-width = [удалить блок блоков fs]
источник
У меня были некоторые проблемы также со скоростью передачи на внешнем диске WD, после открытия его в Windows SO я всегда использовал LINUX, после этого скорость передачи была около 1,5 Мб / с, чем я отключил внешний жесткий диск, запустил там dmesg Он говорил, что sdb1 был непропорционально размонтирован, запустил fsck, который сделал несколько ремонтов и после этой скорости передачи снова 20 Мб / с при копировании с sda на внешний диск.
«fsck - это всегда риск, если у вас есть данные, но это сработало для меня, без потери данных»
источник
Проверьте, действительно проверьте , что ваше устройство подключено к USB-порту, который поддерживает полную скорость.
Хотя это может звучать глупо, но иногда все путается. Некоторые материнские платы имеют высоко- и низкоскоростные порты. Используйте такой инструмент, как usbview (обратите внимание, чтобы выполнить его с правами суперпользователя
sudo usbview
), чтобы убедиться, что ваше устройство работает на скорости 480 Мбит / с (USB 2.0) или более.Например, когда вы обычно подключаете свое устройство через удлинитель, концентратор на дисплее и т. Д., Это может произойти - после повторного подключения кабелей на вашем настольном компьютере или около того - что вы случайно подключили концентратор к низкой скорости (USB 1.) порт. Тогда любые устройства, подключенные к концентратору, будут работать на низкой скорости, тогда как другие, подключенные где-то еще, будут работать на высокой скорости. Может быть очень запутанным - и это простая аппаратная вещь ... Однажды случилась со мной и не связана с какими-либо модулями ядра USB, опциями монтирования или около того.
источник