<!doctype linuxdoc system>

<article>

<!-- Title information -->
<title>Petit guide Boot + Root + Raid + Lilo
<subtitle>Version française du petit guide <em>Raid logiciel mini-HOWTO</em>

<author>Michael Robinton, <url url="mailto:michael@bizsystems.com"
                                name="Michael@BizSystems.com">
<date>v1.04, 20 juillet 2000
<!--
//  7-20-00 update links to reflect move to regular howto directory
//  5-4-00 update links to reflect document name on LINUX DOC PROJECT

-->
<abstract>
Ce document permet la mise en place d'un système de fichiers raid en utilisant 
raidtools 0.90 pour obtenir un raid amorçable monté sur la racine en utilisant 
un lilo standard.

La conversion d'un disque conventionnel vers un raid1 ou un raid5 sans perdre 
les données présentes sur le disque est aussi traitée.
</abstract>

<!-- Table of contents -->
<toc>

<sect>Introduction

<p>
<sect1>Remerciements

<p>
Les sources d'information ci-dessous ont été écrites par 
 
Harald Nordgård-Hansen <tt/</<url url="mailto:hnh@bukharin.hiof.no"
                name="hnh@bukharin.hiof.no"><tt/>/ et on été postées à la liste de discussion
sur le raid dans un fichier lilo.conf commenté par Martin Bene <tt/</<url
url="mailto:mb@sime.com"
name="mb@sime.com"><tt/>/. Merci de leur contribution. 
J'ai essayé de mettre ces informations et le bénéfique 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 différents exemples de systèmes mis en place
afin de rendre le raid amorçable 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 compréhension du raid amorçable. 

<sect1>Bugs
<p>
Oui, je suis sûr qu'il y en a. Si vous êtes assez bons pour les signaler, je 
corrigerai le document. ;-)

<sect1>Notice sur le copyright 

<p>
Ce document a été écrit par Michael Robinton
<url url="mailto:michael@bizsystems.com" name="Michael@BizSystems.com">,
et est diffusé sous une licence copyleft GNU.


<p>
        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&nbsp;; et
        qu'une version non modifiée 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
        vérification de l'information diffusée 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, découlant de l'utilisation de
        l'information fournie dans ce document.

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

<sect>Ce dont vous avez besoin AVANT TOUTE CHOSE

<p>
Les programmes dont vous allez avoir besoin et la documentation qui répondra à la 
majeure partie des problèmes de configuration et d'utilisation d'un raid sont listés 
ci-dessous. Ayez l'obligeance de les lire attentivement.

<sect1>Logiciels requis

<p>
Il est préférable d'utiliser les versions les plus récentes de ces programmes.
<itemize>
<item>un noyau supportant le raid, initrd
<quote> J'ai utilisé <url name="linux-2.2.14"
 
        url="ftp://ftp.kernel.org/pub/linux/kernel/v2.2/">

 
        en provenance de www.kernel.org</quote>

<item><url name="ftp://ftp.kernel.org/pub/linux/daemons/raid/alpha/"
        url="ftp://ftp.kernel.org/pub/linux/daemons/raid/alpha/">
        les outils et le correctifs les plus récents compatibles avec les raid
        1, 4 et 5 modernes

<quote> J'ai utilisé <url name="http://people.redhat.com/mingo/raid-patches/"
url="http://people.redhat.com/mingo/raid-patches/raid-2.2.14-B1"></quote>
</itemize>


<sect1>Où se procurer une version à jour de ce document&nbsp;?
<p>
Cliquez ici pour voir la <url
url="ftp://ftp.bizsystems.net/pub/raid/Boot+Root+Raid+LILO.html"
name="dernière version de l'auteur"> de
ce document. Corrections et suggestions sont les bienvenues!

<p>
Boot Root Raid + LILO HOWTO
<p>
Disponible au format LaTeX (donc DVI et PostScript), texte brut,  et HTML.
<quote> <url
url="http://www.linuxdoc.org/HOWTO/Boot+Root+Raid+LILO.html"
        name=" http://www.linuxdoc.org/HOWTO/Boot+Root+Raid+LILO.html">
</quote>
Disponible en SGML et HTML.
<quote> <url url="ftp://ftp.bizsystems.net/pub/raid/"
        name="ftp.bizsystems.net/pub/raid/">
</quote>

<sect1>Documentation -- Lectures recommandées

<p>
<bf>Si vous prévoyez d'utiliser un raid 1 ou 5 par-dessus un raid 0 veuillez lire&nbsp;:</bf>

