Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

🧱 Storage Systems — Chapitre 6 : RAID et protection locale des données

Objectif : comprendre les mécanismes RAID classiques, leurs limites modernes, les alternatives comme RAID-Z et Erasure Coding, puis relier tout cela aux risques réels : rebuild long, URE, bit rot, firmware, contrôleurs, cache, BBU, scrubbing, monitoring et runbooks de production.

RAID 0 / 1 / 5 / 6 / 10 Hardware RAID / mdadm / ZFS Parity, mirrors, stripes Rebuild, scrub, bit rot Erasure Coding Production runbooks
6.0

Fondations RAID

Pourquoi le RAID existe : disponibilité locale, agrégation de disques, performance, tolérance aux pannes et limites fondamentales.

RTO/RPOAvailabilityLocal protection
6.1

RAID matériel / logiciel

Contrôleurs, cache, BBU, HBA, mdadm, Storage Spaces, ZFS RAID-Z, responsabilités et pièges.

ControllerBBUmdadm
6.2

RAID 0

Striping pur : performance maximale, aucune protection, perte totale si un seul disque tombe.

FastNo redundancy
6.3

RAID 1

Miroir simple, lecture parallèle, écriture dupliquée, excellent choix pour boot, petits serveurs et workloads critiques simples.

MirrorSafe
6.4

RAID 5

Parité simple : bon rendement, mais limites fortes avec gros disques, rebuild long et exposition URE.

ParityLegacy risk
6.5

RAID 6

Double parité : meilleure protection pour grands ensembles, prix en capacité et en pénalité d'écriture.

Dual parityEnterprise
6.6

RAID 10

Striping de miroirs : excellent compromis performance, latence et résilience, très apprécié pour bases de données.

Low latencyDB friendly
6.7

Erasure Coding

Alternative moderne au RAID classique : object storage, stockage distribué, Ceph, S3-like, reconstruction par fragments.

EC k+mScale-out
6.8

Rebuild, scrubbing, bit rot

Risques silencieux, reconstruction, patrol read, scrubbing ZFS/Btrfs, corruption latente et stratégie anti-surprise.

RebuildScrubBit rot
6.9

Risque réel : URE & gros disques

Pourquoi les très grands HDD changent le calcul : lecture massive pendant rebuild, erreur irrécupérable et fenêtre de vulnérabilité.

UREMTTRLarge HDD
6.10

Cache, BBU, PLP

Write-back, write-through, cache protégé, power-loss protection, batteries, supercapacitors, cohérence après crash.

Write-backBBUPLP
6.11

ZFS RAID-Z

RAID-Z1/Z2/Z3, copy-on-write, checksums end-to-end, scrub, resilver, vdev design et pièges.

ChecksumsRAID-Z2COW
6.12

Linux mdadm

Créer, monitorer, réparer et remplacer un disque dans un RAID logiciel Linux avec commandes et runbook.

LinuxmdadmCLI
6.13

Monitoring production

SMART, MegaCLI/storcli, mdadm --detail, zpool status, alerting, logs, métriques et seuils d'exploitation.

SMARTAlertsSRE
6.14

Matrice de décision

Quel RAID choisir selon workload : OS, VM, DB, NAS, vidéosurveillance, backup, archive, lab, cloud gateway.

DecisionSizingTrade-offs
6.15

Lab & simulations

Exercices pratiques : disques loop, mdadm, fio, panne simulée, rebuild, observation de performance et logs.

LabfioFailure drill
6.16

Checklist production

Liste de contrôle avant mise en production : firmware, hot spare, alerting, sauvegarde, test restore, documentation.

Prod-readyAuditRunbook
6.0 Fondations RAID : protection locale, performance et limites
Le RAID répond à trois objectifs très différents

Le RAID agrège plusieurs disques pour former un volume logique. Selon le niveau choisi, il augmente le débit, améliore la disponibilité locale, ou équilibre capacité, performance et tolérance à la panne.

