Resman says hi.

Le RAID

Sommaire

I - Principe

1 - Présentation

Le stockage a toujours été un des points faibles du domaine informatique. Les disques durs actuels souffrent toujours d'une extrême lenteur relative par rapport a la capacité de traitement d'information des processeurs, ils sont fragiles, et prompts aux défaillances qui peuvent avoir de graves conséquences. En effet, ce sont eux qui ont la fonction de conserver des informations parfois vitales sur le long terme.

Dans l'optique de pallier a cette dernière faiblesse, une équipe de l'université de Berkeley, en Californie, a imaginé en 1987 une méthode d'association de disques rendant le stockage plus fiable. Cette méthode est appelée RAID, acronyme de Redundant Array of Inexpensive Disk soit Groupement Redondant de Disques Bon Marché en français.

L'idée de base du RAID est de combiner plusieurs unités de stockages pour aboutir à une nouvelle disposant de meilleures performances en terme de capacité, de durée de vie ou bien de fiabilité. Le point important est le mot Redundant qui indique que l'information peut être dupliquée pour en assurer la fiabilité. De plus comme l'indique l'acronyme, les unités de bases sont bon marché, et en conséquence en en associant plusieurs on constitue pour un prix raisonnable un système aux performances très bonnes voire meilleures que des unités plus onéreuses.

Dans un système classique comportant un seul disque, l'information est tributaire d'une défaillance du disque, et si c'est le cas elle est irrémédiablement perdue, sauf a avoir fait une sauvegarde préalable. De plus les performances sont intrinsèquement liées au disque et ne peuvent être améliorées. Considérant un nombre N d'unités indépendantes, il est possible des les combiner de différentes façons pour obtenir plutôt un gain de performances, un gain de fiabilité, ou une combinaison des deux. Ces types d'associations sont appelés niveaux.

2 - Les différents niveaux

Les niveaux sont identifiés par leur numéro, et il est possible de les combiner pour cumuler les gains. Dans les explications pour chaque niveau, on considérera pour simplifier que l'on dispose de N disques identiques de capacité P de vitesse de lecture R et de vitesse d'écriture W.

Le RAID linéaire

Ce niveau est peu particulier, inventé après les autres il n'a pas hérité de numéro de la part de l'équipe de Berkeley. C'est le plus simple de tous, il consiste simplement à réunir les unités disponibles les uns à la suite des autres pour obtenir une unité dont la capacité est la somme des capacités des unités élémentaires. On commence par écrire sur le disque 1, une fois qu'il est plein on écrit sur le disque 2, etc ...

En terme de performances ce système n'apporte rien puisque un fichier donné sera stocké sur un seul disque.

Par contre la fiabilité est moins bonne que pour un disque seul puisque si un seul disque subit une défaillance, on pert tout le RAID. Les informations stockées sur les autres disques pourront tout de même être éventuellement récupérées.

Le RAID 0 - Stripping

Ce niveau a pour objectif de maximiser les performances de l'unité. Chaque fichier stockée sur le RAID est divisé en N blocs qui seront écrits sur chacun des disques. De cette façon les vitesses de lecture et d'écritures se voient multipliées par N. En effet pour lire un fichier on donne l'ordre simultanément à chacun des disques de lire le bloc correspondant, opération qui prendra un temps inférieur N fois au temps nécessaire sur un disque seul, en négligeant les temps d'accès et les temps de transit sur le bus.

On obtient également une plus grosse capacité, égale à N * P.

L'inconvénient majeur de cette méthode est que la fiabilité du RAID obtenu est très faible. En effet, si un des disques ne fonctionne plus il devient impossible de reconstruire le fichier car il en manque un bloc. En conséquence il faut réserver cette méthode aux applications où les performances sont importantes mais où l'information est remplaçable, par exemple pour servir de cache à un serveur de proximité http.

Le RAID 1 - Mirroring

Ce niveau, a l'opposée du précédent, permet de fiabiliser le stockage de l'information. Chaque disque recevra une copie exacte des données stockées sur les autres disques. Si jusqu'à N-1 des disques ont une défaillance, les autres conservent l'information. Il suffit alors de remplacer le disque défectueux et on pourra reconstruire le RAID simplement en recopiant un des autres disques sur le nouveau.

