# RAID (informatique)

Le RAID est un ensemble de techniques de virtualisation du stockage permettant de répartir des données sur plusieurs support de stockage de données afin d'améliorer ou d'augmenter, la fiabilité, la disponibilité, les performances et la capacité (ou une combinaison de ces paramètres) du système de stockage.
L'acronyme RAID peut être lu comme Redundant Array of Inexpensive Disks (Groupe (ou matrice) Redondante de Disques Économiques) postérieurement redéfini par les constructeurs de ces solutions en Redundant Array of Independent Disk (Groupe Redondant de Disques Indépendants).
De tels systèmes étaient déjà utilisés sur différents systèmes avant l'apparition de cette acronyme.
Le terme RAID est suivi d'un chiffre indiquant son type. Par exemple le RAID 1 correspond à utiliser des unités de stockage en miroir. Initialement définis pour des disques durs, le terme peut être utilisé pour des type de stockage totalement différents, du SSD à des disques virtuels.

## Historique

Dans les années 1970, le système de disque en miroir, RAID 1, était une technique couramment utilisée, par exemple dans les système à tolérance de panne comme les ordinateurs de la gamme NonStop de Tandem. En 1983 une solution de mise en miroir de disques pour leur sous système HSC50 est commercialisé par DEC.
En 1978, Norman Ken Ouchi (IBM), dépose un brevet pour un système similaire au RAID 4.
En 1986 Clark et al. (IBM) déposent un brevet de ce qui sera ensuite nommé RAID 5
Le Data Vault, système de stockage des superordinateurs Connection Machines (Thinking Machines) est basé sur un RAID 2, similaire à ce qu'IBM proposait sur l'IBM 353$^,$.
Le terme RAID provient de l'article A Case for Redundant Arrays of Inexpensive Disks (RAID) publié en 1987. Il soutient qu'il est possible d'obtenir de meilleures performances que celles des mainframes de l'époque en utilisant des disques durs peu chers développés pour le segment des ordinateurs personnels. Comme la solution inclut un nombre élevé de disques durs, elle est donc sujette à plus de pannes, et c'est le système RAID de gestion de la redondance qui permet d'offrir une disponibilité supérieure à celle d'un disque unique.

## Les différents niveaux de RAID

Les différents types d'architecture RAID sont numérotés à partir de 0 et peuvent parfois être combinés : RAID 0+1, 1+0, etc.

### RAID 0 : fragmentation des données sur plusieurs supports

Les blocs de données sont alternativement stockés sur les supports disponibles. Cela confère une plus grande rapidité au détriment de la fiabilité de l'ensemble. Les blocs de données peuvent être écrit ou lus en parallèle, à la vitesse maximum du périphérique le plus lent. La panne d'un seul des volumes entraine une perte de la totalité des données.
La capacité totale est un multiple du plus petit support utilisé : on utilise donc des supports de même capacité.
Le RAID 0 est parfois appelé « entrelacement de disques » ou de « volume agrégé par bandes » (striping en anglais).
Il est utilisé dans les cas où la perte des données n'est pas un problème, par exemple :
* données temporaires (résultats de calculs intermédiaires, etc.)
* données stockées ailleurs (sauvegarde, système distant)
* mise en cache pour accès rapide de données pourtant locales (fichiers vidéo à streamer, fichiers de jeux vidéo permettant leur chargement plus rapide, etc.).

### RAID 1 : Disques en miroir

Le RAID 1 consiste en l'utilisation de $n$ disques redondants (avec $n\geq 2$), chaque disque de la grappe contenant à tout moment exactement les mêmes données, d'où l'utilisation du mot « miroir » (mirroring en anglais).

#### Capacité

    La capacité totale est égale à celle du plus petit élément de la grappe, l'espace excédentaire des autres éléments de la grappe restant inutilisé. Il est donc conseillé d'utiliser des éléments de capacité identique.

