Introduction
RAID(1)... réservée jusqu’à il y a peu au monde des serveurs et du SCSI, voilà une notion qui est petit à petit en train d’envahir les esprits de tout utilsateur de PC. Il y a quelques années, les gens se représentaient le RAID comme un systeme ultra performant, et surtout complètement hors de portée de l’utilisateur lambda, financièrement parlant. Aujourd’hui, le RAID est en passe de devenir le moyen ultime d’améliorer significativement l’efficacité du sous-systeme disque du PC de tout un chacun.
En effet, les prix des disques durs sont en chute libre, alors que leurs performances croissent de façon exponentielle. Quand aux cartes RAID-IDE, elles sont devenues tout à fait abordables, et sont de plus en plus souvent intgerées aux nouvelles cartes mères. Bref on peut aujourd’hui parler de RAID 'pas cher'.
Pourquoi le RAID
RAID signifie
Redundant
Array of
Independent (ou
Inexpensive)
Drives. Cela veut dire que plusieurs disques durs sont utilisés en association pour créer un seul lecteur 'virtuel' qui possede des proprietés très intéressantes, et que l’on peut
partitionner(2) à sa guise. A la base, le RAID est un moyen d’augmenter l’espace disque et d’améliorer les performances, mais aussi et avant tout d’améliorer la fiabilité. En effet : dans un serveur, le disque dur est l’élément le plus sensible. C’est lui qui contient toutes les données critiques, et c’est lui qui est susceptible de tomber en panne le plus souvent (même de nos jours :-)
Le but du RAID est donc de créer des systemes
redondants à partir de plusieurs disques, de telle sorte que si un disque vient à tomber en panne, le système continue à tourner, et les données ne sont pas perdues (on parle de
tolérance de panne). Mais il permet également de créer des volumes de très grande capacité et très performants à partir d’associations de disques plus petits et moins rapides, donc à fortiori moins chers (d’ou le Inexpensive :-). Par opposition, on appele parfois un système composé d’un seul disque dur : '
SLED'(3), qui signifie
Single
Large
Expensive
Drive.
Le moyen de base pour augmenter la capacité d’un disque pourrait être simplement de concaténer les disques physiques existants. C’est ce qu’on appelle le
Volume Set(4) (ou RAID-linear, ou encore
JBOD(5) ). Il est très peu utilisé car il n’apporte aucun gain de performance (juste de l’espace disque en plus) et il n’est pas très fiable (si un disque tombe en panne, toute la partition est perdue).
Les spécifications RAID on été établies au départ par un groupe de scientifiques de l’université de Berkeley (Californie) en 1987. Elles sont maintenant gerées par le
Raid Advisory Board. Ces spécifications définissent 7 modes différents d’associations de disques, nommées
RAID 0 jusqu’à
RAID 6. Il existe également des modes tels que le RAID 10, 30 ou 50, qui sont des combinaisons de ces différents niveaux, et enfin le Volume Set. Voyons maintenant leurs principales caractéristiques...
--------------------------------------------------------------------------------
(1) RAID : Redundant Array of Inexpensive Drives = Pile de lecteurs économiques et redondants.
(2) Partitionner = Action d’allouer l’espace disque d’un lecteur de disque physique, pour créer des volumes logiques (lettres de lecteurs sur les plateformes DOS & Windows).
(3) SLED : Single Large Expensive Drive = Lecteur unique, grand et couteux
(4) Volume Set = Volume agregé
(5) JBOD : Just a Bunch Of Disks = Juste un paquet de disques.Le RAID 0, ou 'striping'
Le
RAID 0, également appelé
striping, consiste à empiler (ou agréger) des disques durs de facon à les faire tourner en parallèle. Lorsque qu’un fichier est écrit sur le volume RAID, il est coupé en petits morceaux qui sont répartis et écrits simultanément sur chaque disque (tout comme un fichier est coupé en morceaux pour être écrit dans les
clusters d’un disque simple). On dit que le fichier est coupé en
bandes, ou
stripes en anglais, et on parle donc de volume agregé par bandes.
| Disque simple | RAID 0 : 2 disques | RAID 0 : 4 disques |
| | |
On voit bien que comme les données sont réparties, la 'charge de travail' par disque est réduite, ce qui fait qu’en théorie, un volume RAID 0 constitué de
n disques identiques pourrait être
n fois plus performant que chaque disque pris séparément, et ceci dans tous les domaines (espace disque, taux de transfert, temps d’accès, etc...). En pratique la performance est limitée par le contrôleur disque et par les ressources systeme. C’est néammoins la solution la plus performante. Par contre ce mode n’est pas spécialement fiable : si un seul des disques tombe en panne, toute la partition est perdue.
Par ailleurs, la taille des bandes est le plus souvent paramétrable, et elle influe sur les performances selon les domaines d’utilisation (tout comme la taille des clusters influe sur les performances d’une partition classique). Plus les bandes sont petites et plus le système a besoin de ressources pour répartir les données. Mais si les bandes sont trop grandes, le gain de performance est plus réduit, en particulier pour les petits fichiers.
Le RAID 1, ou 'mirroring'
Le
RAID 1, également appelé
mirroring, utilise plusieurs disques pour stocker les mêmes informations (on parle de disques
miroirs). Dans cette configuration, si un des disques durs tombe en panne, le système peut continuer à fonctionner de façon transparente sur le ou les autes disques en miroir. C’est le mode de fonctionnement le plus fiable, mais les performances ne sont pas améliorées par rapport à un disque seul, et de plus on perd au moins la moitié de l’espace disque initial.
La performance est même moindre qu’avec un seul disque car le contrôleur à plus de travail. On peut remédier à cela en utilisant deux contrôleurs de disque, ce qui a également pour effet d’étendre la tolérance de panne au niveau du contrôleur (on parle alors de
duplexing). Enfin, on peut augmenter la performance en lecture si on répartit l’accès aux données sur les deux disques, ce qui peut significativement améliorer les choses (mais nécéssite une gestion poussée).
| Disque simple | RAID 1 : 2 disques |
| |
On peut aussi rencontrer des systèmes
RAID 10 et
RAID 01 (également appelé RAID 0/1 ou encore RAID 0+1). Il s’agit soit de plusieurs volumes RAID 0 montés en miroir, soit de plusieurs volumes RAID 1 montés en striping. Ce système est à la fois le plus performant et le plus fiable, mais il est peu utilisé car on a toujours seulement 50% de l’espace disque total utilisable. Pour avoir à la fois de bonnes performances et un système fiable sans pour autant sacrifier trop d’espace disque, il faut avoir recours aux modes 2 à 5.
RAID 0+1 : 4 disques
Le RAID 2 à 4, ou 'striping with parity'
Les niveaux RAID 2 à 4 sont assez similaires, et peuvent être vus comme une combinaison des modes 0 et 1 (on a à la fois redondance des données et empilage de disques). La redondance est obtenue par vérification de parité (ECC(1) ou checksum(2)), c’est à dire que des données supplémentaires sont inscrites sur les disques durs pour pouvoir 'reconstruire' l’information manquante si un lecteur tombe en panne. Il s’en suit qu’il faut au moins 3 disques pour monter un volume RAID de ce type (au moins deux disques pour le striping, et au moins un disque pour les informations de parité, d’ou le nom de '
striping with parity').
Le
RAID 2, très peu utilisé, utilise une méthode d’autocorrection (
ECC). Les codes ECC sont répartis sur plusieurs disques (en général 10 disques de données et 4 disques pour l’ECC). Ce mode n’offre qu’une fiabilité limitée.
Le
RAID 3 est similaire mais il utilise une parité basée sur des tests
XOR(3), plus fiable et rapide que les code ECC. En outre il ne nécéssite qu’un seul disque pour l’information de parité (on a donc
n-1 disques disponibles pour les données). Ce mode est parfois utilisé pour des applications qui manipulent des fichiers lourds (
CAO/DAO(4) typiquement, ou sauvegarde sur plusieurs bandes magnétique montées en
RAIT(5) ),car il offre un bon taux de transfert linéaire.
| Disque simple | RAID 3 ou 4 : 4 disques (dont un pour la parité) |
| |
Pour ces deux modes, les disques de données sont montés comme pour un volume en striping, mais les données sont réparties entre les disques
octet par octet, ce qui fait que les disques doivent être parfaitement synchronisés pour fonctionner. Les performances s’en trouvent fortement réduites. Aujourd’hui ces modes ont quasiment disparu car la plupart des disques commercialisés actuellement ne permettent plus de fonctionner de façon synchrone. Il faut en effet savoir qu’il y a quelques années, les disques durs physiques (l’ensemble plateau + têtes de lecture) étaient gerés directement par le controleur de disques. Aujourd’hui les lecteurs de disques disposent presque tous d’un petit contrôleur integré (compenant par exemple le cache) et il n’est plus possible d’accéder directement aux plateaux d’un disque pour le synchroniser aux autres disques du volume RAID. C’est également pour cette raison qu’on est obligé de répartir le volume en bandes.
Le
RAID 4 est analogue au RAID 3 mais stocke les données par blocs (ou bandes) comme le RAID 0, ce qui le rend plus rapide. Toutefois le dernier disque (qui contient les informations de parité) est souvent le facteur limitant de la performance globale, car il doit être aussi rapide que la somme des autres...
Bref tous ces modes sont intéressants car ils sont redondants (tolérance de panne de un disque sur le total) mais ils comportent chacun un ou plusieurs défauts. La solution pour atteindre l’optimum de performance et de fiabilité est le
RAID 5.
(1) ECC : Error Correcting Ccode = Code de correction d’erreurs (ou code d’autocorrection).
(2) Checksum = Somme de contrôle : voir encadré sur la parité
(3) XOR = l’opération logique 'OU' exclusif, sert à additionner les nombre binaires
(4) CAO/DAO = Conception / Dessin Assisté par Ordinateur (manipulation d’images)
(5) RAIT : Redundant Array of Independent Tapes = Pile de bandes magnétiques économiques et redondantes RAID 5 : le meilleur compromis
Le
RAID 5 est le niveau le plus abouti, et il est aujourd’hui le plus utilisé. Il fonctionne tout comme le RAID 4, sauf que les données de parité sont réparties sur tous les disques. De ce fait chaque disque stocke les même types d’informations, et le débit des données est également
réparti sur tous les disques. Le système tourne donc au maximum des capacités matérielles. L’espace disque final utilisable est de
n-1 disques.
| Disque simple | RAID 5 : 4 disques |
| |
Plus on a de disques, plus ce mode est intéressant car on se rapproche des performances du niveau 0 tout en gardant une bonne fiabilité (tolerance de panne pour un disque). Le RAID 5 est incontestablement la solution la plus économique pour avoir à la fois un sous-système disque performant et fiable. Son seul gros défaut reste qu’il faut pas mal de ressources systèmes pour gérer la création des données de parité et leur bonne répartition.
Coté tolérance de panne, les volumes RAID 2 à 5 supportent la panne d’
un disque, mais pas plus. On part alors du principe qu’on pourra changer le disque défectueux avant qu’un autre ne tombe à son tour en panne. On doit donc avoir des systèmes avec un
MTBF(1) assez élevé (plusieurs milliers d’heures en général). Par ailleurs on peut changer un disque défectueux sans avoir à arreter le systeme si on a des disques SCSI hot plug (ou hot swap), et l’information manquante est en principe reconstruite sur le nouveau disque, soit par le processeur, soit directement par le controleur RAID.
Pour aller un peu plus loin ...
Nous avons vu que le
RAID 5 supporte la panne d’un disque, mais on peut pousser le principe encore un peu plus loin, dès lors qu’on a des besoins plus exigeants en matière de fiabilité. C’est ce que fait le mode
RAID 6. Ce mode est très similaire au mode
5, à ceci près que deux jeux de codes de parité indépendants sont créés au lieu d’un seul, ce qui fait que le volume RAID peut supporter la panne de
deux disques. Il s’en suit qu’il faut au minimum 4 disques pour monter un volume RAID 6, et que la tache qui incombe au contrôleur RAID pour les informations de parité est encore plus lourde. On pourrait d’ailleurs imaginer de pousser le principe encore plus loin avec plus de jeux de codes de parité.
Il existe aussi un mode appelé
RAID 7, mais qui n’est pas vraiment un standard du RAID Advisory Board. Il a été créé par la
societé Storage Computer Corporation pour des systèmes de très haut niveau. Ce mode utilise une technique de cache complexe des données pour augmenter la performance du volume RAID. Il est réservé à des applications spécialisées et très peu répandu. Je ne m’étendrai donc pas plus sur le sujet...
Volumes RAID multiples.
On a vu qu’on pouvait combiner les modes 0 et 1 de deux façons pour créer des volumes RAID 10 et RAID 01. On parle alors de
volume RAID multiple. On peut en fait appliquer ce type de combinaison à tous les modes 'simples' existants. On rencontre par exemple des volumes
RAID 30 (ou
RAID 3+0) ou
RAID 50 (ou
RAID 5+0), utilisés notamment sur certains serveurs HP. Ces modes utilisent plusieurs volumes RAID 3 ou 5 que l’on va monter en striping en un gros volume RAID 0. Ils supportent la panne de deux disques durs, pourvu qu’il soient sur des volumes RAID 3 ou 5 différents. Ils offrent en outre un regain de performance, mais l’espace de deux disques est requis pour les informations de parité. On peut bien sur monter ces volumes multiples dans l’ordre inverse (on pourrait par exemple imaginer un volume RAID 0+5, qui serait un empilement de plusieurs volumes RAID 0 pour créer un gros volume RAID 5, et qui supporterait la panne de d’un ou de deux disques, pourvu qu’ils soient sur un même volume RAID 0). On voit que les combinaisons possibles sont nombreuses, et que chacune peut avoir des avantages spécifiques (volume plus performant ou plus fiable).
(1) MTBF : Mean Time Between Failures = Temps moyen avant deux pannes successives - donné par le constructeur, et caculé à partir de considérations statistiques.Gestion RAID
Les volumes RAID nécéssitent des manipulations complexes de répartition des données et de création des informations de parité. Ils sont donc rapides en lecture mais souvent plus lents en écriture. De plus, un volume RAID 2 à 6 nécéssite beaucoup de temps machine pour 'reconstruire' l’information si un des disques tombe en panne. C’est pourquoi en général la gestion de tels volumes requiert une carte contrôleur avec un processeur dédié (comme le i960 d’intel, par exemple) qui va prendre en charge la répartition et la reconstruction des données.
Mais on peut créer des volumes RAID de facon entièrement logicielle, pour peu que le système d’exploitation le supporte, ce qui est le cas de Windows NT et de Linux. Les performances sont toutefois réduites par rapport à du RAID matériel car beaucoup de ressources sont consommées pour la gestion des disques.
Un contrôleur RAID matériel embarque notamment beaucoup de mémoire cache (jusqu’à 128 Mo) pour gérer en differé les accès disques, et les volumes sont définis directement au niveau de la carte contrôleur (réglage dans le BIOS). Au final, on peut arriver à une utilisation complètement transparente pour le système d’exploitation qui ne verra qu’un disque dur plus grand et plus rapide.
Les principaux constructeurs de cartes RAID sont
Adaptec,
Intel,
HP et
Mylex. On trouve des systèmes RAID de toutes sortes montés principalement sur les serveurs web et serveurs de fichiers (ou SAN, pour Storage Area Network)... et on peut aller très loin : jusqu’à 45 volumes par adaptateur (en multicanaux) et jusqu’à plusieurs centaines de disques associés, avec plusieurs adaptateurs. Mylex par exemple propose des systèmes qui vont jusqu’à 720 disques en association... on compte alors en Teraoctets, voire même en peta-octets, soit 1015 octets :-)
Conclusion
Voici un petit récapitulatif des principaux niveaux de RAID et de leurs caractéristiques :
J’espere que cet article vous aura un peu éclairé sur le RAID et sur ses avantages. Bien sur c’est encore une application réservée au domaine haut de gamme, mais il se popularise de plus en plus au sein du grand public, avec l’arrivée des contrôleurs RAID-IDE integrés aux nouvelles cartes mères. De quoi avoir un systeme disque extremement performant pour pas trop cher ... :-). Pour avoir plus d’infomations sur le RAID, je vous invite à consulter la documentation de chez Mylex (en anglais au format PDF) :
http://www.mylex.com/solutions/index.html