19.4. RAID1 - « mirroring »

Le « mirroring » est une technologie utilisée par de nombreuses entreprises et beaucoup de particuliers pour sauvegarder les données sans interruption des activités. Quand un miroir existe, cela signifie que le disque B est une copie du disque A. Ou, autre cas, que les disques C+D sont une copie des disques A+B. Indépendamment de la configuration des disques, l'aspect important est que les données d'un disque ou d'une partition sont dupliquées. Ultérieurement, ces données pourront être plus facilement restaurées, sauvegardées sans interrompre le système ou les accès, et pourront même être stockées physiquement de manière sure.

Pour commencer, vérifiez que le système dispose de deux disques de taille identique, cet exemple suppose que ce sont des disques SCSI (da(4)).

Installez FreeBSD sur le premier disque avec uniquement deux partitions. Une partition sera la partition de pagination d'une taille double à celle de la RAM et l'espace restant sera alloué au système de fichiers racine (/). Il est possible d'avoir des partitions séparées pour les autres points de montage, cependant cela augmentera énormément le niveau de difficulté en raison des modifications manuelles nécessaires des paramètres de bsdlabel(8) et fdisk(8).

Redémarrez et attendez l'initialisation complète du système. Ensuite, ouvrez une session sous l'utilisateur root.

Créez le périphérique /dev/mirror/gm et liez-le avec /dev/da1:

# gmirror label -vnb round-robin gm0 /dev/da1

Le système devrait répondre par:

Metadata value stored on /dev/da1.
Done.

Initialisez GEOM, cela devrait charger le module du noyau /boot/kernel/geom_mirror.ko:

# gmirror load

Note:

Cette commande devrait créer le fichier spécial de périphérique gm0 sous le répertoire /dev/mirror.

Installez un label fdisk et un code de d'amorce génériques sur le nouveau périphérique gm0:

# fdisk -vBI /dev/mirror/gm0

Installez maintenant un label générique bsdlabel:

# bsdlabel -wB /dev/mirror/gm0s1

Note:

S'il existe plusieurs « slices » et plusieurs partitions, il faudra modifier les paramètres des deux commandes précédentes. Elles doivent correspondre aux tailles des partitions et « slices » sur l'autre disque.

Utilisez l'utilitaire newfs(8) pour créer un système de fichiers UFS sur le périphérique gm0s1a:

# newfs -U /dev/mirror/gm0s1a

Le système devrait alors afficher un certain nombre d'informations et de nombres. C'est bon signe. Contrôlez l'affichage à la recherche de messages d'erreur et montez le périphérique sur le point de montage /mnt:

# mount /dev/mirror/gm0s1a /mnt

Transférez maintenant toutes les données du disque de démarrage vers ce nouveau système de fichiers. Dans notre exemple nous utilisons à cet effet les commandes dump(8) et restore(8), cependant la commande dd(1) conviendrait également.

# dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)

Cela doit être effectué pour chaque système de fichiers. Placez simplement le système de fichiers approprié au bon endroit quand vous exécutez la commande précédente.

Editez ensuite le fichier /mnt/etc/fstab et supprimez ou mettez en commentaires le fichier de pagination [11]. Modifiez les autres paramètres du système de fichiers pour utiliser le nouveau disque comme présenté l'exemple suivant:

# Device                Mountpoint      FStype  Options         Dump    Pass#
#/dev/da0s2b             none            swap    sw              0       0
/dev/mirror/gm0s1a       /               ufs     rw              1       1

Créez maintenant un fichier boot.config sur la partition racine actuelle et celle nouvellement créée. Ce fichier « aidera » le BIOS à déterminer correctement sur quel disque démarrer:

# echo "1:da(1,a)/boot/loader" > /boot.config
# echo "1:da(1,a)/boot/loader" > /mnt/boot.config

Note:

Nous l'avons ajouter sur les deux partitions racines afin d'assurer un démarrage correct. Si pour une raison quelconque le système ne pourrait le lire à partir de la nouvelle partition racine, une version de secours est disponible.

Assurez-vous que le module geom_mirror.ko sera chargé au démarrage du système en lançant la commande suivante:

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

Redémarrez le système:

# shutdown -r now

Si tout s'est bien passé, le système a dû démarrer à partir du périphérique gm0s1a et une invite d'ouverture de session doit être affichée. En cas de problème, consultez la section suivante consacrée au dépannage. Ajoutez maintenant le disque da0 au périphérique gm0:

# gmirror configure -a gm0
# gmirror insert gm0 /dev/da0

L'option -a demande à gmirror(8) d'utiliser une synchronisation automatique, c'est à dire dupliquer automatiquement toute écriture disque. La page de manuel explique comment reconstruire et remplacer les disques, avec la différence qu'elle utilise data à la place de gm0.

19.4.1. Dépannage

19.4.1.1. Le système refuse de démarrer

Si le démarrage du système s'interrompt à une invite semblable à:

ffs_mountroot: can't find rootvp
Root mount failed: 6
mountroot>

Redémarrez la machine à l'aide du bouton de mise en marche ou de « reset ». Au menu de démarrage, sélectionnez la sixième option (6). Le système basculera alors vers une invite du chargeur (loader(8)). Chargez manuellement le module du noyau:

OK? load geom_mirror
OK? boot

Si cela fonctionne, cela signifie que pour une raison quelconque le module n'a pas été correctement chargé. Ajoutez la ligne:

options	GEOM_MIRROR

dans le fichier de configuration du noyau, recompilez-le puis réinstallez-le. Cela devrait corriger le problème.



[11] Il est à noter que commenter l'entrée de l'espace de pagination dans fstab vous demandera très probablement de mettre en place une méthode différente pour activer l'espace de pagination. Veuillez vous référer à la Section 11.14, « Ajouter de l'espace de pagination » pour plus d'informations.

Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.

Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.