#### Fiabilité

    Cette solution offre un excellent niveau de protection des données. Elle fonctionne tant qu'il reste au moins un disque fonctionnel.

#### Coût

    Les coûts de stockage sont élevés et directement proportionnels au nombre de miroirs utilisés, alors que la capacité utile reste inchangée. Plus le nombre de miroirs est élevé, et plus la sécurité augmente, mais plus son coût devient rédhibitoire.
La vitesse d'écriture est celle du disque le plus lent. La vitesse de lecture peut être légèrement augmentée si le contrôleur est capable de répartir la charge sur tous les disques.
Lors de la défaillance de l'un des disques, le contrôleur RAID désactive (de manière transparente pour l'accès aux données) le disque incriminé. Une fois le disque défectueux remplacé, le contrôleur RAID reconstitue, soit automatiquement, soit sur intervention manuelle, le miroir. Une fois la synchronisation effectuée, le RAID retrouve son niveau initial de redondance.
Nota : la migration du RAID 1 vers RAID 0, RAID 5, RAID 6 est presque toujours envisageable, ce qui fait du RAID 1 une bonne solution de départ si on n'a pas un besoin important en performance .

### RAID 5 : volume agrégé par bandes à parité répartie

Le RAID 5 combine la méthode du volume agrégé par bandes (striping) à une parité répartie. Il s'agit là d'un ensemble à redondance $N+1$. La parité, qui est incluse avec chaque écriture, se retrouve répartie circulairement sur les différents disques. Chaque bande est donc constituée de $N$ blocs de données et d'un bloc de parité. Ainsi, en cas de défaillance de l'un des disques de la grappe, pour chaque bande il manquera soit un bloc de données soit le bloc de parité. Si c'est le bloc de parité, ce n'est pas grave, car aucune donnée ne manque. Si c'est un bloc de données, on peut calculer son contenu à partir des $N-1$ autres blocs de données et du bloc de parité. L'intégrité des données de chaque bande est préservée. Donc non seulement la grappe est toujours en état de fonctionner, mais il est de plus possible de reconstruire le disque une fois échangé à partir des données et des informations de parité contenues sur les autres disques.
On voit donc que le RAID 5 ne supporte la perte que d'un seul disque à la fois, ce qui devient un problème depuis que les disques qui composent une grappe sont de plus en plus gros (1 To et plus), car le temps de reconstruction de la parité en cas de disque défaillant est allongé (ce qui augmente la probabilité de survenue d'une nouvelle défaillance car les autres disques durs sont sollicités de façon intensive durant la reconstruction). Ainsi, le temps de reconstruction est long, et plus les disques sont volumineux, plus la durée de reconstruction est longue. Pour limiter le risque, il est courant d'ajouter un disque de rechange (spare), dédié au remplacement immédiat d'un éventuel disque défaillant : en régime normal celui-ci est inutilisé ; en cas de panne d'un disque, il prendra automatiquement la place du disque défaillant. Cela nécessite une phase communément appelée recalcul de parité, consistant à recréer sur le nouveau disque le bloc manquant (données ou parité) pour chaque bande. Pendant le processus de recalcul de parité, le volume RAID reste disponible normalement, le système se trouve juste un peu ralenti.
    Exemple pratique : Considérons quatre disques durs A, B, C et D, de taille identique. Le système va répartir les premiers blocs sur les disques A, B et C comme en mode RAID 0 (striping) et, sur le disque D, le résultat de l'opération OU exclusif entre les autres disques (ici A xor B xor C). Il va répartir les blocs suivants sur les disques D, A et B, puis la parité (soit D xor A xor B) sur le disque C, et ainsi de suite en permutant circulairement les disques, à chaque bloc. La parité se trouve alors répartie sur l'ensemble des disques.
    En cas de défaillance d'un disque, les données qui s'y trouvaient pourront être reconstituées par l'opération xor. En effet, l'opération XOR ($\oplus$) a la propriété suivante : si on considère $N$ blocs de taille identique $\scriptstyle A_{1},A_{2}\cdots A_{N}$ et si $\scriptstyle A_{1}\oplus A_{2}\oplus \cdots A_{N}=X$ alors $\scriptstyle X\oplus A_{2}\oplus \cdots A_{N}=A_{1}$, et de façon générale, $\scriptstyle A_{1}\oplus \cdots A_{k-1}\oplus X\oplus A_{k+1}\oplus \cdots A_{N}=A_{k}$.
    C'est-à-dire que n'importe quel bloc de données $A_{k}$ perdu à cause d'un disque défaillant sur un RAID 5 de $N+1$ disques peut être récupéré grâce au bloc $X$ de données de contrôle.
    On voit donc que si on veut écrire dans un bloc, il faut :
   * lire le bloc à modifier ;
   * lire le bloc de parité de la bande ;
   * écrire le bloc de données et le bloc de parité.
    L'opération xor permet heureusement de calculer la nouvelle parité sans avoir besoin de lire les $N$ blocs de données de la bande. Augmenter le nombre de disques d'une grappe RAID 5 n'allonge donc pas le temps de lecture ou d'écriture. Cependant si plusieurs processus veulent écrire simultanément dans un ou plusieurs blocs de données d'une même bande la mise à jour du bloc de parité devient un point de blocage. Les processus concurrents sont suspendus à la libération du bloc de parité et de fait cela limite le débit d'écriture. Plus le nombre de disques d'une grappe RAID 5 augmente plus le temps de reconstruction d'un disque défaillant augmente, puisque pour reconstituer le bloc manquant d'une bande il faut lire tous les autres blocs de la bande et donc tous les autres disques.
