Sommaire Carte Index Recherche Nouvelles Archives Liens A propos
[Barre Superieure]
[Barre Inferieure]
[Photo de l'Auteur]
par Antonio Castro

L´auteur:

Je serai toujours reconnaissant à l'équipe de LinuxFocus dans son ensemble (traducteurs aussi), qui ont bien souvent participé de manière éloignée à améliorer l'aspect de cet article.
A cette occasion, j'aimerais remercier une personne en particulier: cet article n'aurait jamais vu le jour sans l'aide de Luis Colorado qui, e-mail après e-mail, a partagé avec moi ses connaissances du système RAID. Merci Luis.

Sommaire:

Installation et Configuration d'un Système RAID

[Illustration]

Résumé:

RAID (Redundant Array of Inexpensive Disks: Grappe de Disques Durs Standards) est un ensemble de sous-systèmes destinés à combiner plusieurs disques durs en une seule entité virtuelle, qui se comportera comme un seul et unique disque; les différents disques fonctionneront en parallèle. Cela permet d'améliorer les performances d'accès et de protéger les informations stockées des plantages-disque.



 

Introduction

Il existe un certain nombre de solutions matérielles dans le marché, très chères et généralement basées sur l'utilisation de certaines cartes-contrôleur.

On peut trouver d'autres implémentations RAID basées sur des cartes qui autorisent un utilisateur à mettre plusieurs disques en RAID, grâce à un simple microprocesseur Z80 et des logiciels embarqués. Au regard de ces spécifications, il n'est pas possible de dire que cette solution donnera de meilleurs résultats qu'une solution basée sur Linux.

Les implémentations basées sur des cartes-contrôleur coûtent cher et obligent l'utilisateur à n'acheter que des disques durs identiques. D'autre part, Linux avec les pilotes de périphériques adéquats, peut gérer certaines de ces cartes, mais cela n'est pas une solution interessante car Linux offre une solution aussi efficace, basée sur du logiciel libre, excluant ainsi les alternatives matérielles onéreuses.

Le système RAID de Linux dont nous parlons, est implémenté au niveau du noyau et nous permet d'utiliser des disques durs de type différent: il peut s'agir d'un mélange de disques IDE et SCSI. Des disques durs de capacité différente peuvent être utilisés, mais dans ce cas, il sera nécessaire de créer des partitions de taille identique sur chacun des disques. La solution la plus commune est d'utiliser plusieurs disques de même capacité, mais malgré tout, il était bon de signaler que Linux offrait beaucoup plus de flexibilité. Par exemple, une partie d'un disque peut être utilisée pour un RAID et une autre comme partition indépendante. Ce n'est souvent pas une bonne idée parce que l'utilisation d'une partition indépendante peut réduire la vitesse d'accès du système RAID. En d'autres termes, même si Linux permet d'utiliser n'importe quel type de disques durs, les résultats seront toujours meilleurs s'il est possible d'utiliser des disques de capacité et de caractéristiques identiques. Une autre chose importante à prendre en considération est que la technologie SCSI permet l'accès simultané à tous les périphériques connectés au bus, alors que des disques situés sur la même carte-contrôleur IDE ne pourront jamais être accédés en même temps. Il est vraiment dommage que les disques SCSI soient encore si chers par rapport à leurs homologues IDE.

La solution logicielle d'un système RAID sous Linux est aussi efficace (si ce n'est plus) que celles basées sur des cartes spécifiques et bien sûr moins coûteuse et beaucoup plus flexible en termes de disques durs autorisés.

Sur une configuration SCSI, un périphérique peut envoyer des données au bus tandis qu'un autre est en train de les récupérer, alors que sur une interface IDE, un seul disque est accédé puis le deuxième.

 

Sélection de disques pour un système RAID

L'utilisation de disques durs très rapides pour mettre en place un RAID, n'est souvent pas justifiée. Ceux-ci sont plus chers. Les disques sont rapides parce que leurs têtes sont plus efficaces et plus promptes à se positionner sur le secteur approprié. Le déplacement de secteur en secteur est une opération qui nécessite beaucoup de temps sur un disque dur, mais sous Linux -contrairement à MS-DOS, par exemple-, cette opération est optimisée à un tel degré, que les informations ne sont pas accédées dans l'ordre où elles ont été demandées: l'accès aux données se réalise par un principe d'"hiérarchie intelligente", qui mémorise les demandes et y répond dans l'ordre le plus efficace.

...Linux offre une solution aussi efficace, basée sur du logiciel libre, excluant ainsi les alternatives matérielles onéreuses.

