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.
Sommaire: |
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.
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.
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.
|
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.
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.
Soit N le nombre de disques.
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.
|
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.
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 /".
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.
/ | /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é.
Site Web maintenu par l´équipe d´édition LinuxFocus
© Antonio Castro LinuxFocus 1999 |
Translation information:
|
1999-11-22, generated by lfparser version 0.7