ObjectifCe que le RAID apporteCe qu'il ne règle pas
Disponibilité localeContinuer à servir malgré un ou plusieurs disques morts.Suppression humaine, ransomware, incendie, corruption applicative.
PerformanceParallélisme de lecture/écriture, files d'E/S réparties.Latence réseau, mauvais SQL, saturation contrôleur.
Capacité utilePool de disques présenté comme volume unique.Fragmentation du risque sur longue durée.
Chaîne logique simplifiée
Application Filesystem Volume / RAID Controller / HBA Disks
Point essentiel : RAID est une couche locale. Elle ne remplace ni une sauvegarde, ni une réplication distante, ni une politique de restauration testée.
Vocabulaire technique indispensable
TermeDéfinitionImpact design
StripeRépartition des blocs sur plusieurs disques.Augmente débit séquentiel et parallélisme.
MirrorDeux copies identiques d'un même bloc.Très bonne lecture, excellente simplicité de recovery.
ParityInformation calculée permettant de reconstruire un disque perdu.Économie capacité, mais pénalité écriture et rebuild lourd.
Chunk / stripe sizeTaille d'un segment écrit avant de passer au disque suivant.Influence workloads DB, VM, séquentiel, petits fichiers.
Hot spareDisque de secours prêt à intégrer un rebuild automatiquement.Réduit le temps avant début reconstruction.
Degraded modeÉtat où le RAID fonctionne avec redondance perdue ou réduite.Performance et sécurité diminuées.
RAID n'est pas une sauvegarde. Il protège contre certains défauts matériels locaux, mais pas contre la majorité des pertes de données modernes.
RAID protège

Mort d'un disque, parfois deux ou trois selon architecture.

Backup protège

Retour arrière après suppression, ransomware, corruption logique.

Réplication protège

Perte d'un serveur, d'une baie, d'une salle, d'un site.

IncidentRAIDSnapshotBackup externeDR site
Disque mortOui selon niveauNonIndirectIndirect
Suppression table DBNonOui si snapshot avantOuiOui selon réplication
RansomwareNonPartiel si immutableOui si isolé/immutablePartiel
Contrôleur détruitNon seulNonOuiOui
Métriques à suivre avant de choisir un niveau RAID
RTOmin/h

Combien de temps le service peut être indisponible.

RPO0..24h

Combien de données on accepte de perdre.

MTTRh/j

Temps de réparation/rebuild réel, pas théorique.

URErisk

Erreur de lecture irrécupérable pendant les lectures massives.

Capacité utile RAID 5 = (N - 1) × taille_disque Capacité utile RAID 6 = (N - 2) × taille_disque Capacité utile RAID 10 = (N / 2) × taille_disque
6.1 RAID matériel / RAID logiciel : contrôleurs, cache, BBU, mdadm, ZFS
ApprocheAvantagesInconvénientsQuand l'utiliser
RAID matérielOffload contrôleur, cache write-back, BIOS de gestion, boot simple.Dépendance constructeur, format propriétaire, contrôleur à remplacer à l'identique parfois.Serveurs classiques, Windows, ESXi traditionnel, appliances.
RAID logiciel mdadmTransparent, portable Linux, très documenté, pas de contrôleur spécifique.CPU/RAM hôte, boot parfois plus délicat, monitoring à configurer.Linux bare-metal, labs, NAS custom, serveurs simples.
ZFS RAID-ZChecksums end-to-end, COW, scrub, compression, snapshots intégrés.Design vdev strict, extension historique moins flexible, RAM recommandée.NAS sérieux, backup, archive, datasets critiques.
HBA + filesystem intelligentExpose les disques bruts au système, idéal ZFS/Ceph.Moins de magie contrôleur, demande discipline admin.Ceph, ZFS, SDS, object storage.
Ce que fait réellement un contrôleur RAID
  • Présente un volume logique unique au système.
  • Calcule parité et layout de stripes.
  • Gère cache lecture/écriture, BBU, patrol read, hot spare.
  • Expose des alarmes matérielles et un journal d'événements.
  • Peut masquer certains détails SMART si mal configuré.
Un contrôleur RAID sans batterie/supercap en mode write-back est dangereux : une coupure peut laisser des écritures en cache non persistées.
Architecture contrôleur
OS Virtual Disk RAID Controller Cache + BBU Physical Disks
# Exemple storcli
storcli /c0 show
storcli /c0 /vall show
storcli /c0 /eall /sall show all
storcli /c0 show events file=/tmp/raid_events.log
RAID logiciel : avantages modernes
Portabilité

Les métadonnées mdadm suivent les disques, souvent lisibles sur autre machine Linux.