Il existe d'autres méthodes pour augmenter la performance, en diminuant le nombre d'accès-disque, comme le cache en mémoire. Les vitesses de rotation des disques ne sont souvent pas si différentes mais il peut y avoir des différences notables concernant la densité et le nombre de têtes, qui peuvent affecter le taux de transfert de manière significative. C'est un paramètre dont nous devons tenir compte. En bref, nous vous recommandons est d'utiliser des disques durs SCSI, si possible de caractéristiques similaires et pas forcément coûteux. La vitesse du système RAID proviendra de l'accès simultané aux disques, et non de la rapidité individuelle de ceux-ci.

Il faut également tenir compte du fait que le système Linux doit démarrer d'un disque non-RAID et de petite taille afin que la partition root soit relativement libre.

 

Caractéristiques d'un système SCSI

Au moment de se procurer les disques durs, plusieurs doutes peuvent surgir. Pour cette raison, c'est une bonne idée d'énoncer de manière un peu plus exhaustive, les principales caractéristiques auxquelles il faut prêter attention.



Nom NumBits NumDev MB/s Connecteur  Longueur Max Cable 
SCSI-1 8 7 5 50 broches Basse Densité 6 mts 
SCSI-2
(alias) Fast scsi, o Narrow scsi
8 7 10 50 broches Haute Densité 3 mts 
SCSI-3
(alias) Ultra, o Fast20
8 7 20 50 broches Haute Densité 3 mts 
Ultra Wide
(alias) Fast scsi-3
16 15 40 68 broches Haute Densité 1.5 mts 
Ultra2 16 15 80 68 broches Haute Densité 12 mts 

Un RAID peut être composé de plusieurs partitions disques mais le résultat final sera une unique partition logique avec un seul disque, sur lequel nous ne pourrons pas créer de partitions supplémentaires. Le nom de ce périphérique logique est métadisque.

Sous Linux, les périphériques IDE sont des fichiers appelés /dev/hd..., aux périphériques SCSI correspondent les /dev/sd..., et les métadisques se voient nommés /dev/md... après avoir compilé le noyau avec les options adéquates. Quatre périphériques de ce type doivent être présents:

brw-rw----   1 root     disk       9,   0 may 28  1997 md0
brw-rw----   1 root     disk       9,   1 may 28  1997 md1
brw-rw----   1 root     disk       9,   2 may 28  1997 md2
brw-rw----   1 root     disk       9,   3 may 28  1997 md3

Le premier but à atteindre sera d'essayer de rendre le temps d'accès au swap le plus petit possible; à cette fin, la meilleure solution est d'utiliser un petit métadisque sur le RAID, ou d'étaler le swap de manière traditionnelle sur tous les disques physiques. Si plusieurs partitions swap sont utilisées, chacune sur un disque dur physique différent, alors Linux s'occupera de gérer celles-ci et le RAID ne sera pas nécessaire dans ce cas.

 

Types de RAID

Soit N le nombre de disques.

RAID0 (mode "stripping": entrelacement)
Dans ce mode, tous les disques sont organisés de manière alternative, afin que les blocs de données soient pris en proportions égales sur tous les disques durs, alternativement, dans le but d'atteindre un débit supérieur. Comme la probabilité de trouver un bloc d'un fichier est identique sur tous les disques, il faut les faire travailler simultanément, augmentant ainsi la performance du métadisque d'à peu près N fois celle d'un disque seul.

RAID1 (mode "mirroring": premier niveau de redondance)
Dans ce mode, le but est d'atteindre la plus grande sécurisation des données. Les blocs de données sont dupliqués sur tous les disques physiques (chaque bloc du disque "virtuel" a un doublon sur chacun des autres disques). Cette configuration permet d'accroitre N fois la performance en lecture d'un seul périphérique, mais elle ralentit la performance en écriture. Les opérations de lecture peuvent être organisées de manière à lire N blocs simultanément, un sur chacun des périphériques en un temps. Idem quand vous écrirez un bloc, il sera dupliqué N fois, une fois sur chacun des périphériques physiques. Il n'y a aucun avantage à tirer dans cette configuration au niveau de la capacité de stockage.