Le temps d'accès se trouve affecté. Si le temps d'écriture ne change pas, chaque copie pouvant être écrite en parallèle sur chacun des disques, le temps de lecture est lui divisé par N, en effet on peut faire une lecture sur chaque disque d'une portion seulement du fichier à lire et le reconstituer en mémoire. En pratique une telle performance est rarement atteinte cependant.

Le RAID 2 - Découpage par bit + Bit de parité

Ce mode rarement utilisé est semblable au RAID 0, a la différence que le découpage ne se fait plus par blocs mais par bit, et qu'on ajoute un certain nombre de bits de parité (code de Hamming). Les avantages de cette méthode sont doubles : le code de Hamming permet la correction a la volée d'erreurs de 1 bit par mot, et les performances sont améliorées car on peut paralléliser les accès.

En cas de défaillance d'un disque, le code de Hamming permet d'en recalculer le contenu et l'information n'est pas perdue. Cependant si 2 disques ou plus cessent de fonctionner il est impossible de reconstituer l'information. De plus, en raison de la particularité du code de Hamming, il est nécessaire de se conformer à une organisation particulière des disques dépendant de l'implémentation, par exemple mots de 8 bits + 3 bits de parité soit 12 disques nécessaires.

Le RAID 3 - Découpage par bit + Disque de parité dédié

Dans ce niveau on utilise un découpage bit par bit comme en RAID 2, mais au lieu d'un code de Hamming on utilise un disque dédié qui stocke l'information de parité des autres disques. Pour calculer cette information de parité pour un bit B on fait la somme de touts les bits d'index B des disques et on note le bit de poids faible de cette somme. On l'écrit alors sur le disque de parité.

Si un des disques ne fonctionne plus on peut recalculer son contenu avec l'information de parité, par contre ce n'est plus possible si 2 disques ou plus sont défectueux.

Les performances d'écriture sont identiques à celles d'un disque seul car pour chaque information écrite il faut écrire l'information de parité sur le disque dédié qui constitue un goulot d'étranglement. En lecture par contre on peut lire en parallèle sur N-1 disques.

Le RAID 4 - Découpage par bloc + Disque de parité dédié

Ce mode est exactement identique au précédent à l'exception que le découpage des fichiers est fait par blocs et non plus par bits. La taille d'un bloc dépend de l'implémentation mais fait en général 4ko.

Les gains apportés sont les mêmes que pour le RAID 3, on peut noter tout de même que lorsque l'on veut lire moins de 4ko il est inutile de lire sur N-1 disques, l'information est disponible sur un seul disque. Étant donné que les données sont lisibles de toutes façons par blocs sur un disque dur on peut obtenir un gain de performance sur les lectures aléatoires.

Le RAID 5 - Découpage par bloc + Information de parité distribuée

Le RAID 5 est un des plus utilisés, il consiste à découper les fichiers en blocs comme en RAID 4, mais en stockant les blocs de parité indifféremment sur les autres disques, ce qui permet de s'affranchir du goulot d'étranglement causé par un disque de parité dédié.

En cas de perte d'un disque, il y a toujours un autre disque qui contient l'information de parité, et donc il est possible de reconstituer les données. La tolérance est d'un seul disque défaillant.

En terme de performances on note un gain en lecture comme en RAID 4, mais également cette fois en écriture car l'information de parité est distribuée et peut donc être écrite en parallèle sur N-1 disques.

Le RAID 6 - Découpage par bloc + Double information de parité distribuée

Ce mode est un RAID 5 renforcé, au lieu de stocker une information de parité on en stocke 2 de façon a pouvoir résister à la défaillance de 2 disques. On réduit légèrement les performances d'écriture, et on réduit la capacité de l'équivalent d'un disque mais autrement les performances sont semblables au RAID 5.

Le RAID 0+1 - Stripping + Mirroring

