[Linux] RAID qui ne se met pas en route à l'amorçage

Benoit SPECKEL Benoit.Speckel@::1
Mar 3 Oct 18:59:28 CEST 2006


On Tue, Oct 03, 2006 at 04:51:37PM +0200, Éric Bischoff wrote:
> Le Mardi 3 Octobre 2006 15:19, Benoit SPECKEL a écrit :
> > > J'ai deux partitions en RAID 1 :
> > > 	md0 = hda1 + hdb1
> > > 	md1 = hda2 + hdb2
> > >
> > > md0 est utilisée telle quelle (pour /boot), md1 est utilisée avec du LVM
> > > dessus.
> > >
> > > Au redémarrage, md0 est bien composé de hda1 et de hdb1. En revanche, md1
> > > ne comprend que hda2 et il faut à chaque fois ajouter hdb2 à la main, à
> > > chaud.
...
> > > J'utilise GRUB comme gestionnaire d'amorçage.
> 
> Salut Benoît,
> 
> > Faudrait un peu plus de détails), qui est sensé démarrer le RAID ?
> > 	- noyau
> > 	- initrd sans raidautorun
> > 	- initrd avec raidautorun
> 
> Comment le détermine-t-on ?
Il faut voir le contenu d'initrd. Si l'initrd en question n'est pas
un initramfs (archive cpio, récent), c'est un fichier contenant un
filesystem compressé.
La séquence suivante devrait marcher :
	gunzip < /initrd.img-2.6.8-2-686 > /tmp/initrd.img-2.6.8-2-686
	mount -ro loop /tmp/initrd.img-2.6.8-2-686 /mnt
S'il réclame le type du filesystem, avec un noyau Debian, c'est
probablement du cramfs.

Et là, si le démarrage n'est pas à la charge du noyau, il
devrait y avoir l'exécutable mdadm et /etc/mdadm/mdadm.conf

Pour les identificateur de partitions :
	fdisk -l

Après quelques déboires, noyau 2.4 maison sur sarge, j'ai un peu creusé
la question. Si on veut mettre le raid en modules (ainsi que les
drivers nécessaires pour accéder aux disques), 2 possibilités :
	- certaines distributions (SuSE...) ont un utilitaire
	  raidautorun qui permet de relancer l'autodétection par le
	  noyau après avoir chargé les modules raid et ceux des
	  controleurs disque
	- démarrer avec mdadm
Personnellement, j'utilise un générateur d'initrd maison utilisant
mdadm (l'initrd-tools Debian n'aime pas tellement mes noyaux, pour des
raisons qui m'échappent, et, du coup, je n'ai pas besoin de cramfs).

La configuration automatique avec scan des partitions n'a jamais voulu
fonctionner (le noyau est plus malin), il m'a fallu mettre le fichier
de configuration dans l'initrd.  Là, je te suggèrerais de donner
explicitement les devices, quelque-chose du style :
	DEVICE /dev/hd*[0-9]

> Dans /boot/grub/menu.lst, j'ai
> 
> title           Debian GNU/Linux, kernel 2.6.8-2-686
> root            (hd0,0)
> kernel          /vmlinuz-2.6.8-2-686 root=/dev/mapper/grstift-racine ro
> initrd          /initrd.img-2.6.8-2-686
> savedefault
> boot
> 
> ce qui signifie forcément que LVM fonctionne déjà lorsque le noyau se lance, 
> mais ça ne m'apprend pas beaucoup plus...
Non, pour charger le noyau et l'initrd en mémoire, grub n'a qu'a
décortiquer la première partition (avec du raid1, grub peut traiter la
partition comme une partition ordinaire).

Après démarrage, le noyau monte l'initrd transformé en ramdisk, et lance
le script linuxrc, normalement chargé de préparer le montage de la racine,
et éventuellement de la monter via l'exécutable pivot_root.

> En fouillant dans les scripts de démarrage, j'ai aussi remarqué les choses 
> suivantes :
> 
> 1) Le démarrage du RAID pourrait bien être à la charge du 
> script /etc/init.d/mdadm-raid, puisqu'il contient:
...
Dans ton cas, c'est trop tard, à ce niveau, la racine doit être montée,
et donc le raid démarré !

-- 
Cordialement,

Benoit SPECKEL


Plus d'informations sur la liste de diffusion linux