<quote><bf>/usr/src/linux/Documentation/initrd.txt</bf></quote>

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

<p>
et... <url name="Software-RAID-HOWTO.html"
        url="http://metalab.unc.edu/mdw/HOWTO/Software-RAID-HOWTO.html">

<sect1>Ressources sur le RAID

<p>
Adresses de listes de diffusion&nbsp;:
<itemize>
<item>Celle-ci paraît tranquille&nbsp;: <url name="majordomo@nuclecu.unam.mx"
        url="mailto:majordomo@nuclecu.unam.mx"><it> envoyer un message</it>

        <bf/s'inscrire sur raiddev/<p>
        envoyer un message sur&nbsp;: <url name="raiddev@nuclecu.unam.mx"
        url="mailto:raiddev@nuclecu.unam.mx">
<p>&nbsp;
<item>Développement Raid&nbsp;: <url name="majordomo@vger.rutgers.edu"
        url="mailto:majordomo@vger.rutgers.edu"><it> envoyer un message </it>
       <bf/s'inscrire sur linux-raid/<p>
        envoyez un courrier à&nbsp;: <url name="linux-raid@vger.rutgers.edu"
        url="mailto:linux-raid@vger.rutgers.edu">

        <it>(il semble que ce soit la liste la plus active)</it>
</itemize>


<sect>Raid amorçable

<p>
Je ne vais pas traiter les bases de l'installation d'un raid 0, 1 ou 5 sous
Linux, ceci a déjà été traité ailleurs. Le problème traité ici est la
mise en place sur une racine amorçable avec un LILO <bf/standard/. La
documentation fournie avec les sources LILO (pas les pages de manuel) et avec 
les outils raidtools-0.90, couvrent respectivement les détails du boot et des paramètres généraux 
 
de boot sur un raid.

<p>
Deux scénarios sont envisagés ici. La mise en place d'un raid amorçable
et la conversion d'un système de fichier non RAID en raid amorçable sans perte
de données

<sect1>Démarrage d'un RAID&nbsp;1 avec un LILO standard

<p>
Pour rendre les informations de démarrage redondantes et faciles à maintenir,
préparez un petit raid 1 et montez-le sous le répertoire <bf>/boot</bf> de votre
disque système. LILO ne connaît pas les périphériques 0x9?? et ne peut pas trouver
 
les informations au démarrage car le sous-système raid n'est pas encore actif.
L'astuce est que l'on peut donner à LILO les informations sur la géométrie des disques,
et, grâce à cela, LILO peut déterminer la position des informations dont il a besoin
pour charger le noyau, même si celles-ci sont sur la partition raid 1.
Cela vient du fait que la partition raid 1 a pour seule différence avec une partition standard
le super-bloc raid situé en fin de partition.
 
Le raid amorçable doit se situer sur les 1024 premiers mega-octets du disque. En théorie,
le début d'une partition raid peut se situer n'importe où dans les 1024 Mo, mais,
en pratique, je n'ai pas pu le vérifier dans la mesure où cela fonctionnait
seulement lorsque le raid commençait 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 système
avec le raid amorçable comme première partition. Je dispose  d'un raid à la racine
avec le raid 1 amorçable monté sous <bf>/boot</bf> avec des systèmes configurés 
comme suit&nbsp;: RAID&nbsp;1, RAID&nbsp;5, RAID&nbsp;10 & RAID&nbsp;1-10 ( 1 miroir + 1 raid0). 
Les disques n'ayant pas la même géométrie, la configuration de lilo n'est pas évidente.
Le dernier se voit attribuer une paire de fichiers lilo très spécifique car tous 
les disques ont des géométries différentes, cependant, les principes sont identiques 
pour le processus de lancement initial.
Les montages des racines RAID&nbsp;S 10 et RAID&nbsp;S 1-10 exigent l'utilisation
d'<it>initrd</it> pour monter la racine après le chargement du noyau.
Voyez les annexes pour le détail des fichiers de configuration pour tous ces 
exemples de systèmes.


<p>
Un ficher de configuration de LILO peut ressembler à ce qui suit&nbsp;:

<verb>
//# lilo.conf - suppose un disque inférieur à 1024 Mo
        boot = /dev/hda
        delay = 40               # pas nécessaire, mais bien utile
        vga = normal             # pas obligatoire
        image = /bzImage
        root = /dev/hda1
        read-only
        label = Linux
</verb>

<p>
Un fichier de configuration de LILO pour un raid peut ressembler à ce qui suit&nbsp;:

