FreeBSD: Sécuriser le système contre la défaillance d’un disque

Hello,

Nouvel article sorti des archives, celui ci explique comment mettre en place un raid 1 pour sécuriser notre système contre la défaillance d’un disque. Un article précédent expliquait comment installer FreeBSD. Cet article disponible a cette adresse FreeBSD: Procédure pour l’installation du système d’exploitation servira de base à l’article d’aujourd’hui.

Notre système est opérationnel en l’état. Un redémarrage de la machine est suffisant pour prendre la main dessus et ainsi pouvoir travailler. Seulement, il y a un petit bémol. Si le disque dur venait à rendre l’âme (et ça arrivera à un moment ou un autre), la machine serait hors service pendant un laps de temps plus ou moins long. Une remise en état peut également prendre du temps suivant que le matériel soit disponible immédiatement ou pas.

Une solution (parmi d’autres) existe pour remédier à ce cas de figure, s’il devait se produire. Le RAID (Redundant Array of Independent Disks ou matrice redondante de disques indépendants) permet d’utiliser plusieurs disques physiques pour n’en faire qu’un seul virtuel. Il existe plusieurs types de RAID, celui qui nous intéresse est le RAID1 c’est-à-dire la possibilité de dupliquer les données d’un disque vers l’autre pratiquement en temps réel. L’avantage avec ce type de RAID, c’est que si un des disques venait à lâcher, le second peut prendre le relais sans coupure ou arrêt de la machine.

FreeBSD intègre une suite d’outils permettant de gérer entre autres les différents types de RAID. Cette gestion se fait de façon logicielle directement par le système. Il existe aussi des RAID matériels dont je ne parlerai pas ici (se renseigner en cas de besoin, il existe pas mal de docs à ce sujet sur internet).

gmirror, gstripe et graid3 sont des outils qui permettent de gérer le RAID (raid1, raid0, raid3) sur les systèmes FreeBSD assez simplement.


Mise en place

A la fin de la procédure d’installation, à l’étape 10 de l’article cité plus haut, lorsqu’on se retrouve sur le menu principal, il ne faut pas redémarrer la machine tout de suite.

http://tinoob.free.fr/images/FreeBSD/freebsd_install_10_02.png

En effet, avec la combinaison de touche alt+f4, on arrive sur un shell (interpréteur de commande) qui va nous permettre de la mise en place du raid.

Dans un premier temps, nous allons enlever une sécurité qui empèche l’ecriture sur le disque.

# sysctl kern.geom.debugflags=16

Ensuite, on créé une grappe raid de type mirroir (raid 1) avec comme algorythme le round-robin (d’autres existes, voir le man gmirror pour plus d’informations) et comme membre le disque ad0. Oui pour le moment on en met qu’un seul, l’ajout du second se fera plus tard.

# gmirror label -v -b round-robin gm0 /dev/ad0
Metadata value stored on /dev/ad0.
Done

On poursuit avec l’activation du module gmirror au démarrage de la machine.

# echo geom_mirror_load="YES" >> /boot/loader.conf

Et enfin, il reste a modifier le fichier /etc/fstab pour indiquer que l’on souhaite démarrer depuis notre grappe raid et plus le disque ad0.

# sed -i .orig 's/ad0/mirror\/gm0/' /etc/fstab

On revient sur le menu principal avec la combinaison alt+F1 et à partir de maintenant, la machine peut être relancer pour démarrer sur le raid logiciel si tout a été suivi dans les règles.


Ajout d’un deuxième disque

On repère dans la liste de nos disques le nom de celui que l’on souhaite ajouter à notre grappe.

# grep -i -E 'ad|da' /var/run/dmesg.boot
ad0: 39205MB <Maxtor 6E040L0 NAR61590> at ata0-master UDMA100
ad2: 78167MB <Maxtor 6Y080P0 YAR41BW0> at ata1-master UDMA100

On voit ici deux disques, le premier ad0 qui est déjà utilisé, et le second nommé ad2, que l’on va ajouter dans la grappe raid.

L’ajout en lui même, se fait avec une seule commande. Celle ci est la suivante :

# gmirror insert gm0 /dev/ad2
GEOM_MIRROR: Device gm0: rebuilding provider ad2

Il est possible de voir la progression de la synchronisation avec :

# gmirror status
      Name	Status  		Components
mirror/gm0	DEGRADED	ad0
                      			ad2 (10%)

La phase de synchronisation prendre plus ou moins de temps en fonction des caractéristiques des disques, de leurs tailles ainsi que des données qui s’y trouve.

A la fin de la synchronisation le message suivant apparaît à l’écran :

GEOM_MIRROR: Device gm0: rebuilding provider ad2 finished.

Et en checkant le status de gmirror, on devrait avoir ceci :

# gmirror status
      Name	Status		Components
mirror/gm0	COMPLETE	ad0
                      			ad2


Remplacement d’un disque défectueux

En cas de disfonctionnement d’un des disques constituant le RAID, il faut bien entendu le remplacer. Le remplacement d’un disque défectueux se fait assez aisément. Cette manipulation relèverait presque de la formalité.

L’opération consiste tout simplement éteindre la machine pour remplacer le disque dur. Il faut bien entendu remettre le disque exactement au même endroit que le disque retiré. La remise en route de la machine détectera automatiquement le nouveau disque. Il faudra ensuite le réinsérer dans le raid pour re-synchroniser les deux disques.

On suppose que le disque qui a disparu est le second disque. Pour le coup gmirror nous indique l’etat de la grappe de la facon suivante :

# gmirror status
      Name    Status  Components
mirror/gm0  DEGRADED  ad0

On signale dans un premier temps au module geom_mirror qu’un disque a été enlevé :

# gmirror forget gm0

Puis on insère le deuxième :

# gmirror insert gm0 /dev/ad2
GEOM_MIRROR: Device gm0: rebuilding provider ad2.

La phase de reconstruction démarre. A la fin de celle ci le mssage suivant apparait à l’ecran :

GEOM_MIRROR: Device gm0: rebuilding provider ad2 finished.

Et pour être sûr, un dernier coup de gmirror :

# gmirror status
      Name	Status		Components
mirror/gm0	COMPLETE	ad0
                      			ad2

Donc au final, notre système est protégé contre la perte d’un des disque. Bien entendu ca ne remplace pas une bonne sauvegarde, simplement ca évite les procédures très longes de remise en route/réinstallation d’un système à neuf suite au crash d’un disque.

A bientot pour un nouvel article sorti de mes archives ;)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


quatre × 4 =

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>