                     Petit guide Boot + Root + Raid + Lilo

Version franaise du petit guide Raid logiciel mini-HOWTO

Michael Robinton, [1]Michael@BizSystems.com

   v1.04, 20 juillet 2000

   --------------------------------------------------------------------------

   Ce document permet la mise en place d'un systme de fichiers raid en
   utilisant raidtools 0.90 pour obtenir un raid amorable mont sur la
   racine en utilisant un lilo standard. La conversion d'un disque
   conventionnel vers un raid1 ou un raid5 sans perdre les donnes prsentes
   sur le disque est aussi traite.

   --------------------------------------------------------------------------

1. Introduction

1.1 Remerciements

   Les sources d'information ci-dessous ont t crites par Harald
   Nordgrd-Hansen < [2]hnh@bukharin.hiof.no> et on t postes  la liste de
   discussion sur le raid dans un fichier lilo.conf comment par Martin Bene
   < [3]mb@sime.com>. Merci de leur contribution. J'ai essay de mettre ces
   informations et le bnfique travail de plusieurs autres personnes qui ont
   contribu  la liste de discussion sur le raid et le projet raid sous
   linux sous forme de recettes de cuisine, en incluant diffrents exemples
   de systmes mis en place afin de rendre le raid amorable facile 
   utiliser et  comprendre. Une section traite de la conversion d'un disque
   seul standard en un disque raid.  mon humble avis, la cl permettant la
   conversion est la comprhension du raid amorable.

1.2 Bugs

   Oui, je suis sr qu'il y en a. Si vous tes assez bons pour les signaler,
   je corrigerai le document. ;-)

1.3 Notice sur le copyright

   Ce document a t crit par Michael Robinton [4]Michael@BizSystems.com, et
   est diffus sous une licence copyleft GNU.

   Permission d'utiliser, de copier, de distribuer ce document pour tout
   usage, pourvu que le nom de l'auteur, de l'diteur et ce paragraphe
   apparaissent dans toutes les copies et documents de soutien ; et qu'une
   version non modifie de ce document soit librement disponible. Ce document
   est distribu dans le but de fournir une aide, mais SANS AUCUNE GARANTIE,
   ni expresse, ni implicite. Malgr tous les efforts de vrification de
   l'information diffuse dans ce document, les auteur, diteurs,
   responsables de maintenance et traducteurs n'assument aucune
   responsabilit concernant toutes les erreurs et tous les dommages, directs
   ou indirects, dcoulant de l'utilisation de l'information fournie dans ce
   document.

   Permission to use, copy, distribute this document for any purpose is
   hereby granted, provided that the author's / editor's name and this notice
   appear in all copies and/or supporting documents; and that an unmodified
   version of this document is made freely available. This document is
   distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY,
   either expressed or implied. While every effort has been taken to ensure
   the accuracy of the information documented herein, the author / editor /
   maintainer assumes NO RESPONSIBILITY for any errors, or for any damages,
   direct or consequential, as a result of the use of the information
   documented herein.

2. Ce dont vous avez besoin AVANT TOUTE CHOSE

   Les programmes dont vous allez avoir besoin et la documentation qui
   rpondra  la majeure partie des problmes de configuration et
   d'utilisation d'un raid sont lists ci-dessous. Ayez l'obligeance de les
   lire attentivement.

2.1 Logiciels requis

   Il est prfrable d'utiliser les versions les plus rcentes de ces
   programmes.

     * un noyau supportant le raid, initrd

         J'ai utilis [5]linux-2.2.14 en provenance de www.kernel.org

     * [6]ftp://ftp.kernel.org/pub/linux/daemons/raid/alpha/ les outils et le
       correctifs les plus rcents compatibles avec les raid 1, 4 et 5
       modernes

         J'ai utilis [7]http://people.redhat.com/mingo/raid-patches/

2.2 O se procurer une version  jour de ce document ?

   Cliquez ici pour voir la [8]dernire version de l'auteur de ce document.
   Corrections et suggestions sont les bienvenues!

   Boot Root Raid + LILO HOWTO

   Disponible au format LaTeX (donc DVI et PostScript), texte brut, et HTML.

     [9]http://www.linuxdoc.org/HOWTO/Boot+Root+Raid+LILO.html

   Disponible en SGML et HTML.

     [10]ftp.bizsystems.net/pub/raid/

2.3 Documentation -- Lectures recommandes

   Si vous prvoyez d'utiliser un raid 1 ou 5 par-dessus un raid 0 veuillez
   lire :

     /usr/src/linux/Documentation/initrd.txt

   ainsi que la documentation, et les pages de manuel fournies avec le
   package raidtools.

   et... [11]Software-RAID-HOWTO.html

2.4 Ressources sur le RAID

   Adresses de listes de diffusion :

     * Celle-ci parat tranquille : [12]majordomo@nuclecu.unam.mx envoyer un
       message s'inscrire sur raiddev

       envoyer un message sur : [13]raiddev@nuclecu.unam.mx



     * Dveloppement Raid : [14]majordomo@vger.rutgers.edu envoyer un message
       s'inscrire sur linux-raid

       envoyez un courrier  : [15]linux-raid@vger.rutgers.edu (il semble que
       ce soit la liste la plus active)