Observabilité

Tout peut être scripté : /proc/mdstat, mdadm --detail, journalctl.

Coût

Pas de carte RAID coûteuse, bon usage des CPU modernes.

# Lire l'état global
cat /proc/mdstat

# Détails d'un array
mdadm --detail /dev/md0

# Scanner les arrays
mdadm --examine --scan
Pourquoi ZFS préfère voir les disques bruts

ZFS veut maîtriser l'intégrité de bout en bout. Un contrôleur RAID matériel peut cacher les erreurs, remapper les disques et empêcher ZFS de comprendre précisément l'état physique. La pratique recommandée est souvent HBA/IT mode + disques exposés individuellement.

FonctionRAID classiqueZFS
Checksums donnéesSouvent non end-to-endOui, chaque bloc est vérifié
Self-healingLimitéOui si redondance disponible
SnapshotsExterneNatif COW
ScrubPatrol read selon contrôleurScrub logique + checksum
Pièges classiques à éviter
  • Fake RAID / BIOS RAID : souvent moins robuste qu'un vrai contrôleur ou mdadm.
  • Write-back sans protection : très performant, mais dangereux sans BBU/flash-backed cache.
  • Contrôleur unique : une baie peut perdre tous ses volumes si la carte RAID tombe et qu'aucune carte compatible n'est disponible.
  • Firmware hétérogène : disques identiques mais firmwares différents peuvent produire des comportements incohérents.
  • Monitoring absent : le RAID dégradé pendant plusieurs semaines est une bombe à retardement.
6.2 RAID 0 : performance sans protection
Striping pur
D1A1C1E1
D2A2C2E2
D3B1D1F1
D4B2D2F2
Capacité utile = N × taille_disque_minimum

Chaque bloc est réparti sur plusieurs disques. Le système lit/écrit en parallèle.

DimensionComportement RAID 0
Débit séquentielTrès bon, souvent proche de la somme des disques si le contrôleur suit.
IOPS randomAméliorés par parallélisme, mais latence disque inchangée.
ÉcritureAucune pénalité de parité.
RebuildImpossible : aucune redondance.
Si un disque tombe, le volume complet est perdu. Plus il y a de disques, plus le risque global augmente.
Probabilité de survie approximative = survie_disque ^ N
Quand RAID 0 est acceptable
  • Cache temporaire reconstructible.
  • Scratch disk vidéo/IA/HPC sans données uniques.
  • Benchmark ou lab.
  • Volume avec réplication applicative forte au-dessus.
À éviter pour VM critiques, bases de données, NAS utilisateur, sauvegarde unique.
6.3 RAID 1 : miroir, simplicité, sécurité
D1ABC
D2ABC
Capacité utile = taille du plus petit disque du miroir

Chaque bloc est écrit sur deux disques. La lecture peut être servie par l'un ou l'autre.

Type E/SEffetCommentaire
Lecture séquentielleBonne à très bonnePeut lire en parallèle selon implémentation.
Lecture aléatoireAmélioréeDeux sources possibles pour les blocs.
ÉcritureComparable à un disqueChaque écriture doit être confirmée sur les deux copies.
RebuildSimpleCopie du disque sain vers le nouveau.
Procédure de remplacement conceptuelle
Alert disk failed Identify slot Replace disk Start rebuild Verify consistency
Le RAID 1 est souvent le plus facile à expliquer, auditer et récupérer sous pression.
  • Disques système de serveurs.
  • Petits NAS 2 baies.
  • Volumes logs critiques à taille modérée.
  • Environnements où la simplicité prime sur le rendement capacité.
6.4 RAID 5 : parité simple et limites avec gros disques
Parité distribuée
D1A1B1P-C
D2A2P-BC1
D3P-AB2C2
Capacité utile = (N - 1) × taille_disque_minimum
La pénalité d'écriture RAID 5

Une petite écriture implique souvent lecture ancienne donnée, lecture ancienne parité, calcul nouvelle parité, écriture donnée, écriture parité.

