RAID-5 software sous GNU/Linux

Petit tutorial pour monter rapidement un système en RAID-5 sous linux.

Rappel sur le RAID-5

RAID signifie "Redundant Array of Inexpensive/Independent Disks". Le but de cette technologie est d'améliorer la tolérance aux pannes d'un système de stockage en utilisant plusieurs disques durs vus comme un seul.

Dans le cas du RAID-5, il est possible de perdre un disque sans pour autant perdre de données. La perte d'un deuxième disque entraînerait, par contre, la perte de l'intégralité des données.

Le RAID-5 nécessite un minimum de 3 partitions de tailles identiques (réparties sur 3 disques différents). La taille utile du disque résultant (l'espace disque vu par l'utilisateur) est la somme des tailles des partitions moins une (soit : (nombre de partitions - 1) * taille d'une partition).

Préliminaires

La distribution linux utilisée ici est Debian, il vous sera donc nécessaire d'adapter ceci en fonction de celle que vous utilisez.

Le disque RAID créé n'est pas utilisé comme disque système.

Pour commencer, munissez-vous de plusieurs disques de taille identique (ici 4 disques de 500 Go) et montez les un par un dans votre ordinateur. Surtout pensez bien à identifier vos disques au fur et à mesure que vous les installez. Vous devez noter leur nom logique vu par linux et leur correspondance avec le disque physique. Ces informations vous seront utiles en cas de panne, linux vous indiquera le nom logique du disque en panne et vous devrez alors être capable de repérer le disque physique correspondant pour le changer.

Vous pouvez par exemple noter l'"id" ou le "path" de chaque disque lorsque vous les installez (d'où l'intérêt de les installer un par un) :

$ ls -l /dev/disk/by-id/↵
total 0
lrwxrwxrwx 1 root root  9 2008-01-20 12:45 ata-SAMSUNG_HD501LJ-S0MUJ1MPC01769 -> ../../sdc
lrwxrwxrwx 1 root root  9 2008-01-20 12:45 ata-SAMSUNG_HD501LJ-S0MUJ1MPC01770 -> ../../sde
lrwxrwxrwx 1 root root  9 2008-01-20 12:45 ata-SAMSUNG_HD501LJ-S0MUJ1MPC01771 -> ../../sdb
(…)
$ ls -l /dev/disk/by-path/↵
total 0
lrwxrwxrwx 1 root root  9 2008-01-20 12:45 pci-0000:00:12.0-scsi-0:0:0:0 -> ../../sdd
lrwxrwxrwx 1 root root  9 2008-01-20 12:45 pci-0000:00:12.0-scsi-1:0:0:0 -> ../../sde
lrwxrwxrwx 1 root root  9 2008-01-20 12:45 pci-0000:01:00.0-scsi-0:0:0:0 -> ../../sdb
(…)

Note : Le "path" dépend du branchement du disque. Si vous débranchez un disque pour le brancher sur une autre prise, son "path" changera.

Une fois tous les disques installés, il faut créer une partition de type "Linux raid autodetect" :

$ sudo fdisk /dev/sde↵
n↵ (crée une nouvelle partition)
p↵ (partition primaire)
1↵ (partition primaire numéro 1, accepter ensuite les tailles par défaut pour utiliser la totalité du disque)
t↵ (changer le type de partition)
Hex code (type L to list codes): fd↵ (change le type de partition pour "Linux raid autodetect")
w↵ (écrit la table de partition sur le disque et quitte fdisk)

Cette manipulation est donc à répéter sur chacun des disques (les miens étant /dev/sdb à /dev/sde).

Action

Entrons maintenant dans le vif du sujet, la création du disque en RAID-5.

Pour ce faire vous devez avoir l'utilitaire mdadm, à installer avec la commande suivante si vous ne l'avez pas :

$ sudo apt-get install mdadm↵

Création du d'un disque en RAID-5 logiciel à partir de mes 4 disques sdb, sdc, sdd et sde :

$ sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1↵

Voilà, c'est fini.

Conclusion

Les préliminaires sont toujours plus long.

Plus sérieusement, un disque "virtuel" a été créé (ici c'est /dev/md0). C'est ce disque qu'il faut monter (et formater) pour profiter de votre tout nouveau disque RAID.

Pour vérifier son état :

$ sudo mdadm --detail /dev/md0↵
/dev/md0:
        Version : 00.90.03
  Creation Time : Sat Jan 19 17:03:46 2008
     Raid Level : raid5
     Array Size : 1465151808 (1397.28 GiB 1500.32 GB)
  Used Dev Size : 488383936 (465.76 GiB 500.11 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Sun Jan 20 15:49:00 2008
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 02918692:35547ed8:6ec71e01:ff96950c
         Events : 0.34

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1
       1       8       65        1      active sync   /dev/sde1
       2       8        1        2      active sync   /dev/sdc1
       3       8       17        3      active sync   /dev/sdb1

Il est important que la ligne "State" affiche "clean" et que la colonne "State" affiche "active sync" pour chaque disque. Juste après la création du volume RAID, l'état doit ressembler à "clean, degraded, recovering", c'est normal, le système est en train de synchroniser les disques entre eux (cette étape peut être assez longue, quelques heures avant d'arriver à "clean"). Pour voir l'avancement de la synchronisation :

$ cat /proc/mdstat↵

Maintenant il fait surveiller l'état du disque régulièrement, il ne faut pas attendre qu'il ne marche plus pour s'inquiéter, il sera déjà trop tard (2 disques seront déjà tombés).

Par défaut (voir le fichier /etc/mdadm/mdadm.conf) mdadm envoi un mail à l'utilisateur "root" en cas de problème, je vous conseille de configurer cette propriété pour que le mail soit envoyé à une adresse email que vous lisez régulièrement.

Lorsque le système est "clean", vous pouvez stopper un des disques pour simuler une panne, vérifier que vous recevez bien une alerte par email. Redémarrez ensuite le disque (et attendez plusieurs heures le temps que le système redevienne "clean") :

$ sudo mdadm /dev/md0 --fail /dev/sdb1↵ (déclare le disque sdb1 "en panne")
$ sudo mdadm /dev/md0 --add /dev/sdb1↵ (ajoute le disque sdb1 au système RAID, la synchronisation reprend immédiatement)

Je vous conseille fortement de lire la documentation pour bien comprendre comment tout fonctionne.

Si vous avez déjà un volume RAID en place et que vous voulez l'étendre en rajoutant un disque, apparemment c'est possible : http://scotgate.org/?p=107.

Bon courage.

Comments Add one by sending me an email.