Software-RAID HOWTO
Jakob � ;stergaard (
[email protected])
v. 0.90.7 ; 19th of January 2000
Ce document d�crit l'utilisation du RAID logiciel 0.90 sous Linux mis
au point par Ingo Molnar et d'autres d�veloppeurs. Il s'agit de la
couche RAID qui sera standard pour les versions 2.4.x du noyau Linux
et qui est �galement disponible sous forme de patches pour la branche
2.2. La couche d'adaptation RAID 0.90 est disponible sous forme de
patches pour les branches 2.0 et 2.2. De nombreuses personnes la con�
sid�rent comme bien plus robuste que la couche RAID courante. those
kernels.
______________________________________________________________________
Table des mati�res
1. Introduction
1.1 Avertissement
1.2 Pr�requis
2. Motivation du RAID
2.1 Aspects techniques
2.2 Vocabulaire
2.3 Niveaux RAID
2.3.1 Disques de secours
2.4 RAID et swap
3. Aspects mat�riels
3.1 Configuration IDE
3.2 Ajout et suppression de disque � chaud :
3.2.1 Disques IDE
3.2.2 Disques SCSI
3.2.3 SCA
4. Configuration du RAID
4.1 Configuration g�n�rale
4.2 Mode lin�aire
4.3 RAID-0
4.4 RAID-1
4.5 RAID-4
4.6 RAID-5
4.7 Les superblocs persistants
4.8 Taille des blocs (chunk size)
4.8.1 RAID-0
4.8.2 RAID-1
4.8.3 RAID-4
4.8.4 RAID-5
4.9 Options de mke2fs
4.10 Autod�tection
4.11 D�marrage sur un disque RAID
4.12 Installer le syst�me de fichiers racine sur une couche RAID
4.12.1 Premi�re m�thode :
4.12.2 Seconde m�thode :
4.13 D�marrer le syst�me depuis le RAID
4.13.1 D�marrage avec le RAID modularis�
4.14 Mises en garde
5. Test de la couche RAID
5.1 D�faillance d'un disque
5.2 Corruption de donn�es
6. Reconstruction
6.1 Rattrapage d'une d�faillance de plusieurs disques
7. Performances
7.1 RAID-0
7.2 RAID-0 avec queue de commandes SCSI (TCQ)
7.3 RAID-5
7.4 RAID-10
8. Remerciements
______________________________________________________________________
11.. IInnttrroodduuccttiioonn
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_'_a_n_c_i_e_n _s_y_s_t_�_m_e _R_A_I_D _d_e_s _n_o_y_a_u_x _2_._0 _e_t _2_._2 _e_s_t
_b_u_g_g_�. 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. _C_e_r_t_a_i_n_e_s 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.
11..11.. AAvveerrttiisssseemmeenntt
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.
11..22.. PPrr��rreeqquuiiss
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.
22.. MMoottiivvaattiioonn dduu RRAAIIDD
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.
22..11.. AAssppeeccttss tteecchhnniiqquueess
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.
22..22.. VVooccaabbuullaaiirree
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. NN d�signera le nombre de disques
dans une matrice RAID, les disques de secours �tant exclus, SS sera la
taille du plus petit disque et PP 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".
22..33.. NNiivveeaauuxx RRAAIIDD
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 :
� mmooddee lliinn��aaiirree
� 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.
� RRAAIIDD--00
� 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.
� RRAAIIDD--11
� 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 _e_n
_g_�_n_�_r_a_l 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.
� RRAAIIDD--44
� 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 �
_c_h_a_q_u_e 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.
� RRAAIIDD--55
� 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.
22..33..11.. DDiissqquueess ddee sseeccoouurrss
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.
22..44.. RRAAIIDD eett sswwaapp
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_'_e_x_c_e_p_t_i_o_n
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.
33.. AAssppeeccttss mmaatt��rriieellss
Cette section a trait � certaines probl�mes mat�riels qui se posent
lorsqu'on se sert du RAID logiciel.
33..11.. CCoonnffiigguurraattiioonn IIDDEE
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.
� SSttaabbiilliitt�� :: les caract�ristiques de tenue des disques IDE ont
jusqu'ici �t� moins bonnes que celles des disques SCSI.
Aujourd'hui encore, la garantie des disques IDE se cantonne
typiquement � un an tandis qu'elle est de trois � cinq ans pour les
disques SCSI. Bien qu'il soit exag�r� d'affirmer que les disques
IDE ont une qualit� intrins�que moindre, il faut reconnaitre que
_c_e_r_t_a_i_n_s disques auront tendance � tomber en panne plus souvent que
leurs �quivalents SCSI. Maintenant, la m�canique est la m�me pour
le SCSI et l'IDE. Il faut juste rester conscient de ce que tous les
disques lachent, un jour ou l'autre. Il suffit de s'y pr�parer.
� IInntt��ggrriitt�� ddeess ddoonnnn��eess ::autrefois, il n'y avait aucune garantie que
les donn�es �crites sur le disques fussent bien celles qui avaient
�t� �mises sur le bus (pas de v�rification de parit� ni de code
d'erreur, etc...). Les disques durs IDE conformes aux
sp�cifications Ultra-DMA effectuent un calcul de v�rification sur
les donn�es qu'ils re�oivent. Il devient donc fortement improbable
que des donn�es soient corrompues.
� PPeerrffoorrmmaannccee :: je ne vais pas m'�tendre sur cet aspect des disques
IDE. En r�sum� :
� les disques IDE sont rapides (12 Mo/s et plus)
� le syst�me IDE consomme plus de ressources CPU (mais qui s'en
soucie ?)
� n'utilisez qu'uunn disque IDE par adaptateur sans quoi les
performances vont se d�grader.
� RR��ssiissttaannccee aauuxx ppaannnneess :: le gestionnaire IDE survit g�n�ralement �
la d�faillance d'un disque IDE. La couche RAID �tiquetera le disque
comme d�fectueux et si vous employez du RAID-1 et au del�, la
machine devrait continuer � fonctionner normalement jusqu'� ce que
vous l'arr�tiez pour les op�rations de maintenance.
Il est ttrr��ss important que vous n'utilisiez qquu''uunn 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.
33..22.. AAjjoouutt eett ssuupppprreessssiioonn ddee ddiissqquuee �� cchhaauudd ::
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.
33..22..11.. DDiissqquueess IIDDEE
NN''eessssaayyeezz ppaass 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 _p_e_u_t que cela fonctionne sans nouvel
examen du bus mais, franchement, vous �tes en train de tenter le
diable.
33..22..22.. DDiissqquueess SSCCSSII
Le mat�riel SCSI n'est pas davantage pr�vu pour. Ca _p_e_u_t 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 ddeevvrraaiitt 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.
33..22..33.. SSCCAA
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 :
� partez � la recherche de rreemmoovvee--ssiinnggllee--ddeevviiccee dans le fichier
lliinnuuxx//ddrriivveerrss//ssccssii//ssccssii..cc
� jetez un oeil � rraaiiddhhoottrreemmoovvee et � rraaiiddhhoottaadddd
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.
44.. CCoonnffiigguurraattiioonn dduu RRAAIIDD
44..11.. CCoonnffiigguurraattiioonn gg��nn��rraallee
Voici ce que requi�rent tous les niveaux de RAID :
� Un noyau, de pr�f�rence un 2.2.x ou le dernier 2.0.x. Si la branche
2.4.x est disponible quand vous lirez ces lignes, servez vous en.
� Les patches RAID. Ils existent g�n�ralement pour les noyaux
r�cents. Les noyaux 2.4.x ne n�cessiteront pas de patch.
� Les utilitaires RAID.
� De la patience, des pizzas et des amph^H^H^H^H substances � la
caf�ine.
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.
44..22.. MMooddee lliinn��aaiirree
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 1
On 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...
44..33.. RRAAIIDD--00
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 1
Comme 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/md0
La 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.
44..44.. RRAAIIDD--11
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 1
Pour prendre en compte des disques de secours :
device /dev/sdd5
spare-disk 0
N'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/md0
L'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.
44..55.. RRAAIIDD--44
RReemmaarrqquuee :: 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 3
Les 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.
44..66.. RRAAIIDD--55
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 6
Les disques de secours sont trait�s par les lignes suivantes :
device /dev/sdh1
spare-disk 0
Et 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/md0
Normalement 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/md0
et
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.
44..77.. LLeess ssuuppeerrbbllooccss ppeerrssiissttaannttss
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 AAuuttoodd��tteeccttiioonn.
44..88.. TTaaiillllee ddeess bbllooccss ((cchhuunnkk ssiizzee))
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.
44..88..11.. RRAAIIDD--00
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.
44..88..22.. RRAAIIDD--11
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.
44..88..33.. RRAAIIDD--44
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.
44..88..44.. RRAAIIDD--55
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.
44..99.. OOppttiioonnss ddee mmkkee22ffss
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).
44..1100.. AAuuttoodd��tteeccttiioonn
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 :
1. La gestion de l'autod�tection par le noyau.
2. Les disques RAID doivent avoir �t� cr��s avec l'option de
persistance des superblocs.
3. Les partitions doivent �tre de type 00xxFFDD (� positionner avec
fdisk).
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 reconstruction
Il 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 par�
faitement 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.
44..1111.. DD��mmaarrrraaggee ssuurr uunn ddiissqquuee RRAAIIDD
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.
44..1122.. IInnssttaalllleerr llee ssyysstt��mmee ddee ffiicchhiieerrss rraacciinnee ssuurr uunnee ccoouucchhee RRAAIIDD
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.
44..1122..11.. PPrreemmii��rree mm��tthhooddee ::
On dispose d'un disque suppl�mentaire o� on peut installer le syst�me.
� Installez un syst�me normal sur le disque suppl�mentaire.
� Mettez en place un noyau incluant les patches n�cessaires pour le
RAID et v�rifiez que le syst�me s'initialise correctement avec ce
noyau. Il faudra veiller � ce que le support RAID soit ddaannss le
noyau et non sous forme de modules.
� A pr�sent, configurez et cr�ez la matrice RAID dont vous comptez
vous servir en tant que racine. Il s'agit de la proc�dure standard
telle que d�crite pr�c�demment dans le document.
� Red�marrez le syst�me afin de v�rifier que la matrice est d�tect�e
correctement (elle devrait en tout cas).
� Cr�ez un syst�me de fichier sur la nouvelle matrice avec mke2fs et
montez la en /mnt/newroot (par exemple).
� Copiez le contenu de la racine courante sur le disque RAID. Il
existe diff�rentes fa�ons de faire, par exemple :
cd /
find . -xdev | cpio -pm /mnt/newroot
� modifiez le fichier /mnt/newroot/etc/fstab de fa�on � ce qu'il
pointe vers le p�riph�rique /dev/md? ad�quat pour la racine.
� D�montez le r�pertoire /boot courant et montez le � la place en
/mnt/newroot/boot.
� Mettez � jour /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
d'erreurs.
� Red�marrez le syst�me et admirez avec quel facilit� tout se passe
comme on le souhaite :o)
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.
44..1122..22.. SSeeccoonnddee mm��tthhooddee ::
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 ffaauutt 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.
� Installez un syst�me normal sur un des deux disques (qui fera plus
tard partie de la matrice). Il est important que ce disque ne soit
pas le plus petit sans quoi il ne sera pas possible de l'ajouter �
la matrice !
� R�cup�rez le noyau, le patch, les outils, etc... Red�marrez le
syst�me avec le noyau qui est muni de la gestion RAID.
� Cr�ez votre matrice en indiquant le disque qui occupe la racine
actuelle comme 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.
� Red�marrez et v�rifiez que la matrice RAID est correctement
activ�e.
� Copiez les fichiers de la racine et modifiez les fichiers syst�me
du disque RAID de fa�on � ce qu'il se r�f�rence bien en tant que
racine.
� Lorsque le syst�me d�marre correctement depuis le disque RAID,
modifiez le fichier raidtab en empla�ant la directive failed-disk
par une directive raid-disk. Ajoutez � pr�sent ce disque � la
matrice avec raidhotadd
� Le syst�me doit � pr�sent d�marrer depuis une matrice non-d�grad�e.
44..1133.. DD��mmaarrrreerr llee ssyysstt��mmee ddeeppuuiiss llee RRAAIIDD
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.
44..1133..11.. DD��mmaarrrraaggee aavveecc llee RRAAIIDD mmoodduullaarriiss��
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.
44..1144.. MMiisseess eenn ggaarrddee
Ne repartitionnez JJAAMMAAIISS 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.
55.. TTeesstt ddee llaa ccoouucchhee RRAAIIDD
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.
55..11.. DD��ffaaiillllaannccee dd''uunn ddiissqquuee
D�branchez le disque. Ceci n'est � faire qu'avec le syst�me hhoorrss--
tteennssiioonn . 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 ddeevveezz 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.
55..22.. CCoorrrruuppttiioonn ddee ddoonnnn��eess
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 _s_e_r_o_n_t 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).
66.. RReeccoonnssttrruuccttiioonn
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 :
� Arr�tez le syst�me.
� Remplacez le disque d�fectueux.
� Red�marrez le syst�me.
� Utilisez raidhotadd /dev/mdX /dev/sdX pour r�ins�rer le disque
dans la matrice.
� Allez prendre un caf� pendant que la reconstruction s'effectue.
C'est tout.
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�.
66..11.. RRaattttrraappaaggee dd''uunnee dd��ffaaiillllaannccee ddee pplluussiieeuurrss ddiissqquueess
Sc�nario :
� un contr�leur rend l'�me et bloque simultan�ment l'acc�s � deux
disques ;
� tous les disques d'un m�me bus SCSI sont bloqu�s � cause d'un m�me
disque d�fectueux ;
� un cable s'envole pour le grand centre de traitement automatis�.
En bref : le plus souvent, une panne _t_e_m_p_o_r_a_i_r_e se produit sur
plusieurs disques. Les superblocs RAID sont d�synchronis�s et la
matrice RAID refuse de s'initialiser.
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 eexxaacctteemmeenntt � 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.
77.. PPeerrffoorrmmaanncceess
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 _q_u_e 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 :
� Bi-Pentium Pro 150 MHz
� 256 Mo RAM (60 MHz EDO)
� trois IBM UltraStar 9ES 4.5 GB, SCSI U2W
� Adaptec 2940U2W
� un IBM UltraStar 9ES 4.5 GB, SCSI UW
� Adaptec 2940 UW
� un noyau 2.2.7 avec les patches RAID
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 ?).
77..11.. RRAAIIDD--00
LLeeccttuurree correspond � SSeeqquueennttiiaall bblloocckk iinnppuutt, et EEccrriittuurree � SSeeqquueennttiiaall
bblloocckk oouuttppuutt. 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.
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.
77..22.. RRAAIIDD--00 aavveecc qquueeuuee ddee ccoommmmaannddeess SSCCSSII ((TTCCQQ))
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 |
| | | | |
|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 |
| | | | |
|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.
77..33.. RRAAIIDD--55
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.
77..44.. RRAAIIDD--1100
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).
88.. RReemmeerrcciieemmeennttss
Les personnes suivantes ont contribu� � la cr�ation de ce document :
� Ingo Molnar
� Jim Warren
� Louis Mandelstam
� Allan Noah
� Yasunori Taniike
� Martin Bene
� Bennett Todd
� les abonn�s de la liste de diffusion Linux-RAID
� ceux que j'ai oubli�, d�sol� :o)
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�.