Skip to content

Mise en oeuvre du RAID logiciel sous Linux sur la partition root

Cet article est une recette de cuisine pour mettre sa partition root sur une partition de type RAID logiciel.
Il n'y a pas besoin de recommencer une installation ou d'avoir une partition particulière, on va utiliser ce qui existe déjà.
Il ne decrira pas les différents types de RAID disponibles et leurs avantages/inconvénients.

Noyau

Pour utiliser le RAID logiciel, on va se servir des drivers qui sont disponibles dans le noyau.
Pour cela, 2 solutions :

  • création d'un initrd avec les drivers RAID pour que le noyau puisse les charger avant d'avoir accès à la partition root,
  • recompilation d'un noyau avec les drivers RAID en dur
C'est la deuxième solution qui est utilisée dans cet article, on ne verra pas comment créer l'image initrd.

Pour la recompilation, il faut inclure les modules suivants :

  • dans le menu "Multiple-device support (RAID and LVM)
  • sélectionner "Multiple devices driver support"
  • sélectionner "RAID Support"
  • puis sélectionner les versions que RAID que vous voulez utiliser

Ne reste plus qu'a lancer la coompilation, modifier votre bootloader et à rebooter la machine.

Le principe

Pas besoin de faire une installation sur une partition temporaire, on va utiliser une fonctionnalité du driver RAID pour pouvoir utiliser la partition root déjà existante : la notion de failed-disk.

Le principe est simple : on va créer notre volume RAID avec notre partition root mais en lui disant de ne pas l'inclure dans le volume (ce qui va nous permettre de garder la vraie partition ou cas où la machine ne rebooterait pas la première fois ;-))

Les partitions

Il faut bien sur créer les partitions physiques supplémentaires que l'on va utiliser pour notre RAID.
Dans le cas ici, on a choisi de faire du RAID1 (miroir), donc il faut créer une partition de même taille.
Il faut ensuite changer le type de cette partition pour lui donner le type "Linux raid autodetect", numéro fd

Création de la partition RAID

Pour ce faire, il nous faut les outils raidtools2.
sur une Debian, l'installation se fait avec la commande : apt-get install raidtools2

On va ensuite éditer le fichier de définition des partitions RAID : /etc/raidtab raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
persistent-superblock 1
device /dev/sda1
failed-disk 0
device /dev/sdb1
raid-disk 1

  • raiddev : nom de la partition RAID, elle doit etre de la forme /dev/mdX
  • raid-level : niveau de raid pour la partition, dans notre cas, on va faire du RAID1, c'est-à-dire du mirroir (toutes les données seront écrites en même temps sur toutes les partitions physiques qui constituent la partition RAID)
  • nr-raid-disks : nombre de partitions physiques dans la partition RAID
  • nr-spare-disks : nombre de partitions de secours (en fait ces partitions ne seront pas utilisées en régime normal de fonctionnement, mais uniquement dans le cas où une partition viendrait à disparaitre)
  • persistent-superblock : permet de dire au driver RAID de mettre les informations du volume RAID sur les partitions physiques (obligatoire dans le cas de démarrage sans initrd)
  • device : va définir les partitions physiques à inclure dans la partition RAID
  • failed-disk x : définir le disque comme mauvais et on ne l'inclut pas dans le RAID, x est le numéro de la partition dans la partition RAID
  • raid-disk x : la partition est à include dans le RAID, x est le numéro de la partition dans la partition RAID
