Le RAID logiciel regroupe plusieurs disques en un seul volume qui survit à la panne de l'un d'eux. Sous Linux, l'outil standard est mdadm : il crée des arrays redondants, les surveille et permet de remplacer un disque à chaud. Ce guide montre comment choisir un niveau RAID, créer un array avec un disque de secours, le rendre persistant et le réparer. Pour administrateurs intermédiaires à avancés, sur Debian, Ubuntu ou RHEL. Commandes testées sur AlmaLinux 10.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Choisir le niveau RAID adapté (0, 1, 5, 6, 10)
- Créer un array
mdadmavec un disque de secours - Le rendre persistant au démarrage (mdadm.conf + initramfs)
- Surveiller l'array et remplacer un disque défaillant
Prérequis
Section intitulée « Prérequis »- Un serveur Linux avec
sudoet le paquetmdadminstallé - Au moins 2 disques (ou partitions) libres de même taille
- Savoir identifier les disques et gérer les partitions
Choisir un niveau RAID
Section intitulée « Choisir un niveau RAID »Le niveau définit le compromis entre capacité, performance et tolérance de panne. Choisissez-le avant de créer l'array, il ne se change pas facilement ensuite.
| Niveau | Disques min. | Tolérance de panne | Capacité utile | Pour quoi |
|---|---|---|---|---|
| RAID 0 | 2 | aucune | 100 % | Performance pure, données jetables |
| RAID 1 | 2 | 1 disque | 50 % | Disque système, petits volumes critiques |
| RAID 5 | 3 | 1 disque | (n-1)/n | Bon compromis capacité / sécurité |
| RAID 6 | 4 | 2 disques | (n-2)/n | Gros arrays (reconstruction longue) |
| RAID 10 | 4 | 1 par miroir | 50 % | Performance et redondance (bases de données) |
Créer un array RAID 5 avec un disque de secours
Section intitulée « Créer un array RAID 5 avec un disque de secours »Le disque de secours (spare) est inactif jusqu'à une panne, puis prend le relais automatiquement. C'est ce qui transforme la redondance en résilience sans intervention.
-
Créer l'array : 3 disques actifs (
--raid-devices=3) plus 1 spare (--spare-devices=1).Fenêtre de terminal sudo mdadm --create /dev/md0 --level=5 \--raid-devices=3 /dev/sdb /dev/sdc /dev/sdd \--spare-devices=1 /dev/sdemdadm: array /dev/md0 started. -
Suivre la synchronisation dans
/proc/mdstat.Fenêtre de terminal cat /proc/mdstatmd0 : active raid5 sde[4](S) sdd[3] sdc[1] sdb[0]241664 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]Le
(S)marque le spare. La notation[UUU]donne l'état de chaque disque actif (U= up,_= en panne) ; ici les 3 sont sains. -
Vérifier le détail de l'array.
Fenêtre de terminal sudo mdadm --detail /dev/md0Raid Level : raid5Array Size : 241664 (236.00 MiB 247.46 MB)State : cleanActive Devices : 3Working Devices : 4Spare Devices : 1
L'array /dev/md0 est prêt : 3 disques actifs et 1 de secours (Working Devices : 4).
Formater et monter
Section intitulée « Formater et monter »Un array mdadm se comporte comme un disque ordinaire. Formatez-le et montez-le :
sudo mkfs.xfs /dev/md0sudo mkdir -p /mnt/raidsudo mount /dev/md0 /mnt/raidPour un montage persistant, ajoutez-le à /etc/fstab par UUID, avec l'option nofail pour éviter un blocage au boot si l'array est dégradé.
Rendre l'array persistant
Section intitulée « Rendre l'array persistant »Un array créé en mémoire n'est pas réassemblé automatiquement après un redémarrage tant qu'il n'est pas déclaré dans la configuration et inclus dans l'initramfs. C'est la cause numéro un d'un RAID qui « disparaît » après reboot. La procédure diffère selon la distribution.
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.confsudo update-initramfs -uSur RHEL, le fichier /etc/mdadm.conf n'existe pas par défaut : il faut le créer.
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.confsudo dracut --forceLa ligne générée identifie l'array par UUID, indépendamment de l'ordre des disques :
ARRAY /dev/md0 metadata=1.2 spares=1 UUID=76755a1f:40a789ed:c6b8d707:16526c13Surveiller le RAID
Section intitulée « Surveiller le RAID »Un RAID sans surveillance est dangereux : si une panne de disque passe inaperçue, un second disque qui lâche entraîne la perte totale. Le service mdmonitor envoie une alerte par mail à la moindre dégradation.
Déclarez l'adresse de notification en tête de mdadm.conf, puis activez le service (confirmé enabled sur AlmaLinux) :
MAILADDR root@localhostsudo systemctl enable --now mdmonitorVous pouvez tester l'état à tout moment ; mdadm --detail --test /dev/md0 renvoie un code de sortie non nul si un disque est en panne, pratique dans un script de supervision.
Remplacer un disque défaillant
Section intitulée « Remplacer un disque défaillant »Quand un disque lâche, le workflow est toujours le même : marquer, retirer, ajouter. Si un spare est présent, la reconstruction démarre avant même d'avoir remplacé physiquement le disque.
-
Marquer le disque comme défaillant (simulé ici avec
--fail).Fenêtre de terminal sudo mdadm /dev/md0 --fail /dev/sdbDans
/proc/mdstat, le disque passe en(F)et le spare prend aussitôt le relais :md0 : active raid5 sde[4] sdd[3] sdc[1] sdb[0](F)241664 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]L'array reste
[UUU]: le spare a remplacé le disque failed, la redondance est préservée. -
Retirer le disque défaillant de l'array.
Fenêtre de terminal sudo mdadm /dev/md0 --remove /dev/sdb -
Ajouter le disque de remplacement, qui devient le nouveau spare.
Fenêtre de terminal sudo mdadm /dev/md0 --add /dev/sdf
Suivez la reconstruction avec watch -n1 cat /proc/mdstat : la ligne recovery = XX% indique la progression et l'estimation de fin.
RAID et LVM
Section intitulée « RAID et LVM »Pour combiner redondance et flexibilité, l'ordre recommandé est RAID en dessous, LVM au-dessus : mdadm crée /dev/md0, qui devient un volume physique LVM. Vous gardez la résilience du RAID et la souplesse des volumes logiques.
Alternative : LVM RAID (lvcreate --type raid5 ...) intègre le RAID directement dans LVM, en s'appuyant sur les mêmes pilotes noyau que mdadm. Préférez mdadm pour une couche RAID pure et éprouvée (notamment pour le disque système) ; LVM RAID pour une pile LVM unifiée.
Pièges à éviter
Section intitulée « Pièges à éviter »- RAID 0 et données critiques : aucune redondance, à proscrire hors caches jetables.
- Pas de monitoring : sans
mdmonitor+MAILADDR, une panne reste invisible jusqu'au drame. - Oublier l'initramfs : sans
update-initramfs/dracutaprès modification demdadm.conf, l'array ne remonte pas au boot. - Write hole du RAID 5/6 : après un arrêt brutal, la parité peut devenir incohérente. Pour le fermer, créez l'array avec une politique de cohérence PPL (
--consistency-policy=ppl, RAID 5) ou un journal sur SSD ; un write-intent bitmap (par défaut) accélère le resync mais ne ferme pas le trou. - Confondre RAID et sauvegarde : voir l'avertissement plus haut.
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
| Array absent après reboot | mdadm.conf ou initramfs non mis à jour | Régénérer la conf + update-initramfs/dracut |
/proc/mdstat montre [U_U] | Un disque en panne | mdadm --detail puis remplacer le disque |
| Reconstruction lente | Charge I/O ou limite noyau | cat /proc/mdstat (speed), patienter, éviter les écritures |
mdadm: cannot open /dev/sdX | Disque déjà membre d'un array | mdadm --zero-superblock /dev/sdX avant réemploi |
| Aucune alerte de panne | mdmonitor inactif | systemctl enable --now mdmonitor + MAILADDR |
À retenir
Section intitulée « À retenir »- Choisir le niveau avant : RAID 1 (miroir), RAID 5 (compromis), RAID 6 (double parité), RAID 10 (perf + redondance).
- Un spare (
--spare-devices) déclenche la reconstruction automatique à la première panne. /proc/mdstatetmdadm --detailsont les deux outils d'inspection :[UUU]= sain,(S)= spare,(F)= failed.- Rendre l'array persistant =
mdadm.conf+ initramfs (update-initramfssur Debian,dracut --forcesur RHEL). - Activez
mdmonitor: un RAID sans surveillance n'est pas résilient. - Le RAID n'est pas une sauvegarde ; RAID 0 ne protège rien.