Ce système nécessite impérativement un minimum de trois disques durs. Ceux-ci doivent généralement être de même taille, mais un grand nombre de cartes RAID modernes autorisent des disques de tailles différentes, bien que cela ne soit pas optimal. La capacité de stockage utile réelle, pour un système de $X$ disques de capacité $c$ identiques est de $(X-1)\times c$. En cas d'utilisation de disques de capacités différentes, le système utilisera dans la formule précédente la capacité minimale. Ainsi par exemple, trois disques de 100 Go en RAID 5 offrent 200 Go utiles ; dix disques, 900 Go utiles.
Ce système allie sécurité (grâce à la parité) et bonne disponibilité (grâce à la répartition de la parité), même en cas de défaillance d'un des périphériques de stockage.
Il existe une variante : le « RAID 5 varientable » où chaque disque a son propre contrôle. Toutes les autres fonctionnalités sont identiques.
On a souvent tendance à croire qu'un système RAID 5 est totalement fiable. Il est en effet généralement admis que la probabilité de défaillance simultanée de plusieurs disques est extrêmement faible — on parle évidemment d'une défaillance entraînant la perte d'accès complète et définitive aux données de plusieurs disques et non d'une simple indisponibilité de plusieurs disques. Cela est vrai pour une défaillance générale d'une unité de disque. Cependant, cela est faux si l'on considère comme défaillance un seul secteur devenu illisible.
En effet, dans la pratique, il est très rare que toutes les données d'un volume soient lues régulièrement. Et quand bien même ce serait le cas, la cohérence de la parité n'est que très rarement vérifiée pour des raisons de performances. Il est donc probable que des défauts tels que des secteurs de parité illisibles ne soient pas détectés pendant une très longue période. Lorsque l'un des disques devient réellement défectueux, la reconstruction nécessite de parcourir l'intégralité des disques restants. On peut alors découvrir des défauts qui étaient restés invisibles jusque-là.
Tout ceci pourrait ne pas être bien grave et occasionner la perte d'une quantité de données minime (un secteur de disque dans cet exemple soit généralement 512 octets), cependant, l'immense majorité des contrôleurs RAID sont incapables de gérer les défaillances partielles et considèrent généralement comme « défaillant » un disque contenant un seul secteur illisible. Donc, si un disque dur tombe en panne, tandis qu'un secteur illisible est rencontré au moment de la reconstruction, deux disques sont considérés défaillants simultanément et le volume RAID 5 devient inutilisable. Il devient alors difficile et coûteux de récupérer les données non sauvegardées.
Un système RAID 5 doit donc être vérifié et sauvegardé périodiquement pour s'assurer que l'on ne risque pas de tomber sur ce genre de cas.
* Avantages :
       Performances en lecture aussi élevées qu'en RAID 0,
       Tolère la perte d'un disque.