Combinaison courante de deux techniques RAID, c'est c'est un RAID 1 dans lequel les unités élémentaires ne sont plus des disques mais des unités RAID 0. Ceci permet d'obtenir a la fois de bonnes performances de lecture/écriture et une tolérance de panne, mais au prix de multiplier le nombre de disques.

Le RAID 1+0 - Mirroring + Stripping

Ce mode est une autre combinaison courante, cette fois inversée par rapport a la précédente. Il est plus rapide à reconstruire en cas de panne car il suffit de recalculer un bout seulement du RAID et non la totalité, il est donc plus courant.

Le RAID 5+0 - RAID 5 + Stripping

Là encore c'est une combinaison, comme la précédente où le RAID 5 prend la place des unités RAID 1.

D'autres combinaisons sont envisageables mais sont moins courantes ou sans intérêt.

3 - Les gains apportés

Selon les implémentations les gains théoriques décrits ici ne pourront pas toujours être obtenus. En particulier il faut tenir compte dans un système réel des temps de transit des données sur les bus, et des temps d'accès des têtes de lecture des disques aux secteurs contenant les données. Également sur un disque dur les informations sont lisibles par blocs d'une taille minimale, en dessous d'une certaine granularité disperser les lectures sur plusieurs disques n'apporte pas de gain. Voici un résumé des performances des différents types de RAID.

TypeCapacité% de N * PToléranceLectureEcriture
RAID LinéaireN * P10RW
RAID 0N * P10N * RN * W
RAID 1P1 / NN - 1N * RW
RAID 2< (N-3) * P< (N-3) / N1> (N-3) * R> 3 * W
RAID 3(N-1) * P(N-1) / N1(N-1) * RW
RAID 4(N-1) * P(N-1) / N1(N-1) * RW
RAID 5(N-1) * P(N-1) / N1(N-1) * R(N-1) * W
RAID 6(N-2) * P(N-2) / N2(N-2) * R(N-2) * W

Gains théoriques pour chaque niveau de RAID.

II - Mise en oeuvre

Lorsqu'on l'intègre dans un ordinateur, un périphérique RAID doit apparaître comme un disque dur classique a l'utilisateur de sorte d'obtenir un fonctionnement le plus transparent possible. Pour cela il y a deux possibilités, un moyen matériel et un moyen logiciel.

Implémentation matérielle

Cette solution fait appel a une carte d'extension au format PCI généralement sur laquelle viennent directement se brancher les disques. La carte dispose d'un contrôleur (un petit processeur) qui se charge de gérer les calculs de parité éventuels et fait la répartition des blocs sur les différents disques, et s'identifie au niveau du BIOS comme un disque unique.

Cette approche comporte plusieurs avantages:

Implémentation logicielle

La deuxième possibilité est l'implémentation logicielle, où la gestion du RAID est faite par un programme. Les disques sont par ailleurs attachés normalement. Par rapport a l'approche matérielle, on note les différences suivantes:

III - Le RAID logiciel sous Linux

--- En rédaction ---

IV - Conclusion

Le nombre croissant d'informations critiques stockées sous format numérique fait qu'il était nécessaire de sécuriser ce stockage, et le RAID y apporte une solution fiable et bon marché en résolvant les problèmes liés aux défaillances des disques durs.

Le RAID permet Également d'apporter une solution d'optimisation de la vitesse d'accès aux données, ce qui peut être utile selon l'utilisation de la machine. Il est bien entendu possible, comme nous l'avons vu, de combiner vitesse et sécurité.

Cependant le RAID ne protège en aucune façon contre une erreur de manipulation de la part de l'administrateur ou des utilisateurs de la machine, pas plus que contre les incendies, c'est une simple protection contre une défaillance physique d'un disque dur. Il faut avoir ceci bien à l'esprit quand on décide de mettre en place une unité RAID.


Share this article :

Comments

Comment left by Luis on 2014-04-08 18:10:52 :
Super information. Groupée clairement, avantages inconvénients bien ressortis.
Add a new comment :
Name :
Comment :

Answer the following question : Which is the smallest, a mouse or a kettle ?