Существует ли максимальное количество жестких дисков, которое можно подключить к 64-разрядной машине Linux? Меня не волнует практичность, так как моя ситуация связана с ВМ.
3 ответа
Из этого поста LinuxQuestions:
Linux не устанавливает произвольных ограничений на количество жестких дисков.
Также из этого поста в списке рассылки Debian:
Это легко. После /dev /sdz следует /dev /sdaa. И я только что проверил это, сделав и войдя в 800 целей ISCSI на моем ноутбуке, после /dev /sdzz приходит /dev /sdaaa. :)
Для дисков SATA и SCSI под современное ядро Linux применяется то же, что и выше, за исключением того, что код для получения имен работает должным образом за пределами sdzzz до (в теории) sd, за которым следует 29 z!
Итак, теоретически есть пределы, но на практике они недоступны.
На самом деле существует ограничение на количество дисков, предоставляемых абстрактной подсистемой SCSI Linux, которая включает в себя диски SATA и USB. Это связано с тем, что файлы устройств помечены парами основных / второстепенных номеров устройств, и схема, выделенная для подсистемы SCSI, имеет этот неявный предел.
https://www.kernel.org/doc/Documentation/devices.txt
Выделены следующие основные коды операций: с 8, 65 по 71 и с 128 по 135, в результате всего получается 16 выделенных блоков. Дополнительный код операции ограничен 256 возможными значениями (диапазон 0..255). Каждый диск получает 16 последовательных второстепенных кодов операций, где первый представляет весь диск, а следующие 15 представляют разделы.
let major = number of major allocated opcodes = 16
let minor = number of minor opcodes per major opcode = 256
let parts = number of minor opcodes per disk = 16
major * (minor / parts) = 16 * (256 / 16) = 256 possible drives
Ранее я видел, как люди пишут 128 как предел. Я верю, что Linux совсем недавно 128..135, что объясняет расхождение.
Схема именования (/dev/sdbz7
) выбирается пользователем, а не ядром Linux. В большинстве случаев ими управляют udev, eudev или mdev (хотя в прошлом они создавались вручную). Я не знаю их схемы именования. Не обязательно полагаться на все устройства именования систем на основе Linux одинаково, поскольку системный администратор может изменять политики именования устройств.
На странице возможностей и ограничений технологии RHEL предлагается не менее 10000 с достаточно свежим ядром (см. Строку «Максимальное количество путей к устройствам (устройства" sd ")»). Эта сумма больше, чем указанная @ luiji-maryo, потому что:
- Если настроено для разрешения, устройству можно динамически назначать основной / вспомогательный номер (подробности см. Https://www.kernel.org/doc/Documentation/devices.txt ).
- Малые номера устройств Linux могут быть намного больше, чем 8-битное значение.
Один из способов показать это самому себе - использовать модуль scsi_debug
:
modprobe scsi_debug max_luns=10 num_tgts=128
После небольшого ожидания в основном дистрибутиве Linux у вас должно быть еще 1280 дисков SCSI. Ты можешь использовать
ls -l <pathtodisk>
чтобы увидеть их основные / второстепенные номера.
NB (1): программное обеспечение для виртуализации обычно имеет гораздо более низкие (в сотнях или меньше, например, в пределах vSphere 6.0) ограничения на максимальное количество контроллеров, которые можно подключить к виртуальной машине, и максимальное количество дисков, которое вы можете подвесить на этих контроллерах, чтобы вы могли вряд ли вы попадете под ограничения Linux таким образом.
NB (2): BSG и SG ограничивают себя (через BSG_MAX_DEVS
и SG_MAX_DEVS
соответственно) максимум 32768 устройствами. Даже если вам как-то не нужны записи /dev / для самих дисков, вам будет сложно отправить более специализированные команды SCSI без этих дополнительных устройств.