On voit que l'on met notre partition root actuelle comme failed-disk pour ne pas la "détruire" tout de suite car elle va nous servir ;-)
Une fois notre partition définie, on va la créer : mkraid /dev/md0
On va ensuite créer un système de fichier dessus : mkfs -t ext3 /dev/md0
Ensuite on la monte : mount /dev/md0 /mnt
On copie notre partition root dessus (c'est là où on se sert de notre bonne veille partition root ;-)) : find / -xdev | cpio -pm /mnt
On modifie le /etc/fstab pour prendre en compte notre nouvelle partition root (qui est la partition RAID) : /dev/md0 / ext3 errors=remount-ro 0 1
On modifie aussi /etc/lilo.conf (ou son /boot/grub/menu.lst) pour prendre en compte ce changement : image=/boot/vmlinuz-2.4.25 label=raid root=/dev/md0 read-only (Pour le moment on va toujours utiliser le lilo présent sur la partition root non RAID).
On démonte la partition : umount /mnt
On arrête le raid : raidstop /dev/md0
Et on met à jour le MBR (dans le cas de lilo) : lilo
Et on va pouvoir rebooter la machine avec normalement la partition root en RAID ;-)

Intégration de notre ancienne partition

Une petite vérification permet de voir si on a bien booter sur la partition RAID : mount
On devrait avoir : /dev/md0 on / type ext3 (rw,errors=remount-ro)
Si cela est le cas, on va pouvoir intégrer notre ancienne partition dans la partition RAID.
Pour cela il suffit de faire : raidhotadd /dev/md0 /dev/sda1
A partir de ce moment là, le driver RAID va synchroniser les deux disques présents dans la partition RAID (en prenant bien sur /dev/sdb1 comme maitre).
Ne reste plus qu'à attendre la fin de la synchronisation. Pour le vérifier : cat /proc/mdstat
On va ensuite modifier la définition de notre RAID dans /etc/raidtab pour réfléter notre nouvelle configuration : on modifie le failed-disk en raid-disk.
On vérifie le /etc/fstab.
On vérifie le /etc/lilo.conf.
On modifie le type de l'ancienne partition root en type "Linux raid autodetect", numéro fd (avec cfdisk).
Et on peut rebooter pour avoir une machine avec sa partition root sur la partition RAID finale.

Lilo

Dans le cas d'utilisatition de RAID sur la partition root, on veut la plupart du temps se prémunir d'un incident sur un des disques durs.
Par contre, il faut pouvoir aussi rebooter dans le cas où un des disques flanchent.

Pour cela, on va créer un MBR sur les 2 disques que composent notre partition RAID root.

Principe

On va créer 2 fichiers de configuration pour lilo, modifier le script lilo pour qu'il les prenne en compte.

Réalisation

Copie du lilo d'origine mv /sbin/lilo /sbin/lilo.orig
On copie le fichier de configuration de lilo actuelle et on modifie la ligne "boot=" en fonction du disque dur utilisé. cp /etc/lilo.conf /etc/lilo-sdb.conf
mv /etc/lilo.conf /etc/lilo-sda.conf
On edite un nouveau script /sbin/lilo lilo.orig -C /etc/lilo-sda.conf
lilo.orig -C /etc/lilo-sdb.conf
On le rend exécutable chmod +x /sbin/lilo
On va modifier le script /sbin/lilo.orig : modification des 2 lignes avec $0.real en lilo.real.

Et voila, on peut maintenant lancer lilo et cela va mettre à jour le MBR des 2 disques durs.
Ne reste plus qu'à ne pas oublier de mettre à jour les deux fichiers de configuration ;-)

Rétroliens

Pas de rétroliens

Commentaires

Afficher les commentaires en Vue non groupée | Vue groupée

Pas de commentaires

Ajouter un commentaire

Marquer un texte en gras: *mot*, souligner un texte: _mot_.
Les smilies standard comme :-) et ;-) sont convertis en images.
Les adresses Email ne sont pas affichées, et sont seulement utilisées pour la communication.

Pour éviter le spam par des robits automatisés (spambots), merci d'entrer les caractères que vous voyez dans l'image ci-dessous dans le champ de fomulaire prévu à cet effet. Assurez-vous que votre navigateur gère et accepte les cookies, sinon votre commentaire ne pourra pas être enregistré.
CAPTCHA

Form options
tweetbackcheck