Ceci est une ancienne révision du document !
Version : Edgy_Eft.
Rédigé par Deejc
RAID logiciel avec mdadm
Introduction
Vous venez de terminer une installation d'Ubuntu et voulez protéger vos données en utilisant un système redondant RAID (0, 1, 5 et 6). Le but ici, n'est pas d'exposer les avantages et les inconvénients de tel système, mais de vous permettre d'en monter un dans les plus bref délais.
Pour plus de détails, Wikipédia est bien fourni :
Tout ce qui suit a été testé sur la version server d'Ubuntu mais devrait être compatible avec la version desktop (qui peut le plus peut le moins). Je donne ici l'exemple pour monter un RAID 5 logiciel, mais la méthode pour les autres types de RAID logiciel est la même. J'insiste sur le fait que nous allons monter un RAID logiciel et non un RAID matériel. L'avantage est que vous ne vous ruinez pas dans l'achat d'une carte fille supportant le RAID 5 et en quelques lignes de commandes vous avez l'équivalent pour uniquement le prix des disques ! L'utilisation de disques durs SATA, est plus que recommandée, car ils permettent une extraction à chaud (Hot Plug) pour un prix abordable.
Le logiciel qui va nous permettre de remplir notre objectif s'appelle mdadm.
Pré-requis
- Il faut les droits root
- Il faut un noyau supérieur à 2.6
- Connexion Internet configurée et activée (utilisez le DHCP, si possible, cela évite de se casser la tête).
- Configurez votre fichier /etc/apt/sources.list pour qu'Ubuntu aille tout chercher sur Internet.
- Ayez au moins 3 disques durs…
- … branchés sur des contrôleurs reconnus par Ubuntu
Installation
Configuration de sources.list
Dans un premier temps, assurons-nous de la bonne configuration de votre fichier /etc/apt/sources.list :
1. Vous devez commenter (c'est à dire ajouter le caractère `#` devant) les lignes qui commencent par :
- deb cdrom (ce sont les deux premières lignes du fichier)
2. et décommenter toutes les autres lignes qui commencent par :
- deb http
- deb-src http
Installation de mdadm
Une fois les modifications ci-dessus effectuées, nous allons pouvoir télécharger mdadm grâce à la commande suivante :
apt-get install mdadm
Pour ceux qui n'ont jamais installé de packages avec `apt`, acceptez dès que l'on vous pose une question.
Maintenant que toute la partie logicielle est installée, nous allons pouvoir commencer la partie configuration matérielle.
Configuration des disques durs
Comme dit plus haut dans les pré-requis, il faut au moins 3 disques durs pour faire du RAID 5, dans cet exemple j'ai pris 4 disques, mais l'opération est la même si vous en prenez 5, 6, 7, etc…
Il faut partitionner les disques durs que nous allons utiliser grâces à l'utilitaire fdisk. Ici je vous guide pour un disque, à vous de le faire autant de fois que vous voulez utiliser de disques :
fdisk /dev/sdX
Il faut comprendre que le `sdX` représente votre disque dur et que `X` représente sa lettre. Par exemple `sda`, `sdb`, `sdc`, etc… pour des disques durs SATA ou SCSI, ou encore `hda`, `hdb`, `hdc`, etc… pour des disques durs en IDE
Vous obtiendrez (grâce à l'option `m`) les lignes suivantes :
Il faut donc appliquer l'option `n` comme montré ci-dessus pour créer une nouvelle partition.
fdisk vous demande alors le type de partition (p pour primaire ou e pour étendue).
Nous n'allons créer qu'une seule partition par disque, nous choisirons donc le type primaine : 'p'
Vous entrez ensuite dans le processus de création de partition étendue :
Tapez `1` comme montré ci-dessus
Tapez sur la touche `Entrée`
Tapez encore sur la touche `Entrée`
Tapez sur la touche 't' pour changer le type de patition.
Tapez 'fd' (Valeure hexadecimale correspondant à "Linux Raid Autodetect") puis `Entrée` afin de valider.
Enfin, validez les modifications en tapant `w` :
Vous venez de créer une partition primaire sur votre disque /dev/sdX
Création d'un fichier FIFO
Dans Ubuntu, on ne peut pas commencer la déclaration du volume RAID, sans avoir au préalable fabriqué une entité ou fichier FIFO sur lequel nous allons nous appuyer pour construire notre volume.
On créer un fichier FIFO grâce à la commande mknod :
mknod /dev/md0 b 9 0
Construction du volume RAID 5
Nous pouvons maintenant utiliser mdadm pour construire notre volume RAID 5 :
mdadm –-create /dev/md0 –-level=5 --raid-devices=4 /dev/sd[bcde]1
Cela nécessite une petite explication :
- On utilise le fichier FIFO
/dev/md0
- On indique le type de RAID logiciel désiré (ici 5) :
–-level=5
- Enfin, on indique les partitions des disques durs qui vont servir dans le volume RAID, ici `sdb1`, `sdc1`,`sdd1` et `sde1`
--raid-devices=4 /dev/sd[bcde]1
On termine cette construction par la deamonisation du volume RAID. Nous allons faire en sorte que le système charge le volume à chaque démarrage :
mdadm --daemonise /dev/md0
Finalisation
Il reste quelques modifications à effectuer :
- Il faut formater le volume RAID nouvellement créé :
mkfs.ext3 -j /dev/md0
- Déclarez ce volume dans `fstab` pour que le système le monte au démarrage (le système de fichier, pas le volume en lui même). Pour ce faire éditez le fichier /etc/fstab et ajoutez à sa fin la ligne :
/dev/md0 mnt/raid/ ext3 defaults 0 0
Cela signifie que le système montera au démarrage le contenu du volume RAID dans le dossier /mnt/raid.
- Il ne reste plus qu'à créer le dossier /mnt/raid grâce à la commande mkdir :
mkdir /mnt/raid
Utilisation/Configuration
Le prochain démarrage
Il ne reste plus qu'à redémarrer votre ordinateur. Si celui-ci est lent au démarrage c'est tout à fait normal, il faut attendre que le volume RAID 5 se construise. Plus vos disques sont gros et plus la construction est longue.
Que faire lorsqu'un des composants de l'Array vient à défaillir
Ne paniquez pas ! Vous n'avez pas perdu de données. L'objectif maintenant est d'identifier le disque dur défaillant, même si le disque ne tombe pas en panne physiquement, il peut défaillir. Maintenant que vous avez identifié le disque dur défectueux, il faut le déclarer comme tel.
1. Pour cela, on utilise mdadm :
mdadm --manage --set-faulty /dev/md0 /dev/sdb1
Explication :
On utilise toujours le paramètre `–manage` de mdadm pour gérer le volume RAID. On utilise l'option `–set-faulty` pour déclarer le disque dur `/dev/sdb1` du volume RAID `/dev/md0` comme défaillant.
2. Une fois déclaré défaillant, le disque dur est écarté du volume RAID. Il faut maintenant le désactiver pour pouvoir le retirer :
mdadm --manage --remove /dev/md0 /dev/sdb1
Vous pouvez maintenant retirer le disque défaillant en toute sécurité et le remplacer par un disque sain.
3. Une fois le remplacement effectué, il faut replacer le disque sain dans le volume RAID pour bénéficier à nouveau de la tolérance de panne (cette opération doit être précédée du partitionnement du nouveau disque, aidez-vous des descriptions faites plus haut) :
mdadm --manage --add /dev/md0 /dev/sdb1
Maintenant vous devez patienter, le temps que le volume Raid se reconstruise. Pendant cette phase de reconstruction les performances peuvent être altérées.
Des idées pour aller plus loin
Découpage du volume avec LVM
Lorsque l'on crée un volume RAID, on se retrouve vite avec de capacités tres importantes. Or, créer un seul systeme de ficher de 500 Go, voir beaucoup plus, n'est pas forcement une bonne idée ! Pour pouvoir découper cet espace de stockage à volonté et pouvoir créer autant de systeme de fichier que nécéssaire (et les redimensioner au besoin) il peut etre très interessant d'utiliser, "au dessus" du raid la fonctionalité LVM :
La combinaison des niveaux de RAID
Vous pouvez très bien combinez les niveaux de RAID. La manière la moins onéreuse de créer un RAID combiné est d'effectuer plusieurs RAID matériels puis de les combiner entre eux au niveau logiciel.
On pourra prendre comme exemple le RAID 1,0 qui fonctionne très bien. Imaginons que nous ayons 6 disques durs de 30Go, plus un disque dur système et trois cartes fille supportant le RAID 1. Créons donc trois ensembles RAID 1 (mirroring) qui feront tous 30Go. Appliquons ensuite un RAID 0 au niveau logiciel. On possède alors un seul ensemble de 90Go (3 x 30Go) et une tolérance de panne de trois disques durs (1 par unité RAID 1).
Une autre fonctionnalité de mdadm
Pour ceux qui sont intéressé par la commande mdadm, sachez qu'elle possède d'autres options. L'une de ses options permet notamment d'ajouter un disque de spare, c'est à dire un disque "dormant", qui prend la relève dés qu'un disque tombe en panne. Cela vous permet une plus grande tolérance de panne.
Voici l'option permettant de prendre en compte un disque de spare :
mdadm --create /dev/md0 --level=1 --raid-devices=2 --spare-devices=1 /dev/sdX
Par contre, si vous avez déjà un array raid en service, sur sda2 et sdb2, et que vous voulez ajoutez le spare sdc2 (préalablement partitionné à l'identique avec sfdisk par exemple) :
mdadm --manage /dev/md0 --add /dev/sdc2
Vérifiez alors en tapant :
mdadm --detail /dev/md0
Et vous verrez vous nouveau disque comme spare disk.
Test
Pour tester, et être sûr que tout fonctionne, faisons un test (qui revient à débrancher un disque) :
mdadm --manage /dev/md0 --set-faulty /dev/sdb mdadm --manage /dev/md0 --remove /dev/sdb
Alors le spare disque prend le relais automatiquement. Si vous n'avez pas de spare, remettez le disque en service :
mdadm --manage /dev/md0 --add /dev/sdb2
Constatez la reconstruction avec :
cat /proc/mdstat
Chaque disque retiré puis remis fera une reconstruction complète. Pour un array de 40 Go, comptez 15 min pour atteindre les 100% (60 mo/s environ). Evitez de rebooter la machine pendant la progression.