Bonjour,
Depuis quelques jours, ma machine personnelle a des problèmes de démarrage.
Ma machine dispose d’un petit disque indépendant sur lequel se trouve le
/boot, et d’un ensemble de 3 disques en RAID 5 sur lequel se trouve un
groupe de volume LVM, lui-même contenant toutes les partitions classques
(/, /usr, …). Cette configuration est en place depuis plusieurs années et
a toujours bien fonctionné.
Si je la laisse partir sur le nouveau noyau par défaut de Debian/Jessie
(3.9-1-amd64), elle se bloque tout de suite n’arrivant pas à trouver les
disques RAID. J’ai un message du genre :
« mdadm: no devices listed in conf file were found »
Ce message est affiché très tôt dans la séquence d’amorçage, alors que le
système n’a manifestement pu que lire le noyau et le initramfs depuis la
partition /boot (qui est bien entendu hors du raid). Les conséquences sont
immédiates : n’arrivant donc pas à trouver la grappe de disques raid, il n’a
pas le device /dev/md0, donc il ne trouve pas le lvm qui est dessus et contient
le groupe de volume vg00, donc il ne trouve aucune partition (/, /usr …). Évidemment,
il ne peut pas aller très loin dans ces conditions … La séquence s’interromp
donc immédiatement, et je me retouve avec une invite de commande busybox. Malheureusement,
je ne peux rien en faire car mon clavier ne répond plus (alors qu’il fonctionnait tant
que j’étais sous le bios par exemple) … Je suis obliger d’éteindre électriquement la
machine.
Si par contre je sélectionne dans le menu grub l’ancien noyau toujours
en place (3.2.0-4-amd64), tout démarre parfaitement. Dans les premiers instants du
démarrage, j’ai un message bien plus normal concernant le raid, un truc du genre
(de mémoire) :
« /dev/md/0 has been started with 3 drives »
J’ai vérifié les fichiers /etc/default/mdadm et /etc/mdadm/mdadm.conf à la fois sous ma
partition / une fois que la machine est démarrée avec l’ancien noyau, mais également
dans les partitions temporaires contenues dans les deux initramfs correspondant aux deux
noyaux (et qui ont été créés tout à fait normalement par un update-initramfs). Dans tous
les cas, la configuration raid paraît normale et complète.contient bien les options de
démarrage automatique, le fichier /etc/mdadm/mdadm.conf contient bien l’UUID de la
grappe de disques.
J’ai tenté de refaire plusieurs fois le initramfs, mais les problèmes persistent.
Évidemment, comme le problème se situe avant l’accès aux disques
physiques, quand j’amorce mon système sur l’ancien noyau, je ne trouve
dans le /var/log que des informations sur les démarrages du 3.2.0.
Toutes les tentatives de démarrage sur le 3.9 échouent et ne laissent
aucune trace dans le /var/log puisqu’il est sur une partition non trouvée …
J’ai comparé les fichiers /boot/config-3.2.0-4-amd64 et
/boot/config-3.9-1-amd64, et la seule chose semblant liée au RAID est
que la version 3.2 a une ligne : CONFIG_MULTICORE_RAID456 is not set. À
la limite, j’aurais donc dit que c’est plutôt le noyau 3.2 qui ne
devrait pas fonctionner.
J’ai décompressé et dé-cpioisé les deux initramfs pour comparer les
fichiers de configuration. Le /etc/mdadm/mdadm.conf est strictement
identique dans les deux cas. Les modules pour les pilotes raid sont
présents dans les deux cas sous
/lib/modules//kernel/drivers/md. Les fichiers
/lib/modprobe.d/aliases.conf sont rigoureusement identiques dans les
deux cas. Les fichiers modules.aliases ont des petites différences, il y
a quelques lignes en plus dans la version 3.9:
root@lehrin:/tmp# diff 3.2/lib/modules/3.2.0-4-amd64/modules.alias
3.9/lib/modules/3.9-1-amd64/modules.alias
1a2
alias fs-ext4 ext4
3a5,7
alias fs-fuseblk fuse
alias fs-fuse fuse
alias fs-fusectl fuse
179a184,185
alias pci:v00008086d00002827svsdbcsci* ahci
alias pci:v00008086d00002823svsdbcsci* ahci
root@lehrin:/tmp#
Il y a aussi quelques différences dans les fichiers modules.order et
modules.symbols, mais rien qui ne semble expliquer mon problème.
Je ne comprends pas pourquoi mon noyau 3.9 n’arrive pas à ouvrir le
/dev/md0, tout semble correctement déclaré, le noyau semble avoir tous
les modules nécessaires pour activer le raid, et tout marche parfaitement
avec l’autre noyau.
Un collègue m’a récemment indiqué avoir eu des problèmes avec le noyau
3.9 (une histoire d’UUID qui avait changé bizarrement, avec juste deux
chiffres hexadécimaux inversés à la fin). Le fichier /etc/mdadm/mdadm.conf
déclare la grappe par une ligne contenant l’UUID plus un nom :
ARRAY /dev/md/0 metadata=1.2 UUID= name=:0
J’ai tenté de reconstruire les initramfs en retirant l’UUID au cas où le problème
rapporté par mon collègue expliquerait que le raid ne soit pas trouvé, mais d’une
part update-initramfs m’a affiché un avertissement disant que cette grappe raid
active n’était pas déclarée et donc risquait d’empêcher le démarrage, d’autre part
quand j’ai tenté malgré tout le démarrage, j’ai bien entendu eu de nouveau les
mêmes problèmes.
Si je regarde les disques avec fdisk, j’observe ceci :
(lehrin) luc% sudo fdisk /dev/sdd
Command (m for help): p
Disk /dev/sdd: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xa93e0ab4
Device Boot Start End Blocks Id System
/dev/sdd1 63 1953520064 976760001 da Non-FS data
C’est à dire que l’ID des partitions utilisées dans la grappe raid est
positionné à la valeur « da » qui correspond à Non-FS data au lieu
d’être à « fd » qui correspondrait à Linux RAID autodetect. La même
valeur est utilisée pour les trois disques de la grappe (c’est du RAID 5).
Pensez-vous que ceci puisse être la raison de mon problème, et surtout
pensez-vous que je puisse changer l’id des partitions pour la mettre à «
fd » sans risque ? Puis-je le faire petit à petit, en désactivant un
disque, changeant son id, reconnectant le disque, synchronisant la
grappe et recommençant pour les disques suivants ? Quelle serait la
liste de commandes à lancer pour ce faire ?