<verb>
# lilo.conf.hda - disque maître sur le contrôleur 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 maître sur le contrôleur 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
</verb>

# BIOS=line -- si votre BIOS est assez bien pensé (la plupart ne le sont pas) pour
détecter que le premier disque est absent ou n'a pas démarré et démarre sur le second disque,
ensuite, <bf>bios=81</bf> est l'entrée appropriée ici. Ceci est plus courant avec
les BIOS SCSI qu'avec les BIOS IDE. J'envisage simplement de replacer le disque
de manière à ce qu'il remplace le défunt lecteur C: au cas où il viendrait à tomber en
panne au démarrage.


<p>
Vous pouvez obtenir les information sur le disque grâce à fdisk avec la commande&nbsp;:

<verb>
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 DÉBUT de chaque partition
</verb>

<sect1>Explications détaillées de lilo.conf pour le démarrage sur un raid

<p>
Le fichier lilo.conf pour raid ci-dessous, est commenté en détails pour chaque entrée.

<verb>
# lilo.conf.hda - disque maître sur le contrôleur primaire
#       La localisation du point de montage /boot qui va être 
#       décrit ci-dessous comme contenant le noyau, la carte, et cætera.
#       notez que CE N'EST PAS la partition actuelle contenant l'image et
#       les informations de démarrage, mais le disque qui contient ce répertoire
#       Dans cet exemple, /dev/md1 est monté sous /dev/md0/boot
     disk=/dev/md0

#       Indique à LILO quel périphérique du BIOS utiliser pour amorcer le système, par ex. le disque C:
     bios=0x80

#       indique à LILO la géométrie du disque
#       c'est habituellement, mais pas toujours la géométrie
#       logique. Vérifiez le système de fichier /proc ou regardez
#       le message du noyau lors de la détection du disque
#       
     sectors=63
     heads=16
     cylinders=39770

#       Il existe une entrée permettant de duper LILO afin
#       qu'il reconnaisse l'ensemble raid 0x9?? et qu'il trouve
#       le DÉBUT du secteur d'amorçage. Pour voir ce à quoi
#       cette entrée sert réellement, lisez la documentation
#       incluse avec les sources de LILO.
#       Ce paramètre doit être différent de l'entrée disk= 
#       ci-dessus. Il peut correspondre à un autre périphérique mdx,
#       utilisé ou non et il ne doit pas forcément être celui qui contient
#       le répertoire /boot
#       
     partition=/dev/md1

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

#       Logiquement là où LILO va mettre les informations de démarrage
     map=/boot/map
     install=/boot/boot.b

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

#       Après cela, indications standard
#       la racine peut être un raid 1/4/5
     root=/dev/md0
     read-only
     label=LinuxRaid
</verb>

<sect>Passage d'un système non RAID à un raid 1/4/5

<p>
Le passage à partir d'un système non raid est une opération relativement
facile se composant des quelques étapes ci-dessous. La description est
destinée aux systèmes avec une partition de boot, une partition racine et
une partition d'échange


<verb>
ancien disque dans le système existant&nbsp;:

    /dev/hda1     boot, peut être dos+loadlin ou lilo
    /dev/hda2     root
    /dev/hda3     swap
</verb>
Nous allons ajouter un disque supplémentaire et convertir tout le système en raid&nbsp;1.
Vous pouvez aisément ajouter plusieurs disques et faire un raid 5 en utilisant le
même protocole.

<sect1>Étape 1 - Préparation d'un nouveau noyau

<p>
Téléchargez un noyau propre, raidtools-0.90 (ou une version plus récente), et
le correctif du noyau 0.90 pour le raid. 
<p>
Compilez et installez raidtools, et lisez la documentation.
<p>
Compilez et installez le noyau
de manière à ce qu'il supporte tous les types (0/1/4/5 ?) de raid que vous allez utiliser.
Assurez-vous de bien spécifier l'auto-démarrage des périphériques raid lors de la configuration du noyau.
Vérifiez si le noyau démarre 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

<sect1>Étape 2 - Mise en place de raidtab pour le nouveau raid

<p>
Le nouveau disque va être ajouté sur un contrôleur IDE en périphérique maître,
il devient ainsi /dev/hdc

<verb>

    /dev/hdc1     16&nbsp;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
</verb>

changez le type de partition pour /dev/hdc1 et /dev/hdc2 en &quot;fd&quot; pour
auto-démarrer le raid.
<p>
En utilisant le paramètre <bf/failed-disk/, créez un raidtab pour
la configuration raid désirée. Le disque endommagé doit être la dernière
entrée dans la table.
<p>
<verb>
# 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 opérationnel pour l'instant
device                  /dev/hda2
failed-disk             1

