double disque

Table des matières


but

sur une machine serveur, en cas de crash disque ou de crash système qui imposerait une interruption de service pour réparer,
on veut pouvoir redémarrer très vite, par un simple reboot, quitte à réparer plus tard, au calme

solution

copie

la solution a été testée et adoptée sur les serveurs HPUX. il s'agit d'avoir 2 disques systèmes un monte, l'autre (une copie) prêt à servir au cas ou

un raid 1 n'est pas pas satisfaisant car un fichier crucial efface par erreur (exemple libc) le sera aussi sur l'autre ...
il faut donc une copie périodique (avec le logiciel rsync).

boot

il y a 2 solutions possibles :

lilo

avantages/inconvénients

lilo (linux loader) est le chargeur "standard" sous linux, relativement facile de configuration,
par contre, il n'est pas très souple : à chaque modification de noyau (de fichier), il faut réécrire le secteur de boot

autre avantage, il semble marcher quel que soit la configuration disque (ide, scsi, raid hard sur fuji/siemens, dell)

comment ça boot

le bios tente de lire le secteur de boot (MBR) du disque 1. sur celui-ci , lilo offre (au moins) 2 choix : (et vice versa pour le disque 2)

en cas de problème de MBR, on peut offrir une sécurité par un démarrage sur disquette (et renvoi sur les partitions disque dur)

grub

grub (GRand Unified Bootloader, projet GNU) sait lire une partition et est donc indépendant de l'emplacement physique des fichier

il marche bien sur des disques ide, mais je n'ai pas réussi à le faire marcher sur des cartes raid (dell et fujitsu) donc je laisse tomber pour l'instant cette solution

grub howto

pre-requis

2 disques identiques

algorithme

  1. donner en argument le disque source et le disque destination
  2. vérifications (existence des disques, cohérence ...)
  3. comparer les partitions des 2 disques
  4. si elles sont différentes
    1. recréer les partitions sur le disque destination à l'identique (sfdisk)
    2. formater les partitions (ext2, reiser, swap)
  5. pour chaque partition système présente dans le fstab et montée par défaut
    1. monter la partition destination
    2. recopier les données (rsync)
    3. dans le cas de la racine, modifier quelques fichiers après copie (/etc/fstab , /etc/lilo.conf) et lancer lilo sur le disque secours
    4. démonter

configuration

partie "copie"

  1. installer le logiciel rsync (attention la version de base est bugguée, prendre ma version sur addons)
  2. installer sur ~root/bin le script clonedd.sh
  3. tester la recopie par un lancement manuel
  4. automatiser la copie par cron (lien sur /etc/cron.daily weekly au choix)

partie "boot" version lilo

  1. créer un message d'accueil pour éviter les erreurs : par exemple pour un ide
    echo "boot sur le disque systeme /dev/hda de `hostname`" > /boot/message.txt
  2. ajouter dans le fichier /etc/lilo.conf la ligne message=/boot/message.txt
  3. ajouter dans le fichier /etc/lilo.conf un paragraphe pour renvoyer sur la MBR de l'autre disque système : par exemple pour un deuxième ide
    other=/dev/hdb
    label=autre_systeme
  4. refaire la MBR : lilo -v ; il peut y avoir des erreurs lors de la première écriture
  5. fabriquer une disquette de boot : depuis l'os du disque secours, utiliser la commande mkbootdisk

partie "boot" version grub (obsolète)

  1. fabriquer un fichier menu.lst à partir de l'exemple
  2. fabriquer une disquette de démarrage
    1. formatter la disquette : fdformat /dev/fd0
    2. créer un file systeme (dos) : mkfs -t msdos /dev/fd0
    3. monter la disquette : mount -t msdos /dev/fd0 /mnt/floppy
    4. créer l'arborescence nécessaire : mkdir -p /mnt/floppy/boot/grub
    5. copier les fichiers de boot : cp /boot/grub/* /mnt/floppy/boot/grub
    6. copier le menu fabrique : cp menu.lst /mnt/floppy/boot/grub
    7. démonter la disquette : umount /mnt/floppy
  3. la rendre bootable par grub: lancer grub
    1. root (fd0)
    2. setup (fd0)
    3. quit

exploitation

version lilo

pour changer de disque système :
  1. rebooter la machine
  2. au prompt de lilo, on affiche le disque courant de boot
  3. pour changer de disque, taper "autre_systeme"
en cas de gros crash (secteur de boot du disque 1 hs), il faut démarrer sur la disquette de boot qui lancera l'os du disque secours

version grub (obsolete)

pour changer de disque système :
  1. arrêter (si possible proprement) la machine
  2. booter sur la disquette
  3. choisir via l'interface graphique son mode de démarrage

configuration de menu.lst (obsolete)

syntaxe

exemple : syntaxe du menu.lst

conseils

exemple de menu.lst

# /boot/grub/menu.lst
# grub boot menu configuration

# general configuration:
timeout 10
default 0
fallback 2
fallback 4
color light-gray/blue red/light-gray

# boot stanzas follow
# each is implicitly numbered from 0
# in the order of appearance below

# (0) disque un (default boot):
title redhat 7.1 sur hda [/vmlinuz]
root (hd0,0)
kernel /vmlinuz root=/dev/hda9 ro

# (1) disque un - runlevel 1
title redhat 7.1 sur hda [/vmlinuz single]
root (hd0,0)
kernel /vmlinuz single root=/dev/hda9 ro

# (2) disque un old kernel
title redhat 7.1 sur hda [/vmlinuz.old]
root (hd0,0)
kernel /vmlinuz.old root=/dev/hda9 ro

# (3) disque deux
title redhat 7.1 sur hdd [/vmlinuz]
root (hd1,0)
kernel /vmlinuz root=/dev/hdd9 ro

# end file menu.lst

autres projets

je connais 2 autres projets qui font a peu près la même chose
version 0.40 du 15/07/2004
Eric Gerbier tux
documentation sous licence GNU Free Documentation License