Les différents niveaux de RAID existants


Le principe derrière le RAID est d’agréger d’une manière ou d’une autre plusieurs disques durs pour les regrouper en un seul volume. ce sont bien les différentes manières de créer un RAID que l’on va aborder aujourd’hui. Avec au programme, les grands principes, mais surtout la mise en pratique, avec les différences entre les implémentations matérielles et logicielles. Des indications que je pense utiles à ceux qui réfléchissent à un NAS, notamment.


RAID, kézako ? (la théorie)
C’est un acronyme signifiant Redundant Array of Independant Disks (ou Inexpensive Disks, ce qui était beaucoup plus vrai à une époque), qu’on pourrait traduire par “ensemble redondant de disques indépendants”. Il est donc question d’agréger plusieurs disques de différentes façons suivant la finalité du stockage créé : augmentation de performances, tolérance de panne, abstraction d’un tel stockage…

Agrégation simple (ou JBOD)
JBOD signifie Just a Bunch Of Disks, autrement dit “juste un ensemble de disques”. Il s’agit simplement d’ajouter les disques les uns à la suite des autres, et de “fusionner” l’espace disque disponible vu par le système d’exploitation. Si l’un des disques meurt, on ne perd que les données qui étaient écrites dessus (un poil plus quand on fait joujou avec NTFS qui est trop con pour éviter la fragmentation).

Stripping, ou RAID0
Le RAID0 est un mode destiné à augmenter les performances en lecture-écriture, en “parallélisant” ces opérations sur les disques de la “grappe”. L’espace disque disponible est alors, comme pour le JBOD, l’addition de celui des disques. Gros inconvénient, si l’un des disques tombe, on perd la totalité du volume, et donc des données, vu qu’elles sont découpées et réparties sur chaque disque afin d’être lues en parallèle.

Mirroring, ou RAID1
Ai-je vraiment besoin de vous traduire le terme mirroring ? Généralement utilisé avec deux disques, ce mode ne fait que gérer les disques en mode miroir : l’intégralité des données est lue et écrite sur les deux disques. Le gros inconvénient, c’est que l’on ne voit que l’espace disque de la plus petite des unités de la grappe. Le gros avantage, c’est que si l’un des deux vient à mourir, les données sont intactes, puisque présentes en double. On a donc une plus grande tolérance de panne.

C’est généralement ce mode qu’on utilisera dans les NAS qui accueillent deux disques durs, bien que les précédents présentés sont aussi disponibles, ainsi que les serveurs dédiés, souvent livrés configuré en RAID1 par défaut quand ils contiennent deux disques.

Agrégation par bandes avec parité répartie, ou RAID5
C’est violent comme description, mais ça correspond bien. Il est plus difficile à comprendre, certes, mais au final, on se rend compte que c’est puissant. On utilise ce mode avec au minimum trois disques. Les données sont découpées en deux parties, écrites en parallèle sur deux des disques, et une parité est calculée et écrite sur le troisième, et ça tourne en permanence (chaque disque accueille la parité d’un bloc à tour de rôle). L’idée, c’est que si un disque meurt, bien qu’on aie effectivement perdu une partie des données, elles peuvent être recalculées à partir des données restantes et des sommes de parités disponibles.

L’espace disque perçu correspond donc à la totalité des disques moins un (puisqu’on consomme l’espace d’un disque pour stocker la parité), soit deux disques pour une grappe de trois. Les performances sont aussi augmentées par rapport à un seul disque, au final c’est donc, sur le papier, le meilleur des mondes : une meilleure tolérance aux pannes, comme sur le RAID1, et un volume plus rapide, comme en RAID0. Dans la pratique, le coût en calcul peut gommer l’aspect performance suivant la taille des blocs sélectionnée.

Les autres modes
Ces modes sont les plus répandus, et les plus utilisés. Il en existent d’autres, ayant plus ou moins d’intérêt, comme le RAID6, qui fonctionne sur le même principe que le RAID5, mais avec deux disques pour la parité au lieu d’un, augmentant d’autant les besoins de puissance de calcul nécessaires. Ou le RAID10 (ou RAID01), qui mixe en fait les modes 0 et 1 (par exemple, un miroir de RAID0, ou un RAID0 de miroirs). Couteux en disques durs, ils n’ont au final que peu d’intérêt.