Small random write penalty RAID 5 ≈ 4 I/O
WorkloadImpact
Gros séquentielAcceptable, surtout avec stripe complète.
Petites écritures randomMauvais sans cache protégé.
Base transactionnelleSouvent déconseillé avec HDD.
RAID 5 supporte une seule panne. Pendant le rebuild, la redondance est perdue. Sur de gros HDD, la fenêtre de vulnérabilité peut durer plusieurs heures ou jours.
  • Rebuild lit massivement tous les disques survivants.
  • Une URE pendant reconstruction peut rendre le volume irrécupérable.
  • Un second disque mort pendant rebuild est fatal.
  • Plus le disque est grand et lent, plus la période de risque augmente.
Usages encore acceptables avec prudence
  • Petits ensembles de SSD entreprise avec backup solide.
  • Données peu critiques et facilement restaurables.
  • Volumes lecture majoritaire avec faible pression d'écriture.
Pour gros HDD modernes en production critique : préférer RAID 6, RAID 10, RAID-Z2/Z3 ou stockage distribué.
6.5 RAID 6 : double parité pour stockage enterprise
D1A1B1P-C
D2A2Q-BC1
D3P-AB2C2
D4Q-AP-BQ-C
Capacité utile = (N - 2) × taille_disque_minimum

RAID 6 peut survivre à deux disques perdus dans le même groupe RAID.

AspectRAID 6Commentaire
CapacitéPerte de deux disquesMeilleur rendement que RAID 10 sur grands groupes.
Écriture randomPénalité élevéeDouble parité à mettre à jour.
LectureBonneParallélisme sur N-2 disques utiles.
Sécurité rebuildBien meilleure que RAID 5Reste vulnérable à troisième panne ou URE sévères.
Small random write penalty RAID 6 ≈ 6 I/O
Rebuild : attention à la fenêtre de stress
  • Le rebuild sollicite tous les disques, parfois pendant très longtemps.
  • Les disques restants sont souvent du même âge et du même lot.
  • Le système peut devenir lent : throttle de rebuild à ajuster.
  • Un patrol read/scrub régulier réduit la surprise au moment critique.
  • NAS/SAN avec gros HDD.
  • Stockage backup local.
  • Archives actives.
  • Volumes lecture majoritaire.
Pour bases très transactionnelles : RAID 10 reste souvent supérieur en latence.
6.6 RAID 10 : performance et résilience
Stripe de miroirs
D1A1C1
D2A1C1
D3B1D1
D4B1D1
Capacité utile = 50% de la capacité brute
CritèreRAID 10
LatenceTrès bonne : pas de calcul de parité.
Écritures randomTrès bonnes, chaque écriture va sur un miroir.
LecturesTrès bonnes : lecture possible sur plusieurs membres.
RebuildPlus léger : copie d'un miroir, pas lecture complète de tous les disques pour parité.

RAID 10 peut perdre plusieurs disques si ceux-ci ne sont pas dans la même paire miroir. Il peut aussi être perdu avec seulement deux pannes si les deux disques d'une même paire tombent.

Design important : répartir les miroirs sur backplanes, alimentations, contrôleurs ou tiroirs différents.
  • Base de données OLTP.
  • Datastores de machines virtuelles.
  • Journaux transactionnels.
  • Workloads mixtes lecture/écriture.
  • Applications qui exigent basse latence et rebuild rapide.
6.7 Erasure Coding : alternative moderne au RAID classique
Le principe k+m

Une donnée est découpée en k fragments de données et m fragments de parité. Il suffit de récupérer k fragments parmi k+m pour reconstruire l'objet.

Object 1 GB k=6 data shards+ m=3 parity shards Survives 3 losses
Overhead EC 6+3 = 9 / 6 = 1.5× ; capacité utile ≈ 66.7%
CritèreRAID classiqueErasure Coding
ÉchelleServeur ou baie localeCluster distribué multi-nœuds
Unité protégéeBloc / disqueObjet / chunk / placement group
RebuildSouvent par disque completPar fragments d'objets, réparti
LatenceFaible localementPlus élevée, réseau impliqué
Cas d'usageVolumes locauxObject storage, data lake, archive scale-out
Dans Ceph ou object storage
  • Les fragments sont placés sur des OSD/nœuds différents.
  • La CRUSH map ou politique de placement évite les corrélations de panne.
  • EC est intéressant pour données volumineuses et froides.
  • Pour petits objets ou workloads random write, réplication 3× peut être plus simple et plus rapide.
