Les sources d'information ci-dessous ont été écrites par 
 
Harald Nordgård-Hansen <
hnh@bukharin.hiof.no> et on été postées à la liste de discussion
sur le raid dans un fichier lilo.conf commenté par Martin Bene <
mb@sime.com>. 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. 
Oui, je suis sûr qu'il y en a. Si vous êtes assez bons pour les signaler, je corrigerai le document. ;-)
Ce document a été écrit par Michael Robinton 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 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.
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.
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.
Il est préférable d'utiliser les versions les plus récentes de ces programmes.
J'ai utilisé linux-2.2.14 en provenance de www.kernel.org
J'ai utilisé http://people.redhat.com/mingo/raid-patches/
Cliquez ici pour voir la dernière 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.
http://www.linuxdoc.org/HOWTO/Boot+Root+Raid+LILO.htmlDisponible en SGML et HTML.
ftp.bizsystems.net/pub/raid/
Si vous prévoyez 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... Software-RAID-HOWTO.html
Adresses de listes de diffusion :
envoyer un message sur : raiddev@nuclecu.unam.mx
envoyez un courrier à : linux-raid@vger.rutgers.edu (il semble que ce soit la liste la plus active)
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 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.
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
Pour rendre les informations de démarrage redondantes et faciles à maintenir, préparez un petit raid 1 et montez-le sous le répertoire /boot 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 /boot avec des systèmes configurés comme suit : RAID 1, RAID 5, RAID 10 & RAID 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 S 10 et RAID S 1-10 exigent l'utilisation d'initrd 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.
Un ficher de configuration de LILO peut ressembler à ce qui suit :
//# 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
Un fichier de configuration de LILO pour un raid peut ressembler à ce qui suit :
# 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
# 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, bios=81 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.
Vous pouvez obtenir les information sur le disque grâce à 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 DÉBUT de chaque partition
Le fichier lilo.conf pour raid ci-dessous, est commenté en détails pour chaque entrée.
# 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
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
ancien disque dans le système existant :
    /dev/hda1     boot, peut être dos+loadlin ou lilo
    /dev/hda2     root
    /dev/hda3     swap
Nous allons ajouter un disque supplémentaire et convertir tout le système en raid 1.
Vous pouvez aisément ajouter plusieurs disques et faire un raid 5 en utilisant le
même protocole.
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.
Compilez et installez raidtools, et lisez la documentation.
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
Le nouveau disque va être ajouté sur un contrôleur IDE en périphérique maître, 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-démarrer le raid.
En utilisant le paramètre 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.
# 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
Créer le noeud md avec les commandes :
    mkraid /dev/md0
    mkraid /dev/md1
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.
Formatez les partitions d'amorçage et la racine avec :
    mke2fs /dev/md0
    mke2fs /dev/md1
Montez la nouvelle partition racine à un endroit quelconque, puis créez le répertoire /boot, et
montez la partition d'amorçage.
    mount /dev/md0 /mnt
    mkdir /mnt/boot
    mount /dev/md1 /mnt/boot
Quelques temps après...
    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
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.
Créez une disquette de démarrage 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
Démontez les partitions raid et amorcez à partir du nouveau système de fichiers pour vérifier son fonctionnement
    umount /mnt/boot
    umount /mnt
    raidstop /dev/md0
    raidstop /dev/md1
    shutdown -r now
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 !
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.
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.
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 paramètre failed-disk dans le fichier raidtab en raid-disk et insérez à 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) 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).
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.
Exemple de RAID 1 décrit dans la première 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'amorçage (/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 # 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
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 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
RAID 1 sur une paire de RAID 0 découpés en bandes... les disques du RAID 0 ne sont pas de la même taille, mais suffisamment proches.
/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 :
# 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
Ceci est un système 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 aperçu sur la manière de raisonner sur les différents paramètres.
/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 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 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 :
#  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
Cette traduction a été réalisée 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é préparée par Jean-Philippe Guérard <fevrier CHEZ tigreraye POINT org>.