# md1 est le répertoire /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 défaillant
device                  /dev/hda1
failed-disk               1
</verb>

<sect1>Étape 3 - Créer, formater et paramétrer un raid


<p>
Créer le noeud md avec les commandes&nbsp;:
<verb>
    mkraid /dev/md0
    mkraid /dev/md1
</verb>

Les périphériques raid doivent être créés et lancés. L'examen de /proc/mdstat
montre les particularités du raid dans le noyau et les périphériques raid
lancés.
<p>
Formatez les partitions d'amorçage et la racine avec&nbsp;:
<verb>
    mke2fs /dev/md0
    mke2fs /dev/md1
</verb>
Montez la nouvelle partition racine à un endroit quelconque, puis créez le répertoire /boot, et
montez la partition d'amorçage.


<verb>
    mount /dev/md0 /mnt
    mkdir /mnt/boot
    mount /dev/md1 /mnt/boot
</verb>

<sect1>Étape 4 - Copie du système d'exploitation courant sur le nouveau périphérique raid

<p>

Quelques temps après...

<verb>
    cd /
    # préparez un script pour faire ce qui suit
    cp -a /bin /mnt
    cp -a /dev /mnt
    cp -a /etc /mnt
    cp -a (tous les répertoires sauf /mnt, /proc, et les montages NFS) /mnt
</verb>

Cette opération peut s'avérer ardue si vous avez monté ou lié d'autres disques 
sous votre racine. L'exemple ci-dessous prend en compte un système très simple.
Vous serez peut-être amené à modifier la procédure quelque part.

<sect1>Étape 5 - Testez votre nouveau RAID

<p>

Créez une disquette de démarrage et un rdev sur le noyau.

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

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

<verb>
  /dev/md0        /       ext2    defaults        1 1
  /dev/md1        /boot   ext2    defaults        1 1
</verb>

Démontez les partitions raid et amorcez à partir du nouveau système de fichiers pour vérifier son fonctionnement

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

</verb>

Votre système raid devrait maintenant être opérationnel en mode dégradé avec une disquette
de démarrage. Vérifiez bien que vous avez tout transféré sur le nouveau raid
car, si vous ratez votre coup ici, sans sauvegarde, VOUS ÊTES MORT !

<p>

Si quelque chose ne fonctionne pas, redémarrez votre ancien système, revenez en arrière
et recommencez jusqu'à ce que cette étape soit réussie, pour voir ce qui coince.

<sect1>Étape 6 - Intégration de l'ancien disque dans le raid

<p>

L'étape précédente étant réussie, votre raid est maintenant opérationnel,
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 géométries ne sont pas les mêmes, 
la taille de la partition sur l'ancien disque doit être au moins égale à la taille du raid
sinon ils ne peuvent pas être ajoutés.

<p>

Re-partitionnez l'ancien disque. Exemple&nbsp;:

<verb>
    /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...

</verb>

Changez le paramètre <bf/failed-disk/ dans le fichier raidtab en <bf/raid-disk/ et
insérez à chaud les nouvelles partitions (vieux disque) au raid.

<verb>
    raidhotadd /dev/md1 /dev/hda1
    raidhotadd /dev/md0 /dev/hda2
</verb>

L'examen de /proc/mdstat devrait nous indiquer un (ou plusieurs) périphériques raid
en reconstruisant les données pour les nouvelles partitions. Après une minute ou deux... 
ou plus, le raid devrait être totalement synchronisé (cela peut prendre pas mal de
temps pour une grande partition).

<p>
En utilisant la procédure des premières sections de ce document, préparez
un raid amorçable sur la nouvelle paire de disques. Conservez le démarrage par disquettes
tout pendant la mise au point et le test de cette dernière étape.

<sect>Annexe A - Exemple de fichier raidtab

<p>
Exemple de RAID&nbsp;1 décrit dans la première section de ce document

<verb>
 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&nbsp;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'amorçage (/boot), d'une taille d'environ 16&nbsp;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 
# périphérique contenant /boot
disk=/dev/md0
# geometry
  bios=0x80
  sectors=63
  heads=16
  cylinders=39770
# dummy
  partition=/dev/md1
# début 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 
# périphérique contenant /boot
disk=/dev/md0
# geometry
  bios=0x80
  sectors=63
  heads=16
  cylinders=39770
# dummy
  partition=/dev/md1
# début 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

