Mise en place d’un RAID software avec MDADM

De HomeServer.DIY.
Aller à : Navigation, rechercher

Cet article traite de la mise en place d’une grappe RAID avec mdadm sous Ubuntu Server. Cela dit, les généralités présentées au début de l’artcle s’appliquent pour n’importe quel OS unix.

Généralement, quand on monte un serveur perso, c’est pour stocker nos précieux fichiers. Et parfois, on aimerait bien que les jolies photos de nos dernières vacances soient sécurisées ! Pour éviter de perdre nos données, on peut très bien utiliser le système de redondance des données. Derrière ce bien grand mot se cache une technique connue : le RAID.

Il existe trois possibilités pour faire du RAID :

  1. Le RAID Hardware : via une carte dédiée, c’est le plus performant, mais aussi le plus onéreux. Il a l’avantage d’être complètement transparent pour l’OS.
  1. Le RAID Software : tout est géré par l’OS, de manière logicielle. Moins performant, il offre une souplesse accrue de la gestion des disques, et permet de voir ses disques sur un autre ordinateur, en cas de panne. Notons que les performances sous mdadm sont très honorables et dépendent en partie de la puissance de votre CPU. Et en plus c’est gratuit.
  1. Le RAID semi-matériel, ou fakeRAID. C’est le mode raid du contrôleur embarqué sur votre carte mère. Sous windows ça marche assez bien, et c’est une solution à retenir, car assez simple d’utilisation. Sous linux, c’est plus compliqué car l’OS voit les deux disques, et ça fonctionne assez mal.


On va ici montrer comment mettre en place une grappe RAID dédiée au stockage, indépendante du disque système. Notez qu’il est possible d’installer linux sur une grappe RAID software, mais que c’est vraiment compliqué, j’ai essayé, sans succès. Ceci est dû au fait que le bios ne sait pas lire votre partition RAID, ce qui est logique, vu que mdadm est une composante de Linux. Je vous conseille donc d’utiliser un disque système séparé pour votre OS, un SSD de petite taille par exemple, est parfait pour cette utilisation.


Bon voilà, votre linux est booté, vous venez de recevoir vos deux disques de 2To, et vous souhaitez faire un beau RAID 1 de tout ça, pour y mettre vos données. Ajoutons que mdadm gère différents modes de RAID : 0 ; 1 ; 4 ; 5 ; 6 ; 10.


Bon, avant de vous précipiter sur votre console SSH, il faut comprendre le fonctionnement de mdadm. Celui-ci fonctionne avec des partitions, et non pas avec des disques. Cela veut dire que vous devez partitionner chaque disque indépendamment, avant de créer la grappe avec mdadm.

Par exemple : si vous voulez deux partitions de 1 To chacune, en RAID 1 sur vos deux disques de 2To, il faudra d’abord créer les partitions sur les deux disques, puis après dire à mdadm :

«Partition 1 du disque 1 va avec Partition 1 du disque 2, puis partition 2 du disque 1 va avec partition 2 du disque 2. »

Alors c’est pénible et fastidieux, quand on a un raid 5 avec plusieurs partitions en RAID, c’est vrai. Mais du coup, vous pouvez ne mettre en RAID1 que 600 Go de vos 2 To par exemple, et hop, on gagne quand même 1.4 To !! Quand on vous dit que le Raid soft c’est flexible ;)


Bon, donc vous avez monté vos disques, et réfléchi à la table de partition que vous voulez ? C’est parti, on passe à l’action.

D’abord, il faut savoir quels sont les noms de vos disques. Pour ça, on tape :

user@computer:$ sudo fdisk –l

