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