Linux : Raid 1

Cet article a pour but d'expliquer comment mettre en place le RAID 1 logiciel sous Linux. Bonne lecture.

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

Cet article a pour seul but d'expliquer comment mettre en place le RAID 1 logiciel (cela est sensiblement la même chose pour les autres RAID).
L'interêt d'un tel dispositif est de permettre de prévenir la perte de données. Le RAID 1 (mirroring) duplique les données sur les disques spécifiés. Si vous n'avez pas besoin d'avoir des données synchronisées en temps réel, vous pouvez très bien mettre en place un système de sauvegarde qui se lance tous les soirs (par exemple) via cron. Il vous faut juste choisir le bon système, selon les données.

Avantages :

  1. haute disponibilité des données et du système (si ce sont les données du système qui sont en RAID)
  2. gain de performance en lecture

Inconvénients

  1. perte de temps CPU
  2. perte de vitesse en écriture
  3. perte d'espace disque

Pour mettre en pratique ce tutoriel, il vous faudra donc deux disques durs (SCSI ou IDE), voire davantage si vous voulez rajouter des disques de rechanges (spare disque) qui permettront le remplacement d'un disque en panne.
Vous pouvez aussi très bien faire les manipulations sur un seul disque dur. Mais l'interêt est très limité.
Il peut être utile, par exemple, de faire du mirroring d'une zone du disque possédant des clusteurs défectueux.

II. Installation

Pour utiliser le RAID software avec linux, il faut vérifier que votre kernel dispose du support RAID 1.
Si ce n'est pas le cas, recompilez le noyau en mettant le support RAID 1 directement dans le kernel (pas en module) pour éviter de mettre en place initrd lors du démarrage.

Options à cocher dans le noyau :

Image non disponible

Une fois cela fait, il faut installer les raidtools et créer le fichier /etc/raidtab. Ceux-ci vont permettre la configuration du RAID.

III. Configuration

L'exemple de configuration est réalisé avec trois disques durs IDE : respectivement /dev/hda, /dev/hdb et /dev/hdc. Le disque /dev/hda contient l'installation standard de linux. On n'aura spécifié que deux partitions : /dev/hda1 pour la partition racine et /dev/hda2 pour la partition swap. Bien entendu, vous pourrez ensuite complexifier le système avec davantage de partitions (mais vous devrez faire autant de fois la manipulation suivante).

Vous allez rajouter les lignes suivantes dans le fichier /etc/raidtab :

 
Sélectionnez
raiddev /dev/md0 # on prend le 0, mais vous pouvez prendre un autre
        raid-level 1
          nr-raid-disks 2
          nr-spare-disks 1
          persistent-superblock 1 
          chunck-size 16
        device /dev/hda1
          raid-disk 0
        device /dev/hdb1
          raid-disk 1
        device /dev/hdc1
          spare-disk 0

Explication de la ligne persistent-superblock 1 :
L'ajout de cette ligne permet d'écrire un superblock au début de chaque partition des disques RAID. Cela permet au kernel de lire la configuration du RAID sans lire le fichier /etc/raidtab (il est donc déconseillé d'utiliser fsck sur les partitions, au risque de modifier ce superblock).

Il vous faut créer maintenant les partitions /dev/hdb1 et /dev/hdc1 avec fdisk ou cfdisk. Les partitions doivent avoir la même taille (très important) et être de type fd (pour le RAID) pour qu'elles soient reconnues au démarrage. (Il vous faudra rebooter votre machine si vous venez de les créer. Par contre si vous avez seulement changer le type de la partition, ce n'est pas la peine de rebooter)

La commande suivante initalise le volume RAID :

 
Sélectionnez
mkraid /dev/md0

Mais celle-ci va échouer car votre partition racine (/dev/hda1) est montée et occupée. Il vous faut la démonter, mais c'est impossible pour la partition racine. Il est donc nécessaire d'éditer le fichier de configuration et remplacer :

 
Sélectionnez
device /dev/hda1

          raid-disk 0

par :

 
Sélectionnez
device /dev/hda1

          failed-disk 0