* Inconvénients :
       Ralentissement en écriture du fait du calcul de la parité,
       Capacité utile de $n-1$ disques sur un total de n disques.
       Temps de reconstruction long pour les disques durs de grande capacité.

### RAID 6

Le RAID 6 est une évolution du RAID 5 qui accroît la sécurité en utilisant $n$ informations redondantes au lieu d'une. Il peut donc résister à la défaillance de $n$ disques. Les fondements mathématiques utilisés pour les informations de redondance du RAID 6 sont beaucoup plus complexes que pour le RAID 5 ; de ce fait les implémentations de l'algorithme se limitent souvent à $n=2$ (soit la perte de 2 disques).
Si la sécurité est plus grande, le coût en matériel est plus élevé et la vitesse est moindre. La puissance CPU nécessaire pour calculer les redondances et surtout pour reconstruire un volume défectueux est également plus importante.
Les défauts majeurs sont :
* Les temps d'écriture sont allongés à cause des calculs de redondance complexes.
* Le temps de reconstruction en cas de défaillance simultanée de 2 disques est nettement allongé.
Pour les serveurs, par exemple en centre de données, le choix se porte entre RAID 5 et RAID 6, les paramètres économiques étant pris en compte en même temps que la technique de stockage utilisée (disques dur vs. SSD).
La capacité utile totale ($C_{Ut}$), pour un système avec $k$ disques dont $n$ réservés pour la redondance est de $C_{Ut}=(k-n)\times c$($c$ = capacité du plus petit des disques dur).
Des explications intéressantes, mais un peu ardues sont disponibles dans la version anglaise de cet article ainsi que dans Les mathématiques du RAID 6.

### Les niveaux de RAID peu courants
#### Concaténation de disques

NRAID / Non-RAID : Near/Non Redundant Array of Inexpensive/Independent Disk
La concaténation de disques consiste à additionner les capacités de plusieurs disques durs en un volume logique d'une taille équivalente à la somme des tailles des disques durs. Cette méthode utilise une méthode d'écriture séquentielle : les données ne sont écrites sur le disque dur suivant que lorsqu'il ne reste plus de place sur le précédent.
Le NRAID n'est pas à proprement parler un RAID, et il ne permet d'ailleurs aucune redondance de données. La panne d'un disque peut avoir des conséquences désastreuses sur le reste des données si des métadonnées critiques sont affectées. Il est parfois confondu à tort avec le JBOD, qui désigne une baie de stockage regroupant des unités accessibles individuellement, sans configuration spéciale.
Le NRAID est aussi désigné comme « Volume Simple » sous Windows (à partir de Windows 2000).

#### RAID 2 : volume agrégé par bandes à parité

Le RAID 2 est aujourd'hui désuet. Il combine la méthode du RAID 0 (volume agrégé par bande) à l'écriture d'un code de contrôle d'erreur par code de Hamming (code ECC) sur un disque dur distinct. Or, l'écriture de ce code de contrôle est désormais directement intégrée dans les contrôleurs de disques durs. Cette technique offre un bon niveau de sécurité, mais de mauvaises performances.

#### RAID 3 et RAID 4