</verb>

<sect>Annexe B - Mise en oeuvre RAID&nbsp;5 SCSI de référence

<p>
4 disques SCSI RAID&nbsp;5
<verb>
 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 dédié à 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 démarrage
#
raiddev /dev/md1
        raid-level      1
        nr-raid-disks   2
        persistent-superblock 1
        chunk-size      32

# Disque dédié à 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
# Périphérique contenant /boot
disk=/dev/md0
# geometry
  bios=0x80
  sectors=32
  heads=64
  cylinders=4095
# dummy
  partition=/dev/md1
# début 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
# Périphérique contenant /boot
disk=/dev/md0
# geometry
  bios=0x80
  sectors=32
  heads=64
  cylinders=4095 
# dummy
  partition=/dev/md1
# début 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
</verb>

<sect>Annexe C - RAID&nbsp;10 IDE avec initrd

<p>

RAID&nbsp;1 sur une paire de RAID&nbsp;0 découpés en bandes... les disques du RAID&nbsp;0 ne sont pas 
de la même taille, mais suffisamment proches.


<verb>
/dev/md0 est la partition /boot et est auto-démarrée par le noyau 
/dev/md1 et /dev/md3 sont les deux ensembles raid 0 auto-démarré par le noyau
/dev/md2 est la partition racine et est démarrée 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
#
############# début de 'linuxrc' ###############
#
# montage du système de fichiers proc
/bin/mount /proc

# départ 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 considérer /dev/md2 comme la partition /root
# La valeur 0x900 est le numéro de périphérique calculé avec&nbsp;:
# 256 * numéro majeur de périphérique + numéro mineur de périphérique
echo "/dev/md2 monté comme racine"
echo 0x902>/proc/sys/kernel/real-root-dev

//# umount /proc to deallocate initrd device ram space
# Démonte /proc pour désallouer 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
</verb>
<sect>Annexe D. - RAID&nbsp;1-10 ide avec initrd

<p>
Ceci est un système fait d'un assortiment de petites choses. Le raid monté
sur la racine est composé d'un RAID&nbsp;1 basé sur un ensemble RAID&nbsp;0 contenant
des disques de toutes tailles et une partition plus large. 
Un examen du fichier lilo.conf vous donnera un meilleur aperçu
sur la manière de raisonner sur les différents paramètres.

<verb>
/dev/md0 est la partition /boot et est amorcée par le noyau
/dev/md1 est une moitié du miroir md2, amorcée automatiquement par le noyau
/dev/hda3 est l'autre moitié du miroir md2
/dev/md2 est le RAID&nbsp;1 /dev/md1 + /dev/hda3, démarré 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
#
############# début de 'linuxrc' ###############
#
# montage du système de fichiers proc
/bin/mount /proc

# autostart /boot partition and raid0
# auto-démarrage de la partition /boot et du RAID&nbsp;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 numéro de périphérique calculé par&nbsp;:
#  256 * numéro majeur de périphérique + numéro mineur de périphérique
echo "/dev/md2 monté comme racine"
echo 0x902 > /proc/sys/kernel/real-root-dev

# démontage de /proc pour désallouer 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 
# périphérique contenant le répertoire /boot
disk=/dev/md2
# geométrie
  bios=0x80
  cylinders=903
  heads=8
  sectors=46
# géométrie pour le 2e disque
# le bios doit être le même car il doit être transféré sur hda
#  cylinders=762
#  heads=8
#  sectors=39

# dummy
  partition=/dev/md0
# début du périphérique « disque » ci-dessus
  start=46
# second périphérique
#  start=39

# il apparaît quelques problèmes 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
# périphérique contenant le répertoire /boot
disk=/dev/md2
# geometry
  bios=0x80
#  cylinders=903
#  heads=8
#  sectors=46
# géométrie du deuxième disque
# le bios doit être le même car il doit être transféré sur hda
  cylinders=762
  heads=8
  sectors=39

# dummy
  partition=/dev/md0
# début du périphérique "disk" ci-dessus
#  start=46
# deuxième périphérique
  start=39

# il peut y avoir quelques problèmes 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
</verb>

<sect>Traduction

<p>

Cette traduction a été réalisée par Julien Savary &lt;c POINT legranblon CHEZ tiscali POINT fr&gt; et
relue par Jean-Paul Aubry &lt;rigolom CHEZ yahoo POINT com POINT au&gt;.

La publication de ce document a été préparée par Jean-Philippe Guérard
&lt;fevrier CHEZ tigreraye POINT org&gt;.

</article>