[make-initrd] I: pipeline feature

Leonid Krivoshein klark.devel at gmail.com
Thu Feb 18 21:18:46 MSK 2021


18.02.2021 20:38, Alexey Gladkov пишет:
> On Thu, Feb 18, 2021 at 07:55:31PM +0300, Leonid Krivoshein wrote:
>> Привет!
>>
>>
>> [...]
>> Получится ли использовать эту фичу, чтобы дождаться сборки других рейдов, не
>> связанных с корневым разделом? Дело в том, что сейчас make-initrd всеми
>> правдами может собрать рейд, на котором есть корневой раздел, но если на
>> внешней корзине много дисков и там несколько более сложных рейдов, с корнем
>> не связанных, они собраться не успевают до pivot_root, так что правила
>> systemd во второй стадии загрузки их тоже не могут собрать, так как там
>> стоит защита от состояния "inactive". Грубо говоря, в простом случае тут
>> хватило бы какой-то простой задержки, иначе начальная загрузка ломает
>> собираемость больших рейдов с данными.
> Эта фича не про рейды совсем.

Понял.


> Попросить make-initrd смонитровать не только
> корнефой раздел можно другими методами.

Отлично! Об этом смотри в самом конце..


> Я не очень понял описанную проблему.

https://bugzilla.altlinux.org/39695


> "Всеми правдами" это вы имеете в виду стандартные правила сборки рейда из
> самого mdadm ?

Имел ввиду, что в make-initrd есть "лекарство" для загрузки с read-only 
и деградированных рейдов, т.е. когда с ними не всё в порядке, но данные 
в принципе доступны. 
http://git.altlinux.org/gears/m/make-initrd.git?p=make-initrd.git;a=blob;f=features/mdadm/data/lib/uevent/handlers/md-raid-member/100-timeout;h=96e07da66ee6e7e0ecac6b34359e861a6c0d2d9b;hb=4731c727c756c15776a020780828fa5e33ddef7a

То есть, рейд с корнем он соберёт даже в довольно плохом случае.


> Если не хватает времени, то есть rootdelay=X, который можно выставить хоть
> в сутки. Также есть параметр raid-member-delay=X через который можно
> отключить получение degraded raid. Правильное указание этих параметров
> должно решать описанную проблему.

Не помогло (см. в баге). Уже немного разобрался, почему так происходит и 
даже придумал временный объезд. Возможно, простой способ ПРАВИЛЬНО 
решить проблему -- иметь два _РАЗНЫХ_ /etc/mdadm.conf на такие случаи, 
когда рейды используются не для корня. Главное, чтобы эти рейды с 
данными не начинал собирать интеллект в initramfs (ограничить 
DEVICES=...), тогда в обычной системе правила udev сами его соберут.

Сейчас проблема в том, что процесс assembly запускается, но успевает 
отрабатывать лишь для простого RAID1 с корнем, а остальные RAID6 с кучей 
дисков просто не успевают собраться и, как я полагаю, состояние inactive 
во второй стадии мешает их собрать штатным правилам udev. Грубо говоря, 
наличие второго конфига типа /etc/mdadm-initrd.conf решило бы проблему 
-- если такой файл есть, тянут в initramfs его, если нет, тянуть обычный 
конфиг.

Однако, есть одно сомнение: make-initrd монтирует только корень или 
что-то ещё из /etc/fstab? Если он монтирует всё, то предложенный 
воркэраунд не поможет. Тогда хорошо бы скармливать какими-нибудь 
параметрами, каких ещё дисков (событий) следует дождаться до pivot_root...


-- 
Best regards,
Leonid Krivoshein.



More information about the Make-initrd mailing list