(Notez que lorsqu’une commande doit être saisie avec les droits root, je commencerais la ligne par # au lieu de $)

Bref, revenons à nos moutons, récupérez les noms de vos disques, et notez les dans un coin, ça va servir. Les disques sont identifiés dans /dev/ et sont appelés sda ; sdb ; sdc…. Et ainsi de suite. Après, on ajoute un nombre pour le numéro de la partition sur le disque. Ainsi, /dev/sda1 est la première partition du disque a. Si vos disques sont neufs, il n’y a pas de table de partitions valide, donc vous avez juste /dev/sdX .

Maintenant, il faut formater les disques. Si vos disques font 2 To ou plus, il va falloir utiliser gdisk. A vrai dire, fdisk est maintenant dépassé, il vaut mieux passer à gdisk, qui gère les disques de grandes capacités.

A l’attaque du premier disque :

user@computer:$ # gdisk /dev/sdX

On vous demande de saisir une commande : tapez n pour créer une nouvelle partition.

On vous demande le numéro de la partition (par défaut 1, normal.) notez que si vous appuyer entrée a chaque fois, c’est la valeur proposée par défaut qui est utilisée.

Pour le premier secteur, laisser par défaut utilisera le premier secteur disponible, ce qui est le plus judicieux.

Ensuite il faut préciser le dernier secteur de la partition, ce qui revient à la taille de la partition. Vous pouvez préciser la taille en secteur pour les courageux, mais vous pouvez aussi saisir la taille en octets. Saisir « 300 GB » par exemple, fonctionnera sans problème.

Ensuite il faut mettre le type de partition. Pour du RAID, mettez : fd00 (Une aide s’affiche si besoin.)

Et voilà !!! Votre partion est créée !!!! Maintenant il faut répétez l’opération autant que vous le souaitez. Quand vous en avez fini avec un disque, on écrit les changements sur le disque avec la commande w

Ensuite, recommencez avec l(es) autre(s) disque(s).


Quand les disques sont prêts, il faut associer les partitions avec mdadm.

Mdadm est, à priori, installé par défaut sur la majorité des distrib linux (versions serveurs du moins). Mais en cas de doute, vous pouvez vérifier qu’il est installé, et l’installer, le cas échéant, avec la commande suivante :

user@computer:$ # apt-get install mdadm

Supposons que l’on veuille mettre les deux premières partitions des disques sda et sdb en RAID 1.

Il faut taper :

user@computer:$ # mdadm --create  /dev/md0 --level-raid=1 --raid-disks=2 /dev/sda1 /dev/sdb1

Whaaa la grande ligne. Des explications :

On créée /dev/md0, qui sera reconnu comme un disque. On veut du RAID 1, avec 2 disques. Donc ici, on a /dev /sda1 + /dev/sdb1 = /dev/md0.

Maintenant, il faut formater le périphérique. (ici en ext4)

user@computer:$ # mkfs –t ext4 /dev/mdX

Puis on peut la monter où on veut, avec

user@computer:$ # mount /dev/md0 /emplacement/de/votre/point/de/montage

La création de la grappe pouvant prendre un peu de temps, vous pouvez surveiller la construction de la grappe :

user@computer:$ $ cat /proc/mdstat

Je vous conseille la commande watch, qui permet de réactualiser une commande à intervalle donné. Ainsi :

user@computer:$ watch cat /proc/mdsat

vous donnera l’état de la construction, et se rafraichira toutes les 2 secondes (valeur par défaut.)

Il faut maintenant sauvegarder la configuration de mdadm pour ne pas tout perdre au prochain reboot !

On commence par sauvegarder l’ancienne.

user@computer:$ # cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf-bak

Et on construit la nouvelle :

user@computer:$ # mdadm --examine  --scan  --verbose   >  /dev/mdadm/mdadm.conf

Vous pouvez vérifier que la configuration a bien été sauvegardée avec :

user@computer:$ $ cat /etc/mdadm/mdadm.conf

Si vous souhaitez ajouter les points de montage dans votre table de montage pour monter vos disques automatiquement, il va falloir ruser un peu, car les UUID changent a chaque reboot. Heureusement, on a forcé la configuration dans le fichier mdadm.conf.

Maintentant, il ne reste plus qu’a mettre à jour le noyau, pour que ça boote bien :

user@computer:$ # update-initramfs -u -k all

Et voilà !!! Vous avez maintenant une grappe RAID, et qui se monte tranquillement à chaque boot ;)


Maintenant, quelques commandes utiles avec mdadm :

user@computer:$ # mdadm --detail /dev/mdX

Cette commande vous donnera des petites infos bien utiles sur l’état des disques d’une grappe.


Ensuite, pour remplacer un disque défaillant, on commence par retirer celui qui est HS :

user@computer:$ # mdadm --manage /dev/mdX --remove /dev/sdX

Et on ajoute le nouveau :

user@computer:$ # mdadm --manage /dev/mdX --add /dev/sdX

(en cas de changement, pensez à réactualiser le fichier de configuration /etc/mdadm/mdadm.conf, et à mettre a jour le noyau !)