Bug 40005

Summary: деградированный RAID1 с /boot не подхватывается при загрузке
Product: Sisyphus Reporter: Sergey Y. Afonin <asy>
Component: make-initrdAssignee: Alexey Gladkov <legion>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: glebfm, ldv, legion, mike, placeholder
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
rules.d/* из initrd none

Description Sergey Y. Afonin 2021-04-28 11:14:50 MSK
make-initrd 2.16.0. Баг похож на bug 29831. На той же системе, про которую там шла речь в комментарии 24, отпал один hdd. При перезагрузке в /proc/mdstat получилась такая картинка:

Personalities : [raid10]
md0 : inactive sda1[1](S) sdd1[3](S) sdc1[2](S)
      589632 blocks

md1 : active raid10 sda3[0] sdc3[2] sdd3[3]
      972282880 blocks 512K chunks 2 near-copies [4/3] [U_UU]


md0: /dev/sd[abcd]1  raid1 (Version: 0.90.00) /boot
md1: /dev/sd[abcd]3  raid10/LVM всё остальное

/boot сейчас с nofail в fstab, так что система зарузилась. При этом воспроизвести сходу не вышло; после "mdadm /dev/md0 -f /dev/sdb1" md0 получается активен после перезагрузки. Удалять ещё и sdb3 дополнительно пока не пробовал.
Comment 1 Alexey Gladkov 2021-04-28 12:06:38 MSK
Если /boot нет в mountpoints, то этот массив должен полностью игнорироваться.
Какие udev-правила сгенерировались для initrd ?
Comment 2 Alexey Gladkov 2021-04-28 12:21:28 MSK
Предыдущий вопрос не актуален. Я кажется знаю, что произошло. В фиче mdadm есть скрипт, который позволяет загрузиться с деградированного массива [1]. Мы исправили udev-правила и "лишние" raid-массивы игнорируются, но когда случается таймаут, то скрипт движется по всем массивам.

Нужно научить этот скрипт на какие рейды смотреть. Нужно сгенерировать не только правила, но и список для того скрипта. Тогда он тоже будет пропускать "лишние" рейды.

[1] features/mdadm/data/lib/uevent/handlers/md-raid-member/100-timeout
Comment 3 Sergey Y. Afonin 2021-04-28 12:27:03 MSK
Created attachment 9330 [details]
rules.d/* из initrd

(In reply to Alexey Gladkov from comment #1)

> Если /boot нет в mountpoints,

Есть в fstab, только с nofail:
UUID=a9e4f81c-de96-45df-bbdc-1de2e459d8ea /boot ext4 nofail,nodev,nosuid,noexec,relatime 1 2

> Какие udev-правила сгенерировались для initrd ?

в rules.d.tgz
Comment 4 Sergey Y. Afonin 2021-04-28 12:30:57 MSK
(In reply to Alexey Gladkov from comment #2)

> но когда случается таймаут

Да, на умершем hdd система долго висела до продолжения загрузки, а сейчас быстро проскакивает. Вдимо из-за этого воспризвести не получается.
Comment 5 Alexey Gladkov 2021-04-28 13:39:42 MSK
Нужно сделать что-то такое:

http://git.altlinux.org/people/legion/packages/make-initrd.git?p=make-initrd.git;a=commitdiff;h=18ad907e224e9d34fa8f3aa946e8cf073414c61f

Вопрос в том, стоит ли генерировать отдельный конфиг для mdadm -IRs. Это не сложно сделать.
Comment 6 Sergey Y. Afonin 2021-04-28 18:33:01 MSK
(In reply to Alexey Gladkov from comment #5)

> Нужно сделать что-то такое:

Надо найти время стенд собрать и попробовать воспроизвести. Но боюсь срок обещать.
Comment 7 Alexey Gladkov 2021-04-28 18:42:02 MSK
(Ответ для Sergey Y. Afonin на комментарий #6)
> Надо найти время стенд собрать и попробовать воспроизвести. Но боюсь срок
> обещать.

Если что, то берите master. Этот коммит оказался плохим и я его переделал на uuid'ы.
Comment 8 Repository Robot 2021-05-18 17:24:35 MSK
make-initrd-2.17.0-alt1 -> sisyphus:

 Tue May 18 2021 Alexey Gladkov <legion@altlinux.ru> 2.17.0-alt1
 - Switch from upstream git tree to release tarballs.
 - Runtime:
   + Import halt/reboot/poweroff from sysvinit.
   + ueventd: Added the ability to stop processing events in the queue.
   + The stop_daemon should not show stopped pids.
   + Open rdshell by Alt-Uparrow hotkey.
 - New feature:
   + kickstart: New feature for automated execution of actions.
 - Feature mdadm:
   + Examine only arrays where mountpoints are located (ALT#40005).
 - Feature luks:
   + Remove only one new line in plain text key mode.
 - Feature lkrg:
   + Add nolkrg and noearlylkrg cmdline options (thx Vladimir D. Seleznev).
 - Feature plymouth:
   + Improve portability.
   + Run plymouth helpers only if feature is enabled.
 - Utilities:
   + depinfo: Check compression suffixes when looking for firmware (ALT#40006).
   + depinfo: Explore versioned subdirectories in the firmware search.
 - Misc:
   + Rewrite tests.