RAID logiciel avec mdadm
Tu sais choisir un niveau de RAID, créer une grappe avec mdadm, lire son état dans /proc/mdstat et remplacer un disque tombé en panne sans arrêter le serveur.
Mis à jour le
À recouper avec le cours. Cette leçon a été écrite à partir du plan du chapitre, avant relecture avec les supports. En cas de doute, le cours fait foi.
Pourquoi on voit ça
Un disque dur finit toujours par tomber en panne. Sur un serveur avec un seul disque, ce jour-là le service s’arrête et les données sont perdues.
Le RAID regroupe plusieurs disques en une grappe, vue par le système comme un seul disque. Selon le niveau choisi, la grappe continue de fonctionner quand un disque meurt : c’est de la haute disponibilité. Tu remplaces le disque, le serveur ne s’est jamais arrêté.
Sous Linux, le RAID logiciel est géré par le noyau et piloté avec la commande mdadm. « Un disque du RAID est tombé » est une panne classique : il faut savoir la lire et la réparer calmement.
Les niveaux de RAID
Trois techniques se combinent :
- l’agrégation par bandes (striping) : les données sont découpées et réparties sur les disques. Rapide, mais aucune copie ;
- le miroir : chaque donnée est écrite à l’identique sur plusieurs disques ;
- la parité : une information calculée qui permet de recalculer le contenu d’un disque perdu, comme on retrouve le nombre manquant d’une addition quand on connaît le total.
Dans le tableau, n est le nombre de disques et T la taille d’un disque.
| Niveau | Principe | Disques minimum | Capacité utile | Pannes tolérées |
|---|---|---|---|---|
| RAID 0 | bandes | 2 | n × T | aucune |
| RAID 1 | miroir | 2 | T | n − 1 (1 avec 2 disques) |
| RAID 5 | bandes + parité | 3 | (n − 1) × T | 1 |
| RAID 6 | bandes + double parité | 4 | (n − 2) × T | 2 |
| RAID 10 | bandes sur des miroirs | 4 | (n ÷ 2) × T | 1 par miroir |
Quelques repères :
- RAID 0 : toute la capacité, toute la vitesse, zéro sécurité. Un disque perdu, tout est perdu.
- RAID 1 : simple et sûr, mais tu paies deux disques pour la capacité d’un seul.
- RAID 5 : bon compromis. Avec 4 disques de 2 To : (4 − 1) × 2 = 6 To.
- RAID 6 : comme le 5, avec une seconde parité. Avec 4 disques de 2 To : 4 To.
- RAID 10 : des paires en miroir, mises bout à bout. Il supporte un disque perdu dans chaque paire. Si les deux disques d’une même paire tombent, tout est perdu : une seule panne est donc garantie.
Le RAID n’est pas une sauvegarde
Le RAID protège contre une seule chose : la panne matérielle d’un disque. Il ne protège pas contre :
- un
rm -rfau mauvais endroit (la suppression est recopiée aussitôt sur tous les disques) ; - un rançongiciel ou un fichier corrompu par une application ;
- un incendie, un vol, une surtension qui grille tous les disques d’un coup.
Le RAID garde le service en marche. La sauvegarde, rangée ailleurs, permet de revenir en arrière. Il faut les deux.
Créer une grappe
Exemple : un miroir avec deux disques vides.
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
--create /dev/md0: le nom du nouveau périphérique (mdpour multiple devices) ;--level=1: le niveau de RAID ;--raid-devices=2: le nombre de disques actifs ;- à la fin, la liste des disques.
Ensuite /dev/md0 s’utilise comme n’importe quel disque : tu peux y poser un système de fichiers (mkfs.ext4 /dev/md0) ou en faire un PV pour LVM.
Contexte, pas à apprendre. Sur Debian, pour que la grappe garde son nom au redémarrage, on l’enregistre avec
mdadm --detail --scan >> /etc/mdadm/mdadm.conf, puis on régénère l’initramfs avecupdate-initramfs -u.
Surveiller la grappe
/proc/mdstat, le coup d’œil
cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc[1] sdb[0]
20954112 blocks super 1.2 [2/2] [UU]
Les deux choses à lire sont à la fin de la deuxième ligne :
[2/2]: 2 disques attendus, 2 disques actifs ;[UU]: une lettre par disque.Ucomme up : le disque est en service.
Quand un disque tombe :
md0 : active raid1 sdc[1](F) sdb[0]
20954112 blocks super 1.2 [2/1] [U_]
[2/1]: il n’en reste qu’un sur deux ;[U_]: le tiret bas marque le disque manquant ;(F)comme faulty : c’estsdcqui est en panne.
La grappe est dite dégradée : elle fonctionne encore, mais elle n’a plus de filet. Une panne de plus et les données sont perdues.
mdadm --detail, le rapport complet
mdadm --detail /dev/md0
Raid Level : raid1
State : clean, degraded
Active Devices : 1
Failed Devices : 1
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
- 0 0 1 removed
1 8 32 - faulty /dev/sdc
Tu y lis l’état global (State) et, en bas, l’état de chaque disque : active sync pour un disque sain, faulty pour un disque en panne.
Remplacer un disque en panne
Trois actions, toujours dans cet ordre, puis on attend.
mdadm /dev/md0 --fail /dev/sdc
mdadm /dev/md0 --remove /dev/sdc
--faildéclare le disque défaillant. Si le noyau l’a déjà marqué(F), cette étape est déjà faite. Elle sert quand le disque donne des signes de faiblesse mais tourne encore.--removesort le disque de la grappe. mdadm refuse de retirer un disque encore actif : d’où le--faild’abord.
Tu remplaces alors le disque physique. Le nouveau s’appelle ici /dev/sdd.
mdadm /dev/md0 --add /dev/sdd
--addfait entrer le nouveau disque. La reconstruction démarre toute seule : mdadm recopie les données sur le disque neuf.
Tu suis l’avancement dans /proc/mdstat :
$ cat /proc/mdstat
md0 : active raid1 sdd[2] sdb[0]
20954112 blocks super 1.2 [2/1] [U_]
[===>.................] recovery = 17.3% (3630208/20954112) finish=1.4min
Pendant la reconstruction, la grappe reste utilisable, mais elle est toujours dégradée. Quand c’est fini, la ligne recovery disparaît et l’état revient à [2/2] [UU].
--add.À retenir
- Le RAID garde le service en marche quand un disque tombe. Ce n’est pas une sauvegarde.
- RAID 0 : aucune panne tolérée. RAID 1 : miroir. RAID 5 : une panne, 3 disques minimum. RAID 6 : deux pannes, 4 disques minimum. RAID 10 : miroirs agrégés, 4 disques minimum.
- Créer :
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc. - Surveiller :
cat /proc/mdstat.[UU]= tout va bien,[U_]= un disque manque,(F)= disque en panne. Détail :mdadm --detail /dev/md0. - Remplacer :
--fail,--remove, changement du disque,--add, puis on laisse la reconstruction finir.
Entraînement
12 questions, dont 3 à compléter. Tu réponds, on passe à la suivante. La note arrive à la fin.
Ta note
Cartes · 8
Réviser les cartes ici
Pourquoi