Pour une description de la version ant�rieure de l'interface RAID standard dans les noyaux 2.0 et 2.2, reportez vous � l'excellent document de Linas Vepstas ( [email protected]) disponible via le Linux Documentation Project � l'adresse linuxdoc.org.
http ://ostenfeld.dk/~jakob/Software-RAID.HOWTO/ est la page de r�f�rence pour ce HOWTO o� les derni�res mises � jour seront disponibles. Ce document a �t� r�dig� par Jakob Ostergaard � partir de nombreux messages �lectroniques �chang�s entre l'auteur et Ingo Molnar ([email protected]) - un des d�veloppeurs du RAID - , la liste de diffusion linux-raid ([email protected]) ainsi que diverses personnes.
La r�daction de ce HOWTO a �t� motiv�e par le besoin de documentation du nouveau syst�me RAID alors que le Software-RAID existant ne documentait que les versions pr�c�dentes. Des fonctionnalit�s nouvelles ont notamment �t� introduites.
Pour utiliser la nouvelle mouture du RAID avec les noyaux 2.0 ou 2.2, vous devez r�cup�rer le patch correspondant, par exemple � l'adresse ftp://ftp.[your-country-code].kernel.org/pub/linux/daemons/raid/alpha, ou depuis http://people.redhat.com/mingo/. Les noyaux 2.2 officiels ne g�rent directement que l'ancien type de RAID et les patches sont donc n�cessaires. L'ancien syst�me RAID des noyaux 2.0 et 2.2 est bugg�. De surcro�t, il lui manque d'importantes fonctionnalit�es pr�sentes dans la nouvelle version.
La nouvelle mouture du RAID est en cours d'int�gration dans les noyaux de d�veloppement 2.3.x et sera donc disponible dans la branche 2.4. Jusqu'� la sortie de celle-ci, il sera n�cessaire de patcher manuellement les noyaux.
Peut-�tre esssayerez vous les versions -ac
du noyau propos�es
par Alan Cox pour disposer du RAID. Certaines d'entre elles
incluent le nouveau syst�me et vous �pargneront donc l'application de
patches.
Le HOWTO contient des informations triviales pour ceux qui ma�trisent d�j� les principes des syst�mes RAID. Inutile de vous y attarder.
L'avertissement indispensable :
Bien que le fonctionnement du syst�me RAID semble stable chez moi et chez de nombreuses personnes, cela pourrait ne pas �tre le cas pour vous. Si vous perdez vos donn�es, votre emploi, votre femme ou que vous vous faites �craser par un camion, ce ne sera ni de ma faute, ni de celle des d�veloppeurs. Vous utilisez les fonctionnalit�s RAID, ainsi que toutes les informations contenues dans ce documenti, � vos risques et p�rils. Il n'y a pas la moindre garantie concernant le logiciel ou ce document ni la moindre assurance que cela puisse servir � quoi que ce soit. Sauvegardez toutes vos donn�es avant la moindre manipulation. Il vaut mieux �tre prudent que d�sol�.
Ceci �tant, je dois reconnaitre que je n'ai pas eu de probl�mes de stabilit� avec le RAID logiciel, que je l'employe sur quelques machines et que je n'ai entendu personne �voquer des plantages al�atoires ou des instabilit�s avec le RAID.
Le HOWTO suppose que vous utilisez un des derniers noyaux 2.2.x ou 2.0.x modifi� par le patch raid0145 ad�quat ainsi que la version 0.90 des raidtools ou que vous vous servez d'un 2.3 post�rieur � la > 2.3.46, voire d'un 2.4. Les patches et les outils se trouvent par exemple � : ftp://ftp.fi.kernel.org/pub/linux/daemons/raid/alpha ou pour certains � l'adresse : http://people.redhat.com/mingo/. Les patches RAID, le paquetage des raidtools et le noyau doivent s'accorder autant que possible. Il sera peut-�tre parfois n�cessaire de se restreindre � des noyaux plus anciens si les patches ne sont pas disponibles pour le derni�r noyau sorti.
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.
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.
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".
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 :
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.
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 0Cette 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.
Cette section a trait � certaines probl�mes mat�riels qui se posent lorsqu'on se sert du RAID logiciel.
Le RAID fonctionne avec des disques IDE. On peut d'ailleur obtenir d'excellentes performances. En fait, compte tenu du prix actuel des disques et des contr�leurs IDE, le choix de ce mat�riel est � examiner lors de la mise en place d'un syst�me RAID.
Il est tr�s important que vous n'utilisiez qu'un disque IDE par nappe. Outre la question des performances, la d�faillance d'un disque provoque g�n�ralement le blocage de l'interface. Avec une configuration RAID qui supporte les d�faillances (RAID-1, 4, 5), la panne d'un disque est support�e mais l'arr�t simultan� de deux disques bloque la matrice. Un bus, un disque, telle est la r�gle.
Les contr�leurs PCI IDE ne manquent pas et vous pourrez vous procurer deux � quatre bus suppl�mentaires autour de 600 FF. Au vu de la diff�rence de prix entre les disques SCSI et le disques IDE, je dirais qu'un syst�me RAID IDE est des plus attractifs si on est pr�t � se cantonner � un nombre de disques relativement peu important (autour de 8 � moins que l'on ne dispose de suffisamment de connecteurs PCI).
L'IDE est limit� par la longueur des cables lorsqu'il s'agit de mettre en oeuvre des matrices importantes. M�me si votre machine comprend suffisament de connecteurs PCI il est peu probable que vous puissiez loger plus de huit disques sans vous heurter � des probl�mes de corruption des donn�es dus � la longueur des cables.
Le sujet a effectivement chauff� la liste de diffusion linux-kernel il y a quelques temps. Bien que la fonctionnalit� soit pr�sente dans une certaine mesure, il ne s'agit pas de quelque chose de facile.
N'essayez pas de manipuler � chaud vos disques IDE ! L'IDE n'est pas pr�vu pour. Bien s�r, �a se passera peut-�tre correctement chez vous si le gestionnaire IDE est compil� en tant que module (vous utilisez donc un noyau 2.2 et au del�) et que vous le rechargez une fois le disque remplac� mais vous pouvez tout aussi bien vous retrouver avec un controleur IDE grill�. Le temps d'arr�t du syst�me en cas de probl�me n'aura alors pas grand chose � voir avec celui d'une maintenance programm�e.
Outre les aspects purement �lectriques qui d�truiront joyeusement votre mat�riel, le probl�me r�side en ce que l'interface IDE doit �tre r�examin�e apr�s que des disques soient �chang�s. Le gestionnaire IDE actuel ne le permet pas. Si le nouveau disque est rigoureusement identique � l'ancien, il se peut que cela fonctionne sans nouvel examen du bus mais, franchement, vous �tes en train de tenter le diable.
Le mat�riel SCSI n'est pas davantage pr�vu pour. Ca peut n�anmoins fonctionner. Si votre contr�leur SCSI est capable de r�examiner le bus, d'autoriser l'ajout et la suppression de disques, vous y arriverez peut-�tre. Je ne vous le conseille vraiment pas mais �a peut fonctionner. Griller un disque neuf pousse parfois � revoir ses fa�ons de faire...
La couche SCSI devrait supporter la d�faillance d'un disque mais tous les gestionnaires SCSI n'en sont pas capables. Si le pilote SCSI accompagne le disque d�fectueux, pouvoir �changer ce dernier � chaud est inutile.
L'�change � chaud doit �tre possible mais je ne dispose pas du mat�riel n�cessaire pour le v�rifier et personne ne m'a fait part d'exp�riences de ce type. Je ne peux donc pas vous en dire plus.
Si vous voulez essayer, il vous faudra connaitre le fonctionnement interne du SCSI et du RAID. Je ne vais pas �crire quelque chose que je ne peux pas v�rifier mais juste vous donner quelques indications :
Tous les gestionnaires SCSI ne permettent pas l'ajout et la suppression � chaud. Dans la s�rie 2.2.x des noyaux, les pilotes Adaptec 2940 et Symbios NCR53C8xx en semblent capables. Toute information concernant les autres pilotes sera la bienvenue.
Voici ce que requi�rent tous les niveaux de RAID :
Tous les logiciels se trouvent sur ftp://ftp.fi.kernel.org/pub/linux
Les outils et les patches
RAID sont dans le r�pertoire daemons/raid/alpha
. Le noyau se
trouve dans le r�pertoire kernel
.
Patchez le noyau, configurez le de fa�on � inclure la gestion du RAID pour les niveaux qui vous int�ressent. Compilez et installez.
D�tarrez, configurez, compilez et installez les outils RAID.
Jusqu'ici, tout va bien. A pr�sent, si vous red�marrez, vous devriez
avoir un fichier appel� /proc/mdstat
. N'oubliez jamais que ce fichier est
votre alli�. Examinez son contenu avec un cat
/proc/mdstat
.
Il devrait vous confirmer que vous disposez du niveau (personality)
RAID voulu et qu'aucun p�riph�rique RAID n'est actif.
Cr�ez les partitions que vous souhaitez inclure dans votre matrice RAID.
La suite des op�rations d�pend � pr�sent du mode RAID.
On dispose � pr�sent de deux partitions (ou plus) qui ne sont pas n�cessairement de la m�me taille et que l'on va concat�ner.
Editez le fichier /etc/raidtab
de fa�on � correspondre � votre configuration.
Pour deux disques en mode lin�aire, voici un fichier type :
raiddev /dev/md0 raid-level linear nr-raid-disks 2 chunk-size 32 persistent-superblock 1 device /dev/sdb6 raid-disk 0 device /dev/sdc5 raid-disk 1On ne peut disposer de disques de secours. Si un disque tombe en panne, toute la matrice s'effondre. Il n'y a rien � stocker sur un disque de secours.
Vous vous demanderez peut-�tre pourquoi on pr�cise un param�tre
chunk-size
quand le mode lin�aire ne fait que concat�ner les
disques en un disque virtuel plus important sans y acc�der en parall�le.
Vous avez tout � fait raison. Mettez y une valeur quelconque et pensez
� autre chose.
On cr�e la matrice :
mkraid /dev/md0
La commande initialise la matrice, �crit les superblocs persistants et active le p�riph�rique.
Jetez un oeil � /proc/mdstat
. Vous devriez y voir que la matrice fonctionne.
A pr�sent cr�ez un syst�me de fichiers comme sur un p�riph�rique quelconque, montez le, incluez le dans votre fstab etc...
On dispose de deux disques (ou davantage) de taille sensiblement �gale dont on veut additionner les capacit�s de stockage tout en en am�liorant les performances au moyen d'acc�s simultan�s.
Editez le fichier /etc/raidtab
de fa�on � correspondre � votre configuration.
Voici un fichier type :
raiddev /dev/md0 raid-level 0 nr-raid-disks 2 persistent-superblock 1 chunk-size 4 device /dev/sdb6 raid-disk 0 device /dev/sdc5 raid-disk 1Comme en mode lin�aire, il n'y a pas de disque de secours. Le RAID-0 n'offre aucune redondance et la d�faillance d'un disque signifie celle de la matrice enti�re.
On ex�cute :
mkraid /dev/md0La commande initialise la matrice, �crit les superblocs persistants et active la matrice.
/dev/md0 est pr�t � �tre format�, mont� et � subir les pires outrages.
On dispose de deux disques de taille sensiblement �gale que l'on souhaite mettre en mirroir. On peut avoir des disques suppl�mentaires que l'on gardera en attente comme disques de secours et qui prendront automatiquement place dans la matrice si un disque actif tombe en panne.
Voici le fichier /etc/raidtab
typique :
raiddev /dev/md0 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/sdb6 raid-disk 0 device /dev/sdc5 raid-disk 1Pour prendre en compte des disques de secours :
device /dev/sdd5 spare-disk 0N'oubliez pas d'ajuster la variable nr-spare-disks en cons�quence.
A pr�sent, on peut initialiser la matrice RAID. Son contenu doit �tre construit et les contenus des deux disques (sans importance pour l'instant) synchronis�s.
Ex�cutez :
mkraid /dev/md0L'initialisation de la matrice d�marrera.
Examinez le fichier /proc/mdstat
. On doit y lire que /dev/md0 a �t� d�marr�,
que le mirroir est en cours de reconstruction et y trouver une estimation
de la dur�e de reconstruction.
La reconstruction a lieu durant les p�riodes d'inactivit� au niveau des entr�es/sorties. L'interactivit� du syst�me ne devrait donc pas en souffrir. Les LED des disques palpiteront gaiement.
Le processus de reconstruction est transparent et on peut utiliser le p�riph�rique RAID pendant cette phase.
Formattez la matrice pendant la reconstruction. On peut �galement la monter et s'en servir. Bien s�r, si le mauvais disque lache � ce moment l�, il ne s'agissait pas d'un jour de chance.
Remarque : je n'ai pas test� personnellement cette configuration et ce qui suit correspond � ce qui me para�t le plus vraisemblable.
On dispose de trois disques ou plus de taille sensiblement �quivalente, l'un d'eux est nettement plus rapide que les autres et on souhaite les combiner en un p�riph�rique de taille plus �lev�e tout en conservant un certain niveau de redondance. En outre, on peut introduire des disques de secours.
Fichier /etc/raidtab typique :
raiddev /dev/md0 raid-level 4 nr-raid-disks 4 nr-spare-disks 0 persistent-superblock 1 chunk-size 32 device /dev/sdb1 raid-disk 0 device /dev/sdc1 raid-disk 1 device /dev/sdd1 raid-disk 2 device /dev/sde1 raid-disk 3Les disques de secours sont trait�s par les lignes suivantes :
device /dev/sdf1 spare-disk 0
La matrice s'initialise comme d'habitude :
mkraid /dev/md0
On se reportera aux options particuli�res de mke2fs avant de formater le p�riph�rique.
On dispose de trois disques ou plus de taille sensiblement �quivalente que l'on veut combiner en un p�riph�rique de taille plus �lev�e tout en assurant la redondance des donn�es. On peut introduire des disques de secours.
Si on employe N disques dont le plus petit est de taille S, la taille de la matrice sera (N-1)*S. L'espace manquant sert au stockage des donn�es de parit� (redondance). Si un disque tombe en panne, les donn�es restent intactes. Si deux disques lachent, toutes les donn�es sont perdues.
Fichier de configuration /etc/raidtab typique :
raiddev /dev/md0 raid-level 5 nr-raid-disks 7 nr-spare-disks 0 persistent-superblock 1 parity-algorithm left-symmetric chunk-size 32 device /dev/sda3 raid-disk 0 device /dev/sdb1 raid-disk 1 device /dev/sdc1 raid-disk 2 device /dev/sdd1 raid-disk 3 device /dev/sde1 raid-disk 4 device /dev/sdf1 raid-disk 5 device /dev/sdg1 raid-disk 6Les disques de secours sont trait�s par les lignes suivantes :
device /dev/sdh1 spare-disk 0Et ainsi de suite.
Une taille de bloc (chunk-size) de 32 ko est un bon choix par d�faut pour de nombreux syst�mes de fichiers. La matrice d�riv�e du fichier de configuration pr�c�dent est de 7 fois 6 Go soit 36 Go (n'oubliez pas que (n-1)*s = (7-1)*6 = 36). Il contient un syst�me de fichiers ext2 avec une taille de blocs de 4 ko. Rien n'emp�che d'aller au-del� via les param�tres de bloc de la matrice et du syst�me de fichiers si ce dernier est plus grand ou s'il doit contenir des fichiers de grande taille.
A pr�sent, on ex�cute :
mkraid /dev/md0Normalement les disques devraient s'activer furieusement durant la construction de la matrice. On examinera le contenu du fichier
/proc/mdstat
pour savoir ce qui se passe.
Si le p�riph�rique a �t� cr�� avec succ�s, la reconstruction est en cours. La matrice ne sera pas coh�rente tant que celle-ci n'aura pas pris fin. La matrice est cependant parfaitement op�rationnelle (� la gestion des d�faillances pr�s) et on peut d�j� la formater et s'en servir.
On se reportera aux options particuli�res de mke2fs avant de formatter le p�riph�rique.
Maintenant que le disque RAID fonctionne, on peut l'arr�ter ou le red�marrer via les commandes :
raidstop /dev/md0et
raidstart /dev/md0
Au lieu de mettre ces commandes dans les scripts d'initialisation et de rebooter un milliard de fois pour arriver � tout faire fonctionner, on lira les paragraphes suivants qui traitent de l'autod�tection.
Autrefois (TM), les utilitaires RAID analysaient le fichier de
configuration et initialisaient la matrice. Il fallait donc que le
syst�me de fichiers sur lequel figurait le fichier /etc/raidtab
soit
mont� : plut�t p�nible pour d�marrer sur un syst�me de fichiers RAID.
L'ancienne approche conduisait de surcro�t � des complications pour
monter des syst�mes de fichiers reposant sur p�riph�riques RAID. Ils ne
pouvaient �tre simplement mis dans le fichier /etc/fstab
habituel et
n�cessitaient des interventions chirurgicales dans les scripts de
d�marrage.
Les superblocs persistants r�solvent ces probl�mes. Lorsqu'une matrice
est initialis�e avec l'option persistent-superblock
dans le
fichier /etc/raidtab
, un superbloc de type particulier est �crit au d�but
de chaque disque prenant part � la matrice. Le noyau est alors capable
d'obtenir directement la configuration de la matrice depuis les disques
qui la composent au lieu de devoir analyser un fichier de configuration
� la disponibilit� al�atoire.
On gardera quand m�me coh�rent le fichier /etc/raidtab
puisqu'on peut en
avoir besoin ult�rieurement en cas de reconstruction de la matrice.
Les superblocs persistants sont obligatoires si on souhaite b�n�ficier de l'auto-d�tection des p�riph�riques RAID au d�marrage du syst�me. On se reportera � la section Autod�tection.
Ce param�tre m�rite quelques explications. On ne peut jamais �crire de fa�on rigoureusement parall�le sur un ensemble de disques. Dans le cas de deux disques sur lesquels on devrait �crire un octet, on pourrait souhaiter que les quatres bits de poids fort aillent toujours sur le m�me disque, ceux de poids faible allant sur l'autre. Le mat�riel ne le permet pas. On d�finit donc de fa�on plus ou moins arbitraire une taille de bloc �l�mentaire qui correspondra � la plus petite quantit� de donn�es "atomique" qui sera �crite sur les disques. L'�criture de 16 ko avec une taille de bloc de 4 ko provoquera l'envoi du premier et du troisi�me bloc de 4 ko vers le premier disque et celui du deuxi�me et du quatri�me bloc vers le second disque pour une matrice RAID-0 comportant deux disques. Pour de grosses �critures, la consommation de ressources sera minimis�e par une taille de blocs importante tandis qu'une matrice compos�e essentiellement de petits fichiers profitera davantage d'une taille de blocs r�duite.
Ce param�tre peut �tre sp�cifi� pour tous les niveaux de RAID, m�me le mode lin�aire o� il n'a aucun effet.
A vous de modifier ce param�tre, ainsi que la taille de blocs du syst�me de fichier, pour obtenir les meilleurs performances possibles.
L'argument de l'option chunk-size dans le fichier /etc/raidtab
pr�cise
la taille en ko.
Les donn�es sont �crites successivement sur chaque disque par paquets
de chunk-size
octets.
Pour une taille de bloc de 4 ko, lors de l'�criture de 16 ko de donn�es sur un syst�me muni de trois disques, la couche RAID �crira simultan�ment 4 ko sur chacun des trois disques puis �crira les 4 ko restant sur le disque 0.
32 ko semble un bon point de d�part pour une majorit� de matrices mais la valeur optimale d�pend �troitement du nombre de disques impliqu�s, du contenu du syst�me de fichiers et de divers autres facteurs. A vous d'exp�rimenter pour trouver la meilleure valeur.
Pour les �critures le param�tre importe peu vu que les donn�es doivent �tre �crites sur tous les disques. Cependant, pour les lectures, il fixe la quantit� de donn�es � lire en une fois depuis un disque. Tous les disques contenant la m�me information, les lectures peuvent �tre �quilibr�es d'une fa�on similaire au RAID-0.
Lors d'une �criture dans une matrice RAID-4, l'information de parit�
doit �tre mise � jour sur le disque d�di�. La taille de bloc sp�cifie
alors la taille des blocs de parit�. Si un octet est �crit dans une
matrice RAID-4, chunk-size
octets seront lus depuis N-1 disques,
la parit� sera calcul�e et chunk-size
octets seront �crits sur
le disque de parit�.
Le param�te affecte les performances de la m�me fa�on que pour le RAID-0 puisque les lectures fonctionnent de la m�me fa�on.
Le param�tre a la m�me signification que pour le RAID-4.
128 ko est une valeur raisonnable. A vous de l'ajuster.
On se reportera �galement � la section traitant des options particuli�res de mke2fs qui affectent les performances du RAID-5.
L'option -R stride=nn
permet � mke2fs d'optimiser l'emplacement
des structures de contr�le sp�cifiques � ext2 lors du formatage d'un
disque RAID-4 ou RAID-5.
Si la taille de bloc RAID est de 32 ko, 32 ko de donn�es cons�cutives r�sideront sur un m�me disque. Si on souhaite construire un syst�me de fichiers ext2 avec une taille de blocs de 4 ko, il y aura 8 blocs de donn�es cons�cutifs dans un bloc du tableau. On fournit l'information � mke2fs de la mani�re suivante :
mke2fs -b 4096 -R stride=8 /dev/md0
Les performances du RAID-{4,5} d�pendent fortement de cette option. Je ne suis pas s�r de son influence sur les autres niveaux RAID. Si quelqu'un a des informations � ce sujet, elles seront les bienvenues.
La taille de bloc ext2 joue tr�s
fortement sur les performances
du syst�me de fichier. D�s que la taille de ce dernier d�passe quelques
centaines de Mo, une taille de bloc de 4 ko est conseill�e (� moins que
le syst�me de fichiers ne doivent stocker de tr�s nombreux petits fichiers).
L'autod�tection permet une reconnaissance automatique des p�riph�riques par le noyau au d�marrage, jsute apr�s l'identification des partitions usuelles.
Requis :
Remarque : on v�rifiera que la matrice RAID est arr�t�e avant de
changer le type des partitions (raidstop /dev/md0
).
En suivant les trois �tapes pr�c�dentes, l'autod�tection devrait �tre en
place. Essayez de red�marrer. Une fois le syst�me initialis�, /proc/mdstat
doit confirmer que la matrice RAID fonctionne.
Des messages semblables aux suivants apparaitront au d�marrage :
Oct 22 00:51:59 malthe kernel: SCSI device sdg: hdwr sector= 512 bytes. Sectors= 12657717 [6180 MB] [6.2 GB] Oct 22 00:51:59 malthe kernel: Partition check: Oct 22 00:51:59 malthe kernel: sda: sda1 sda2 sda3 sda4 Oct 22 00:51:59 malthe kernel: sdb: sdb1 sdb2 Oct 22 00:51:59 malthe kernel: sdc: sdc1 sdc2 Oct 22 00:51:59 malthe kernel: sdd: sdd1 sdd2 Oct 22 00:51:59 malthe kernel: sde: sde1 sde2 Oct 22 00:51:59 malthe kernel: sdf: sdf1 sdf2 Oct 22 00:51:59 malthe kernel: sdg: sdg1 sdg2 Oct 22 00:51:59 malthe kernel: autodetecting RAID arrays Oct 22 00:51:59 malthe kernel: (read) sdb1's sb offset: 6199872 Oct 22 00:51:59 malthe kernel: bind<sdb1,1> Oct 22 00:51:59 malthe kernel: (read) sdc1's sb offset: 6199872 Oct 22 00:51:59 malthe kernel: bind<sdc1,2> Oct 22 00:51:59 malthe kernel: (read) sdd1's sb offset: 6199872 Oct 22 00:51:59 malthe kernel: bind<sdd1,3> Oct 22 00:51:59 malthe kernel: (read) sde1's sb offset: 6199872 Oct 22 00:51:59 malthe kernel: bind<sde1,4> Oct 22 00:51:59 malthe kernel: (read) sdf1's sb offset: 6205376 Oct 22 00:51:59 malthe kernel: bind<sdf1,5> Oct 22 00:51:59 malthe kernel: (read) sdg1's sb offset: 6205376 Oct 22 00:51:59 malthe kernel: bind<sdg1,6> Oct 22 00:51:59 malthe kernel: autorunning md0 Oct 22 00:51:59 malthe kernel: running: <sdg1><sdf1><sde1><sdd1><sdc1><sdb1> Oct 22 00:51:59 malthe kernel: now! Oct 22 00:51:59 malthe kernel: md: md0: raid array is not clean -- starting background reconstructionIl s'agit des messages � l'autod�tection des partitions d'une matrice RAID-5 qui n'a pas �t� arr�t�e correctement (la machine a plant�). La reconstruction a lieu spontan�ment. Le montage de l'unit� est parfaitement licite puisque la reconstruction est transparente et que toutes les donn�es sont coh�rentes (seule l'information de parit� qui ne sert qu'en cas de d�faillance d'un disque est incoh�rente).
Les p�riph�riques reconnus automatiquement sont stopp�s de m�me quand le syst�me s'arr�te. Oubliez les scripts d'initialisation et servez vous des disques /dev/md comme s'il s'agissait de /dev/sd ou /dev/hd.
C'est aussi simple que �a.
Les lignes comportant les commandes raidstart et raidstop dans les scripts d'initialisation ne servent que pour les matrices RAID qui reposent sur l'ancienne mouture du code. Elles peuvent �tre supprim�es sans h�sitation dans le cadre de matrices RAID qui ont recours � l'autod�tection.
Il existe plusieurs fa�ons de mettre en place un syst�me qui monte directement sa partition racine depuis un p�riph�rique RAID. Pour l'instant, seuls les outils d'installation graphiques de la RedHat 6.1 permettent l'installation directe sur une matrice RAID. Il vous faudra donc surement effectuer quelques manipulations � la main mais il n'y a l� rien d'impossible.
La derni�re version officielle de lilo (21) ne g�re pas les disques
RAID et le noyau ne peut donc pas �tre charg� au d�marrage depuis ce
genre de p�riph�riques. Il faudra donc que le r�pertoire /boot
r�side sur un syst�me de fichier hors RAID. Afin d'�tre s�r que le
syst�me d�marre quel que soit son �tat, dupliquez une partition
/boot
similaire sur chaque disque. Le BIOS sera ainsi
toujours capable de charger les donn�es depuis, par exemple le premier
disque disponible. Il faudra donc que le syst�me ne d�marre pas avec un
disque d�fectueux.
Avec la RedHat 6.1 est fourni un patch pour lilo 21 qui permet d'acc�der
� /boot
sur du RAID-1. On notera que le patch n'est pas adapt�
aux autres niveaux RAID. Le patch est disponible dans tous les mirroirs
RedHat via dist/redhat-6.1/SRPMS/SRPMS/lilo-0.21-10.src.rpm
.
La version modifi�e de lilo acceptera un argument du type
boot=/dev/md0
dans le fichier /etc/lilo.conf
et
rendra chaque disque du mirroir utilisable au d�narrage.
On peut �galement avoir recours � une disquette de d�marrage.
Deux m�thodes sont fournies ci-dessous. A ma connaissance, aucune distribution ne permet l'installation sur un disque RAID et la m�thode que je sugg�re suppose que vous installez d'abord le syst�me sur une partition normale avant de mouvoir les fichiers sur la matrice RAID une fois l'installation compl�te.
On dispose d'un disque suppl�mentaire o� on peut installer le syst�me.
cd / find . -xdev | cpio -pm /mnt/newroot
/mnt/newroot/etc/fstab
de fa�on � ce
qu'il pointe vers le p�riph�rique /dev/md?
ad�quat pour la
racine. /boot
courant et montez le � la
place en /mnt/newroot/boot
. /mnt/newroot/etc/lilo.conf
de fa�on �
pointer vers le bon p�riph�rique. Le p�riph�rique de boot doit
rester un disque normal (non-RAID) mais le disque racine doit pointer
vers la matrice RAID. Ceci fait, ex�cutez un
lilo -r /mnt/newroot. Lilo ne devrait pas �mettre d'erreurs.
Dans le cas de disques IDE, on sp�cifiera dans le BIOS les disques comme �tant de type ``auto-detect'' pour que la machine puisse red�marrer m�me si un disque manque.
Cette m�thode n�cessite l'emploi d'outils RAID et du patch qui autorisent la directive failed-disk. Il faut donc disposer d'un noyau 2.2.10 ou au del�.
Il faut que la matrice soit au moins de type 1. L'id�e consiste � installer le syst�me sur un disque marqu� d�fectueux du point de vue RAID puis � copier le syst�me sur la partie restante de la matrice RAID qui sera consid�r�e comme d�grad�e avant de r�ins�rer le disque d'installation et de d�clencher sa resynchronisation.
failed-disk
dans le fichier raidtab
Ne mettez pas ce disque en premi�re position dans le fichier ou vous
aurez du mal � d�marrer la matrice. Activez la matrice et mettez y un
syst�me de fichiers.raidtab
en empla�ant la directive
failed-disk
par une directive raid-disk
. Ajoutez �
pr�sent ce disque � la matrice avec raidhotadd
Pour que le noyau soit capable de monter le syst�me de fichiers racine, les pilotes des p�riph�riques n�cessaires doivent �tre pr�sents dans le noyau (NdT : ou charg�s via un initrd qui peut �galement contenir les modules RAID).
La fa�on normale de proc�der consiste � compiler un noyau qui inclut en dur toutes les options RAID n�cessaires (NdT : je proteste !).
La redHat-6.0 �tant fournie avec un noyau modulaire qui g�re la nouvelle mouture du RAID, je vais cependant en d�crire l'emploi si on souhaite s'en servir pour d�marrer son syst�me depuis un volume RAID.
Il faut pr�ciser � lilo qu'il doit �galement charger un �quivalent de
ramdisk en sus du noyau au d�marrage. La commande mkinitrd
permet de cr�er un ramdisk (ici un initrd) contenant les modules
n�cessaires au montage de la racine. Commande type :
mkinitrd --with=<module> <ramdisk name> <kernel>Par exemple :
mkinitrd --with=raid5 raid-ramdisk 2.2.5-22
Ceci garantit que le module RAID ad�quat sera disponible au d�marrage lorsque le noyau devra monter la racine.
Ne repartitionnez JAMAIS un disque qui appartient � une matrice RAID. Si vous devez modifier la table des partitions d'un disque au sein d'une matrice, arr�tez d'abord la matrice et repartitionnez ensuite.
On a vite fait de saturer un bus. Un bus Fast-Wide SCSI courant n'offre que 10 Mo/s, ce qui est largement en dessous des performances des disques actuels. Mettre six disques sur un canal de ce type n'apportera bien entendu pas le gain en performances souhait�.
L'ajout de contr�leurs SCSI n'est susceptible d'am�liorer les performances que si les bus d�j� pr�sents sont proches de la saturation. Vous ne tirerez rien de plus de deux contr�leurs 2940 si vous n'avez que deux vieux disques SCSI qui ne satureraient m�me pas un seul contr�leur.
Si vous omettez l'option de persistance des superblocs votre matrice ne red�marrera pas spontan�ment apr�s un arr�t. Reprenez la cr�ation de la matrice avec l'option correctement positionn�e.
Si la resynchronisation d'une matrice RAID-5 �choue apr�s qu'un disque ait �t� ot� puis reins�r�, l'ordre des disques dans le fichier raidtab est peut-�tre le responsable. Essayez de d�placer la premi�re paire ``device ...'' et ``raid-disk ...'' en d�but de description de la matrice.
La plupart des retours d'erreur observ�s sur la liste de diffusion linux-kernel proviennent de gens qui ont proc�d� � des m�langes douteux entre les patches et les outils RAID. Si vous utilisez le RAID 0.90, v�rifiez que vous vous servez bien de la bonne version des utilitaires.
Si vous utilisez le RAID pour am�liorer la tol�rance aux pannes, vous voudrez surement tester votre installation afin de v�rifier son fonctionnement. Comment simule-t-on donc une d�faillance ?
En r�sum�, on ne peut pas � moins de titiller un disque au lance-flammes pour "simuler" une d�faillance. On ne peut pas pr�voir ce qui va se passer en cas de perte d'un disque. Il pourrait tr�s bien verouiller �lectriquement le bus et rendre tous les disques sur le bus inaccessibles. Je n'ai n�anmoins jamais entendu d'histoire de ce genre. Le disque signalera peut-�tre une erreur de lecture/�criture � la couche IDE ou SCSI qui permettra � son tour � la couche RAID de g�rer la situation avec �l�gance. Heureusement, les choses se passent assez souvent ainsi.
D�branchez le disque. Ceci n'est � faire qu'avec le syst�me hors-tension . Inutile de jouer les aventuriers de l'ajout/suppression � chaud pour v�rifier que les donn�es supportent bien la disparition d'un disque. Arr�tez le syst�me, d�branchez le disque et red�marrez le de nouveau.
Syslog et /proc/mdstat
permettent de v�rifier l'�tat de la matrice.
N'oubliez pas que vous devez employer du RAID-{1,4,5} pour que la matrice soit capable de supporter la d�faillance d'un disque. Les modes lin�aire et RAID-0 �chouent compl�tement dans ce genre de situation.
Une fois le disque rebranch� (avec le courant arr�t�, merci), on ajoutera
le ``nouveau'' disque au syst�me RAID avec la commande raidhotadd
.
Le RAID, qu'il soit mat�riel ou logiciel, suppose que si une �criture ne renvoie pas une erreur, alors elle s'est d�roul�e normalement. Donc, si un diseue corrompt les donn�es sans retourner d'erreur, les donn�es seront corrompues. Bien que ce soit fortement improbable, on ne peut l'exclure et cela aura pour cons�quence la corruption du syst�me de fichiers.
Le RAID ne peut rien faire face � ce genre de d�faillances et il n'a
pas �t� pr�vu pour de toutes fa�ons. Il est donc inutile de d�clencher
sciemment des corruptions de donn�es (avec dd
par exemple) pour
v�rifier le comportement de la couche RAID. A moins de modifier le
superbloc RAID, il est vraisemblable que la couche RAID ne remarque
rien mais que le syst�me de fichiers soit d�truit.
Il s'agit du fonctionnement normal du syst�me. Le RAID ne garantit pas l'int�grit� des donn�es. Il permet juste de les conserver si un disque tombe en panne (pourvu qu'on utilise un niveau de RAID sup�rieur ou �gal � 1).
Si vous avez lu le reste du document, vous devez d�j� avoir une bonne id�e de la proc�dure � suivre pour la reconstruction d'une matrice d�grad�e. Pour r�sumer :
raidhotadd /dev/mdX /dev/sdX
pour r�ins�rer le
disque dans la matrice.Enfin, c'est g�n�ralement tout. Sauf si vous jouez de malchance et que le syst�me RAID est devenu inutilisable � cause de la d�faillance de plus de disques qu'il n'y en a de redondant. Ca risque de se produire si plusieurs disques r�sident sur un m�me bus qui est bloqu� par le disque en panne. Bien qu'en �tat, les autres disques sur le bus vont �tre inaccessibles � la couche RAID et marqu�s comme d�fectueux. Pour une matrice RAID5 o� on peut utiliser un disque en secours, la perte de deux disques ou davantage risque de s'av�rer fatale.
La section suivante est tir�e d'une explication que m'a donn�e Martin Bene
et pr�sente une m�thode possible de r�cup�ration dans le cas d'un sc�nario
catastrophe tel que celui d�crit. Elle implique l'emploi de la directive
failed-disk
dans le fichier /etc/raidtab
. Elle ne pourra donc
fonctionner qu'avec un noyau 2.2.10 et au del�.
Sc�nario :
Une seule chose � faire : re�crire les superblocs RAID via
mkraid --force
.
Pour que �a marche, le fichier /etc/raidtab
; doit �tre � jour. S'il ne
correspond pas exactement � l'organisation des disques et �
leur ordre, �a ne marchera pas.
Examinez la sortie de syslog produite lors de la tentative de d�marrage de la matrice, vous y releverez le compteur d'�venements pour chaque superbloc. En g�n�ral, il vaut mieux laisser de c�t� le disque avec le compteur le plus faible, c'est � dire le plus ancien.
Si vous ex�cutez mkraid
sans la directive failed-disk
,
le thread de r�cup�ration va se mettre � fonctionner imm�diatement et
commencer � reconstruire les blocs de parit� - ce qui est surement un
peu pr�matur�.
Avec failed-disk
, vous pr�ciserez quels disques vous souhaitez
voir actifs et essaierez peut-�tre diff�rentes combinaisons pour obtenir
les meilleurs r�sultats. Pendant la reconstruction, ne montez le syst�me
de fichier qu'en lecture seule. J'ai �t� en contact avec deux
personnes qui s'en sont sorties ainsi.
Cette partie offre quelques �valuations de performances issues de tests de syst�mes employant le RAID.
Les tests ont �t� conduits avec bonnie
et � chaque fois sur
des fichiers de taille �gale � deux fois ou plus celle de la m�moire
physique de la machine.
Ces tests ne mesurent que la bande passante en lecture/�criture
pour un seul fichier de grande taille. On ne sait donc rien des
performances qu'on observerait avec un serveur web, un serveur de news,
etc... Peu d'applications du monde r�el font la m�me chose que
bonnie
et bien que ce genre de nombres soit agr�able � regarder,
il ne s'agit pas d'indicateurs de performances pour de v�ritables
applications. On en est loin.
Concernant ma machine :
Les trois disques U2W sont connect�s au contr�leur U2W et le disque UW au contr�leur UW.
Avec ou sans RAID, il ne semble pas possible de tirer plus de 30 Mo/s du bus SCSI sur cette machine. Je soup�onne que cela vienne de la v�tust� de ce dernier et de la limitation de la bande passante de la m�moire (Nd : pardon ?).
Lecture correspond � Sequential block input, et Ecriture � Sequential block output. La taille du fichier �tait de 1 Go pour tous les tests. Les test ont eu lieu en mono-utilisateur. Le gestionnaire SCSI �tait configur� de fa�on � ne pas utiliser la queue de commands SCSI.
Chunk size | Block size | Lecture ko/s | Ecriture ko/s |
4k | 1k | 19712 | 18035 |
4k | 4k | 34048 | 27061 |
8k | 1k | 19301 | 18091 |
8k | 4k | 33920 | 27118 |
16k | 1k | 19330 | 18179 |
16k | 2k | 28161 | 23682 |
16k | 4k | 33990 | 27229 |
32k | 1k | 19251 | 18194 |
32k | 4k | 34071 | 26976 |
A la lecture de ce tableau il semble que le param�tre chunk-size du RAID n'ait pas un impact important. N�anmoins, la taille de bloc pour ext2 a int�r�t � �tre aussi �lev�e que possible, soit 4 ko (i.e. la taille d'une page) avec une architecture IA32.
La queue de commandes est cette fois-ci activ�e avec une profondeur �gale � 8. Le reste est inchang�.
Chunk size | Block size | Lecture ko/s | Ecriture ko/s |
32k | 4k | 33617 | 27215 |
Aucun autre test n'a �t� men�. L'emploi de la queue de commandes am�liore les performances en �criture mais la diff�rence n'est pas �norme.
On reprend les m�mes tests.
Chunk size | Block size | Lecture ko/s | Ecriture ko/s |
8k | 1k | 11090 | 6874 |
8k | 4k | 13474 | 12229 |
32k | 1k | 11442 | 8291 |
32k | 2k | 16089 | 10926 |
32k | 4k | 18724 | 12627 |
Les deux param�tres semblent jouer.
On d�signe sous ce terme la mise en mirroir de disques concat�n�s ou un RAID-1 au dessus d'un RAID-0. La taille de bloc est commune � tous les disques RAID. Je n'ai pas proc�d� � des tests avec des tailles diff�rentes bien qu'il s'agisse l� d'une configuration tout � fait licite.
Chunk size | Block size | Lecture ko/s | Ecriture ko/s |
32k | 1k | 13753 | 11580 |
32k | 4k | 23432 | 22249 |
Il n'y a pas eu d'autres tests. La taille des fichiers �tait de 900 Mo car les partitions n'offraient que 500 Mo chacune, ce qui ne suffit pas pour un fichier de 1 Go dans cette configuration (RAID-1 de deux matrices de 1000 Mo).
Les personnes suivantes ont contribu� � la cr�ation de ce document :
Envoyez vos remarques et suggestions � l'auteur de ce document. Il n'y a pas d'autre fa�on d'en am�liorer la qualit�.