# Exemple conceptuel Ceph
ceph osd erasure-code-profile set ec-profile k=6 m=3 crush-failure-domain=host
ceph osd pool create data-ec erasure ec-profile
Coûts cachés
  • CPU pour encoder/décoder.
  • Réseau pour récupérer plusieurs shards.
  • Latence supérieure à une réplication simple.
  • Complexité d'exploitation en cas de cluster dégradé.
  • Moins adapté aux petits objets très modifiés.
ProfilOverheadToléranceUsage
4+21.5×2 fragmentsPetits clusters, compromis simple.
6+31.5×3 fragmentsArchive robuste, clusters moyens.
10+41.4×4 fragmentsTrès grands clusters, meilleur rendement.
Règle pratique : choisir le failure domain avant le profil EC. Perdre un disque n'est pas pareil que perdre un serveur, une baie ou un rack.
6.8 Rebuild, scrubbing, bit rot : risques réels et corruption silencieuse
Le rebuild n'est pas une formalité

Un rebuild impose de relire massivement les disques restants, de recalculer les blocs manquants et d'écrire sur le disque de remplacement. Pendant cette période, l'array est plus vulnérable.

Facteur 1Size

Plus les disques sont gros, plus il faut lire/écrire.

Facteur 2Load

La production concurrence le rebuild.

Facteur 3Age

Disques restants souvent aussi âgés que le disque mort.

Facteur 4URE

Lecture massive augmente la probabilité d'erreur latente.

Scrubbing / patrol read

Le scrub relit périodiquement les données pour détecter les erreurs latentes avant qu'un rebuild critique ne les rencontre. ZFS/Btrfs vérifient les checksums logiques, tandis que beaucoup de contrôleurs parlent de patrol read ou consistency check.

TechnologieOpérationBut
ZFSzpool scrubChecksum + auto-healing si redondance.
Btrfsbtrfs scrubVérification checksums et réparation si profil redondant.
RAID controllerPatrol read / consistency checkLecture proactive des secteurs et parité.
mdadmcheck / repairVérifier cohérence de l'array.
Bit rot et corruption silencieuse
Le danger n'est pas seulement un disque mort. Le danger est aussi un disque qui répond avec une donnée corrompue sans que la couche supérieure ne s'en aperçoive.
  • Cosmic rays, usure NAND, défaut média, firmware, câble, RAM non-ECC.
  • Sans checksum end-to-end, une corruption peut être sauvegardée et répliquée.
  • Les systèmes COW à checksum sont conçus pour détecter ces anomalies.
ActionFréquence typeFenêtreRemarque
SMART shortQuotidien / hebdoFaible chargeRapide, peu intrusif.
SMART longMensuelNuit/weekendPeut durer longtemps sur gros HDD.
ZFS scrubMensuelHors picAdapter selon taille pool.
Controller patrol readHebdo/mensuelHors picSurveiller impact performance.
# ZFS scrub
zpool status
zpool scrub tank
zpool status -v tank

# Btrfs scrub
btrfs scrub start -Bd /data
btrfs scrub status /data

# mdadm consistency check
echo check > /sys/block/md0/md/sync_action
cat /proc/mdstat

# SMART
smartctl -a /dev/sda
smartctl -t long /dev/sda
6.9 Risque réel : URE, gros disques et fenêtre de vulnérabilité
URE : Unrecoverable Read Error

Une URE est une erreur de lecture qu'un disque ne parvient pas à corriger malgré ses mécanismes internes. Pendant un rebuild RAID 5/6, le système doit relire d'énormes volumes de données sur les disques survivants.

Les valeurs constructeur sont statistiques. Elles ne garantissent pas qu'un disque donné ne produira aucune erreur pendant votre rebuild.
Calcul simplifié
Bits lus = taille_lue_en_TB × 8 × 10^12 Probabilité approximative d'au moins une URE = 1 - (1 - taux_URE) ^ bits_lus

Ce modèle simplifié illustre l'ordre de grandeur. En production, il faut aussi tenir compte de l'âge des disques, des vibrations, de la température, du firmware, de la charge, de la qualité contrôleur et des secteurs déjà réalloués.

