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 :
- Souplesse d'utilisation
- Peut-être remonté sur une autre machine Linux, même si ce n'est pas la même version du système
Inconvénients :
- Consommation des ressources CPU (processeur)
- Débits en lecture et en écriture inférieurs aux RAID matériel
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 :
- On appuie sur o pour créer une nouvelle table de partition GPT puis sur Entrée (confirmer avec Y et Entrée)
- On appuie sur n pour créer une nouvelle partition. Pour le numéro de partition, laissez par défaut. Pour ma part, c'est 1 puisque mes disques ne contiennent pas d'autres partitions. Il y a de fortes chances pour que ce soit la même chose chez vous.
- Pour le choix du First Sector, laissez le choix par défaut. Cela devrait vous créer une partition à partir du secteur 2048.
- Idem pour le last sector, laissez par défaut.
- Pour le code de la partition, entrez fd00 cela correspond à Linux RAID
- Appuyez sur w pour enregistrer les changements et quitter gdisk (confirmer avec Y et Entrée)
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 :
- /dev/mdX : correspondant au nom de la grappe
- --level=Y : indique que je souhaite créer un RAID Y
- --raid-devices=Z : indique le nombre de disques qui vont composer mon RAID
- et ensuite on indique le nom des disques... On peut soit les saisir tous un peu un (mais ça peut être long et donc fastidieux) ou bien utiliser l'abréviation avec des crochets, comme j'ai déjà fait plus haut...
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 🙂 .
Partager la publication "[Tuto] Créer un RAID logiciel avec mdadm sous Debian"