3. Raid amorable

   Je ne vais pas traiter les bases de l'installation d'un raid 0, 1 ou 5
   sous Linux, ceci a dj t trait ailleurs. Le problme trait ici est la
   mise en place sur une racine amorable avec un LILO standard. La
   documentation fournie avec les sources LILO (pas les pages de manuel) et
   avec les outils raidtools-0.90, couvrent respectivement les dtails du
   boot et des paramtres gnraux de boot sur un raid.

   Deux scnarios sont envisags ici. La mise en place d'un raid amorable et
   la conversion d'un systme de fichier non RAID en raid amorable sans
   perte de donnes

3.1 Dmarrage d'un RAID 1 avec un LILO standard

   Pour rendre les informations de dmarrage redondantes et faciles 
   maintenir, prparez un petit raid 1 et montez-le sous le rpertoire /boot
   de votre disque systme. LILO ne connat pas les priphriques 0x9?? et ne
   peut pas trouver les informations au dmarrage car le sous-systme raid
   n'est pas encore actif. L'astuce est que l'on peut donner  LILO les
   informations sur la gomtrie des disques, et, grce  cela, LILO peut
   dterminer la position des informations dont il a besoin pour charger le
   noyau, mme si celles-ci sont sur la partition raid 1. Cela vient du fait
   que la partition raid 1 a pour seule diffrence avec une partition
   standard le super-bloc raid situ en fin de partition. Le raid amorable
   doit se situer sur les 1024 premiers mega-octets du disque. En thorie, le
   dbut d'une partition raid peut se situer n'importe o dans les 1024 Mo,
   mais, en pratique, je n'ai pas pu le vrifier dans la mesure o cela
   fonctionnait seulement lorsque le raid commenait sur le premier bloc du
   disque. Ceci tant probablement d  une erreur de ma part, mais il
   n'tait pas opportun d'aller plus loin sur le moment. J'ai ensuite
   simplement configur mon systme avec le raid amorable comme premire
   partition. Je dispose d'un raid  la racine avec le raid 1 amorable mont
   sous /boot avec des systmes configurs comme suit : RAID 1, RAID 5,
   RAID 10 & RAID 1-10 ( 1 miroir + 1 raid0). Les disques n'ayant pas la mme
   gomtrie, la configuration de lilo n'est pas vidente. Le dernier se voit
   attribuer une paire de fichiers lilo trs spcifique car tous les disques
   ont des gomtries diffrentes, cependant, les principes sont identiques
   pour le processus de lancement initial. Les montages des racines RAID S 10
   et RAID S 1-10 exigent l'utilisation d'initrd pour monter la racine aprs
   le chargement du noyau. Voyez les annexes pour le dtail des fichiers de
   configuration pour tous ces exemples de systmes.

   Un ficher de configuration de LILO peut ressembler  ce qui suit :

 //# lilo.conf - suppose un disque infrieur  1024 Mo
         boot = /dev/hda
         delay = 40               # pas ncessaire, mais bien utile
         vga = normal             # pas obligatoire
         image = /bzImage
         root = /dev/hda1
         read-only
         label = Linux

   Un fichier de configuration de LILO pour un raid peut ressembler  ce qui
   suit :

 # lilo.conf.hda - disque matre sur le contrleur primaire
         disk=/dev/md0
         bios=0x80
         sectors=63
         heads=16
         cylinders=39770
         partition=/dev/md1
         start=63
         boot=/dev/hda
         map=/boot/map
         install=/boot/boot.b
         image=/boot/bzImage
         root=/dev/md0
         read-only
         label=LinuxRaid

 # ---------------------

 # lilo.conf.hdc - disque matre sur le contrleur secondaire
         disk=/dev/md0
         bios=0x80                # voir la note plus bas
         sectors=63
         heads=16
         cylinders=39770
         partition=/dev/md1
         start=63
         boot=/dev/hdc            # ceci est l'autre disque
         map=/boot/map
         install=/boot/boot.b
         image=/boot/bzImage
         root=/dev/md0
         read-only
         label=LinuxRaid

   # BIOS=line -- si votre BIOS est assez bien pens (la plupart ne le sont
   pas) pour dtecter que le premier disque est absent ou n'a pas dmarr et
   dmarre sur le second disque, ensuite, bios=81 est l'entre approprie
   ici. Ceci est plus courant avec les BIOS SCSI qu'avec les BIOS IDE.
   J'envisage simplement de replacer le disque de manire  ce qu'il remplace
   le dfunt lecteur C: au cas o il viendrait  tomber en panne au
   dmarrage.

   Vous pouvez obtenir les information sur le disque grce  fdisk avec la
   commande :

 fdisk -ul (petit L)
 fdisk -ul /dev/hda

 Disk /dev/hda: 16 heads, 63 sectors, 39770 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/hda1            63     33263     16600+  fd  Linux raid autodetect
 /dev/hda2         33264    443519    205128   82  Linux swap
 /dev/hda3        443520  40088159  19822320   fd  Linux raid autodetect

 * notez l'indication du DBUT de chaque partition