ScénarioLecture pendant rebuildRisque opérationnelLecture design
RAID 5, 4 × 4 TB≈ 12 TBModéréAcceptable si backup et charge faible.
RAID 5, 8 × 18 TB≈ 126 TBÉlevéTrès discutable en production.
RAID 6, 8 × 18 TB≈ 126 TBPlus robustePréférable à RAID 5.
RAID 10, 8 × 18 TBCopie miroir cibléeRebuild plus localiséTrès bon pour performance et recovery.
Réduction du risque
  • Éviter RAID 5 sur gros HDD critiques.
  • Préférer RAID 6, RAID 10, RAID-Z2/Z3 ou stockage distribué.
  • Scrubbing régulier pour détecter les erreurs latentes avant panne.
  • Hot spare ou cold spare disponible immédiatement.
  • Monitoring SMART et seuils prédictifs.
  • Backup restaurable testé, pas seulement existant.
6.10 Cache, BBU, PLP : cohérence et performance d'écriture
ModePrincipePerformanceRisque
Write-throughConfirmation après écriture disque réelle.Plus lentTrès sûr.
Write-backConfirmation dès écriture en cache contrôleur.Très rapideDangereux si cache non protégé.
Read-aheadPrélecture séquentielle.Très utile en séquentielPeut polluer le cache en random.
No read-aheadLecture à la demande.Meilleur pour randomMoins bon en scan séquentiel.
BBU / Flash-backed write cache

La batterie ou le supercondensateur protège les écritures en cache pendant une coupure. Les contrôleurs modernes peuvent transférer le cache vers une mémoire flash interne.

Write acknowledged Controller cache Power loss BBU keeps cache Flush after reboot
Power Loss Protection côté SSD

Les SSD enterprise disposent souvent de condensateurs pour protéger les données en transit dans les buffers internes du SSD. C'est très important pour bases de données et virtualisation.

SSD consumerSSD enterprise avec PLP
Performance parfois élevée mais garanties faibles sous coupure.Flush interne protégé et comportement plus prévisible.
Endurance et QoS variables.Endurance, latence et firmware adaptés datacenter.
  • Activer write-back uniquement si BBU/supercap est OK.
  • Sur alerte BBU défectueuse, basculer en write-through.
  • Tester la restauration après coupure contrôlée dans un lab, jamais directement en prod.
  • Sur DB critiques, aligner paramètres contrôleur, filesystem, cache DB et politique fsync.
6.11 ZFS RAID-Z : checksums, COW, scrub et resilver
Pourquoi ZFS est différent
  • Copy-on-write : les blocs ne sont pas écrasés en place.
  • Checksums sur les données et métadonnées.
  • Self-healing si une copie correcte existe.
  • Snapshots et clones natifs.
  • Compression intégrée, souvent bénéfique.
App write New blocks Checksum Atomic txg Old blocks kept if snapshot
NiveauÉquivalent conceptuelToléranceCommentaire
RAID-Z1RAID 5-like1 disqueÀ éviter avec gros HDD critiques.
RAID-Z2RAID 6-like2 disquesTrès courant pour NAS sérieux.
RAID-Z3Triple parité3 disquesGrandes capacités, archives, longs resilver.
Mirror vdevsRAID 10-likeSelon pairesMeilleure IOPS et extension plus simple.
Règle fondamentale : le pool hérite des vdevs

Dans ZFS, un pool est composé de vdevs. Si un vdev est perdu, le pool est perdu. La redondance se définit au niveau du vdev, pas seulement au niveau du pool.

Ne jamais créer un pool avec un vdev non redondant pour des données importantes.
# Status et santé
zpool status -v tank
zpool list
zfs list

# Scrub
zpool scrub tank

# Remplacement
zpool offline tank /dev/disk/by-id/old
zpool replace tank /dev/disk/by-id/old /dev/disk/by-id/new

# Snapshots
zfs snapshot tank/data@before-upgrade
zfs list -t snapshot
  • Ne pas mettre ZFS au-dessus d'un RAID matériel opaque.
  • Éviter SMR non adaptés aux écritures intensives.
  • Planifier RAM ECC si possible.
  • Comprendre que l'extension d'un vdev RAID-Z n'est pas la même chose qu'ajouter un vdev.
  • Tester les procédures de remplacement de disque avant incident réel.
6.12 Linux mdadm : création, supervision et réparation
# Exemple RAID 1 avec deux partitions
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

# Exemple RAID 10 avec quatre partitions
mdadm --create /dev/md10 --level=10 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

