Page suivante - Page précédente - Table des matières

2. Motivation du RAID

Il existe différentes bonnes raisons pour se servir du RAID parmis lesquelles figurent la possibilité de fusionner plusieurs disques physiques en un périphérique virtuel plus important, l'amélioration des performances et la redondance.

2.1 Aspects techniques

Le RAID Linux est adapté à la majeure partie des périphériques de type bloc. Peu importe que vous utilisiez de l'IDE, du SCSI ou un mélange des deux. Certains ont également obtenu quelques succès en s'en servant avec des périphériques de type bloc en réseau (Network Block Device ou NBD).

Vérifiez que les bus d'accès aux périphériques sont assez rapides. Il n'est pas conseillé d'installer 14 disques Ultra Wide sur une même chaine si chacun d'entre eux peut débiter 10 Mo/s car le bus, lui, ne dépassera pas les 40 Mo/s. Vous avez également intérêt à ne pas mettre plus d'un disque par interface IDE sans quoi les performances ne vont pas être fameuses. L'IDE n'est pas adapté pour l'accès simultané à plusieurs disques sur une même interface. Toutes les cartes mères récentes incluent deux ports et vous pourrez donc configurer deux disques en RAID sans acheter de contrôleur supplémentaire.

La couche RAID est indépendante du système de fichier. Vous pourrez donc y superposer celui de votre choix.

2.2 Vocabulaire

RAID sera employé pour "RAID logiciel Linux". Le document ne traite pas du RAID matériel.

Dans la description des configurations, on utilise fréquemment le nombre de disques et leur taille. N désignera le nombre de disques dans une matrice RAID, les disques de secours étant exclus, S sera la taille du plus petit disque et P le débit d'un disque en Mo/s. Quand on se servira de P, on supposera que les disques ont tous les mêmes performances (à vérifier).

Périphérique et disque seront synonymes. En général, les matrices RAID sont davantage construites avec des partitions qu'avec des disques complets. La combinaison de plusieurs partitions appartenant à un même disque ne présente guère d'intérêt et on entendra donc par périphérique et disque "des partitions sur différents disques".

2.3 Niveaux RAID

Voici une brève description des niveaux de RAID gérés par Linux. Certaines de ces infos sont basiques mais j'ai fait mention d'éléments spécifiques à la mise en oeuvre au sein de Linux. Sautez cette section si vous savez ce qui se cache derrière le RAID. Vous y reviendrez quand vous aurez des problèmes :o)

Les patches RAID pour Linux offrent les possibilités suivantes  :

  • mode linéaire
    • Deux disques et plus sont combinés par concaténation. L'écriture sur le disque RAID se fera donc d'abord sur le premier puis sur le second quand il sera plein et ainsi de suite. Il n'est pas nécessaire que les disques soient de la même taille et, pour tout dire, la taille n'est ici d'aucune importance.
    • Il n'y a aucune redondance à ce niveau. Si un disque tombe en panne, vous perdrez surement toutes vos données. Vous aurez peut être la chance d'en récupérer une partie si, du point de vue du système de fichiers, il ne manque qu'un gros bloc consécutif de données.
    • Les performances en lecture/écriture ne vont pas s'améliorer automatiquement mais si plusieurs utilisateurs se servent simultanément du périphérique, il se peut qu'ils accèdent à des disques différents et que les performances en soient augmentées.
  • RAID-0
    • Ou "stripe". Semblable au mode linéaire à ceci près que les lectures et les écritures ont lieu en parallèle sur les disques. Les disques doivent avoir sensiblement la même taille. Les périphériques se remplissent progressivement de la même façon. Si l'un des deux est plus grand que l'autre, l'espace supplémentaire est toujours employé pour la matrice RAID mais vous n'utiliserez qu'un des deux disques vers la fin. Les performances en patiront.
    • Comme en linéaire, il n'y a pas de redondance des données mais en plus vous ne serez pas capable de récupérer vos données si un disque tombe en panne. Au lieu de ce qu'il vous manque un gros bloc de données, votre système de fichiers comprendra de nombreux petits trous. e2fsck ne sera vraisemblablement pas en mesure de reconstituer quoi que ce soit.
    • Les performances en lecture/écriture augmenteront puisque les lectures et les écritures auront lieu sur les deux disque en même temps. C'est souvent ce qui motive l'emploi du RAID-0. Si les bus sont assez rapides, vous pourrez flirter avec N*P Mo/s.
  • RAID-1
    • Il s'agit du premier mode redondant. Le RAID-1 s'employe à partir de deux disques auxquels viennent éventuellement se greffer des disques de secours. Ce mode duplique les informations d'un disque sur l(es)'autre(s). Bien sûr, les disques doivent être de même taille. Si un disque est plus grand que les autres, la matrice sera de la taille du plus petit.
    • Jusqu'à N-1 disques otés (ou défectueux), les données restent intactes et si le contrôleur (SCSI, IDE, etc...) survit, la reconstruction sera immédiatement entamée sur un des disques de secours après détection de l'anomalie.
    • Les performances en écriture sont légèrement inférieures à celles d'un disque unique vu que les données doivent être écrites sur chaque disque de la matrice. Les performances en lecture sont en général bien plus mauvaises en raison de la mise en oeuvre au sein du code d'une stratégie d'équilibrage simpliste. Cependant, cette partie des sources a été revue pour le noyau 2.4.
  • RAID-4
    • Ce niveau RAID n'est pas utilisé très souvent. Il s'employe à partir de trois disques et plus. Au lieu d'effectuer une copie des informations, on conserve la parité sur un disque et on écrit les données sur les autres comme on le ferait avec une matrice RAID-0. Un disque étant dédié à la parité, la taille de la matrice sera (N-1)*S ou S est la taille du plus petit disque. Comme en RAID-1, les disques doivent avoir la même taille sans quoi le S précédent correspondra à celui du plus petit disque.
    • Si un disque lache, l'information de parité permet de reconstruire toutes les données. Si deux disques lachent, toutes les données sont perdues.
    • On n'utilise pas beaucoup ce niveau en raison du stockage de la parité sur un disque unique. L'information doit être mise à jour à chaque fois qu'on écrit sur un des disques, ce qui constitue un goulot d'étranglement si le disque de parité n'est pas nettement plus rapide que les autres. Cependant, si vous avez beaucoup de petits disques lents et un disque très rapide, le RAID-4 peut s'avérer très utile.
  • RAID-5
    • Il s'agit surement du mode le plus approprié quand on souhaite combiner un grand nombre de disques tout en conservant de la redondance. Le RAID-5 s'employe à partir de trois disques avec éventuellement des disques de secours. La matrice sera de taille (N-1)*S, comme en RAID-4. A la différence du RAID-4, l'information de parité est répartie équitablement entre les différents disques, évitant ainsi le goulot d'étranglement du RAID-4.
    • Si un des disques tombe en panne les données restent intactes. La reconstruction peut commencer immédiatement si des disques de secours sont disponibles. Si deux disques rendent simultanément l'âme, toutes les données sont perdues. Le RAID-5 ne survit pas à la défaillance de plus d'un disque.
    • Les performances en lecture/écriture s'améliorent mais il est difficile de prévoir de combien.