Le RAID 3 et le RAID 4 sont semblables à ceci près que le premier opère par octets et le second par blocs. Le RAID 4 ne nécessite pas autant de synchronisme entre les disques. Le RAID 3 tend donc à disparaître au profit du RAID 4 qui offre des performances nettement supérieures.
Ces niveaux de RAID nécessitent une matrice de $n$ disques (avec $n\geq 3$). Les $n-1$ premiers disques contiennent les données tandis que le dernier disque stocke la parité (voir section parité).
* Si le disque de parité tombe en panne, il est possible de reconstruire l'information de parité avec le contenu des autres disques de données.
* Si l'un des disques de données tombe en panne, il est possible de reconstruire l'information avec le contenu des disques de données restants et celui du disque de parité.
Il est important que le disque de parité soit de bonne qualité, car il est à tout instant sollicité en écriture. Ce dernier point est une des limitations des RAID 3 et 4.
De même, si plus d'un disque vient à défaillir, il est impossible de remédier à la perte de données.

#### RAID S

Est aussi connu sous le nom de Parity RAID. Cette méthode de remplacement propriétaire des solutions EMC Symmetrix permet de mettre en œuvre une batterie RAID à parité agrégée en bandes. Elle n'est plus utilisée sur des équipements actuels. Si le RAID S semble similaire au RAID 5, il présente certaines performances améliorées, notamment celles que procure la présence d'un cache de disque à haut débit sur la batterie.

#### RAID-Z

Ce système résout également les problèmes de corruption silencieuse du RAID 5 grâce aux opérations de scrub qui analysent toutes les données de la grappe afin de détecter des incohérences.
Le système RAID-Z est moins performant que le RAID 5 : chaque accès en lecture ou en écriture accédant à tous les disques, il ne permet pas de profiter de la multiplication des têtes de lectures. Il permet en revanche l'utilisation de la mémoire RAM comme cache (ARC). Il est aussi possible de dédier des SSD au rôle de cache en lecture (L2ARC) ou cache en écriture (ZIL) pour améliorer les performances d'une grappe$^,$.

#### Synology Hybrid Raid (SHR)

Technique propriétaire de Synology relative au système RAID, simulant le fonctionnement d'un RAID 5 en acceptant des disques de tailles différentes tout en minimisant les espaces inutilisés.

#### Synology Hybrid Raid 2 (SHR-2)

Technique propriétaire de Synology relative au système RAID, simulant le fonctionnement d'un RAID 6 en acceptant des disques de tailles différentes tout en minimisant les espaces inutilisés.

#### X-RAID (NetGear)

Le système X-RAID est une technique développée par Netgear sur sa suite de produits ReadyNAS. Cette technique permet suivant le nombre de disques de choisir entre les différents types de RAID et de passer de l'un à l'autre sans perte de données ou arrêt de service. X-RAID utilise principalement les RAID 1 et 5.

## Les différents types de systèmes RAID
### Le RAID logiciel

En RAID logiciel, le contrôle du RAID est intégralement assuré par une couche logicielle du système d'exploitation. Cette couche s'intercale entre la couche d'abstraction matérielle (pilote) et la couche du système de fichiers.

#### Diverses implémentations

La plupart des systèmes d'exploitation grand public permettent déjà de mettre en œuvre le RAID logiciel, qu'il s'agisse de Microsoft Windows, des diverses distributions Linux, ou de Mac OS X.
* Microsoft Windows XP (et supérieur) gère les RAID 0 et 1 logiciel, et peut gérer le RAID 5 moyennant une petite adaptation.
* Microsoft Windows 2003 Server gère logiciellement les RAID 0, 1, et 5.
* Mac OS X gère logiciellement les RAID 0, 1, et la concaténation.
* Le noyau Linux (>=2.6) gère logiciellement les RAID 0, 1, 4, 5, 6, et 10, ainsi que les combinaisons de ces modes.
* Unraid est un OS basé sur Linux, orienté stockage en réseau et permettant de transformer un PC en NAS avec des disques en RAID.
Les RAID logiciels de Microsoft Windows et de Linux sont incompatibles entre eux.