Comme la partition /dev/hda1 est en failed-disk, /dev/hdc1 deviendra la partition utilisée pour le RAID (c'est précisément la fonction d'un disque spare). Vous pouvez éviter cela en commentant son entrée dans le fichier /etc/raidtab, pour le décommenter à la fin de la manipulation.

Vous pouvez maintenant lancez la commande :

 
Sélectionnez
mkraid /dev/md0

Il vous faut à présent formater le volume pour permettre le montage du système RAID (pas de soucis : /dev/hda1 ne sera pas formaté car il est en failed-disk).
Tapez par exemple (un autre système de fichier peut être choisi) :

 
Sélectionnez
mkreiserfs /dev/md0

Montez la partition :

 
Sélectionnez
mount -t reiserfs /dev/md0 /mnt/tmp

Copiez à présent les fichiers de la partiton racine vers le répertoire /mnt/tmp (utilisez la commande cp -cp pour garder les droits des fichiers).

Vous avez presque fini. Il vous reste trois choses a faire :

  1. changez le type de la partition /dev/hda (type fd)
  2. remplacez dans /etc/fstab :
 
Sélectionnez
/dev/hda3        /                reiserfs    defaults         1   1

par

 
Sélectionnez
/dev/md0        /                reiserfs    defaults         1   1
  1. changez dans le fichier lilo.conf :
 
Sélectionnez
root = /dev/hda1

par :

 
Sélectionnez
root= /dev/md0

Et rechargez lilo (installation dans le mbr).

Rebootez la machine. Vous avez maintenant un système RAID fonctionnel. Verifiez à l'aide de la commande df et regardez le fichier /proc/mdstat.

Il ne reste plus qu'à rajouter la partition /dev/hda1 dans le système RAID 1.
Editez le fichier /etc/raidtab et remplacez :

 
Sélectionnez
failed-disk

par :

 
Sélectionnez
raid-disk

Vous pouvez maintenant activer le RAID avec la commande :

 
Sélectionnez
raidhotadd /dev/md0 /dev/hda1

Attendez que les disques durs soient synchronisés avant d'éteindre votre système.

Vous devez avoir, une fois la synchronisation finie, une sortie ressemblant à cela (spare-disk rajouté) :

 
Sélectionnez
# cat /proc/mdstat

Personalities : [raid1] read_ahead 1024 

sectors md0 : active raid1 hdc1[2] hdb1[0] hda1[1] 

                      51264 blocks [2/2] [UU]

Si vous voulez démarrer sur le disque /dev/hdb, installez lilo dans son mbr et rajoutez dans le fichier /etc/fstab son swap :

 
Sélectionnez
/dev/hdb2        swap             swap        defaults         0   0

IV. Vérification de mise en place du système

Pour vérifier les partitons du système RAID, tapez la commande :

 
Sélectionnez
$ lsraid -a /dev/md0



[dev   9,   0] /dev/md0          E6C062B6.88A7E659.9216712C.30FADE07 online

[dev   3,   7] /dev/hda1         E6C062B6.88A7E659.9216712C.30FADE07 good

[dev   3,  65] /dev/hdb1        E6C062B6.88A7E659.9216712C.30FADE07 good

[dev   3,  66] /dev/hdc1        E6C062B6.88A7E659.9216712C.30FADE07 spare

Si l'un des disques durs ne fonctionne plus (fichier /proc/mdstat), rebootez sur le disque dur qui fonctionne (en rajoutant un nouveau disque dur) puis ajoutez les partitions via la commande raidhotadd (sans oublier de refaire les manipulations sur la partition).
Si les deux disques durs ne fonctionnent plus, pas de chance ;)

V. Conclusion

La manipulation est un peu complexe à mettre en oeuvre. C'est pour cela que je vous conseille de tester sur une partition avec des données non sensibles dans un premier temps. Ensuite, vous pourrez faire la manipulation sur une autre partition.
Pour des nouvelles partitions sans données, n'utilisez pas le failed-disk (cela ne sert a rien).
J'espère que ce petit article vous a aidé. N'hesitez pas à me contacter en cas d'erreur.
Merci à armatatuxa et stessy pour leur relecture et correction orthographique.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 nyal. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.