3.2 Explications dtailles de lilo.conf pour le dmarrage sur un raid

   Le fichier lilo.conf pour raid ci-dessous, est comment en dtails pour
   chaque entre.

 # lilo.conf.hda - disque matre sur le contrleur primaire
 #       La localisation du point de montage /boot qui va tre
 #       dcrit ci-dessous comme contenant le noyau, la carte, et ctera.
 #       notez que CE N'EST PAS la partition actuelle contenant l'image et
 #       les informations de dmarrage, mais le disque qui contient ce rpertoire
 #       Dans cet exemple, /dev/md1 est mont sous /dev/md0/boot
      disk=/dev/md0

 #       Indique  LILO quel priphrique du BIOS utiliser pour amorcer le systme, par ex. le disque C:
      bios=0x80

 #       indique  LILO la gomtrie du disque
 #       c'est habituellement, mais pas toujours la gomtrie
 #       logique. Vrifiez le systme de fichier /proc ou regardez
 #       le message du noyau lors de la dtection du disque
 #
      sectors=63
      heads=16
      cylinders=39770

 #       Il existe une entre permettant de duper LILO afin
 #       qu'il reconnaisse l'ensemble raid 0x9?? et qu'il trouve
 #       le DBUT du secteur d'amorage. Pour voir ce  quoi
 #       cette entre sert rellement, lisez la documentation
 #       incluse avec les sources de LILO.
 #       Ce paramtre doit tre diffrent de l'entre disk=
 #       ci-dessus. Il peut correspondre  un autre priphrique mdx,
 #       utilis ou non et il ne doit pas forcment tre celui qui contient
 #       le rpertoire /boot
 #
      partition=/dev/md1

 #       Le premier secteur de la partition contenant les informations de dmarrage
 #       Le disque sur lequel LILO va crire les informations de dmarrage
      boot=/dev/hda

 #       Logiquement l o LILO va mettre les informations de dmarrage
      map=/boot/map
      install=/boot/boot.b

 #       Logiquement l ou LILO va trouver l'image du noyau
      image=/boot/bzImage

 #       Aprs cela, indications standard
 #       la racine peut tre un raid 1/4/5
      root=/dev/md0
      read-only
      label=LinuxRaid

4. Passage d'un systme non RAID  un raid 1/4/5

   Le passage  partir d'un systme non raid est une opration relativement
   facile se composant des quelques tapes ci-dessous. La description est
   destine aux systmes avec une partition de boot, une partition racine et
   une partition d'change

 ancien disque dans le systme existant :

     /dev/hda1     boot, peut tre dos+loadlin ou lilo
     /dev/hda2     root
     /dev/hda3     swap

   Nous allons ajouter un disque supplmentaire et convertir tout le systme
   en raid 1. Vous pouvez aisment ajouter plusieurs disques et faire un raid
   5 en utilisant le mme protocole.

4.1 tape 1 - Prparation d'un nouveau noyau

   Tlchargez un noyau propre, raidtools-0.90 (ou une version plus rcente),
   et le correctif du noyau 0.90 pour le raid.

   Compilez et installez raidtools, et lisez la documentation.

   Compilez et installez le noyau de manire  ce qu'il supporte tous les
   types (0/1/4/5 ?) de raid que vous allez utiliser. Assurez-vous de bien
   spcifier l'auto-dmarrage des priphriques raid lors de la configuration
   du noyau. Vrifiez si le noyau dmarre bien et examinez /proc/mdstat pour
   voir si les types de raid que vous allez utiliser sont bien pris en charge
   par le nouveau noyau

4.2 tape 2 - Mise en place de raidtab pour le nouveau raid

   Le nouveau disque va tre ajout sur un contrleur IDE en priphrique
   matre, il devient ainsi /dev/hdc

     /dev/hdc1     16 Mo -- largement suffisant pour plusieurs images de noyau
     /dev/hdc2     presque tout le disque
     /dev/hdc3     un peu plus d'espace pour la partition d'change, si vous en avez
                   besoin, sinon, ajoutez le  hdc2

   changez le type de partition pour /dev/hdc1 et /dev/hdc2 en "fd" pour
   auto-dmarrer le raid.

   En utilisant le paramtre failed-disk, crez un raidtab pour la
   configuration raid dsire. Le disque endommag doit tre la dernire
   entre dans la table.

 # exemple de raidtab
 # md0 est le noeud racine
 raiddev                 /dev/md0
 raid-level              1
 nr-raid-disks           2
 chunk-size              32
 # disques de secours pour la reconstruction  chaud
 nr-spare-disks          0
 persistent-superblock   1
 device                  /dev/hdc2
 raid-disk               0
 # ceci est notre vieux disque, marqu comme non oprationnel pour l'instant
 device                  /dev/hda2
 failed-disk             1

 # md1 est le rpertoire /boot
 raiddev                 /dev/md1
 raid-level              1
 nr-raid-disks           2
 chunk-size              32
 # disques de secours pour la reconstruction  chaud
 nr-spare-disks          0
 persistent-superblock   1
 device                  /dev/hdc1
 raid-disk               0
 # le disque hda1 est marqu comme dfaillant
 device                  /dev/hda1
 failed-disk               1

