7

Мне интересно, какое максимальное количество USB-устройств может обрабатывать ядро Linux? Зависит ли это от рут-хаба или чего-то еще тоже?

Есть ли способ увеличить это максимальное число?

Мне нужно это сделать, потому что у меня возникли проблемы при попытке записи на большое количество флешек. Для этого у меня есть настройки следующим образом:

Существует 1 компьютер под управлением Ubuntu Linux, с 3 (активными) концентраторами, подключенными к 3 USB-портам этой машины. Все эти три концентратора являются 7-портовыми концентраторами. К 6 из этих 7 портов подключено больше концентраторов. Это дает мне количество 3 * 6 = 18 концентраторов во "втором" слое. Каждый из этих концентраторов также является активным 7-портовым концентратором. К каждому порту этих концентраторов второго уровня подключена флешка. Всего у меня есть 126 флешек, подключенных к компьютеру.

У меня есть скрипт, который ищет все USB-устройства (через список /dev /disk /by-path /). Затем каждое из USB-устройств сначала разбивается на разделы, записывается в cp и затем загружается с использованием syslinux. Это НЕ делается параллельно!

Проблема: я получаю только 105 USB-накопителей, использующих

ls -la /dev/disk/by-path | grep usb | grep -v part | wc -l

Светодиоды палочек в 3 рядах (один ряд соответствует одному концентратору во втором слое) тоже не горят.

Как мне заставить все эти палки работать? (Или, может быть, даже больше?)

1 ответ1

3

Это стандартно, как описано здесь: https://en.wikipedia.org/wiki/USB_device#System_design

К одному хост-контроллеру нельзя подключить более 127 устройств (включая концентратор).

Теперь: хост-контроллер +3 концентратора (1-й уровень) +18 концентраторов (2-й уровень) = 22 устройства, которые НЕ отображаются как дисковые устройства.

127 минус эти 22 USB-устройства = 105 устройств, которыми ядро может управлять как дисками.

127 устройств - это жесткое ограничение протокола USB (см. Здесь: http://www.beyondlogic.org/usbnutshell/usb3.shtml#USBProtocols), поскольку поле адреса ADDR имеет длину 7 бит.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .