JusteGeek

[Tuto] Créer un RAID logiciel avec mdadm sous Debian

Récemment, j'ai eu comme un petit souci avec le RAID5 qui assurait la majorité de mon stockage. Petit souci car j'ai 3 disques (de marque Seagate) qui ont décidé de me lâcher... Et oui, tous les trois en même temps... C'est balo ! Après la garantie bien évidemment... Ces trois disques avaient été achetés à la même période mais dans deux boutiques différentes. Bon faut quand même pas avoir de bol pour que les 3 lâchent en même temps et avec les même symptômes... Je précise également que j'avais contrôlé le S.M.A.R.T et que tout était au vert... Je sais pas trop mais... Tu la sens l'obsolescence programmée là ? Perso j'en ai bien l'impression moi... Bref. Hier j'ai donc reçu mon dernier disque de remplacement et j'ai remonté un nouveau RAID logiciel. Ça aurait été dommage de ne pas en profiter pour vous en faire un tutoriel. Allez, laissez vous guider ! 

 

Contexte de ce tutoriel

Pour ce tutoriel, j'ai utilisé un serveur tournant sous Debian 8 (Jessie). Le système est installé sur un disque de 320 Go et le RAID vient s'ajouter à côté, uniquement pour faire du stockage. Mon RAID sera composé de 7 disques de 2 To. J'ai donc le disque /dev/sda qui est le disque du système et les autres qui seront les composants du RAID. Je vais ici créer un RAID de type RAID6. Bien sûr ce tutoriel peut être suivi pour créer d'autres types de RAID. Il faudra juste modifier le paramètre raidlevel lors de la création du RAID (couramment appelé array ou grappe).

Pour les différents types de RAID, je vous renvoie à un excellent article sur le sujet : ici ! 😀

 

Quelques mots sur le RAID logiciel

Pourquoi faire du RAID logiciel et non du RAID matériel ? C'est un choix qui peut paraître étrange mais je l'assume totalement et je vais m'en expliquer. Mais tout d'abord, j'aimerai revenir sur les avantages et inconvénients du RAID logiciel.

Avantages :

Inconvénients :

Alors pour ma part, je dispose d'un serveur Debian qui ne sert qu'à ça. Il est équipé d'un processeur QuadCore. La consommation CPU ne me fait donc pas peur. Le RAID sera pour moi un espace de stockage uniquement. Je n'ai donc pas besoin ici de performances extrêmes. Les inconvénients ne sont donc pas gênant pour moi. En revanche, si besoin, je sais que je peux ré-assembler mon RAID ailleurs. Je suis donc dépendant d'aucun matériel. De plus, j'utilise deux contrôleurs SATA différents et cela ne pose aucun problème au RAID logiciel.

Allez, assez blablaté ! Entrons dans le vif du sujet.

 

Étape préliminaire : vérification des disques

Avant de créer le RAID, on va commencer par vérifier l'état des disques durs. Même s'ils sont fraîchement déballés, mieux vaut être prudent. Cela serait bête d'avoir un disque avec un problème dès les premiers jours. Pour ce faire, on va utiliser l'outil smartmontools. Cet outil est dans les paquets Debian donc son installation est très simple : ouvrez un terminal et saisissez la commande ci-dessous.

sudo apt-get install smartmontools

Une fois smartmontools installé, on va contrôler les disques que l'on souhaite inclure dans le RAID. Pour cela, saisissez, pour chaque disque, la commande suivante, en remplaçant sdX par le nom d'un de vos disques :

sudo smartctl -t short /dev/sdX

Cette commande a pour but de lancer un test rapide du disque. Le test se déroule et smartctl vous annonce le temps nécessaire pour l'exécuter.

Lorsque le délai annoncé par smartctl est atteint, il suffit de saisir la commande ci dessous pour avoir le résultat :

sudo smartctl -l selftest /dev/sdX

Vous aurez alors le résultat. Pour ma part, "Completed without error" ce qui signifie que mon disque va bien !

Répétez maintenant l'opération pour chaque disque.

 

Si vous voulez aller un peu plus vite, vous pouvez vous contenter de lire le dernier état S.M.A.R.T remonté pour chaque disque, sans déclencher un nouveau test. Pour cela, tapez dans un terminal, pour chaque disque :

sudo smartctl -s on -a /dev/sdX

Vous aurez alors un résultat comprenant beaucoup d'informations. Ici, ce qui va nous intéresser, c'est 

SMART overall-health self-assessment test result: PASSED

PASSED signifie que le disque a passé les tests sans problème et que tout va bien. Vous n'avez alors qu'à répéter l'opération pour chaque disque.

Une fois que c'est fait et que tous les disques sont sains, on va pouvoir passer aux choses sérieuses.

 

Préparation des disques durs

Pour créer un RAID logiciel, on va devoir, au préalable, préparer les disques durs. Il va en effet falloir créer une partition. Et attention, car cette étape est super importante. Vos partitions devront avoir le même nombre de blocs. Faute de quoi, vous aurez des soucis !

Pour préparer les disques, je vais utiliser l'utilitaire gdisk. Pourquoi gdisk et pas fdisk ? Tout simplement car mes disques de 2 To vont contenir une table de partition de type GPT. J'ai donc besoin de gdisk pour gérer cela.

Toujours dans un terminal, tapez :

gdisk /dev/sdX

Puis :

Répétez ensuite l'opération sur chacun des disques.

Une fois que c'est fait, on vérifie que tout est bon via mdadm l'outil de gestion du RAID :

mdadm -E /dev/sd[b-h]

J'utilise pour ma part [b-h] pour que mdadm examine les disques sdb, sdc, sdd, sde, sdf, sdg, sdh. À vous d'adapter en fonction de votre cas. On voit ici que les disques sont maintenant prêts :

Tout est bon, on va pouvoir passer à la création de la grappe RAID.

 

Création de la grappe RAID avec mdadm

On va maintenant demander à mdadm de créer une grappe en lui précisant plusieurs paramètres :

Ce qui donne pour ma part :

mdadm --create /dev/md0 --level=6 --raid-devices=7 /dev/sd[b-h]1

On peut maintenant contrôler l'avancement de la création de la grappe RAID avec la commande suivante :

cat /proc/mdstat

Selon le nombre de disques qui composent le RAID et leur taille, cette opération peut prendre plus ou moins de temps. Pour ma part, on voit sur la capture ci-dessous que cela va prendre plus de 1000 minutes !

Bon et bien j'ai plus qu'à aller me coucher et je terminerai tout cela demain matin midi soir ! Car oui, c'est pas terminé. À l'issue de cette opération, on va avoir une belle grappe RAID, mais il va falloir créer un système de fichiers dessus.

 

Création d'un système de fichiers sur la grappe RAID

Une poignée d'heures plus tard, la construction est terminée !! On va pouvoir créer un système de fichiers de types ext4 sur notre RAID. Pour cela, ouvrez un terminal et saisissez la commande suivante :

mkfs.ext4 /dev/mdX

(pensez à adapter le X en fonction du nom de votre grappe RAID)

Et voilà, notre système de fichiers ext4 est créé et opérationnel. Il nous reste encore une étape : le montage de ce système.

 

Montage du RAID créé avec mdadm

Vous pouvez monter votre RAID avec la commande mount, simplement, ou bien l'inclure dans votre fichier fstab pour qu'il soit monté automatiquement au démarrage du système. Avec la commande mount, il suffit de saisir :

mkdir /mnt/monraid

mount /dev/mdX /mnt/monraid/

Pour ce qui est du fichier /etc/fstab, ouvrez le avec votre éditeur de texte préféré et ajoutez une nouvelle ligne, comme ceci :

/dev/mdX      /mnt/monraid      ext4      defaults      0      0

Sauvegardez le fichier. Ensuite, dernière étape, il faut sauvegarder la configuration du RAID pour être sûr qu'il se lance ensuite automatiquement.

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.old

mdadm --examine --scan --verbose >> /etc/mdadm/mdadm.conf

update-initramfs -u -k all

 

Et voilà ! Vous avez créé un RAID logiciel sous linux avec mdadm. Tout est fonctionnel. Si vous avez besoin d'autres commandes sur le RAID, vous pouvez consulter le wiki JusteGeek.

Attention : on ne le rappelle jamais assez, un système RAID n'est pas un système de sauvegarde. Pensez donc à faire des sauvegardes de vos données importantes 🙂 .

 

Quitter la version mobile