4.3 tape 3 - Crer, formater et paramtrer un raid

   Crer le noeud md avec les commandes :

     mkraid /dev/md0
     mkraid /dev/md1

   Les priphriques raid doivent tre crs et lancs. L'examen de
   /proc/mdstat montre les particularits du raid dans le noyau et les
   priphriques raid lancs.

   Formatez les partitions d'amorage et la racine avec :

     mke2fs /dev/md0
     mke2fs /dev/md1

   Montez la nouvelle partition racine  un endroit quelconque, puis crez le
   rpertoire /boot, et montez la partition d'amorage.

     mount /dev/md0 /mnt
     mkdir /mnt/boot
     mount /dev/md1 /mnt/boot

4.4 tape 4 - Copie du systme d'exploitation courant sur le nouveau
priphrique raid

   Quelques temps aprs...

     cd /
     # prparez un script pour faire ce qui suit
     cp -a /bin /mnt
     cp -a /dev /mnt
     cp -a /etc /mnt
     cp -a (tous les rpertoires sauf /mnt, /proc, et les montages NFS) /mnt

   Cette opration peut s'avrer ardue si vous avez mont ou li d'autres
   disques sous votre racine. L'exemple ci-dessous prend en compte un systme
   trs simple. Vous serez peut-tre amen  modifier la procdure quelque
   part.

4.5 tape 5 - Testez votre nouveau RAID

   Crez une disquette de dmarrage et un rdev sur le noyau.

     dd if=kernal.image of=/dev/fd0 bs=2k
     rdev /dev/fd0 /dev/md0
     rdev -r /dev/fd0 0
     rdev -R /dev/fd0 1

   Modifiez le fichier fstab sur la partition raid pour affecter les nouveaux
   points de montage comme suit :

   /dev/md0        /       ext2    defaults        1 1
   /dev/md1        /boot   ext2    defaults        1 1

   Dmontez les partitions raid et amorcez  partir du nouveau systme de
   fichiers pour vrifier son fonctionnement

     umount /mnt/boot
     umount /mnt
     raidstop /dev/md0
     raidstop /dev/md1
     shutdown -r now

   Votre systme raid devrait maintenant tre oprationnel en mode dgrad
   avec une disquette de dmarrage. Vrifiez bien que vous avez tout
   transfr sur le nouveau raid car, si vous ratez votre coup ici, sans
   sauvegarde, VOUS TES MORT !

   Si quelque chose ne fonctionne pas, redmarrez votre ancien systme,
   revenez en arrire et recommencez jusqu' ce que cette tape soit russie,
   pour voir ce qui coince.

4.6 tape 6 - Intgration de l'ancien disque dans le raid

   L'tape prcdente tant russie, votre raid est maintenant oprationnel,
   mais, il n'est pas redondant. On doit maintenant re-partitionner le ou les
   vieux disques pour les ajouter au raid. Rappelez-vous que si les
   gomtries ne sont pas les mmes, la taille de la partition sur l'ancien
   disque doit tre au moins gale  la taille du raid sinon ils ne peuvent
   pas tre ajouts.

   Re-partitionnez l'ancien disque. Exemple :

     /dev/hda1     same or larger than /dev/hdc1
     /dev/hda2     same or larger than /dev/hdc2
     /dev/hda3     une petite place pour un swap ou je ne sais quoi...

   Changez le paramtre failed-disk dans le fichier raidtab en raid-disk et
   insrez  chaud les nouvelles partitions (vieux disque) au raid.

     raidhotadd /dev/md1 /dev/hda1
     raidhotadd /dev/md0 /dev/hda2

   L'examen de /proc/mdstat devrait nous indiquer un (ou plusieurs)
   priphriques raid en reconstruisant les donnes pour les nouvelles
   partitions. Aprs une minute ou deux... ou plus, le raid devrait tre
   totalement synchronis (cela peut prendre pas mal de temps pour une grande
   partition).

   En utilisant la procdure des premires sections de ce document, prparez
   un raid amorable sur la nouvelle paire de disques. Conservez le dmarrage
   par disquettes tout pendant la mise au point et le test de cette dernire
   tape.