Les différentes implémentations de ces principes
Matériel
Sur les systèmes de stockage haut de gamme, et sur certaines stations de travail, la gestion de ces modes de RAID est confiée à des contrôleurs de stockages spécialisés, disposant de leur propres commandes pour la gestion, qui se fait avant même le démarrage du système d’exploitation; ils sont complètement indépendants. Pour nos bons vieux PCs, ou pour des serveurs au format tour, on les trouve souvent sous forme de carte d’extension au format PCI-Express (oui, le même que les cartes graphiques).

D’un point de vue de l’OS, on ne voit qu’un seul “disque”, cette solution la rend compatible avec tous les systèmes, sans nécessairement besoin de pilotes spécialisés, l’accès pouvant se faire au moyen des protocoles habituellement utilisés, SATA en tête. Des outils en ligne de commande pour interroger les contrôleurs sont souvent disponibles et néanmoins nécessaires pour connaître en temps réel la santé des disques (et dans une certaine mesure intervenir sur le RAID sans avoir à couper la machine).

FakeRAID
Ces contrôleurs sont à mi-chemin entre le matériel et le logiciel (qu’on abordera juste après). Dans la pratique, si une partie du “câblage” matériel est présent, il faut toujours un logiciel et/ou pilote dédié au système d’exploitation pour les gérer. On les trouve presque exclusivement intégrés aux cartes-mères, et généralement seuls des pilotes pour Windows sont disponibles, rendant la solution peu portable.

RAID logiciel
Là encore, il faut distinguer deux cas de figures, que l’on se place au niveau du noyau du système d’exploitation, ou du système de fichiers.

Système d’exploitation

Notamment sous Linux, l’infrastructure md permet de définir une grappe RAID indépendamment du système de fichiers qu’on installe. On peut dès lors créer des volumes à partir de disques complets ou bien de partitions sur ces mêmes disques. La contrainte reste alors la même : la taille de la grappe correspondra à celle du volume le plus petit, ou d’un multiple de celui-ci dans le cas du RAID5 ou 6.

Système de fichiers

En effet, les aficionados de Solaris (et de certains BSD) vous le diront : rien ne vaut ZFS. Ce système de fichiers dispose d’atouts particuliers, dont la possibilité de gérer justement des volumes RAID à son propre niveau (le mode RAID-Z). Il permet d’implémenter la plupart des modes définis au début du billet, et ajoute ses propres caractéristiques et avantages.

Ses inconvénients ? Sa licence le restreint à Solaris, aujourd’hui détenu par Oracle, et du coup certains BSD (il est notamment utilisable dans FreeNAS, une distribution pour construire votre propre… NAS). Bien que certains bricolages (à base de FUSE notamment) permettent d’y avoir accès sous Linux. Un module existe, mais il est maintenu en dehors de la branche principale du noyal. Moralité, il y a un certain btrfs (prononcez better FS) qui se veut un remplaçant natif pour le noyau Linux. Encore jeune, il permet lui aussi d’agréger du volume sous différentes conditions. Il est en grande partie développé par Oracle, qui pour une fois joue au bon élève quand au développement de logiciel libre.

Windows aussi sait faire du RAID
En dehors du RAID matériel, qui au final abstrait le stockage, Windows sait aussi créer des volumes dans les différents modes. Personnellement je n’ai jamais expérimenté (et comme c’est du Windows, j’évite de le conseiller parce que rien ne dit que ça marche d’un Windows à l’autre). J’aurais donc bien du mal à vous expliquer dans quel mode il travaille (système d’exploitation, ou système de fichiers, Microsoft ne travaillant pratiquement qu’avec du NTFS). Posez donc plutôt la question à Julien de Computerz.Solutions, il en sait certainement plus que moi sur l’univers Microsoft :)

Y’a d’autres méthodes pour gérer ses volumes
Si vous voulez avoir plus de détails sur tout ce que j’ai raconté à propos du RAID, vous pouvez vous tourner vers l’article de Wikipedia kivabien, il est très bien fait et en Français (pour une fois…).

En dehors du JBOD et du RAID0, tous les modes de RAID servent au minimum un même objectif : augmenter la tolérance de panne du système de stockage d’une machine. Si cette notion vous importe peu, un autre mécanisme dépoussiérant le stockage pourrait vous intéresser : LVM. Mais ça sera pour un autre jour.