Certains serveurs de votre réseau sont plus sensibles que d’autres: on peut citer par exemple les serveurs DNS, LDAP ou base de données. D’un autre coté les pannes matérielles survenant sur ces mêmes serveurs viennent souvent des disques durs. En partant de ces deux constats, je vous propose dans ce billet d’utiliser la fonction de RAID 1 logicielle de FreeBSD pour sécuriser ces serveurs.
Petit rappel sur RAID 1
Le RAID 1 consiste à utiliser n disques redondants (n supérieur ou égal à 2). Chaque disque contient la même information.
Dans notre exemple, nous allons utiliser une configuration minimale pour du RAID 1: deux disques de taille et de caractéristiques équivalentes.
Préparation de l’installation
Il faut dans un premier temps identifier les disques sur lequel de RAID 1 va être installé. Pour celà la commande dmesg devrait vous aider:
# dmesg
ad4: 76319MB <WDC WD800AAJS-70TDA1 01.00A03> at ata2-master SATA150
ad6: 76319MB <WDC WD800AAJS-70TDA1 01.00A03> at ata3-master SATA150
Nous avons donc deux disques: ad4 et ad6.
Ensuite on regarde ou le système est installé:
# df
/dev/ad4s1a 71621288 1044946 64846640 2% /
FreeBSD est donc installé sur le disque ad4. Nous allons donc nous servir du disque ad6 pour créer le disque mirroir de ad4.
Configuration du RAID 1 sous FreeBSD
Nous allons utiliser l’utilitaire gmirror pour effectuer le “mirroring” de ad4 vers ad6.
La première chose à faire est de vérifier que votre version de FreeBSD supporte cette fonction.
# man gmirror
Si c’est le cas, le manuel de la commande devrait s’afficher.
On commence par préparer le disque “maître” (ad4 dans notre exemple):
# sysctl kern.geom.debugflags=17
# gmirror label -vb round-robin gm0 /dev/ad4
Le résultat de cette dernière commande devrait être:
Metadata value stored on /dev/ad4.
Done.
On charge ensuite le module gmirror dans le kernel.
# gmirror load
Si vous n’avez pas de message d’erreur vous pouvez automatiser le chargement du module au prochain démarrage du serveur en tapant la commande suivante:
# echo ‘geom_mirror_load=”YES”‘ >> /boot/loader.conf
On vient de créer un disque virtuel nommé gm0. Il faut donc remplacer, dans le fichier /etc/fstab, toutes les occurrences /dev/ad4 par /dev/mirror/gm0. Pour cela on utilise vi:
# cp /etc/fstab /etc/fstab.old
# vi /etc/fstab
:%s/ad4/mirror\/gm0/g
On redémarre ensuite le serveur:
# shutdown -r now
Une fois le serveur rebooté, il ne reste plus qu’a ajouter le disque ad6 (notre disque “esclave”) dans le mirroir RAID 1 (gm0).
# gmirror insert gm0 /dev/ad6
Vérification de l’état du RAID 1
On peut utiliser la commande suivante:
# gmirror status
Durant l’initialisation du disque esclave, le résultat devrait ressembler à:
Name Status Components
mirror/gm0 DEGRADED ad4
ad6 (1%)
Ensuite, le message suivant devrait apparaître:
Name Status Components
mirror/gm0 COMPLETE ad4
ad6
Et si un de mes disques plantes ?
Imaginons que le disque primaire (ad4) rende l’âme. Il suffit:
- éteindre le serveur
- retirer le disque ad4
- le remplacer par un disque équivalent
- redémarrer le serveur
- Saisir les commande suivantes pour reconstruire le disque:
# gmirror forget gm0
# gmirror insert gm0 /dev/ad4
Il ne reste plus qu’a superviser votre RAID 1 avec votre serveur Nagios !