5. Annexe A - Exemple de fichier raidtab

   Exemple de RAID 1 dcrit dans la premire section de ce document

  df
 Filesystem           1k-blocks      Used Available Use% Mounted on
 /dev/md0              19510780   1763188  16756484  10% /
 /dev/md1                 15860       984     14051   7% /boot

 # --------------------------

  fdisk -ul /dev/hda

 Disk /dev/hda: 16 heads, 63 sectors, 39770 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/hda1            63     33263     16600+  fd  Linux raid autodetect
 /dev/hda2         33264    443519    205128   83  Linux native
 /dev/hda3        443520  40088159  19822320   fd  Linux raid autodetect

 # --------------------------

  fdisk -ul /dev/hdc

 Disk /dev/hdc: 16 heads, 63 sectors, 39770 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/hdc1            63     33263     16600+  fd  Linux raid autodetect
 /dev/hdc2         33264    443519    205128   82  Linux swap
 /dev/hdc3        443520  40088159  19822320   fd  Linux raid autodetect

 # --------------------------

 # md0 est le premier ensemble de disques, d'environ 20 Go
 raiddev                 /dev/md0
 raid-level              1
 nr-raid-disks           2
 chunk-size              32
 # Disque disponible pour la reconstruction  chaud
 nr-spare-disks          0
 persistent-superblock   1
 device                  /dev/hda3
 raid-disk               0
 device                  /dev/hdc3
 raid-disk               1

 # md1 est l'ensemble de disques d'amorage (/boot), d'une taille d'environ 16 Mo
 raiddev                 /dev/md1
 raid-level              1
 nr-raid-disks           2
 chunk-size              32
 Disque pour la reconstruction  chaud
 nr-spare-disks          0
 persistent-superblock   1
 device                  /dev/hda1
 raid-disk               0
 device                  /dev/hdc1
 raid-disk               1

 # --------------------------

 # SECTION GLOBAL
 # priphrique contenant /boot
 disk=/dev/md0
 # geometry
   bios=0x80
   sectors=63
   heads=16
   cylinders=39770
 # dummy
   partition=/dev/md1
 # dbut du disque ci-dessus
   start=63

 boot=/dev/hda
 map=/boot/map
 install=/boot/boot.b

 image=/boot/bzImage
 root=/dev/md0
 label=LinuxRaid
 read-only

 # -------------------------

 # SECTION GLOBAL
 # priphrique contenant /boot
 disk=/dev/md0
 # geometry
   bios=0x80
   sectors=63
   heads=16
   cylinders=39770
 # dummy
   partition=/dev/md1
 # dbut du disque ci-dessus
   start=63

 boot=/dev/hdc
 map=/boot/map
 install=/boot/boot.b

 image=/boot/bzImage
 root=/dev/md0
 label=LinuxRaid
 read-only

6. Annexe B - Mise en oeuvre RAID 5 SCSI de rfrence

   4 disques SCSI RAID 5

  df
 Filesystem           1k-blocks      Used Available Use% Mounted on
 /dev/md0              11753770   2146076   9000678  19% /
 /dev/md1                 15739       885     14042   6% /boot

 # --------------------------

  fdisk -ul /dev/sda

 Disk /dev/sda: 64 heads, 32 sectors, 4095 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/sda1            32     32767     16368   fd  Linux raid autodetect
 /dev/sda2         32768    292863    130048    5  Extended
 /dev/sda3        292864   8386559   4046848   fd  Linux raid autodetect
 /dev/sda5         32800    260095    113648   82  Linux swap
 /dev/sda6        260128    292863     16368   83  Linux native - test

 # ------------------------

  fdisk -ul /dev/sdb

 Disk /dev/sdb: 64 heads, 32 sectors, 4095 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/sdb1            32     32767     16368   fd  Linux raid autodetect
 /dev/sdb2         32768    292863    130048    5  Extended
 /dev/sdb3        292864   8386559   4046848   fd  Linux raid autodetect
 /dev/sdb5         32800    260095    113648   82  Linux swap
 /dev/sdb6        260128    292863     16368   83  Linux native - test

 # ------------------------

 # fdisk -ul /dev/sdc

 Disk /dev/sdc: 64 heads, 32 sectors, 4095 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/sdc2            32    292863    146416    5  Extended
 /dev/sdc3        292864   8386559   4046848   fd  Linux raid autodetect
 /dev/sdc5            64    260095    130016   83  Linux native - development
 /dev/sdc6        260128    292863     16368   83  Linux native - test

 # ------------------------

  fdisk -ul /dev/sdd

 Disk /dev/sdd: 64 heads, 32 sectors, 4095 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/sdd2            32    292863    146416    5  Extended
 /dev/sdd3        292864   8386559   4046848   fd  Linux raid autodetect
 /dev/sdd5            64    260095    130016   83  Linux native - development
 /dev/sdd6        260128    292863     16368   83  Linux native - test

 # --------------------------

 # raidtab
 #
 raiddev /dev/md0
         raid-level      5
         nr-raid-disks   4
         persistent-superblock 1
         chunk-size      32

 # Disque ddi  la reconstruction  chaud
         nr-spare-disks  0
         device          /dev/sda3
         raid-disk       0
         device          /dev/sdb3
         raid-disk       1
         device          /dev/sdc3
         raid-disk       2
         device          /dev/sdd3
         raid-disk       3

 # partition de dmarrage
 #
 raiddev /dev/md1
         raid-level      1
         nr-raid-disks   2
         persistent-superblock 1
         chunk-size      32

 # Disque ddi  la reconstruction  chaud
         nr-spare-disks  0
         device          /dev/sda1
         raid-disk       0
         device          /dev/sdb1
         raid-disk       1

 # --------------------------

 # cat lilo.conf.sda
 # SECTION GLOBALE
 # Priphrique contenant /boot
 disk=/dev/md0
 # geometry
   bios=0x80
   sectors=32
   heads=64
   cylinders=4095
 # dummy
   partition=/dev/md1
 # dbut du disque ci-dessus
   start=32

 boot=/dev/sda
 map=/boot/map
 install=/boot/boot.b

 image=/boot/bzImage
 root=/dev/md0
 label=LinuxRaid
 read-only

 # ------------------------
 # cat lilo.conf.sdb
 # SECTION GLOBALE
 # Priphrique contenant /boot
 disk=/dev/md0
 # geometry
   bios=0x80
   sectors=32
   heads=64
   cylinders=4095
 # dummy
   partition=/dev/md1
 # dbut du disque ci-dessus
   start=32

 boot=/dev/sdb
 map=/boot/map
 install=/boot/boot.b

 image=/boot/bzImage
 root=/dev/md0
 label=LinuxRaid
 read-only