RAID4 (Remarque: Les types RAID2 et RAID3 sont obsolètes)
Dans ce mode, la finalité est de combiner les avantages du RAID0 et du RAID1. Les données sont organisées en mélangeant les deux méthodes. Les périphériques de 1 à N-1 sont organisés en mode entrelacé (RAID0), et le N-ième enregistre la parité des bits individuels correspondant aux blocs allant de 1 à N-1. Si l'un des disques a un problème, il est possible de récupérer les données en utilisant l'information de parité du disque N. La performance en lecture est de N-1 et en écriture de 1/2 (parce que maintenant,l'écriture d'un bloc de données implique aussi l'écriture sur le disque de parité). Dans la perspective de restaurer un disque dur corrompu, on a seulement à relire l'information et à la ré-écrire dessus (cela lit du disque de parité mais cela écrit sur le nouveau disque dur).

RAID5
Ce mode est similaire au RAID4, sauf que maintenant les informations du disque de parité est étalée sur tous les disques durs: il n'existe pas de disque de parité proprement dit. Cela permet de réduire le temps de chargement du disque de parité, qui doit être accédé à chaque opération en écriture dans le RAID4. Maintenant, le disque où l'information de parité d'une piste est stockée, est différent pour chaque piste.

Il existe d'autres types de RAID et de RAID mixtes basés sur RAID1. On peut trouver également des tentatives pour mettre en oeuvre la compression disque sur les disques durs physiques, non sans controverses, car les avantages de la compression ne sont pas particulièrement apparents. D'autres propositions fleuriront certainement dans un futur proche. Pour le moment, nous nous concentrerons sur le RAID0 parce qu'il s'agit du mode le plus efficace, en dépit de l'absence de redondance pour protéger l'utilisateur d'éventuels accidents.

...nous nous concentrerons sur le RAID0 parce qu'il s'agit du mode le plus efficace, en dépit de l'absence de redondance...

Quand la grappe se compose de peu de disques (3 ou 4), la redondance coûte cher: on perd le tiers ou le quart de la capacité totale. La redondance sur un RAID protège vos données des corruptions de disque mais pas de l'effacement accidentel des informations, aussi avoir un RAID redondant ne vous évitera pas de faire des sauvegardes. D'un autre côté, si vous utilisez plus de disques (5 et plus), alors la perte de capacité sera plus petite, et la redondance aura un coût plus bas. Certaines cartes SCSI 16 bits permettent de gérer jusqu'à 15 périphériques. Dans ce cas, RAID5 sera hautement recommandé.

Si vous ne pouvez utiliser des disque identiques, prenez en compte le fait que les systèmes RAID travaillent toujours avec des blocs de données identiques. Il est possible que les disques durs les plus lents soient forcés de travailler plus vite, mais en aucun cas, la configuration RAID ne pourra atteindre une meilleure performance. L'accroissement de performance sur un système RAID bien configuré est véritablement spectaculaire. Il est généralement vrai de dire aussi que la performance augmente de manière linéaire avec le nombre de disques présents dans la grappe.

 

Comment installer un système RAID0

Dans les lignes qui suivent, nous décrirons comment installer un RAID0. Si le lecteur désire construire un RAID différent de celui-ci avec un noyau 2.0.xx, il lui faudra se procurer un patch spécifique.

RAID0 n'a pas de redondance mais considérez que pour bénéficier d'une telle chose, il est conseillé d'avoir un grand nombre de disque afin de ne pas gaspiller trop de capacité. Consacrer un disque entier à la redondance quand on n'en a que trois, est un gâchis. De plus, cela ne couvre pas tous les cas possibles de perte d'informations, mais seulement celles dûes à une détérioration physique des disques durs, un événement peu commun. Si 10 disques sont disponibles, alors en utiliser un pour le contrôle de parité n'est pas une si grosse perte. Sur un RAID0, avoir une erreur sur un seul des disques signifie la perte totale des informations stockées sur tous les disques physiques: par conséquent, nous vous recommendons une politique de sauvegarde appropriée.

La première étape à accomplir est d'ajouter les pilotes adéquats au noyau. Pour les noyaux 2.0.xx, les options RAID à sélectionner sont:

   Multiple devices driver support (CONFIG_BLK_DEV_MD) [Y/n/?] Y
   Linear (append) mode (CONFIG_MD_LINEAR) [Y/m/n/?] Y
   RAID-0 (striping) mode (CONFIG_MD_STRIPED) [Y/m/n/?] Y

Après avoir démarré le système avec le nouveau noyau, le répertoire /proc aura une nouvelle entrée appelée mdstat, qui contient les status des quatre (valeur par défaut) nouveaux périphériques md0, md1, md2, et md3. Comme aucun d'entre eux n'a été initialisé jusqu'à maintenant, ils apparaitront tous comme inactifs et ne seront pas encore utilisables.

Ces quatre périphériques seront gérables par l'intermédiaire des "mdutils" suivants:

        -mdadd
        -mdrun
        -mdstop
        -mdop

Ces outils peuvent être téléchargés sur ftp://ftp.kernel.org/pub/linux/daemons/raid/ , mais on les peut les trouver dans la plupart des distributions.

Pour les kernels 2.1.62 et supérieurs, il existe un paquetage différent appelé "RAIDtools" qui permet d'utiliser RAID0, RAID4 et RAID5.

Dans l'exemple suivant, nous illustrons comment on définit un métadisque RAID0 utilisant deux disques durs SCSI, respectivement /dev/sdb1 et /dev/sdc1.
meta-disque Mode RAID Partition Disque 1 Partition Disque 1
/dev/md0 linear /dev/sdb1 /dev/sdc1 

Plusieurs partitions peuvent être ajoutées.

Une fois le métadisque formaté, il ne devra être altéré en aucune circonstance, sinon toutes les informations contenues dans celui-ci seront perdues.

mdadd -a
mdrun -a

A ce moment, md0 devrait apparaitre comme initialisé. Pour le formater:

mke2fs /dev/md0

Et pour le monter:

mkdir /mount/md0
mount /dev/md0 /mount/md0

Si tout a fonctionné jusqu'ici, vous pouvez maintenant intégrer ces commandes dans les scripts de démarrage, afin que le métadisque RAID soit monté automatiquement au prochain démarrage du système. Pour cela, il est nécessaire dans un premier temps d'ajouter une nouvelle entrée au fichier /etc/fstab, puis d'ajouter les commandes "mdadd -a" et "mdrun -a" dans un fichier-script exécuté avant le montage des périphériques. Sur une distribution Debian, le fichier-script /etc/init.d/checkroot.sh est une bonne place pour ces commandes, juste avant le remontage en mode lecture/écriture du système de fichiers racine: c'est juste avant la ligne contenant "mount -n -o remount,rw /".  

Par exemple

Il s'agit de la configuration que j'utilise actuellement. J'ai un disque dur IDE de 6,3 Go, un disque dur SCSI de 4,2 Go et un autre de 2 Go.


HD 6.3Gb IDE
/ /bigTemp + /incoming  swap 2Gb(RAID) hda4 

HD 4.2Gb SCSI
C: D:  swap 2Gb(RAID) sda4 

HD 2Gb SCSI
swap 2Gb(RAID) sdb2 

#######</etc/fstab>################################################
# <file system> <mount point>  <type>  <options>     <dump>  <pass>
/dev/hda1       /               ext2    defaults       0       1
/dev/hda2       /mnt/hda2       ext2    defaults       0       2
/dev/md0        /mnt/md0        ext2    defaults       0       2
proc            /proc           proc    defaults       0       2
/dev/hda3        none           swap    sw,pri=10 
/dev/sdb1        none           swap    sw,pri=10 
/dev/sda3        none           swap    sw,pri=10
#########</etc/mdtab>####################################### 
# <meta-device> <RAID-mode> <DskPart1> <DskPart1> <DskPart1> 
/dev/md0         RAID0,8k    /dev/hda4  /dev/sda4 /dev/sdb2

La partition racine se trouve sur le disque de 6 Go sous hda1, et ensuite il y a une grande partition utilisée pour le téléchargement de fichiers sur Internet, le stockage d'images de CD, ... Cette partition ne compte pas beaucoup au niveau du chargement, car elle n'est pas utilisée souvent. Le disque de 4 Go ne contient pas de partitions pouvant pénaliser l'efficacité du système RAID, parce qu'il s'agit de partitions MS-DOS rarement utilisées sous Linux. Le disque de 2 Go est quasiment entièrement dédié au système RAID. Il existe sur chaque disque, une petite partition d'échange.

Nous essaierons d'avoir approximativement des disques (partitions) de même taille, afin de ne pas ralentir les performances du système RAID. Les petites différences ne sont pas gravissimes. Nous utiliserons tout l'espace disponible de sorte que toutes les données qui peuvent être empêtrées sur les disques et les données restantes demeurent libres.

Monter plusieurs disques durs IDE sur un seul système RAID n'est pas très efficace, par contre, monter un disque IDE avec des disques SCSI fonctionne très bien. Contrairement aux disques SCSI, les disques IDE n'autorisent pas l'accès simultané.

 

Pour de plus amples informations


Site Web maintenu par l´équipe d´édition LinuxFocus
© Antonio Castro
LinuxFocus 1999
Translation information:
en -> -- Antonio Castro
en -> fr Diego D OLIVEIRA GRANJA

1999-11-22, generated by lfparser version 0.7