# Créer filesystem
mkfs.xfs /dev/md10
mkdir -p /data
mount /dev/md10 /data
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --examine /dev/sdb1
journalctl -u mdmonitor --since today
Configurer alerting email ou exporter les états vers Prometheus/node_exporter.
# Simuler un disque en panne dans un lab
mdadm /dev/md0 --fail /dev/sdb1
mdadm /dev/md0 --remove /dev/sdb1
cat /proc/mdstat
Ne jamais simuler une panne sur production sans sauvegarde vérifiée et fenêtre validée.
# Préparer le nouveau disque avec même partitionnement
sfdisk -d /dev/sdc | sfdisk /dev/sdb

# Ajouter le nouveau membre
mdadm /dev/md0 --add /dev/sdb1

# Suivre rebuild
watch -n 2 cat /proc/mdstat
# Debian/Ubuntu
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u

# fstab avec UUID
blkid /dev/md0
echo 'UUID=xxxx /data xfs defaults,nofail 0 2' >> /etc/fstab
6.13 Monitoring production : SMART, contrôleurs, ZFS, mdadm
SignalPourquoi c'est critiqueAction
Reallocated sectorsIndique secteurs remappés.Surveiller tendance, remplacement préventif.
Pending sectorsSecteurs instables non encore remappés.Très sérieux, planifier remplacement.
CRC errorsSouvent câble/backplane.Vérifier connectique avant accuser disque.
TemperatureChaleur augmente erreurs et usure.Corriger airflow.
Array degradedRedondance perdue ou réduite.Incident immédiat, pas simple warning.
Patrol read errorsErreurs latentes trouvées.Analyser et remplacer si récurrent.
smartctl -a /dev/sda
smartctl -H /dev/sda
smartctl -x /dev/sda
smartctl -t short /dev/sda
smartctl -t long /dev/sda
# Broadcom/LSI storcli examples
storcli /c0 show
storcli /c0 /vall show
storcli /c0 /eall /sall show
storcli /c0 /bbu show
storcli /c0 show events

# MegaCLI legacy style
MegaCli64 -AdpAllInfo -aALL
MegaCli64 -PDList -aALL
MegaCli64 -LDInfo -Lall -aALL
Alertes minimales
  • Array degraded : critique immédiat.
  • Battery failed / cache disabled : warning sérieux, performance et cohérence impactées.
  • SMART health failed : remplacement.
  • Pending sectors > 0 : investigation.
  • Scrub errors : vérifier fichiers affectés et backup.
  • Rebuild started/completed/failed : notifications obligatoires.
6.14 Matrice de décision : choisir RAID selon workload
WorkloadChoix recommandéPourquoiÀ éviter
OS serveurRAID 1Simple, robuste, boot facile.RAID 0.
Base OLTPRAID 10 / NVMe mirrorLatence basse, écritures random.RAID 5 HDD.
VM datastoreRAID 10 ou baie enterpriseWorkload mixte et random.RAID 5 large HDD.
NAS fichiersRAID 6 / RAID-Z2Capacité + tolérance.RAID 5 sur gros disques.
Backup localRAID 6 / RAID-Z2/Z3Capacité, sécurité, scrubbing.RAID 0.
Archive froideErasure Coding / RAID-Z3Rendement + forte tolérance.RAID 1 trop coûteux.
VidéosurveillanceRAID 6 ou volumes dédiésÉcriture séquentielle continue.RAID 5 faible qualité.
Cache temporaireRAID 0 possibleReconstructible, performance.Stockage unique.
Exemple 8 disques × 18 TB : RAID 0 = 144 TB utiles, 0 disque toléré RAID 1 = 18 TB utiles par paire miroir simple 2 disques RAID 5 = 126 TB utiles, 1 disque toléré RAID 6 = 108 TB utiles, 2 disques tolérés RAID 10 = 72 TB utiles, tolérance selon paires
La capacité brute ne doit jamais être le seul critère. Il faut intégrer rebuild, backup, performance et criticité.
  • Production critique + HDD : RAID 6 minimum ou RAID 10.
  • Production DB : RAID 10 ou stockage flash enterprise.
  • Grand NAS : RAID-Z2/Z3 ou RAID 6 selon technologie.
  • Stockage distribué : EC ou réplication, pas RAID local seul.
  • Tout niveau RAID : backup externe obligatoire.