7. Annexe C - RAID 10 IDE avec initrd

   RAID 1 sur une paire de RAID 0 dcoups en bandes... les disques du RAID 0
   ne sont pas de la mme taille, mais suffisamment proches.

 /dev/md0 est la partition /boot et est auto-dmarre par le noyau
 /dev/md1 et /dev/md3 sont les deux ensembles raid 0 auto-dmarr par le noyau
 /dev/md2 est la partition racine et est dmarre par initrd

 df
 Filesystem           1k-blocks      Used Available Use% Mounted on
 /dev/md2                118531     76485     35925  68% /
 /dev/md0                  1917      1361       457  75% /boot

 # ----------------------------

  fdisk -ul /dev/hda

 Disk /dev/hda: 4 heads, 46 sectors, 903 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/hda1            46      4231      2093   fd  Linux raid autodetect
 /dev/hda2          4232    166151     80960   fd  Linux raid autodetect

 # ----------------------------

  fdisk -ul /dev/hdb

 Disk /dev/hdb: 5 heads, 17 sectors, 981 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/hdb1            17     83384     41684   fd  Linux raid autodetect

 # ----------------------------

  fdisk -ul /dev/hdc

 Disk /dev/hdc: 7 heads, 17 sectors, 1024 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/hdc1            17     84013     41998+  fd  Linux raid autodetect
 /dev/hdc2         84014    121855     18921   82  Linux swap

 # ----------------------------

  fdisk -ul /dev/hdd

 Disk /dev/hdd: 4 heads, 46 sectors, 903 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/hdd1            46      4231      2093   fd  Linux raid autodetect
 /dev/hdd2          4232    166151     80960   fd  Linux raid autodetect

 # ----------------------------

 # raidtab
 #
 raiddev /dev/md0
         raid-level      1
         nr-raid-disks   2
         persistent-superblock   1
         chunk-size      8
         device          /dev/hda1
         raid-disk       0
         device          /dev/hdd1
         raid-disk       1

 raiddev /dev/md1
         raid-level      0
         nr-raid-disks   2
         persistent-superblock   1
         chunk-size      8
         device          /dev/hdd2
         raid-disk       0
         device          /dev/hdb1
         raid-disk       1

 raiddev /dev/md2
         raid-level      1
         nr-raid-disks   2
         persistent-superblock   1
         chunk-size      8
         device          /dev/md1
         raid-disk       0
         device          /dev/md3
         raid-disk       1

 raiddev /dev/md3
         raid-level      0
         nr-raid-disks   2
         persistent-superblock   1
         chunk-size      8
         device          /dev/hda2
         raid-disk       0
         device          /dev/hdc1
         raid-disk       1

 # ----------------------------

 contenu de linuxrc

 #cat linuxrc
 #!/bin/sh
 # ver 1.02 2-22-00
 #
 ############# dbut de 'linuxrc' ###############
 #
 # montage du systme de fichiers proc
 /bin/mount /proc

 # dpart d'un raid 1 fait de raid 0
 /bin/raidstart /dev/md2

 # indique par la console ce qui se passe
 /bin/cat /proc/mdstat

 # Tout va bien, laissons le noyau monter /dev/md2
 # Indique au noyau de considrer /dev/md2 comme la partition /root
 # La valeur 0x900 est le numro de priphrique calcul avec :
 # 256 * numro majeur de priphrique + numro mineur de priphrique
 echo "/dev/md2 mont comme racine"
 echo 0x902>/proc/sys/kernel/real-root-dev

 //# umount /proc to deallocate initrd device ram space
 # Dmonte /proc pour dsallouer le disque virtuel (ramdisk) utilis par initrd
 /bin/umount /proc
 exit

 # ----------------------------

 //contenus de initrd

 ./bin/ash
 ./bin/echo
 ./bin/raidstart
 ./bin/mount
 ./bin/umount
 ./bin/cat
 ./bin/sh
 ./dev/tty1
 ./dev/md0
 ./dev/md1
 ./dev/md2
 ./dev/md3
 ./dev/md4
 ./dev/console
 ./dev/hda
 ./dev/hda1
 ./dev/hda2
 ./dev/hda3
 ./dev/hdb
 ./dev/hdb1
 ./dev/hdb2
 ./dev/hdb3
 ./dev/hdc
 ./dev/hdc1
 ./dev/hdc2
 ./dev/hdc3
 ./dev/hdd
 ./dev/hdd1
 ./dev/hdd2
 ./dev/hdd3
 ./dev/initrd
 ./dev/ram0
 ./dev/ram1
 ./dev/ram2
 ./dev/ram3
 ./dev/ram4
 ./dev/ram5
 ./dev/ram6
 ./dev/ram7
 ./etc/raidtab
 ./etc/fstab
 ./lib/ld-2.1.2.so
 ./lib/ld-linux.so.1
 ./lib/ld-linux.so.1.9.9
 ./lib/ld-linux.so.2
 ./lib/ld.so
 ./lib/libc-2.1.2.so
 ./lib/libc.so.6
 ./linuxrc
 ./proc

