  Software-RAID HOWTO
  Jakob  ;stergaard (jakob@ostenfeld.dk)
  v. 0.90.7 ; 19th of January 2000

  Ce document dcrit l'utilisation du RAID logiciel 0.90 sous Linux mis
  au point par Ingo Molnar et d'autres dveloppeurs. 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
  sidrent comme bien plus robuste que la couche RAID courante.  those
  kernels.
  ______________________________________________________________________

  Table des matires



















































  1. Introduction

     1.1 Avertissement
     1.2 Prrequis

  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 matriels

     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 gnrale
     4.2 Mode linaire
     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 Autodtection
     4.11 Dmarrage sur un disque RAID
     4.12 Installer le systme de fichiers racine sur une couche RAID
        4.12.1 Premire mthode  :
        4.12.2 Seconde mthode  :
     4.13 Dmarrer le systme depuis le RAID
        4.13.1 Dmarrage avec le RAID modularis
     4.14 Mises en garde

  5. Test de la couche RAID

     5.1 Dfaillance d'un disque
     5.2 Corruption de donnes

  6. Reconstruction

     6.1 Rattrapage d'une dfaillance 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




  ______________________________________________________________________

  11..  IInnttrroodduuccttiioonn

  Pour une description de la version antrieure de l'interface RAID
  standard dans les noyaux 2.0 et 2.2, reportez vous  l'excellent
  document de Linas Vepstas (linas@linas.org) disponible via le Linux
  Documentation Project  l'adresse linuxdoc.org.

  http ://ostenfeld.dk/~jakob/Software-RAID.HOWTO/ est la page de
  rfrence pour ce HOWTO o les dernires mises  jour seront
  disponibles. Ce document a t rdig par Jakob Ostergaard  partir de
  nombreux messages lectroniques changs entre l'auteur et Ingo Molnar
  (mingo@chiara.csoma.elte.hu) - un des dveloppeurs du RAID - , la
  liste de diffusion linux-raid (linux-raid@vger.rutgers.edu) ainsi que
  diverses personnes.

  La rdaction de ce HOWTO a t motive par le besoin de documentation
  du nouveau systme RAID alors que le Software-RAID existant ne
  documentait que les versions prcdentes. Des fonctionnalits
  nouvelles ont notamment t introduites.

  Pour utiliser la nouvelle mouture du RAID avec les noyaux 2.0 ou 2.2,
  vous devez rcuprer 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 grent directement que l'ancien type de RAID et les patches sont
  donc ncessaires. _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 surcrot, il lui manque d'importantes fonctionnalites
  prsentes dans la nouvelle version.

  La nouvelle mouture du RAID est en cours d'intgration dans les noyaux
  de dveloppement 2.3.x et sera donc disponible dans la branche 2.4.
  Jusqu' la sortie de celle-ci, il sera ncessaire de patcher
  manuellement les noyaux.

  Peut-tre esssayerez vous les versions -ac du noyau proposes par Alan
  Cox pour disposer du RAID. _C_e_r_t_a_i_n_e_s d'entre elles incluent le nouveau
  systme et vous pargneront donc l'application de patches.

  Le HOWTO contient des informations triviales pour ceux qui matrisent
  dj les principes des systmes RAID. Inutile de vous y attarder.



  11..11..  AAvveerrttiisssseemmeenntt

  L'avertissement indispensable  :

  Bien que le fonctionnement du systme RAID semble stable chez moi et
  chez de nombreuses personnes, cela pourrait ne pas tre le cas pour
  vous. Si vous perdez vos donnes, votre emploi, votre femme ou que
  vous vous faites craser par un camion, ce ne sera ni de ma faute, ni
  de celle des dveloppeurs. Vous utilisez les fonctionnalits RAID,
  ainsi que toutes les informations contenues dans ce documenti,  vos
  risques et prils. 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 donnes avant la moindre
  manipulation. Il vaut mieux tre prudent que dsol.

  Ceci tant, je dois reconnaitre que je n'ai pas eu de problmes de
  stabilit avec le RAID logiciel, que je l'employe sur quelques
  machines et que je n'ai entendu personne voquer des plantages
  alatoires ou des instabilits avec le RAID.


  11..22..  PPrrrreeqquuiiss

  Le HOWTO suppose que vous utilisez un des derniers noyaux 2.2.x ou
  2.0.x modifi par le patch raid0145 adquat ainsi que la version 0.90
  des raidtools ou que vous vous servez d'un 2.3 postrieur  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 ncessaire
  de se restreindre  des noyaux plus anciens si les patches ne sont pas
  disponibles pour le dernir noyau sorti.



  22..  MMoottiivvaattiioonn dduu RRAAIIDD

  Il existe diffrentes bonnes raisons pour se servir du RAID parmis
  lesquelles figurent la possibilit de fusionner plusieurs disques
  physiques en un priphrique virtuel plus important, l'amlioration
  des performances et la redondance.



  22..11..  AAssppeeccttss tteecchhnniiqquueess

  Le RAID Linux est adapt  la majeure partie des priphriques de type
  bloc. Peu importe que vous utilisiez de l'IDE, du SCSI ou un mlange
  des deux. Certains ont galement obtenu quelques succs en s'en
  servant avec des priphriques de type bloc en rseau (Network Block
  Device ou NBD).

  Vrifiez que les bus d'accs aux priphriques sont assez rapides.  Il
  n'est pas conseill d'installer 14 disques Ultra Wide sur une mme
  chaine si chacun d'entre eux peut dbiter 10 Mo/s car le bus, lui, ne
  dpassera pas les 40 Mo/s.  Vous avez galement intrt  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'accs
  simultan  plusieurs disques sur une mme interface. Toutes les
  cartes mres rcentes incluent deux ports et vous pourrez donc
  configurer deux disques en RAID sans acheter de contrleur
  supplmentaire.

  La couche RAID est indpendante du systme de fichier. Vous pourrez
  donc y superposer celui de votre choix.



  22..22..  VVooccaabbuullaaiirree

  RAID sera employ pour "RAID logiciel Linux". Le document ne traite
  pas du RAID matriel.

  Dans la description des configurations, on utilise frquemment le
  nombre de disques et leur taille. NN dsignera le nombre de disques
  dans une matrice RAID, les disques de secours tant exclus, SS sera la
  taille du plus petit disque et PP le dbit d'un disque en Mo/s. Quand
  on se servira de P, on supposera que les disques ont tous les mmes
  performances ( vrifier).

  Priphrique et disque seront synonymes. En gnral, les matrices RAID
  sont davantage construites avec des partitions qu'avec des disques
  complets. La combinaison de plusieurs partitions appartenant  un mme
  disque ne prsente gure d'intrt et on entendra donc par
  priphrique et disque "des partitions sur diffrents disques".

  22..33..  NNiivveeaauuxx RRAAIIDD

  Voici une brve description des niveaux de RAID grs par Linux.
  Certaines de ces infos sont basiques mais j'ai fait mention d'lments
  spcifiques  la mise en oeuvre au sein de Linux. Sautez cette section
  si vous savez ce qui se cache derrire le RAID. Vous y reviendrez
  quand vous aurez des problmes :o)

  Les patches RAID pour Linux offrent les possibilits suivantes  :

    mmooddee lliinnaaiirree

    Deux disques et plus sont combins par concatnation. 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
     ncessaire que les disques soient de la mme 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 donnes. Vous aurez peut
     tre la chance d'en rcuprer une partie si, du point de vue du
     systme de fichiers, il ne manque qu'un gros bloc conscutif de
     donnes.

    Les performances en lecture/criture ne vont pas s'amliorer
     automatiquement mais si plusieurs utilisateurs se servent
     simultanment du priphrique, il se peut qu'ils accdent  des
     disques diffrents et que les performances en soient augmentes.

    RRAAIIDD--00

    Ou "stripe". Semblable au mode linaire  ceci prs que les
     lectures et les critures ont lieu en parallle sur les disques.
     Les disques doivent avoir sensiblement la mme taille. Les
     priphriques se remplissent progressivement de la mme faon. Si
     l'un des deux est plus grand que l'autre, l'espace supplmentaire
     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 linaire, il n'y a pas de redondance des donnes mais en
     plus vous ne serez pas capable de rcuprer vos donnes si un
     disque tombe en panne. Au lieu de ce qu'il vous manque un gros bloc
     de donnes, votre systme 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 mme
     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.

    RRAAIIDD--11

    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 sr, les disques doivent tre de mme
     taille. Si un disque est plus grand que les autres, la matrice sera
     de la taille du plus petit.

    Jusqu' N-1 disques ots (ou dfectueux), les donnes restent
     intactes et si le contrleur (SCSI, IDE, etc...) survit, la
     reconstruction sera immdiatement entame sur un des disques de
     secours aprs dtection de l'anomalie.


    Les performances en criture sont lgrement infrieures  celles
     d'un disque unique vu que les donnes 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 stratgie d'quilibrage simpliste. Cependant, cette
     partie des sources a t revue pour le noyau 2.4.

    RRAAIIDD--44

    Ce niveau RAID n'est pas utilis trs 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
     donnes sur les autres comme on le ferait avec une matrice RAID-0.
     Un disque tant ddi  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 mme taille sans quoi le S prcdent
     correspondra  celui du plus petit disque.

    Si un disque lache, l'information de parit permet de reconstruire
     toutes les donnes. Si deux disques lachent, toutes les donnes
     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 trs rapide, le RAID-4 peut
     s'avrer trs utile.

    RRAAIIDD--55

    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 diffrence du RAID-4, l'information
     de parit est rpartie quitablement entre les diffrents disques,
     vitant ainsi le goulot d'tranglement du RAID-4.

    Si un des disques tombe en panne les donnes restent intactes.  La
     reconstruction peut commencer immdiatement si des disques de
     secours sont disponibles. Si deux disques rendent simultanment
     l'me, toutes les donnes sont perdues. Le RAID-5 ne survit pas 
     la dfaillance de plus d'un disque.

    Les performances en lecture/criture s'amliorent mais il est
     difficile de prvoir de combien.


  22..33..11..  DDiissqquueess ddee sseeccoouurrss

  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 dfectueux et la reconstruction est entame sur
  le premier disque de secours disponible.

  Les disques de secours renforcent donc la scurit de systmes RAID-5
  qui peuvent tre difficilement accessibles. Le systme peut
  fonctionner pendant un certain temps aec un disque dfectueux tant que
  le disque de secours assure la redondance.

  Vous ne pouvez tre sr de la survie de votre systme en cas de
  dfaillance 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 phnomnes peuvent se produire.
  22..44..  RRAAIIDD eett sswwaapp

  Il n'y a aucune raison d'employer le RAID au dessus du swap pour en
  amliorer les performances. Le noyau se charge lui-mme d'quilibrer
  le swap sur plusieurs priphriques si toutes les partitions ont la
  mme 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 parallle avec
  sept priphriques SCSI. Aucun besoin du RAID pour a vu qu'il s'agit
  d'une fonctionnalit prsente dans le noyau de longue date.

  Le RAID s'emploie pour le swap  des fins de haute disponibilit.  Si
  vous configurez un systme pour dmarrer sur un priphrique RAID-1,
  le systme doit tre capable de survivre  une dfaillance de disque.
  Seulement si le systme tait en train de swaper sur le priphrique
  dfectueux, vous allez surement avoir des problmes.  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 dbat continue car il dpend fortement
  d'autres aspects du noyau. A la date de rdaction 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 insr
  dans une matrice dgrade).  La question ne se posera plus lorsque le
  noyau 2.4 sortira mais jusque l,  vous de pousser le systme 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 systme de fichiers au
  dessus d'une couche RAID, activer le RAID pour le fichier lui mme ou
  dclarer un priphrique RAID en tant que swap. A vous de voir. Comme
  d'habitude, le disque RAID apparaitra comme un priphrique de type
  bloc.



  33..  AAssppeeccttss mmaattrriieellss

  Cette section a trait  certaines problmes matriels qui se posent
  lorsqu'on se sert du RAID logiciel.


  33..11..  CCoonnffiigguurraattiioonn IIDDEE

  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 contrleurs IDE, le choix de ce matriel est  examiner
  lors de la mise en place d'un systme RAID.

    SSttaabbiilliitt :: les caractristiques 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 exagr d'affirmer que les disques
     IDE ont une qualit intrinsque 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 mcanique est la mme 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 prparer.

    IInnttggrriitt ddeess ddoonnnneess ::autrefois, il n'y avait aucune garantie que
     les donnes crites sur le disques fussent bien celles qui avaient
     t mises sur le bus (pas de vrification de parit ni de code
     d'erreur, etc...). Les disques durs IDE conformes aux
     spcifications Ultra-DMA effectuent un calcul de vrification sur
     les donnes qu'ils reoivent. Il devient donc fortement improbable
     que des donnes soient corrompues.

    PPeerrffoorrmmaannccee :: je ne vais pas m'tendre sur cet aspect des disques
     IDE. En rsum  :

    les disques IDE sont rapides (12 Mo/s et plus)

    le systme IDE consomme plus de ressources CPU (mais qui s'en
     soucie ?)

    n'utilisez qu'uunn disque IDE par adaptateur sans quoi les
     performances vont se dgrader.

    RRssiissttaannccee aauuxx ppaannnneess :: le gestionnaire IDE survit gnralement 
     la dfaillance d'un disque IDE. La couche RAID tiquetera le disque
     comme dfectueux et si vous employez du RAID-1 et au del, la
     machine devrait continuer  fonctionner normalement jusqu' ce que
     vous l'arrtiez pour les oprations de maintenance.

  Il est ttrrss important que vous n'utilisiez qquu''uunn disque IDE par nappe.
  Outre la question des performances, la dfaillance d'un disque
  provoque gnralement le blocage de l'interface.  Avec une
  configuration RAID qui supporte les dfaillances (RAID-1, 4, 5), la
  panne d'un disque est supporte mais l'arrt simultan de deux disques
  bloque la matrice. Un bus, un disque, telle est la rgle.

  Les contrleurs PCI IDE ne manquent pas et vous pourrez vous procurer
  deux  quatre bus supplmentaires autour de 600 FF. Au vu de la
  diffrence de prix entre les disques SCSI et le disques IDE, je dirais
  qu'un systme RAID IDE est des plus attractifs si on est prt  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. Mme si votre machine comprend
  suffisament de connecteurs PCI il est peu probable que vous puissiez
  loger plus de huit disques sans vous heurter  des problmes de
  corruption des donnes dus  la longueur des cables.



  33..22..  AAjjoouutt eett ssuupppprreessssiioonn ddee ddiissqquuee  cchhaauudd  ::

  Le sujet a effectivement chauff la liste de diffusion linux-kernel il
  y a quelques temps. Bien que la fonctionnalit soit prsente dans une
  certaine mesure, il ne s'agit pas de quelque chose de facile.


  33..22..11..  DDiissqquueess IIDDEE

  NN''eessssaayyeezz ppaass de manipuler  chaud vos disques IDE !  L'IDE n'est pas
  prvu pour. Bien sr, 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'arrt du systme en cas de
  problme n'aura alors pas grand chose  voir avec celui d'une
  maintenance programme.

  Outre les aspects purement lectriques qui dtruiront joyeusement
  votre matriel, le problme rside en ce que l'interface IDE doit tre
  rexamine aprs que des disques soient changs. 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.


  33..22..22..  DDiissqquueess SSCCSSII

  Le matriel SCSI n'est pas davantage prvu pour. Ca _p_e_u_t nanmoins
  fonctionner. Si votre contrleur SCSI est capable de rexaminer 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 faons
  de faire...

  La couche SCSI ddeevvrraaiitt supporter la dfaillance d'un disque mais tous
  les gestionnaires SCSI n'en sont pas capables. Si le pilote SCSI
  accompagne le disque dfectueux, pouvoir changer ce dernier  chaud
  est inutile.


  33..22..33..  SSCCAA

  L'change  chaud doit tre possible mais je ne dispose pas du
  matriel ncessaire pour le vrifier et personne ne m'a fait part
  d'expriences 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 vrifier mais juste vous donner quelques indications  :

    partez  la recherche de rreemmoovvee--ssiinnggllee--ddeevviiccee dans le fichier
     lliinnuuxx//ddrriivveerrss//ssccssii//ssccssii..cc

    jetez un oeil  rraaiiddhhoottrreemmoovvee et  rraaiiddhhoottaadddd

  Tous les gestionnaires SCSI ne permettent pas l'ajout et la
  suppression  chaud. Dans la srie 2.2.x des noyaux, les pilotes
  Adaptec 2940 et Symbios NCR53C8xx en semblent capables. Toute
  information concernant les autres pilotes sera la bienvenue.




  44..  CCoonnffiigguurraattiioonn dduu RRAAIIDD


  44..11..  CCoonnffiigguurraattiioonn ggnnrraallee

  Voici ce que requirent tous les niveaux de RAID  :

    Un noyau, de prfrence 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 gnralement pour les noyaux
     rcents. Les noyaux 2.4.x ne ncessiteront pas de patch.

    Les utilitaires RAID.

    De la patience, des pizzas et des amph^H^H^H^H substances  la
     cafine.

  Tous les logiciels se trouvent sur ftp://ftp.fi.kernel.org/pub/linux
  Les outils et les patches RAID sont dans le rpertoire
  daemons/raid/alpha. Le noyau se trouve dans le rpertoire kernel.

  Patchez le noyau, configurez le de faon  inclure la gestion du RAID
  pour les niveaux qui vous intressent. Compilez et installez.

  Dtarrez, configurez, compilez et installez les outils RAID.

  Jusqu'ici, tout va bien. A prsent, si vous redmarrez, 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 priphrique RAID n'est actif.

  Crez les partitions que vous souhaitez inclure dans votre matrice
  RAID.

  La suite des oprations dpend  prsent du mode RAID.



  44..22..  MMooddee lliinnaaiirree

  On dispose  prsent de deux partitions (ou plus) qui ne sont pas
  ncessairement de la mme taille et que l'on va concatner.

  Editez le fichier /etc/raidtab de faon  correspondre  votre
  configuration.  Pour deux disques en mode linaire, 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 prcise un paramtre chunk-
  size quand le mode linaire ne fait que concatner les disques en un
  disque virtuel plus important sans y accder en parallle.  Vous avez
  tout  fait raison. Mettez y une valeur quelconque et pensez  autre
  chose.

  On cre la matrice  :

    mkraid /dev/md0



  La commande initialise la matrice, crit les superblocs persistants et
  active le priphrique.


  Jetez un oeil  /proc/mdstat. Vous devriez y voir que la matrice
  fonctionne.

  A prsent crez un systme de fichiers comme sur un priphrique
  quelconque, montez le, incluez le dans votre fstab etc...



  44..33..  RRAAIIDD--00

  On dispose de deux disques (ou davantage) de taille sensiblement gale
  dont on veut additionner les capacits de stockage tout en en
  amliorant les performances au moyen d'accs simultans.

  Editez le fichier /etc/raidtab de faon  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 linaire, il n'y a pas de disque de secours. Le RAID-0
  n'offre aucune redondance et la dfaillance d'un disque signifie celle
  de la matrice entire.

  On excute  :

    mkraid /dev/md0


  La commande initialise la matrice, crit les superblocs persistants et
  active la matrice.

  /dev/md0 est prt  tre format, mont et  subir les pires outrages.



  44..44..  RRAAIIDD--11

  On dispose de deux disques de taille sensiblement gale que l'on
  souhaite mettre en mirroir. On peut avoir des disques supplmentaires
  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 consquence.

  A prsent, on peut initialiser la matrice RAID. Son contenu doit tre
  construit et les contenus des deux disques (sans importance pour
  l'instant) synchroniss.

  Excutez  :

    mkraid /dev/md0


  L'initialisation de la matrice dmarrera.

  Examinez le fichier /proc/mdstat. On doit y lire que /dev/md0 a t
  dmarr, que le mirroir est en cours de reconstruction et y trouver
  une estimation de la dure de reconstruction.

  La reconstruction a lieu durant les priodes d'inactivit au niveau
  des entres/sorties. L'interactivit du systme ne devrait donc pas en
  souffrir. Les LED des disques palpiteront gaiement.

  Le processus de reconstruction est transparent et on peut utiliser le
  priphrique RAID pendant cette phase.

  Formattez la matrice pendant la reconstruction. On peut galement la
  monter et s'en servir. Bien sr, si le mauvais disque lache  ce
  moment l, il ne s'agissait pas d'un jour de chance.



  44..55..  RRAAIIDD--44

  RReemmaarrqquuee :: je n'ai pas test personnellement cette configuration et ce
  qui suit correspond  ce qui me parat 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 priphrique de taille plus leve 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 traits 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 particulires de mke2fs avant de formater
  le priphrique.



  44..66..  RRAAIIDD--55

  On dispose de trois disques ou plus de taille sensiblement quivalente
  que l'on veut combiner en un priphrique de taille plus leve tout
  en assurant la redondance des donnes. 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
  donnes de parit (redondance). Si un disque tombe en panne, les
  donnes restent intactes. Si deux disques lachent, toutes les donnes
  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 traits 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 dfaut
  pour de nombreux systmes de fichiers. La matrice drive du fichier
  de configuration prcdent est de 7 fois 6 Go soit 36 Go (n'oubliez
  pas que (n-1)*s = (7-1)*6 = 36). Il contient un systme de fichiers
  ext2 avec une taille de blocs de 4 ko. Rien n'empche d'aller au-del
  via les paramtres de bloc de la matrice et du systme de fichiers si
  ce dernier est plus grand ou s'il doit contenir des fichiers de grande
  taille.

  A prsent, on excute  :

    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 priphrique a t cr avec succs, la reconstruction est en
  cours. La matrice ne sera pas cohrente tant que celle-ci n'aura pas
  pris fin. La matrice est cependant parfaitement oprationnelle ( la
  gestion des dfaillances prs) et on peut dj la formater et s'en
  servir.

  On se reportera aux options particulires de mke2fs avant de formatter
  le priphrique.

  Maintenant que le disque RAID fonctionne, on peut l'arrter ou le
  redmarrer 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'autodtection.



  44..77..  LLeess ssuuppeerrbbllooccss ppeerrssiissttaannttss

  Autrefois (TM), les utilitaires RAID analysaient le fichier de
  configuration et initialisaient la matrice. Il fallait donc que le
  systme de fichiers sur lequel figurait le fichier /etc/raidtab soit
  mont  : plutt pnible pour dmarrer sur un systme de fichiers RAID.

  L'ancienne approche conduisait de surcrot  des complications pour
  monter des systmes de fichiers reposant sur priphriques RAID. Ils
  ne pouvaient tre simplement mis dans le fichier /etc/fstab habituel
  et ncessitaient des interventions chirurgicales dans les scripts de
  dmarrage.

  Les superblocs persistants rsolvent ces problmes. Lorsqu'une matrice
  est initialise avec l'option persistent-superblock dans le fichier
  /etc/raidtab, un superbloc de type particulier est crit au dbut 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 alatoire.

  On gardera quand mme cohrent le fichier /etc/raidtab puisqu'on peut
  en avoir besoin ultrieurement en cas de reconstruction de la matrice.
  Les superblocs persistants sont obligatoires si on souhaite bnficier
  de l'auto-dtection des priphriques RAID au dmarrage du systme.
  On se reportera  la section AAuuttooddtteeccttiioonn.



  44..88..  TTaaiillllee ddeess bbllooccss ((cchhuunnkk ssiizzee))

  Ce paramtre mrite quelques explications. On ne peut jamais crire de
  faon rigoureusement parallle 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
  mme disque, ceux de poids faible allant sur l'autre. Le matriel ne
  le permet pas. On dfinit donc de faon plus ou moins arbitraire une
  taille de bloc lmentaire qui correspondra  la plus petite quantit
  de donnes "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 troisime bloc de 4 ko vers le premier disque et celui du deuxime
  et du quatrime bloc vers le second disque pour une matrice RAID-0
  comportant deux disques. Pour de grosses critures, la consommation de
  ressources sera minimise par une taille de blocs importante tandis
  qu'une matrice compose essentiellement de petits fichiers profitera
  davantage d'une taille de blocs rduite.

  Ce paramtre peut tre spcifi pour tous les niveaux de RAID, mme le
  mode linaire o il n'a aucun effet.

  A vous de modifier ce paramtre, ainsi que la taille de blocs du
  systme de fichier, pour obtenir les meilleurs performances possibles.

  L'argument de l'option chunk-size dans le fichier /etc/raidtab prcise
  la taille en ko.


  44..88..11..  RRAAIIDD--00

  Les donnes 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
  donnes sur un systme muni de trois disques, la couche RAID crira
  simultanment 4 ko sur chacun des trois disques puis crira les 4 ko
  restant sur le disque 0.

  32 ko semble un bon point de dpart pour une majorit de matrices mais
  la valeur optimale dpend troitement du nombre de disques impliqus,
  du contenu du systme de fichiers et de divers autres facteurs. A vous
  d'exprimenter pour trouver la meilleure valeur.


  44..88..22..  RRAAIIDD--11

  Pour les critures le paramtre importe peu vu que les donnes doivent
  tre crites sur tous les disques. Cependant, pour les lectures, il
  fixe la quantit de donnes  lire en une fois depuis un disque. Tous
  les disques contenant la mme information, les lectures peuvent tre
  quilibres d'une faon similaire au RAID-0.


  44..88..33..  RRAAIIDD--44

  Lors d'une criture dans une matrice RAID-4, l'information de parit
  doit tre mise  jour sur le disque ddi. La taille de bloc spcifie
  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 calcule et chunk-size octets seront crits sur le disque
  de parit.

  Le paramte affecte les performances de la mme faon que pour le
  RAID-0 puisque les lectures fonctionnent de la mme faon.


  44..88..44..  RRAAIIDD--55

  Le paramtre a la mme 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
  particulires de mke2fs qui affectent les performances du RAID-5.



  44..99..  OOppttiioonnss ddee mmkkee22ffss

  L'option -R stride=nn permet  mke2fs d'optimiser l'emplacement des
  structures de contrle spcifiques  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 donnes conscutives
  rsideront sur un mme disque. Si on souhaite construire un systme de
  fichiers ext2 avec une taille de blocs de 4 ko, il y aura 8 blocs de
  donnes conscutifs dans un bloc du tableau. On fournit l'information
   mke2fs de la manire suivante  :

    mke2fs -b 4096 -R stride=8 /dev/md0



  Les performances du RAID-{4,5} dpendent fortement de cette option.
  Je ne suis pas sr 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 trs fortement sur les performances du
  systme de fichier. Ds que la taille de ce dernier dpasse quelques
  centaines de Mo, une taille de bloc de 4 ko est conseille ( moins
  que le systme de fichiers ne doivent stocker de trs nombreux petits
  fichiers).



  44..1100..  AAuuttooddtteeccttiioonn

  L'autodtection permet une reconnaissance automatique des
  priphriques par le noyau au dmarrage, jsute aprs l'identification
  des partitions usuelles.

  Requis  :

  1. La gestion de l'autodtection par le noyau.

  2. Les disques RAID doivent avoir t crs avec l'option de
     persistance des superblocs.

  3. Les partitions doivent tre de type 00xxFFDD  ( positionner avec
     fdisk).

  Remarque  : on vrifiera que la matrice RAID est arrte avant de
  changer le type des partitions (raidstop /dev/md0).

  En suivant les trois tapes prcdentes, l'autodtection devrait tre
  en place. Essayez de redmarrer. Une fois le systme initialis,
  /proc/mdstat doit confirmer que la matrice RAID fonctionne.

  Des messages semblables aux suivants apparaitront au dmarrage  :

   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'autodtection des partitions d'une matrice
  RAID-5 qui n'a pas t arrte correctement (la machine a plant).  La
  reconstruction a lieu spontanment. Le montage de l'unit est par
  faitement licite puisque la reconstruction est transparente et que
  toutes les donnes sont cohrentes (seule l'information de parit qui
  ne sert qu'en cas de dfaillance d'un disque est incohrente).

  Les priphriques reconnus automatiquement sont stopps de mme quand
  le systme s'arrte. 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 supprimes
  sans hsitation dans le cadre de matrices RAID qui ont recours 
  l'autodtection.



  44..1111..  DDmmaarrrraaggee ssuurr uunn ddiissqquuee RRAAIIDD

  Il existe plusieurs faons de mettre en place un systme qui monte
  directement sa partition racine depuis un priphrique 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 dernire version officielle de lilo (21) ne gre pas les disques
  RAID et le noyau ne peut donc pas tre charg au dmarrage depuis ce
  genre de priphriques. Il faudra donc que le rpertoire /boot rside
  sur un systme de fichier hors RAID. Afin d'tre sr que le systme
  dmarre quel que soit son tat, dupliquez une partition /boot
  similaire sur chaque disque. Le BIOS sera ainsi toujours capable de
  charger les donnes depuis, par exemple le premier disque disponible.
  Il faudra donc que le systme ne dmarre pas avec un disque
  dfectueux.

  Avec la RedHat 6.1 est fourni un patch pour lilo 21 qui permet
  d'accder  /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 modifie de lilo acceptera un argument du type
  boot=/dev/md0 dans le fichier /etc/lilo.conf et rendra chaque disque
  du mirroir utilisable au dnarrage.

  On peut galement avoir recours  une disquette de dmarrage.



  44..1122..  IInnssttaalllleerr llee ssyyssttmmee ddee ffiicchhiieerrss rraacciinnee ssuurr uunnee ccoouucchhee RRAAIIDD

  Deux mthodes sont fournies ci-dessous. A ma connaissance, aucune
  distribution ne permet l'installation sur un disque RAID et la mthode
  que je suggre suppose que vous installez d'abord le systme sur une
  partition normale avant de mouvoir les fichiers sur la matrice RAID
  une fois l'installation complte.


  44..1122..11..  PPrreemmiirree mmtthhooddee  ::

  On dispose d'un disque supplmentaire o on peut installer le systme.


    Installez un systme normal sur le disque supplmentaire.

    Mettez en place un noyau incluant les patches ncessaires pour le
     RAID et vrifiez que le systme s'initialise correctement avec ce
     noyau.  Il faudra veiller  ce que le support RAID soit ddaannss le
     noyau et non sous forme de modules.

    A prsent, configurez et crez la matrice RAID dont vous comptez
     vous servir en tant que racine. Il s'agit de la procdure standard
     telle que dcrite prcdemment dans le document.

    Redmarrez le systme afin de vrifier que la matrice est dtecte
     correctement (elle devrait en tout cas).

    Crez un systme 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 diffrentes faons de faire, par exemple  :

      cd /
      find . -xdev | cpio -pm /mnt/newroot



    modifiez le fichier /mnt/newroot/etc/fstab de faon  ce qu'il
     pointe vers le priphrique /dev/md? adquat pour la racine.

    Dmontez le rpertoire /boot courant et montez le  la place en
     /mnt/newroot/boot.


    Mettez  jour /mnt/newroot/etc/lilo.conf de faon  pointer vers le
     bon priphrique. Le priphrique de boot doit rester un disque
     normal (non-RAID) mais le disque racine doit pointer vers la
     matrice RAID. Ceci fait, excutez un

     lilo -r /mnt/newroot


  d'erreurs.

    Redmarrez le systme et admirez avec quel facilit tout se passe
     comme on le souhaite :o)

  Dans le cas de disques IDE, on spcifiera dans le BIOS les disques
  comme tant de type ``auto-detect'' pour que la machine puisse
  redmarrer mme si un disque manque.


  44..1122..22..  SSeeccoonnddee mmtthhooddee  ::

  Cette mthode ncessite 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 ffaauutt que la matrice soit au moins de type 1. L'ide consiste 
  installer le systme sur un disque marqu dfectueux du point de vue
  RAID puis  copier le systme sur la partie restante de la matrice
  RAID qui sera considre comme dgrade avant de rinsrer le disque
  d'installation et de dclencher sa resynchronisation.


    Installez un systme 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 !

    Rcuprez le noyau, le patch, les outils, etc... Redmarrez le
     systme avec le noyau qui est muni de la gestion RAID.

    Crez votre matrice en indiquant le disque qui occupe la racine
     actuelle comme failed-disk dans le fichier raidtab Ne mettez pas ce
     disque en premire position dans le fichier ou vous aurez du mal 
     dmarrer la matrice. Activez la matrice et mettez y un systme de
     fichiers.

    Redmarrez et vrifiez que la matrice RAID est correctement
     active.

    Copiez les fichiers de la racine et modifiez les fichiers systme
     du disque RAID de faon  ce qu'il se rfrence bien en tant que
     racine.

    Lorsque le systme dmarre correctement depuis le disque RAID,
     modifiez le fichier raidtab en emplaant la directive failed-disk
     par une directive raid-disk. Ajoutez  prsent ce disque  la
     matrice avec raidhotadd

    Le systme doit  prsent dmarrer depuis une matrice non-dgrade.



  44..1133..  DDmmaarrrreerr llee ssyyssttmmee ddeeppuuiiss llee RRAAIIDD

  Pour que le noyau soit capable de monter le systme de fichiers
  racine, les pilotes des priphriques ncessaires doivent tre
  prsents dans le noyau (NdT : ou chargs via un initrd qui peut
  galement contenir les modules RAID).

  La faon normale de procder consiste  compiler un noyau qui inclut
  en dur toutes les options RAID ncessaires (NdT : je proteste !).

  La redHat-6.0 tant fournie avec un noyau modulaire qui gre la
  nouvelle mouture du RAID, je vais cependant en dcrire l'emploi si on
  souhaite s'en servir pour dmarrer son systme depuis un volume RAID.


  44..1133..11..  DDmmaarrrraaggee aavveecc llee RRAAIIDD mmoodduullaarriiss

  Il faut prciser  lilo qu'il doit galement charger un quivalent de
  ramdisk en sus du noyau au dmarrage. La commande mkinitrd permet de
  crer un ramdisk (ici un initrd) contenant les modules ncessaires 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 adquat sera disponible au dmarrage
  lorsque le noyau devra monter la racine.



  44..1144..  MMiisseess eenn ggaarrddee

  Ne repartitionnez JJAAMMAAIISS un disque qui appartient  une matrice RAID.
  Si vous devez modifier la table des partitions d'un disque au sein
  d'une matrice, arrtez 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 contrleurs SCSI n'est susceptible d'amliorer les
  performances que si les bus dj prsents sont proches de la
  saturation. Vous ne tirerez rien de plus de deux contrleurs 2940 si
  vous n'avez que deux vieux disques SCSI qui ne satureraient mme pas
  un seul contrleur.

  Si vous omettez l'option de persistance des superblocs votre matrice
  ne redmarrera pas spontanment aprs un arrt. Reprenez la cration
  de la matrice avec l'option correctement positionne.

  Si la resynchronisation d'une matrice RAID-5 choue aprs qu'un disque
  ait t ot puis reinsr, l'ordre des disques dans le fichier raidtab
  est peut-tre le responsable. Essayez de dplacer la premire paire
  ``device ...'' et ``raid-disk ...'' en dbut de description de la
  matrice.

  La plupart des retours d'erreur observs sur la liste de diffusion
  linux-kernel proviennent de gens qui ont procd  des mlanges
  douteux entre les patches et les outils RAID. Si vous utilisez le RAID
  0.90, vrifiez que vous vous servez bien de la bonne version des
  utilitaires.



  55..  TTeesstt ddee llaa ccoouucchhee RRAAIIDD

  Si vous utilisez le RAID pour amliorer la tolrance aux pannes, vous
  voudrez surement tester votre installation afin de vrifier son
  fonctionnement. Comment simule-t-on donc une dfaillance ?

  En rsum, on ne peut pas  moins de titiller un disque au lance-
  flammes pour "simuler" une dfaillance. On ne peut pas prvoir ce qui
  va se passer en cas de perte d'un disque. Il pourrait trs bien
  verouiller lectriquement le bus et rendre tous les disques sur le bus
  inaccessibles.  Je n'ai nanmoins 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
  grer la situation avec lgance.  Heureusement, les choses se passent
  assez souvent ainsi.


  55..11..  DDffaaiillllaannccee dd''uunn ddiissqquuee

  Dbranchez le disque. Ceci n'est  faire qu'avec le systme hhoorrss--
  tteennssiioonn . Inutile de jouer les aventuriers de l'ajout/suppression 
  chaud pour vrifier que les donnes supportent bien la disparition
  d'un disque. Arrtez le systme, dbranchez le disque et redmarrez le
  de nouveau.

  Syslog et /proc/mdstat permettent de vrifier l'tat de la matrice.

  N'oubliez pas que vous ddeevveezz employer du RAID-{1,4,5} pour que la
  matrice soit capable de supporter la dfaillance d'un disque.  Les
  modes linaire et RAID-0 chouent compltement dans ce genre de
  situation.

  Une fois le disque rebranch (avec le courant arrt, merci), on
  ajoutera le ``nouveau'' disque au systme RAID avec la commande
  raidhotadd.


  55..22..  CCoorrrruuppttiioonn ddee ddoonnnneess

  Le RAID, qu'il soit matriel ou logiciel, suppose que si une criture
  ne renvoie pas une erreur, alors elle s'est droule normalement.
  Donc, si un diseue corrompt les donnes sans retourner d'erreur, les
  donnes _s_e_r_o_n_t corrompues. Bien que ce soit fortement improbable, on
  ne peut l'exclure et cela aura pour consquence la corruption du
  systme de fichiers.

  Le RAID ne peut rien faire face  ce genre de dfaillances et il n'a
  pas t prvu pour de toutes faons. Il est donc inutile de dclencher
  sciemment des corruptions de donnes (avec dd par exemple) pour
  vrifier 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 systme de fichiers soit dtruit.

  Il s'agit du fonctionnement normal du systme. Le RAID ne garantit pas
  l'intgrit des donnes. Il permet juste de les conserver si un disque
  tombe en panne (pourvu qu'on utilise un niveau de RAID suprieur ou
  gal  1).



  66..  RReeccoonnssttrruuccttiioonn

  Si vous avez lu le reste du document, vous devez dj avoir une bonne
  ide de la procdure  suivre pour la reconstruction d'une matrice
  dgrade. Pour rsumer  :

    Arrtez le systme.

    Remplacez le disque dfectueux.

    Redmarrez le systme.

    Utilisez raidhotadd /dev/mdX /dev/sdX  pour rinsrer le disque
     dans la matrice.

    Allez prendre un caf pendant que la reconstruction s'effectue.

     C'est tout.

  Enfin, c'est gnralement tout. Sauf si vous jouez de malchance et que
  le systme RAID est devenu inutilisable  cause de la dfaillance de
  plus de disques qu'il n'y en a de redondant. Ca risque de se produire
  si plusieurs disques rsident sur un mme 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 marqus comme dfectueux. Pour
  une matrice RAID5 o on peut utiliser un disque en secours, la perte
  de deux disques ou davantage risque de s'avrer fatale.

  La section suivante est tire d'une explication que m'a donne Martin
  Bene et prsente une mthode possible de rcupration dans le cas d'un
  scnario catastrophe tel que celui dcrit. 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.


  66..11..  RRaattttrraappaaggee dd''uunnee ddffaaiillllaannccee ddee pplluussiieeuurrss ddiissqquueess

  Scnario  :

    un contrleur rend l'me et bloque simultanment l'accs  deux
     disques ;

    tous les disques d'un mme bus SCSI sont bloqus  cause d'un mme
     disque dfectueux ;

    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 dsynchroniss et la
     matrice RAID refuse de s'initialiser.

  Une seule chose  faire  : recrire les superblocs RAID via mkraid
  --force.

  Pour que a marche, le fichier /etc/raidtab ; doit tre  jour. S'il
  ne correspond pas eexxaacctteemmeenntt  l'organisation des disques et  leur
  ordre, a ne marchera pas.

  Examinez la sortie de syslog produite lors de la tentative de
  dmarrage de la matrice, vous y releverez le compteur d'venements
  pour chaque superbloc. En gnral, il vaut mieux laisser de ct le
  disque avec le compteur le plus faible, c'est  dire le plus ancien.

  Si vous excutez mkraid sans la directive failed-disk, le thread de
  rcupration va se mettre  fonctionner immdiatement et commencer 
  reconstruire les blocs de parit - ce qui est surement un peu
  prmatur.

  Avec failed-disk, vous prciserez quels disques vous souhaitez voir
  actifs et essaierez peut-tre diffrentes combinaisons pour obtenir
  les meilleurs rsultats. Pendant la reconstruction, ne montez le
  systme de fichier qu'en lecture seule. J'ai t en contact avec deux
  personnes qui s'en sont sorties ainsi.



  77..  PPeerrffoorrmmaanncceess

  Cette partie offre quelques valuations de performances issues de
  tests de systmes 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 mmoire
  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 rel font la mme chose que
  bonnie et bien que ce genre de nombres soit agrable  regarder, il ne
  s'agit pas d'indicateurs de performances pour de vritables
  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 connects au contrleur U2W et le disque UW
  au contrleur UW.

  Avec ou sans RAID, il ne semble pas possible de tirer plus de 30 Mo/s
  du bus SCSI sur cette machine. Je souponne que cela vienne de la
  vtust de ce dernier et de la limitation de la bande passante de la
  mmoire (Nd : pardon ?).


  77..11..  RRAAIIDD--00

  LLeeccttuurree correspond  SSeeqquueennttiiaall bblloocckk iinnppuutt, et EEccrriittuurree  SSeeqquueennttiiaall
  bblloocckk oouuttppuutt. 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 faon  ne pas utiliser la queue de commands SCSI.


  A la lecture de ce tableau il semble que le paramtre chunk-size du
  RAID n'ait pas un impact important. Nanmoins, la taille de bloc pour
  ext2 a intrt  tre aussi leve que possible, soit 4 ko (i.e. la
  taille d'une page) avec une architecture IA32.


  77..22..  RRAAIIDD--00 aavveecc qquueeuuee ddee ccoommmmaannddeess SSCCSSII ((TTCCQQ))

  La queue de commandes est cette fois-ci active 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
  amliore les performances en criture mais la diffrence n'est pas
  norme.


  77..33..  RRAAIIDD--55

  On reprend les mmes 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 paramtres semblent jouer.



  77..44..  RRAAIIDD--1100

  On dsigne sous ce terme la mise en mirroir de disques concatns ou
  un RAID-1 au dessus d'un RAID-0. La taille de bloc est commune  tous
  les disques RAID. Je n'ai pas procd  des tests avec des tailles
  diffrentes 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).






  88..  RReemmeerrcciieemmeennttss

  Les personnes suivantes ont contribu  la cration de ce document  :

    Ingo Molnar

    Jim Warren

    Louis Mandelstam

    Allan Noah

    Yasunori Taniike

    Martin Bene

    Bennett Todd

    les abonns de la liste de diffusion Linux-RAID

    ceux que j'ai oubli, dsol :o)

  Envoyez vos remarques et suggestions  l'auteur de ce document. Il n'y
  a pas d'autre faon d'en amliorer la qualit.










































