J’ai tout cassé


La machine en question…
Elle m’aura causé bien des soucis !

Il y a des jours comme ça, où, à la fin de la journée, on se dit que finalement, on aurrais mieux fait de ne pas se lever…

La semaine dernière, j’ai décidé de remplacer la gentoo qui tournait plutot bien sur mon serveur perso, par une ubuntu… Je n’avais de gros griefs envers gentoo, à part le temps perdu à chaque fois que l’on souhaite ajouter un paquet…

Je me lance donc, un petit « sudo halt », je branche un lecteur de CD, grave une ubuntu 7.04 Beta AMD64 Alternate, et me lance dans l’installation…

Tout se passe bien, sauf lors du partitionnement des disques, il ne detecte pas mon array de disque RAID5… Pas grave, je me dit que je l’installerai après (cette array n’est pas le disque système).

Une fois le système installé (au passage, elle est très bien cette nouvelle Ubuntu), je tente de monter mon array RAID5…

Un petit tour dans /proc/mdstat me dit que l’array est bien detecté, mais qu’un des 4 disques (sdb1) est offline…
Je stop l’array avec « mdadm -S /dev/md0 », puis la relance avec :


Le fichier /dev/sdb1 n’existe effectivement pas…

Pourtant dans mon dmesg, j’ai :


Qui me montre qu’il a bien trouvé une partition sdb1

et :


La, je ne comprend pas… Je ne vois pas pourquoi le device /dev/sdb1 n’est pas créé par le daemon udev. J’ai essayé de le créer à la main avec mknod, mais ça ne fait rien…

En tout cas, je me sent vraiment con d’avoir voulu changé l’os de cette machine ! Me voilà bien embeté…
J’ai donc tenté ma chance avec la toute fraîche Debian 4.0, même peines, même motifs… Par contre, depuis les CDs d’installation, via la console, j’ai parfaitement réussi à assembler et monter mon array RAID… Plutôt étrange, n’est-il pas ?

Après de nombreuses heures d’investigation (je suis resté bloqué là dessus 2 jours entiers !!!), j’ai fini par comprendre de quoi il en retourne. Les tors sont partagés entre udevd, le démon chargé de créer les périphériques dans /dev (depuis que devfs est devenu obsolète), et mdadm, qui lui est chargé de gérer les périphériques RAIDs…
En fait, mdadm installe une série de scripts dans le initramfs, chargés d’assembler les array RAID détectées une fois que les disques durs sont détectés. C’est bien… Sauf que ça ne marche pas avec des disques SATA. De nombreuses personnes l’on constatés comme en témoigne le Bug suivant sur LaunchPad

Ma solution :
Oui, je vous saoul avec mon histoire, il faut bien que je vous expose comment j’ai réussi à contourner le problème à défaut de le résoudre…
En fait, le principe est de réussir à démarrer un système sans lancer les scripts udevd relatifs au RAID. Une fois le système démarré, on assemble l’array RAID à la main, et on peut la monter…

Permet d’obtenir l’utilitaire mdadm sans les scripts de démarrage. On reboot, et on obtient un système avec toutes les partitions visibles, mais aucun disque RAID… Pour y remédier, il suffit de taper :

Et hourra, une array RAID fonctionnel…

Il ne reste plus qu’a créer un petit script de démarrage (basé sur /etc/init.d/skeleton) pour y glisser notre commande magique, l’installer dans rcS.d en position S34 (juste avant le mountall) et l’ont dispose alors d’un OS qui démarre tout seul avec sont array RAID… C’est pas trop tôt !

Bon cette manip ne résout pas le problème, mais permet de le contourner 😉 Attention, cependant, si votre disque RAID est votre partition système (/), ce système ne marchera pas !

Laisser un commentaire

Votre adresse ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.