ST01 - Le RAID
Objectif
Comprendre comment le RAID combine plusieurs disques pour gagner en performance et/ou en tolérance aux pannes, savoir calculer la parité XOR et reconstruire un disque perdu, et choisir le bon niveau.
1. Définition
RAID = Redundant Array of Independent Disks : plusieurs disques physiques vus comme une seule unité logique.
| Implémentation | Fonctionnement | ✅ Plus | ❌ Moins |
|---|---|---|---|
| Logicielle | Gérée par l’OS (mdadm sous Linux, Gestion des disques / Espaces de stockage sous Windows) | Gratuite, souple, indépendante du matériel | Consomme du CPU, l’OS doit démarrer pour voir le RAID |
| Pseudo-matérielle (fake RAID) | Contrôleur bon marché de la carte mère, aidé par un pilote | Permet de mettre l’OS sur le RAID | Performances et fiabilité médiocres, peu portable |
| Matérielle | Carte contrôleur dédiée (avec cache, batterie) | Rapide, remplacement à chaud, reconstruction transparente | Chère, propriétaire : il faut la même carte (voire le même firmware) pour relire le RAID |
2. Les niveaux principaux
RAID 0 - striping (agrégat par bandes)
flowchart LR F["Fichier : blocs 1 2 3 4 5 6"] --> D1["Disque 1 : 1 · 3 · 5"] F --> D2["Disque 2 : 2 · 4 · 6"]
✅ ~2× plus rapide, 100 % de la capacité · ❌ un disque perdu = TOUT perdu (aucune redondance).
RAID 1 - mirroring (miroir)
flowchart LR F["Fichier : blocs 1 2 3"] --> D1["Disque 1 : 1 · 2 · 3"] F --> D2["Disque 2 : 1 · 2 · 3 (copie)"]
✅ Survit à la perte d’un disque, lecture plus rapide · ❌ Capacité divisée par 2.
RAID 5 - bandes + parité répartie
flowchart LR subgraph Ligne1[" "] A1["D1 : A1"] --- A2["D2 : A2"] --- AP["D3 : Parité A"] end subgraph Ligne2[" "] B1["D1 : B1"] --- BP["D2 : Parité B"] --- B2["D3 : B2"] end subgraph Ligne3[" "] CP["D1 : Parité C"] --- C1["D2 : C1"] --- C2["D3 : C2"] end
La parité tourne d’un disque à l’autre (round robin). ✅ Survit à 1 panne, bon compromis capacité/sécurité · ❌ 3 disques minimum, écriture plus lente (calcul de parité), reconstruction longue et risquée sur de gros disques.
RAID 6 - double parité
✅ Survit à 2 pannes · ❌ 4 disques minimum, écriture encore plus lente.
RAID 10 (1+0) - miroirs puis bandes
✅ Rapide et sûr (1 panne par miroir) · ❌ 4 disques minimum, capacité ÷ 2. Très utilisé pour les bases de données.
| Combinaisons | Principe |
|---|---|
| RAID 01 (0+1) | Un miroir de deux RAID 0 (moins robuste que le 10) |
| RAID 10 (1+0) | Un RAID 0 de plusieurs RAID 1 |
| RAID 50 | Un RAID 0 de plusieurs RAID 5 |
| RAID 15 / 51 | Un RAID 5 de miroirs / un miroir de RAID 5 |
3. Tableau de synthèse (n disques de taille T)
| Niveau | Disques min. | Capacité utile | Pannes tolérées | Lecture | Écriture |
|---|---|---|---|---|---|
| RAID 0 | 2 | n × T | 0 | +++ | +++ |
| RAID 1 | 2 | T | n − 1 | ++ | = |
| RAID 5 | 3 | (n − 1) × T | 1 | ++ | + |
| RAID 6 | 4 | (n − 2) × T | 2 | ++ | − |
| RAID 10 | 4 | (n / 2) × T | 1 par miroir (au mieux n/2) | +++ | ++ |
Exemple : 4 disques de 2 To → RAID 0 = 8 To · RAID 5 = 6 To · RAID 6 = 4 To · RAID 10 = 4 To.
4. La parité XOR (calcul à la main)
XOR (« ou exclusif ») : le résultat vaut 1 si le nombre de 1 est impair, 0 s’il est pair.
| A | B | A ⊕ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Écriture sur 3 disques de données
| A | B | C | Nombre de 1 | Parité |
|---|---|---|---|---|
| 0 | 1 | 1 | 2 (pair) | 0 |
| 1 | 0 | 0 | 1 (impair) | 1 |
| 1 | 1 | 0 | 2 | 0 |
| 1 | 0 | 1 | 2 | 0 |
Le disque C meurt → reconstruction
On compte les 1 parmi A, B et la parité : pair → C’ = 0, impair → C’ = 1.
| A | B | Parité | Nombre de 1 | C’ reconstruit |
|---|---|---|---|---|
| 0 | 1 | 0 | 1 (impair) | 1 ✅ |
| 1 | 0 | 1 | 2 (pair) | 0 ✅ |
| 1 | 1 | 0 | 2 | 0 ✅ |
| 1 | 0 | 0 | 1 | 1 ✅ |
On retrouve exactement la colonne C d’origine : C = A ⊕ B ⊕ Parité. Lien avec les maths : M03 - Logique booléenne et Karnaugh.
5. RAID logiciel sous Linux (mdadm) - en VM
sudo apt install mdadm # Arch : sudo pacman -S mdadm
lsblk # repérer les disques vides : ex. /dev/vdb /dev/vdc /dev/vdd
# RAID 5 avec 3 disques
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/vdb /dev/vdc /dev/vdd
cat /proc/mdstat # progression de la synchronisation
sudo mkfs.ext4 /dev/md0
sudo mkdir -p /mnt/raid && sudo mount /dev/md0 /mnt/raid
# Rendre permanent
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u
echo '/dev/md0 /mnt/raid ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab
# Simuler une panne puis réparer
sudo mdadm /dev/md0 --fail /dev/vdc
sudo mdadm /dev/md0 --remove /dev/vdc
sudo mdadm --detail /dev/md0 # État : degraded
sudo mdadm /dev/md0 --add /dev/vde # nouveau disque → reconstruction automatique
watch cat /proc/mdstatSous Windows : miroir logiciel → W04 - Disques, RAID logiciel et sauvegarde sous Windows.
« Cool, du coup avec un RAID je n'ai pas besoin de sauvegarder ! » - FAUX.
Le RAID protège contre la panne d’un disque. Il ne protège pas contre : suppression accidentelle, rançongiciel, corruption logicielle, vol, incendie, panne du contrôleur. Tout est immédiatement répercuté sur tous les disques. → ST02 - Stratégies de sauvegarde