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

Éric Bischoff ebischoff@::1
Mar 3 Oct 16:51:37 CEST 2006


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.
> >
> > Dans /etc/mdadm/mdadm.conf, j'ai :
> > DEVICE partitions
> > ARRAY /dev/md1 level=raid1 num-devices=2
> > UUID=d133e9c8:b1e776f7:ea6a85a6:0b9dc348
> >    devices=/dev/hda2,/dev/hdb2
> > ARRAY /dev/md0 level=raid1 num-devices=2
> > UUID=c6c199a9:a2ec1f1c:ec255263:69fb561a
> >    devices=/dev/hda1,/dev/hdb1
> >
> > 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 ?

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...

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:
        if [ "x$AUTOSTART" = "xtrue" ] ; then
            if [ ! -f /proc/mdstat ] && [ -x /sbin/modprobe ] ; then
                /sbin/modprobe -k md > /dev/null 2>&1
            fi
            test -f /proc/mdstat || exit 0
            echo -n "Starting raid devices: "
            if [ -f $CONFIG ] && [ -x $MDADM ] ; then
                $MDADM -A -s -a
            elif [ -x $MDRUN ] ; then
                $MDRUN
            fi
            echo "done."
        fi

2) Ce script n'est démarré qu'en niveaux d'exécution 0, 5 et 6:
# ls -l /etc/rc*.d/S*mdadm-raid
lrwxrwxrwx  1 root root 20 2006-01-02 13:59 /etc/rc0.d/S50mdadm-raid 
-> ../init.d/mdadm-raid
lrwxrwxrwx  1 root root 20 2006-01-02 13:59 /etc/rc6.d/S50mdadm-raid 
-> ../init.d/mdadm-raid
lrwxrwxrwx  1 root root 20 2006-01-02 13:59 /etc/rcS.d/S25mdadm-raid 
-> ../init.d/mdadm-raid
donc uniquement à des niveaux d'arrêt.

Si le RAID est censé être démarré par des scripts d'initialisation, mon 
problème est évidemment là...

Je reformule ma question ainsi :
1) quelle est la façon standard de démarrer le RAID sous une Debian ? Dès le 
initrd ou dans les scripts d'initialisation ?
2) si mon problème est bien un lien symbolique manquant, pourquoi cette 
p%!*%@::1n d'installation de mes f!!£127.0.0.1ss!!§s ne m'a-t-elle pas fait 
ce lien symbolique toute seule ?

> Si c'est 1 ou 3, ton /etc/mdadm/mdadm.conf est ignoré, le noyau fait
> sa propre cuisine, à condition que les partitions aient bien comme
> identificateur fd

Elles l'ont. Par exemple :
# fdisk -l /dev/hdb

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1         122      979933+  fd  Linux raid autodetect
/dev/hdb2             123       19457   155308387+  fd  Linux raid autodetect

Merci de ton aide.


-- 
L'Amérique ne voit-elle pas que lorsque nous laissons quelqu'un subir la 
torture, ce ne sont pas seulement la victime et le bourreau qui sont 
souillés ?
Ariel Dorfman, Le Monde, 30 septembre 2006


Plus d'informations sur la liste de diffusion linux