double disque
Table des matières
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
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 :
- les partitions systèmes de ce disque
- en secours, un renvoi sur la MBR du disque secours
(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
2 disques identiques
- donner en argument le disque source et le disque destination
- vérifications (existence des disques, cohérence ...)
- comparer les partitions des 2 disques
- si elles sont différentes
- recréer les partitions sur le disque destination à l'identique (sfdisk)
- formater les partitions (ext2, reiser, swap)
- pour chaque partition système présente dans le fstab et montée par défaut
- monter la partition destination
- recopier les données (rsync)
- dans le cas de la racine, modifier quelques fichiers après copie (/etc/fstab , /etc/lilo.conf) et lancer lilo sur le disque secours
- démonter
partie "copie"
- installer le logiciel rsync (attention la version de base est bugguée, prendre ma version sur addons)
- installer sur ~root/bin le script clonedd.sh
- tester la recopie par un lancement manuel
- automatiser la copie par cron (lien sur /etc/cron.daily weekly au choix)
partie "boot" version lilo
- 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
- ajouter dans le fichier /etc/lilo.conf la ligne message=/boot/message.txt
- 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
- refaire la MBR : lilo -v ; il peut y avoir des erreurs lors de la première écriture
- fabriquer une disquette de boot : depuis l'os du disque secours, utiliser la commande mkbootdisk
partie "boot" version grub (obsolète)
- fabriquer un fichier menu.lst à partir de l'exemple
- fabriquer une disquette de démarrage
- formatter la disquette : fdformat /dev/fd0
- créer un file systeme (dos) : mkfs -t msdos /dev/fd0
- monter la disquette : mount -t msdos /dev/fd0 /mnt/floppy
- créer l'arborescence nécessaire : mkdir -p /mnt/floppy/boot/grub
- copier les fichiers de boot : cp /boot/grub/* /mnt/floppy/boot/grub
- copier le menu fabrique : cp menu.lst /mnt/floppy/boot/grub
- démonter la disquette : umount /mnt/floppy
- la rendre bootable par grub: lancer grub
- root (fd0)
- setup (fd0)
- quit
version lilo
pour changer de disque système :
- rebooter la machine
- au prompt de lilo, on affiche le disque courant de boot
- 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 :
- arrêter (si possible proprement) la machine
- booter sur la disquette
- choisir via l'interface graphique son mode de démarrage
syntaxe
- grub prend en compte tous les disques (scsi, ide) sous la même dénomination : hd
- la numérotation des disques commence à 0
- la numérotation des partitions commence aussi à 0
exemple :
- /dev/hda1 se traduit par (hd0,0)
- /dev/sdc9 se traduit par (hd2,8)
syntaxe du menu.lst
- la ligne title definit ce qui sera affiche dans l'interface de boot
- la ligne root définit ou trouver le noyau, c'est-à-dire la partition /boot, en général (hd0,0)
- la ligne kernel précise le noyau à lancer ainsi que ses arguments, exemple : kernel /vmlinuz.old single root=/dev/hda9 ro
- /vmlinuz.old : noyau à lancer (chemin à partir de /boot)
- single : option de lancement pour demarrer en single user
- root=/dev/hda9 : partition racine linux
- ro : monter en read-only au démarrage
conseils
- on mettre au minimum 2 entrées : disque 1 et disque 2
- on peut aussi en profiter pour preconfigurer un boot en single user
- ou un boot sur un "ancien" noyau à condition de faire les liens adéquats
# /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
je connais 2 autres projets qui font a peu près la même chose
- rfs : un projet auquel je contribue de temps a autres
- backupDD : une solution bien expliquée
version 0.40 du 15/07/2004
Eric Gerbier
documentation sous licence GNU Free Documentation License