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 fournit :
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 (utilisé 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`
Enfin, validez les modifications en tapant `w` :
Vous venez de créer une partition étendue 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/sdb5
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/sdb5` 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/sdb5
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/sdb5
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
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 la commande permettant l'ajout d'un disque de spare :
--spare-devices=1 /dev/sdX