<!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 ; 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 ?
<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 :</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 :
<itemize>
<item>Celle-ci paraît tranquille : <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 : <url name="raiddev@nuclecu.unam.mx"
url="mailto:raiddev@nuclecu.unam.mx">
<p>
<item>Développement Raid : <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 à : <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 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 : 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'<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 :
<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 :
<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 :
<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 :
/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 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 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 "fd" 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 :
<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 :
<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 :
<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 :
<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 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 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
</verb>
<sect>Annexe B - Mise en oeuvre RAID 5 SCSI de référence
<p>
4 disques SCSI RAID 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 10 IDE avec initrd
<p>
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.
<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 :
# 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 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 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.
<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 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
</verb>
<sect>Traduction
<p>
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>.
</article>