Disques de secours

Les disques de secours ne prenent pas part à la matrice RAID jusqu'à ce qu'un des disques de celle-ci tombe en panne. Quand un disque lache, il est marqué défectueux et la reconstruction est entamée sur le premier disque de secours disponible.

Les disques de secours renforcent donc la sécurité de systèmes RAID-5 qui peuvent être difficilement accessibles. Le système peut fonctionner pendant un certain temps aec un disque défectueux tant que le disque de secours assure la redondance.

Vous ne pouvez être sûr de la survie de votre système en cas de défaillance d'un disque. La couche RAID peut faire son travail mais les gestionnaires SCSI peuvent receller des erreurs, les composants IDE peuvent se bloquer et d'autres phénomènes peuvent se produire.

2.4 RAID et swap

Il n'y a aucune raison d'employer le RAID au dessus du swap pour en améliorer les performances. Le noyau se charge lui-même d'équilibrer le swap sur plusieurs périphériques si toutes les partitions ont la même priorité dans la fstab.

Un fichier fstab correct ressemble à ce qui suit  :

/dev/sda2       swap           swap    defaults,pri=1   0 0
/dev/sdb2       swap           swap    defaults,pri=1   0 0
/dev/sdc2       swap           swap    defaults,pri=1   0 0
/dev/sdd2       swap           swap    defaults,pri=1   0 0
/dev/sde2       swap           swap    defaults,pri=1   0 0
/dev/sdf2       swap           swap    defaults,pri=1   0 0
/dev/sdg2       swap           swap    defaults,pri=1   0 0
Cette configuration permet à la machine de swaper en parallèle avec sept périphériques SCSI. Aucun besoin du RAID pour ça vu qu'il s'agit d'une fonctionnalité présente dans le noyau de longue date.

Le RAID s'emploie pour le swap à des fins de haute disponibilité. Si vous configurez un système pour démarrer sur un périphérique RAID-1, le système doit être capable de survivre à une défaillance de disque. Seulement si le système était en train de swaper sur le périphérique défectueux, vous allez surement avoir des problèmes. Swaper sur une matrice RAID-1 aide dans ce genre de situations.

Il y a eu beaucoup de discussions concernant la stabilité du swap sous une couche RAID logicielle. Le débat continue car il dépend fortement d'autres aspects du noyau. A la date de rédaction de ce document, il semble que swaper via le RAID soit parfaitement stable à l'exception des phases de reconstruction (i.e. lorsqu'un nouveau disque est inséré dans une matrice dégradée). La question ne se posera plus lorsque le noyau 2.4 sortira mais jusque là, à vous de pousser le système dans ses retranchements afin de savoir si la stabilité vous satisfait ou bien si vous ne vous servirez pas du RAID pour le swap.

Vous pouvez utiliser un fichier de swap sur un système de fichiers au dessus d'une couche RAID, activer le RAID pour le fichier lui même ou déclarer un périphérique RAID en tant que swap. A vous de voir. Comme d'habitude, le disque RAID apparaitra comme un périphérique de type bloc.


Page suivante - Page précédente - Table des matières