8. Annexe D. - RAID 1-10 ide avec initrd

   Ceci est un systme fait d'un assortiment de petites choses. Le raid mont
   sur la racine est compos d'un RAID 1 bas sur un ensemble RAID 0
   contenant des disques de toutes tailles et une partition plus large. Un
   examen du fichier lilo.conf vous donnera un meilleur aperu sur la manire
   de raisonner sur les diffrents paramtres.

 /dev/md0 est la partition /boot et est amorce par le noyau
 /dev/md1 est une moiti du miroir md2, amorce automatiquement par le noyau
 /dev/hda3 est l'autre moiti du miroir md2
 /dev/md2 est le RAID 1 /dev/md1 + /dev/hda3, dmarr par initrd

 df
 Filesystem           1k-blocks      Used Available Use% Mounted on
 /dev/md2                138381     74421     56815  57% /
 /dev/md0                  2011      1360       549  71% /boot

 # ----------------------------

  fdisk -ul /dev/hda

 Disk /dev/hda: 8 heads, 46 sectors, 903 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/hda1            46      4415      2185   fd  Linux raid autodetect
 /dev/hda2          4416     43423     19504   82  Linux swap
 /dev/hda3         43424    332303    144440   83  Linux native

 # ----------------------------

  fdisk -ul /dev/hdc

 Disk /dev/hdc: 8 heads, 39 sectors, 762 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/hdc1            39      4367      2164+  fd  Linux raid autodetect
 /dev/hdc2          4368     70199     32916   82  Linux swap
 /dev/hdc3         70200    237743     83772   fd  Linux raid autodetect

 # ----------------------------

  fdisk -ul /dev/hdd

 Disk /dev/hdd: 4 heads, 39 sectors, 762 cylinders
 Units = sectors of 1 * 512 bytes

    Device Boot    Start       End    Blocks   Id  System
 /dev/hdd1            39    118871     59416+  fd  Linux raid autodetect

 # ----------------------------

 # raidtab
 #
 raiddev /dev/md0
         raid-level      1
         nr-raid-disks   2
         persistent-superblock   1
         chunk-size      8
         device          /dev/hdc1
         raid-disk       1
         device          /dev/hda1
         raid-disk       0

 raiddev /dev/md1
         raid-level      0
         nr-raid-disks   2
         persistent-superblock   1
         chunk-size      8
         device          /dev/hdc3
         raid-disk       0
         device          /dev/hdd1
         raid-disk       1

 raiddev /dev/md2
         raid-level      1
         nr-raid-disks   2
         persistent-superblock   1
         chunk-size      8
         device          /dev/md1
         raid-disk       1
         device          /dev/hda3
         raid-disk       0

 # ----------------------------

  cat linuxrc
 #!/bin/sh
 # ver 1.02 2-22-00
 #
 ############# dbut de 'linuxrc' ###############
 #
 # montage du systme de fichiers proc
 /bin/mount /proc

 # autostart /boot partition and raid0
 # auto-dmarrage de la partition /boot et du RAID 0
 /bin/raidstart /dev/md2

 # Renvoit sur la console ce qui se passe
 /bin/cat /proc/mdstat

 # Tout va bien, laissons le noyau monter /dev/md2
 # On indique au noyau de monter /dev/md2 sur la racine
 # La valeur 0x900 est le numro de priphrique calcul par :
 #  256 * numro majeur de priphrique + numro mineur de priphrique
 echo "/dev/md2 mont comme racine"
 echo 0x902 > /proc/sys/kernel/real-root-dev

 # dmontage de /proc pour dsallouer le ramdisk utilis par initrd
 /bin/umount /proc
 exit

 # ----------------------------

 contenu de initrd.gz

 ./bin
 ./bin/ash
 ./bin/echo
 ./bin/raidstart
 ./bin/mount
 ./bin/umount
 ./bin/cat
 ./bin/sh
 ./dev/tty1
 ./dev/md0
 ./dev/md1
 ./dev/md2
 ./dev/md3
 ./dev/console
 ./dev/hda
 ./dev/hda1
 ./dev/hda2
 ./dev/hda3
 ./dev/hdc
 ./dev/hdc1
 ./dev/hdc2
 ./dev/hdc3
 ./dev/hdd
 ./dev/hdd1
 ./dev/hdd2
 ./dev/hdd3
 ./dev/initrd
 ./dev/ram0
 ./dev/ram1
 ./dev/ram2
 ./dev/ram3
 ./dev/ram4
 ./dev/ram5
 ./dev/ram6
 ./dev/ram7
 ./etc/raidtab
 ./etc/fstab
 ./lib/ld-2.1.2.so
 ./lib/ld-linux.so.1
 ./lib/ld-linux.so.1.9.9
 ./lib/ld-linux.so.2
 ./lib/ld.so
 ./lib/libc-2.1.2.so
 ./lib/libc.so.6
 ./linuxrc
 ./proc

 # ----------------------------

  cat lilo.conf.hda
 # SECTION GLOBALE
 # priphrique contenant le rpertoire /boot
 disk=/dev/md2
 # geomtrie
   bios=0x80
   cylinders=903
   heads=8
   sectors=46
 # gomtrie pour le 2e disque
 # le bios doit tre le mme car il doit tre transfr sur hda
 #  cylinders=762
 #  heads=8
 #  sectors=39

 # dummy
   partition=/dev/md0
 # dbut du priphrique **disque** ci-dessus
   start=46
 # second priphrique
 #  start=39

 # il apparat quelques problmes avec le noyau 2.2.14
 # pour l'attribution de la bonne IRQ
   append = "ide1=0x170,0x376,12 ether=10,0x300,eth0 ether=5,0x320,eth1"

 boot=/dev/hda
 map=/boot/map
 install=/boot/boot.b

 initrd=/boot/initrd.gz

 image=/boot/zImage
 root=/dev/md2
 label=LinuxRaid
 read-only

 # ----------------------------

  cat lilo.conf.hdc
 # SECTION GLOBALE
 # priphrique contenant le rpertoire /boot
 disk=/dev/md2
 # geometry
   bios=0x80
 #  cylinders=903
 #  heads=8
 #  sectors=46
 # gomtrie du deuxime disque
 # le bios doit tre le mme car il doit tre transfr sur hda
   cylinders=762
   heads=8
   sectors=39

 # dummy
   partition=/dev/md0
 # dbut du priphrique "disk" ci-dessus
 #  start=46
 # deuxime priphrique
   start=39

 # il peut y avoir quelques problmes avec le noyau 2.2.14 pour l'attribution de la bonne IRQ
   append = "ide1=0x170,0x376,12 ether=10,0x300,eth0 ether=5,0x320,eth1"

 boot=/dev/hdc
 map=/boot/map
 install=/boot/boot.b

 initrd=/boot/initrd.gz

 image=/boot/zImage
 root=/dev/md2
 label=LinuxRaid
 read-only