### Le RAID pseudo-matériel

L'immense majorité des contrôleurs RAID bon marché intégrés à de nombreuses cartes-mères depuis 2004/2005 gèrent le RAID 0 et 1 sur des disques durs IDE ou SATA. Malgré le discours marketing à cette époque qui tendait systématiquement à induire en erreur sur ce point, il ne s'agit pas de RAID matériel à proprement parler, mais plutôt d'un contrôleur de disque doté de quelques fonctions avancées. D'un point de vue strictement matériel, cette solution hybride n'est pas différente d'un RAID logiciel. Elle diffère cependant sur l'emplacement des routines logicielles de gestion du RAID.
Avec les matériels plus récents, la différence entre RAID pseudo-matériel et RAID matériel est purement théorique. La seule différence pratique est que dans le RAID pseudo-matériel, processeur et mémoire ne sont pas dédiés. Cependant, la puissance des processeurs récents et le coût réduit de la mémoire font que cette limitation n'est plus un élément critique. Le seul avantage restant pour les RAID spécialisés est la disposition d'outils de gestion des incidents plus performants.

### Le RAID matériel

Dans le cas du RAID matériel, une carte ou un composant est affecté à la gestion des opérations. Le contrôleur RAID peut être interne à l'unité centrale (carte d'extension) ou déporté dans une baie de stockage.
Un contrôleur raid est en général doté d'un processeur spécifique, de mémoire dédiée, éventuellement d'une batterie de secours, et est capable de gérer tous les aspects du système de stockage RAID grâce au microcode embarqué (firmware).
Du point de vue du système d'exploitation, le contrôleur RAID matériel offre une virtualisation complète du système de stockage. Le système d'exploitation considère chaque volume RAID comme un volume de stockage unique et n'a pas connaissance de ses constituants physiques.

## Les possibilités et les limites du RAID

Le RAID ne dispense pas d'effectuer des sauvegardes régulières. En effet, des défaillances à plusieurs disques sont plus fréquentes que l'on ne le croit (voir section RAID 5 plus haut). De plus, des erreurs humaines (effacement / corruption de fichiers) finissent toujours par se produire. Un exemple classique de défaillance simultanée de plusieurs disques est le suivant : un premier disque est victime d'un atterrissage de tête, provoquant la dislocation d'une partie de la surface des plateaux ; mais le disque continuant de tourner se met à chauffer et atteint une température gênante pour ses voisins… On comprendra que l'un des disques se trouvant à côté peut à son tour connaître une défaillance du fait de la température locale excessive.
De plus, la taille des disques ne cessant de croître, un RAID dépassant les 12 To utiles (RAID 5 à quatre disques de 4 To par exemple) sera probablement impossible à reconstruire, car atteignant la limite de fiabilité des contrôleurs SATA (sauf pour des contrôleurs haut de gamme pour serveur) : il sera presque sûr statistiquement qu'une erreur de lecture / écriture se produira pendant la reconstruction. Cela serait aussi valable pour les RAID-Z.

### Comment le RAID peut poser problème

L'augmentation progressive de la capacité des supports de stockage est un facteur qui augmente exponentiellement la fragilité des systèmes RAID, comme l'a montré une étude sur les RAID 5 et 6.

## Évolutions du RAID

Une nouveauté dans la façon d'aborder la redondance des blocs disques est apparue au California Institute of Technology, consistant à répliquer les blocs non pas à l'intérieur d'un seul serveur, mais entre plusieurs serveurs à travers le réseau, ce qui s'apparente à un RAID réparti. Cette technique est appelée RAIN, pour « Redundant Array of Independent Nodes » (ou « Reliable Array of Inexpensive Nodes »), que l'on peut traduire par « réseau redondant de nœuds indépendants ». Les principaux intérêts de cette architecture de stockage sont son niveau de performance et sa capacité d'évolution.