Як покращити швидкість передачі USB в (X) ubuntu?


14

Коли я підключаю свій накопичувач 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 . Мене хвилює те, що ця проблема, здається, старша 2 років і досі не вирішена.

10 листопада: я розпочав тест читання з palimpstest (від проекту gnome-disk-utility). Це дає мені мінімальну швидкість передачі - 23 Мбіт / с. Також спробував це в krusader зараз, швидкість читання постійно> 20 Мбіт / с. Тож проблема насправді полягає лише у написанні на паличку!

Ось зображення тесту читання-запису в тій же програмі:

введіть тут опис зображення

Мені довелося повністю видалити файлову систему перед тестом, який показує, що vfat не є основною причиною, як згадувалося вище.

Ще одна підказка: Якщо я перенесу файл у 100 Мб, як тільки він на 100%, потрібно фактично закінчити передачу. Знову мені здається, що файл справді знаходиться в кеші, але запис на usb-пристрій відбувається дуже повільно.

12 листопада: "Добрі новини". Здається, проблеми полягають у власній пам'яті. Спроба зовнішнього жорсткого диска (My Book Elite 1TB) дає мені постійну швидкість запису близько 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 був дуже корисним, оскільки пролив нове світло на це питання. Однак я відчуваю, що мені потрібно дати винагороду harrymc, оскільки він показав найбільше зусиль для вирішення проблеми. Дякую всім.


ocaoimh.ie/ubuntu-linux-slow-external-usb-drive Сподіваюся, що це допомагає =)

1
Чи є різниця між швидкістю запису на флеш-накопичувачі та справжніми зовнішніми
HD-

Відмінна ідея! Дякую за підказку, будь ласка, подивіться результат у моєму оновленні (12 листопада). Проблема ще не вирішена, але це справді звужує її!
pgruetter

FWIW, flushопція вашого вихідного версії навряд чи допоможе. Я думаю, що це навіть гірше, ніж sync.
beldaz

Відповіді:


11

Стаття Повільна швидкість передачі даних на масовому зберіганні USB 2.0 говорить про те, що це може бути проблемою при встановленні пристрою за замовчуванням за допомогою параметра синхронізації:

Чи є у вас на робочому столі значок "Пристрої"?
Якщо так, відкрийте його. Якщо ні, спробуйте відкрити носій: / in konqueror.

Відділіть пристрій потім -> Властивості -> Монтаж (тег) і зніміть прапорець "Синхронний". (Це запам'ятовується, тому вам потрібно робити це лише один раз на пристрій).


Ще кілька ідей виходять із звіту про помилки Write на зовнішньому hdd-повідомленні, що робить написання дуже повільним

  • ви переходите на асинхронізацію під час виконання за допомогою "sudo mount -o remount, async / dev / sda1" (або будь-якого, на якому встановлені (-і) секції / є)
  • ви створюєте запис fstab для sda, який монтує його на асинхронізацію (для цього потрібно, щоб пристрій завжди підключався під час завантаження)
  • ви зміните "синхронізацію" на "асинхронізувати" у джерелі pmount та відновите пакет

Дивіться також обговорення в статті щодо pmount, якщо це стосується вашої системи.


Ще одне магічне рішення - це USB з повільним записом, але швидко читається, рішення ще? і включає повторне встановлення:

Коли я монтую USB-накопичувач на / dev / sdc1 у наступному рядку

/dev/sdc1       /mnt/sdc1     auto    sync,noauto,user,exec     0       0

в / etc / fstab і спробуйте скопіювати на диск з локального жорсткого диска 5,2 МБ, а потім через цілу хвилину було переведено 244 Кб. Копіювання файлу 29 Мб з зовнішнього диска на локальний диск займає близько 10 секунд.

Тоді, якщо я його відключити, змініть рядок у / etc / fstab на

/dev/sdc1       /mnt/sdc1     auto    noauto,user,exec     0       0

потім копіювання файлу 29 Мб на зовнішній диск займає непомітну частку секунди. Те саме з копіюванням на локальний диск із зовнішнього диска.


Дивіться цю статтю та посилання на "usbtree". Він розповідає, як перевірити, чи функціонує usb як 1.1 або 2.0:

Linux та USB 2.0 .


Здається, це специфічно для KDE. Я використовую XFCE4 (Xubuntu). Я все-таки спробував пропозицію, оскільки Konquerer встановлений. носій відкриття: / дає мені виняток "Протокол не підтримується". Якимось іншим способом я можу дізнатись, чи встановлено це "async" чи "sync"?
pgruetter

Я додав ще одну корисну статтю.
harrymc

перерахунок нічого не робить. Вихід "кріплення" залишається однаковим. Дивіться моє початкове повідомлення для цього. Я також спробував встановити його з pmount зараз, дякую за пропозицію. Довідка pmount стверджує, що він за замовчуванням монтує асинхронізацію. Проте швидкість передачі спочатку дуже швидка і падає через кілька секунд. Я починаю вірити, що палиця насправді встановлена ​​асинхронізацією, але проблема в іншому місці !?
pgruetter

Додано ще одну спробу.
harrymc

Дякую, harrymc, дуже ціную твоє неперервне зусилля. На жаль, все ще не шанс. Я спробував це із згаданими налаштуваннями в / etc / fstab та монтуючи його. Якщо я спробую варіант із синхронізацією, це ще гірше. Я отримую лише близько 100-200 кіб / с. Без параметра синхронізації все одно те саме: швидко на початку, опускаючись до 1-2 МіБ / с.
pgruetter

2

Доступ до накопичувача зазвичай буферизований в режимі асинхронізації. Початковий швидкий вибух, ймовірно, кеш пам'яті. Повільна швидкість - фактична швидкість запису.

Якщо у вас є USB-накопичувач, який блимає під час передачі, спробуйте кілька тестів. Я виявив, що записи можуть тривати досить довго після завершення копії.

Встановлення в режимі асинхронізації замість режиму синхронізації дозволяє з'являтися копії швидше, але не дає вам тієї самої безпеки, що копійовані дані дійсно передаються.

Перевірте параметри в man mount. Деякі формати дозволяють відкласти оновлення метаданих (каталог, таблиця розподілу файлів тощо). Це зменшить кількість даних, які потрібно скопіювати. Це незначно збільшує ризик втрати даних.


Дякую за інформацію, це фактично підтверджує мої припущення. Під час передачі накопичувач постійно блимає, але він не блимає довго після передачі. Я підозрюю, що це лише тому, що менеджер файлів все ще має доступ до палиці. Безпека не була б великою проблемою, я насправді просто цікавила швидкість. Цікаво щодо метаданих, я це перевірю. Хоча, чи вважаєте ви, що це змінить щось при передачі великих файлів (500 МіБ)?
pgruetter

Крім того, що все ще мене спантеличує, чому це дуже швидко з зовнішнім жорстким диском, а не з палицею? Параметри кріплення точно такі ж, я переніс такий самий тестовий файл.
pgruetter

1
Запис на 4 KiB на жорсткий диск, як правило, запис в 4 KiB, реалізований контролером жорсткого диска. Запис 4 KiB у флеш-пам'ять, як правило, 128 KiB, зчитуваний до деякого тимчасового сховища, 4 KiB перезапис при правильному зміщенні згаданого тимчасового сховища, операція стирання 128 KiB і запис 128 KiB, все вищезазначене реалізовано Контролер флеш-пам'яті. Більш-менш :)
tzot