6.15 Lab & simulations : apprendre sans casser la production
# Créer des fichiers disques de lab
mkdir -p /tmp/raidlab
for i in 1 2 3 4; do dd if=/dev/zero of=/tmp/raidlab/disk$i.img bs=1M count=1024; done

# Attacher en loop devices
for f in /tmp/raidlab/disk*.img; do losetup -fP "$f"; done
losetup -a
# Exemple avec loop devices /dev/loop0..3
mdadm --create /dev/mdlab --level=5 --raid-devices=4 /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3
watch -n 1 cat /proc/mdstat
mkfs.ext4 /dev/mdlab
mkdir -p /mnt/mdlab
mount /dev/mdlab /mnt/mdlab
fio --name=seqwrite --directory=/mnt/mdlab --size=2G --bs=1M --rw=write --iodepth=16 --numjobs=1 --direct=1
fio --name=randrw --directory=/mnt/mdlab --size=2G --bs=4k --rw=randrw --rwmixread=70 --iodepth=32 --numjobs=4 --direct=1
# Simuler panne
mdadm /dev/mdlab --fail /dev/loop2
mdadm --detail /dev/mdlab

# Retirer puis ajouter un disque
mdadm /dev/mdlab --remove /dev/loop2
mdadm /dev/mdlab --add /dev/loop2
watch -n 1 cat /proc/mdstat
Runbooks RAID : incident, remplacement, reconstruction, post-mortem
  1. Créer un ticket incident avec heure, serveur, array, slot disque, symptômes.
  2. Vérifier que l'alerte correspond au bon serveur et au bon disque physique.
  3. Vérifier l'état du backup récent et la capacité de restauration.
  4. Identifier le niveau RAID et la redondance restante.
  5. Si redondance épuisée, réduire charge et envisager arrêt contrôlé du service.
  6. Remplacer le disque selon procédure constructeur.
  • Suivre pourcentage et vitesse de reconstruction.
  • Surveiller latence applicative et erreurs kernel.
  • Ne pas lancer de tâches lourdes inutiles.
  • Éviter reboot ou firmware update pendant rebuild sauf nécessité absolue.
  • Prévenir métiers si la performance est dégradée.
  • Confirmer array optimal.
  • Lancer scrub/consistency check après stabilisation.
  • Vérifier logs contrôleur et SMART des autres disques.
  • Remplacer hot spare consommé si nécessaire.
  • Mettre à jour inventaire : serial, slot, date, firmware.
  • Rédiger post-mortem si incident critique.
Subject: Storage degraded on SERVER-NAME Impact: - RAID array is degraded after disk failure. - Service is still online, but redundancy is reduced. Current action: - Disk replacement is in progress / planned. - Rebuild monitoring is active. Risk: - Additional disk failure during rebuild may cause data loss depending on RAID level. - Backups have been checked: YES/NO. Next update: - In 30 minutes or when rebuild status changes.
6.16 Checklist production RAID
ContrôleOK ?Remarque
Niveau RAID cohérent avec workloadRAID 10 DB, RAID 6/Z2 NAS, etc.
Firmware contrôleur validéPas de firmware expérimental en prod.
Disques enterprise adaptésÉviter consumer sans PLP pour prod critique.
Cache protégéBBU/supercap healthy.
Hot spare défini ou spare disponibleSelon SLA.
Alerting testéSimuler événement non destructif.
  • Vérifier état array quotidiennement via monitoring.
  • Recevoir alerte sur degraded, predictive failure, BBU failure.
  • Planifier scrubbing/patrol read.
  • Vérifier température et airflow.
  • Observer tendances SMART, pas seulement état binaire OK/FAIL.
Aucun RAID ne valide la capacité à restaurer. Le test restore est l'assurance réelle.
  • Backup hors machine et hors array.
  • Copie immuable ou offline contre ransomware.
  • Test de restauration périodique.
  • Documentation RTO/RPO réelle mesurée.
  • Plan des slots disques avec numéros de série.
  • Type contrôleur, version firmware, mode cache.
  • Niveau RAID, stripe size, hot spare.
  • Procédure remplacement disque.
  • Contact support constructeur et contrat.
  • Dernier test restore et résultat.