Сколько массивов можно создать с помощью mdadm?

Он не оптимизирует выполняемые команды (и вы уже получили несколько хороших ответов, объясняющих, почему этого не следует делать), но он может оптимизировать вилки, пары труба / сокет, в некоторых случаях читает. Возможные варианты оптимизации:

  • В большинстве современных оболочек последняя команда в сценарии обычно будет выполняться в процессе оболочки, если не были установлены некоторые ловушки . Например, в sh -c ls большинство реализаций sh ( bash , mksh , ksh , ] zsh , yash , некоторые версии ash ) не будут форкнуть процесс для запуска ls .
  • в ksh93 , подстановка команды не будет создавать канал или разветвлять процесс до тех пор, пока не будет вызвана внешняя команда ( $ (echo foo) , например, будет расширяться до foo без пары патрубок / патрубок или вилки).
  • встроенная функция чтения некоторых оболочек ( bash , AT&T ksh ) не будет выполнять однобайтовые чтения, если они обнаруживают, что stdin доступен для поиска (в в этом случае они будут выполнять большие чтения и возвращаться к концу того, что они предназначены для чтения).

3
16.09.2018, 23:23
2 ответа

Вы достигли максимального предела /dev/md*массивов в одной системе Linux.

Это связано с традиционными старшими и второстепенными номерами устройств Unix. Первоначально драйверу MD RAID был присвоен номер старшего блочного устройства 9 (, определенный в /usr/include/linux/raid/md_u.hкак MD _MAJOR ), что позволяло использовать набор из 256 младших номеров устройств и, таким образом, 256 уникальных устройств массива RAID.(Канонический список распределения номеров устройств включен в документацию, поставляемую с исходным кодом ядра.)

В конечном итоге этого оказалось недостаточно, и был разработан механизм для использования одного дополнительного старшего номера (, известного в коде ядра как mdp_major), если требуется более 256 RAID-массивов. Вы можете найти код для обработки этого в исходном файле ядра .../drivers/md/md.c. Дополнительный основной номер устройства mdp_majorназначается динамически из диапазона динамических основных номеров устройств (234..254,начните сверху и распределите вниз ).

Чтобы использовать более 512 массивов MD RAID на одном хосте, этот механизм необходимо переписать, чтобы при необходимости использовать более одного динамического старшего номера.

3
27.01.2020, 21:21

Существует довольно грязный обходной путь (работает с последними ядрами из ветки 3.10.0-862.11.6)

# echo md512 > /sys/module/md_mod/paramaters/new_array
# mdadm -C /dev/md512 -l raid0 -n 1 /dev/sdd128 --force
0
27.01.2020, 21:21

Теги

Похожие вопросы