1

Тому я прийшов на цю сторінку через пошук в Google за тією ж проблемою ("ubuntu 15 пришвидшити передачу usb"), оскільки мої передачі працювали зі швидкістю 75 кбіт / с.

Мабуть, це було лише рішення для моєї настройки, але мій 16 ГБ накопичувач USB 3 був відформатований у GPT fat32, я видалив усі розділи, ініціалізував у MBR, зробив єдиний розділ NTFS, підключив його назад до свого комп'ютера Ubuntu і тепер передає файл 10 Гб при швидкості понад 50 Мб / с. Для мене проблема вирішена.


Підтверджено, що для монетного двору 18.3 (Ubuntu 16.04) перехід від fat32 до ntfs був значним покращенням.
Ворон

0

Нам потрібно переконатися, що система намагається записувати в блоки програм / стирання блоків. У сучасній флеш-пам’яті вони зазвичай розміром 1М-4М. Для цього потрібно переконатися, що ваш FS вирівняний для стирання блоків, і цей інтерфейс дозволяє передавати весь блок за один раз (для дешевих паличок). В іншому випадку ми отримаємо посилення запису, оскільки система намагається писати фрагменти, менші, ніж блок стерти (робить читання / мод / запис) + нерівність блоку.

Щоб перевірити поточне налаштування, виконайте:

cat /sys/block/sd**X**/device/max_sectors

Ви можете налаштувати правила залу для цих пристроїв. Дивіться /unix/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-20x вгору (після того, як я запустив перший розділ @ 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 секторах (можливо, 1 М стирає блоки:

SUBSYSTEMS == "scsi", ATTR {max_sectors} == "240", ATTR {max_sectors} = "2048"

Перевірте всі ваші старі USB-пристрої, щоб вони все ще працювали добре. Використовуйте атрибути постачальника / моделі у файлах правил, щоб бути більш конкретними.

PS: Якщо використовується ext3 / 4:

Вимкнути журнал та встановити стрічкову / смугову ширину для mkfs.ext3:

mkfs.ext3 -O ^ has_journal -E stride = [читати сторінку fs блоки] -E strip-width = [стерти блок fs блоків]


0

У мене були деякі проблеми також зі швидкістю передачі на зовнішньому диску WD, після відкриття його у Windows SO, я завжди використовував LINUX, після цього швидкість передачі була як 1,5 Мб / с, ніж я відключив зовнішній жорсткий диск, запустив dmesg там говорив, що sdb1 це було нерозбірливо відключено, запустив fsck, який зробив кілька ремонтів і після цього 20 Мб / с швидкість передачі знову при копіюванні з sda на зовнішній диск.
"fsck - це завжди ризик, якщо у вас є дані, але він працював на мене, без втрати даних"


0

Перевірте, дійсно перевірте , що ваш пристрій підключено до порту USB, який підтримує повну швидкість.

Хоча це може здатися нерозумним, іноді речі змішуються. Деякі материнські плати мають високошвидкісні та низькошвидкісні порти. Використовуйте такий інструмент, як usbview (зверніть увагу, щоб виконати його з правами суперпользователяsudo usbview ), щоб перевірити, чи працює ваш пристрій зі швидкістю 480 Мб / с (USB 2.0) або більше.

Наприклад, коли ви зазвичай підключаєте свій пристрій через якийсь подовжувальний кабель, концентратор на дисплеї тощо, це може статися - після повторного підключення кабелів на вашому стільничному комп'ютері чи так - ви випадково підключили концентратор до низької швидкості (USB 1.) порт. Тоді будь-які пристрої, підключені до концентратора, працюватимуть з низькою швидкістю, тоді як інші, підключені десь в іншому місці, працюють з великою швидкістю. Це може бути дуже заплутано - і це проста штучна апаратура ... Це сталося зі мною одного разу, і не пов'язане з жодними модулями ядра USB, опціями монтажу тощо.

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