9. Traduction

   Cette traduction a t ralise par Julien Savary <c POINT legranblon CHEZ
   tiscali POINT fr> et relue par Jean-Paul Aubry <rigolom CHEZ yahoo POINT
   com POINT au>.

   La publication de ce document a t prpare par Jean-Philippe Gurard
   <fevrier CHEZ tigreraye POINT org>.

References

   Visible links
   1. mailto:michael@bizsystems.com
   2. mailto:hnh@bukharin.hiof.no
   3. mailto:mb@sime.com
   4. mailto:michael@bizsystems.com
   5. ftp://ftp.kernel.org/pub/linux/kernel/v2.2/
   6. ftp://ftp.kernel.org/pub/linux/daemons/raid/alpha/
   7. http://people.redhat.com/mingo/raid-patches/raid-2.2.14-B1
   8. ftp://ftp.bizsystems.net/pub/raid/Boot+Root+Raid+LILO.html
   9. http://www.linuxdoc.org/HOWTO/Boot+Root+Raid+LILO.html
  10. ftp://ftp.bizsystems.net/pub/raid/
  11. http://metalab.unc.edu/mdw/HOWTO/Software-RAID-HOWTO.html
  12. mailto:majordomo@nuclecu.unam.mx
  13. mailto:raiddev@nuclecu.unam.mx
  14. mailto:majordomo@vger.rutgers.edu
  15. mailto:linux-raid@vger.rutgers.edu
