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�.