Mise en miroir du disque de démarrage sous FreeBSD
Juste une petite note sur la mise en miroir logiciel (raid 1) de mon disque sous FreeBSD avec un autre disque identique. Cela va se faire avec l'utilitaire gmirror. Je reprends les indications du chapitre “Disk tricks with GEOM” du livre “FreeBSD 7.0 : le guide complet du FreeBSD” (excellent livre par ailleurs).
Préparation
Avant tout, le sujet est délicat et dans ce cas le réflexe de la sauvegarde de vos données et de vos fichiers de paramétrage est conseillé… Non, obligatoire, un système se réinstalle, vos données restent irremplaçables.
IMPORTANT: Si vous décidez de suivre cet exemple pour mettre en miroir votre propre disque, je vous engage à lire la note complètement avant de procéder de votre coté. Je vous engage aussi à lire le sujet sur le Handbook de FreeBSD. Ceci n'est qu'un exemple, une note sur les actions que j'ai réalisées pour arriver au but. Je ne saurais être tenu pour responsable de toute déconvenue!
Pour commencer voici la table de partition du premier disque qui doit être “mirroré” :
# Device Mountpoint FStype Options Dump Pass# /dev/ad4s1b none swap sw 0 0 /dev/ad4s1a / ufs rw 1 1 /dev/ad4s1d /var ufs rw 2 2 /dev/ad4s1e /home ufs rw 2 2 # /tmp est géré en mémoire - voir /etc/rc.conf /dev/acd0 /cdrom cd9660 ro,noauto 0 0
Je commence par créer un fichier de remplacement pour fstab prenant en compte les futures partitions vues du miroir qui se nomme pour l'instant /etc/fstab.mirror :
# Device Mountpoint FStype Options Dump Pass# /dev/mirror/RootMirror0s1b none swap sw 0 0 /dev/mirror/RootMirror0s1a / ufs rw 1 1 /dev/mirror/RootMirror0s1d /var ufs rw 2 2 /dev/mirror/RootMirror0s1e /home ufs rw 2 2 # /tmp est géré en mémoire - voir /etc/rc.conf /dev/acd0 /cdrom cd9660 ro,noauto 0 0
Je le rédige à l'avance car les autres actions se feront en mode single user et pour fstab j'aurais juste à remplacer l'original par le nouveau que je viens d'écrire.
FreeBSD est capable de démarrer sur un disque en raid 1 mais il faut s'assurer que le module du noyau geom_mirror soit chargé au démarrage du système. Pour cela il faut l'indiquer par la ligne suivante dans /boot/loader.conf :
geom_mirror_load="YES"
Il vaut mieux redémarrer le système pour vérifier que le module est bien chargé au lancement du sytème si vous ne voulez pas risquer de vous compliquer la vie.
Après le redémarrage kldstat va vous permettre de vérifier que le module geom_mirror est bien chargé :
shell$ kldstat Id Refs Address Size Name 1 4 0xffffffff80100000 6ec8a8 kernel 2 1 0xffffffff807ed000 3b880 geom_mirror.ko 3 1 0xffffffff80829000 9d60 snd_ich.ko 4 2 0xffffffff80833000 a3168 sound.ko
Création du miroir
Cette formalité effectuée, la suite se passe en mode single user, par conséquent un redémarrage est encore nécessaire. Une fois en mode single user la partition racine se trouve en lecture seule. Il nous faut pouvoir modifier /etc/fstab par conséquent il faut monter la partition racine en lecture et écriture :
mount /dev/ad4s1a /
Des actions de l'utilitaire sur cette partition ne pourront se faire sans modifier comme indiqué le paramètre noyau suivant :
sysctl kern.geom.debugflags=16
Ensuite il faut remplacer le fichier /etc/fstab par celui prenant en compte les partitions miroirs et créer le miroir proprement dit.
La création du miroir se fait avec la commande gmirror :
gmirror label -v RootMirror0 /dev/ad4
La création du miroir est réalisée seulement avec un disque pour l'instant. Nous allons redémarrer maintenant le système afin de se retrouver en mode multi utilisateurs pour les actions suivantes.
Le système redémarré, il reste à ajouter le deuxième disque dans le miroir (sinon le miroir serait plutôt pauvre et ne remplirait pas son rôle de sécurisation des données).
gmirror insert RootMirror0 /dev/ad6
Le deuxième disque est pris en compte de suite dans le miroir mais il faut un certain temps pour sa construction afin qu'il soit vraiment la réplique du premier disque. Pour voir l'avancement de la construction :
shell$ gmirror status
Name Status Components
mirror/RootMirror0 DEGRADED ad4
ad6 (3%)
Dans l'exemple, l'état de construction du deuxième disque est à 3% d'avancement!
Félicitations, vous avez maintenant un disque de démarrage redondant. Si vous perdez le premier disque, tout ce que vous avez à faire est d'indiquer au bios de démarrer sur le deuxième.
Références
- “FreeBSD 7.0 : le guide complet du FreeBSD” pour la version française
- Le manuel de référence FreeBSD - RAID1 - “mirroring”



Discussion
Juste un petit mot pour signaler que la deuxième édition du livre “Absolute FreeBSD” a été traduite en français. Elle a paru le mois dernier chez Pearson Education France sous le titre “FreeBSD 7.0 : le guide complet du FreeBSD”.
J'ai placé la référence à la version française de ce livre dans l'article. Pour ma part, la version originale me convient très bien. Mais de savoir qu'une traduction française a été réalisée me réconforte dans l'opinion que j'ai de ce livre! Merci