navigation
Home
admin
|
Mondo
October 18th, 2016
|
| Table des matières |  |
Mondo Rescue, la sauvegarde sous Linux
Informations préliminaires
UBUNTU RHEL 5.5
Procédures de restauration
Notes
Scripts
Erreurs
Commentaires
| Mondo Rescue, la sauvegarde sous Linux |  |
Mondo Rescue est un logiciel permettant de sauvegarder à chaud des systèmes linux. Les sauvegardes peuvent seffectuer en local ou via NFS. Il permet de plus de créer un disque de boot, dédié au système (i.e. prenant en compte les caractéristiques du système), à partir duquel peut seffectuer la récupération.
Lobjectif est de refaire fonctionner (très) rapidement des machines après sinistre. on considère quon a du spare sauf pour les disques qui peuvent être différents (voire plus petits).
| Informations préliminaires |  |
« You see, even if you have trouble, you still have two hands and most of the tools you need lvchange, pvcreate, fdisk, mkraid, etc. to do it manually. After you have prepped and formatted your drives manually (if you have to), just run mondorestore again and say no when asked if you want to prep or format your drives. What could be easier? »
« Mondo uses afio as the backup engine; afio is a well-respected replacement for tar. »
« Mindi Linux creates a set of boot/root media images that will let you perform basic system maintenance on your Linux distro. »
| UBUNTU RHEL 5.5 |  |
Installation via les packages de votre distrib ou via le site http://www.mondorescue.org/downloads.shtml.
rpm -ivh mindi-busybox-1.7.3-1.rhel5.i386.rpm (ces commandes sont à adapter en fonction du système)
rpm -ivh mindi-2.0.7.5-1.rhel5.i386.rpm
rpm -ivh afio-2.4.7-1.i386.rpm
rpm -ivh buffer-1.19-1.i386.rpm
rpm -ivh mondo-2.2.9.4-1.rhel5.i386.rpm |
Faire le montage NFS (avec lip de la machine plutôt que son nom) puis
mondoarchive -OVNn nfs://172.xx:/sauvegardes -d /mercredi -I '/' -E '/sauvegardes /nosauv /perso' -p bruno-test-rhel5.5-V2 |
On récupère les logs :
cp /var/log/mondoarchive.log /sauvegardes/mercredi |
Limage du CD de recup est dispo dans /var/cache/mindi. On la récupère :
cp /var/cache/mindi/mondorescue.iso /sauvegardes/mercredi |
On récupère également différentes informations sur le système :
df -h > /sauvegardes/mercredi/df-h.log
pvscan > /sauvegardes/mercredi/lvm.log
vgscan >> /sauvegardes/mercredi/lvm.log
lvscan >> /sauvegardes/mercredi/lvm.log |
Notes 1 :
- le répertoire /mercredi doit exister
- « With -O, it backs up your filesystem to CD, tape, ISO images or NFS share. »
- « With -V, it verifies the backup against the live filesystem. »
- « -n mount : mount is the remote mount-point, e.g. nfs://192.168.1.3:/home/nfs for my file server. »
- « -d dir : Specify the backup device (CD/tape/USB) or directory (NFS/ISO). »
- « -p prefix : Use prefix to generate the name of your ISO images. »
- « -E dir : Exclusion dun répertoire (les répertoires sont sérarés par un blanc). »
- « -N : Exclude all mounted network filesystems. »
Note 2 : Il est indiqué ici http://www.mondorescue.org/docs/mondoarchive.8.html que les paramètres de l'option "-n" sont de la forme "nfs://"+IP+chemin.
Cela dépend des versions de mondoarchive et le message suivant est alors généré :
NFS share is not mounted. Please mount it. |
Solution : il faut enlever "nfs://".
Note 3 : tjs à propos du paramètre de l'option "-n" : il ne faut pas oublier le ":" après l'IP...
| Procédures de restauration |  |
« If you find that you cannot make your PC boot from the CD, take heart: the first backup media of each set contains disk images to give you the same functionality as this media (minus the archives, of course) on other boot media. »
Méthode 1 - Utilisation du CD mondorescue
Lors de la sauvegarde, un fichier .iso est généré dans /var/cache/mindi.
Le CD gravé à partir de ces données permet de booter et de
restaurer le système.
CTRL-ALT-F1 et faire le montage nfs
Choisir restauration interactive.
- Which remote share should I mount ?
-> IP_serveur_nfs:/répertoire
- protocol : nfs
- which directory within that mountpoint ?
-> machine-test
-> modif de la mountlist si nécessaire
[...]
-> bootloader : yes
-> initrd : no
: sur certains systèmes (par ex PE2950 qui ont une carte réseau
broadcom), ce CD ne permet pas d'avoir du réseau. La restauration
ne fonctionne donc pas...
On utilise alors la méthode 2.
Méthode 2 - Utilisation du CD Ubuntu 10.10
NB : méthode préférée !
Tester avec ubuntu 11.04 64 bits
- on boote avec ce CD et on utilise la distribe live.
On installe les packages mondorescue (mindi, mindi-busibox, mondo, afio, buffer qui ont été placés au préalable sur une clé USB)+ les packages gawk et nfs.client.
S'il y a des partitions LVM à restaurer, on installe le package lvm2. Il peut être nécessaire de taper la commande "modprobe dm-mod" pour que les commandes lvm soient fonctionnelles.
- on crée les partitions du système (classiques et LVM). Le fichier mondoarchive.log peut être utile puisque de nombreuses infos y ont été enregistrées (fstab entre autres).
- on fait tous les montages. Par exemple, dans /restore.
- on fait le montage nfs vers le serveur de sauvegardes
NB : Il est possible d'automatiser ces actions en utilisant des scripts créés dynamiquement lors de la sauvegarde.cf ci dessous #scripts.
- on tape mondorestore
- "Please enter path and directory"
-> 172.16.xxx:/sauvegardes
- protocol
-> nfs
- "Which remote share should I mount?"
-> 172.16.xxx:/sauvegardes
- "Which directory within that mountpoint?" // le répertoire dans lequel a été fait la sauvegarde
-> machine-test
[...]
- "Editing filelist"
-> selectionner les répertoires à récupérer (touche entrée pour les sélectionner, cela met une étoile devant)
- "Restore files to where?"
-> là où on a monté les file systems. ici dans /restore
- on peut lancer la restauration
Il est souvent nécessaire de réparer le grub.
cf ?doc=Linux#restauration_grub
Vers une machine ayant des partitions plus petites
Lorsque du LVM est utilisé et que le disque sur le nouveau système est plus petit que sur lancien, Mondorescue est perdu : il nest pas capable de construire des partitions LVM plus petites
=> on va créer les partitions à la main.
Procédure :
- Installation interactive
- mountlist : ok
- « are you sure you want to save your mountlist and continue ? » : yes
- « do you want to erase and partition your hard drives ? » : No
- « do you want to format your hard drives ? »
Avant de répondre « No » :
- CTRL-ALT-F2
- fdisk : création des partitions (partition LVM format 8e)
- mkfs.ext3
- pvcreate /dev/sda
- vgcreate VolGroup00 /dev/sda2
- lvcreate -L 6000 -r auto -n LogVol00 VolGroup00 //création dun volume de 6Go
- mkfs.ext3 /dev/VolGroup00/LogVol00
- mkswap
- CTRL-ALT-F1
on peut maintenant répondre « No » !
Ne pas oublier de regarder les logs
tail -f /var/log/mondorestore.log |
Lorsque le cd de mondo rescue ne permet pas davoir du réseau
(test uniquement : le CD de boot étant créé en fonction du matériel de la machine (notamment de la carte réseau), ce problème ne devrait pas exister).
- boot from a cd rescue
- montage NFS
- avec loop montage des fichiers .iso
- dans le répertoire archives, on a :
des fichiers filelist.* qui listent les fichiers contenus dans chaque archive
des fichiers *.afio.bz2 qui contiennent les fichiers.
afio -t 0.afio.bz2 : voir le contenu dune archive
afio -i 0.afio.bz2 : extraire une archive dans le répertoire courant
- les fichiers slices*.dat.bz2 sont les fichiers de grande taille.
La liste de ces fichiers est dans « archives/biggielist.txt ».
Pour récupérer ces fichiers à la main, il faut deziper ces fichiers,
supprimer le premier fichier (slice-xxxxx.0000.dat, qui contient entre autres,
le nom du fichier) puis concaténer les fichiers restant (avec cat).
Mes tentatives échouent :
pb de chroot avec cdrescue (chroot: cannot run command `/bin/zsh)
+
je me rends compte que lors de la restauration certains fichiers sont compressés.
par : /usr/bin/bash.z => il faut repasser un coup de gunzip
=>ca commence à faire bcp pour une restauration rapide
=> mieux vaut que le CD et loutil mondorestore fonctionnent
Vers une machine dans un autre réseau
Il suffit, avant de commencer à répondre aux questions de mondorestore, de faire un ifconfig
| Notes |  |
Note 1
Lors de la sauvegarde des 220 Go dun système, mondoarchive a planté et indiqué le message suivant :
Fatal error received Too many media. Use tape or net.
Solution : Lors dune sauvegarde sur un montage NFS, mondoarchive crée, par défaut, des fichiers de 650 Mo. Lorsquon sauvegarde de grandes quantités de données cela fait quelques fichiers
Lorsque le nombre de fichier est trop important (> à MAX_NOOF_MEDIA (?">, la sauvegarde plante. La solution est dutiliser le paramètre « -s » pour demander à mondoarchive de créer des fichiers plus gros :
mondoarchive -OVn nfs://172.xx:/sauvegardes -d /mercredi -E /sauvegardes -p bruno-test-rhel5.5-V2 -s 2048m
Dans lexemple ci-dessus, des fichiers de 2048 Mo sont créés.
Note 2
Pour limiter la compression et augmenter la rapidité de la sauvegarde, on peut rajouter les options -[0-9] et indiquer le niveau de compression. Exemple :
mondoarchive -OVn nfs://172.xx:/sauvegardes -d /mercredi -E /sauvegardes -p bruno-test-rhel5.5-V2 -s 2048m -2 |
Note 3
Lutilisation de nohup nest pas un luxe ! sans nohup, lorsque vous fermez votre terminal, vous killez le processus mondoarchive
Note 4
Loption -G propose dutiliser gzip plutôt que bzip2. On sait que bzip2 est puissant mais gourmand en puissance de calcul. Jai fait plusieurs tests qui nont pas valeur de règle puisque tout dépend des données que lon sauvegarde et compresse (ici, il sagit principalement de bases Oracle) mais ils sont quand même indicatifs.
Taille du système à sauvegarder : 220 G
Test 1 : bzip2 compression 0 (i.e. pas de compression)
commande : nohup mondoarchive -OVn nfs://172.xx:/sauvegardes -d /mercredi -E /sauvegardes -p bruno-test-rhel5.5-V2 -s 8g -0 |
résultat : Taille de la sauvegarde, 220 G en 3h25
Test 2 : bzip2 compression 1 (i.e. compression minimale)
commande : nohup mondoarchive -OVn nfs://172.xx:/sauvegardes -d /mercredi -E /sauvegardes -p bruno-test-rhel5.5-V2 -s 8g -1 |
résultat : Taille de la sauvegarde, 40 G en 14h30
Test 3 : gzip compression 2 (i.e. compression minimale)
commande : nohup mondoarchive -OVGn nfs://172.xx:/sauvegardes -d /mercredi -E /sauvegardes -p bruno-test-rhel5.5-V2 -s 8g -1 |
résultat : Taille de la sauvegarde, 47 G en 3h
Ce dernier test montre quavec gzip on peut allier rapidité de sauvegarde et limitation du volume des données => cest avec ces options que je ferai maintenant les sauvegardes des systèmes RHEL 5.5 dont je moccupe.
Note 5
Lister les fichiers sauvegardés :
mount -o loop fichier-sauvegarde.iso /mnt/mondosauv
gunzip -c /mnt/mondosauv/archives/filelist.full.gz |cat - |
| Scripts |  |
Ces scripts sont utilisés lors des procédures de restauration (cf #restauration).
Installation des packages
Script utilisé pour préparer le live système avant la restauration.
#!/bin/bash
echo export http_proxy=http://proxy:3128
export http_proxy=http://proxy:3128
echo apt-get install gawk nfs.client
apt-get install gawk nfs.client lvm2
# pour lvm2
modprobe dm-mod
echo "Mettre la clé contenant les packages mondo. ok ?"
read point
mount
echo "Point de montage de la clé : "
read point
echo dpkg -i $point/mondo/ubuntu10.10/afio_2.5-1_i386.deb $point/mondo/ubuntu10.10/buffer_1.19-10_i386.deb $point/mondo/ubuntu10.10/mindi-busybox_1.18.3-3_i386.deb $point/mondo/ubuntu10.10/mindi_2.0.7.8-1_i386.deb $point/mondo/ubuntu10.10/mondo_2.2.9.7-1_i386.deb
dpkg -i $point/mondo/ubuntu10.10/afio_2.5-1_i386.deb $point/mondo/ubuntu10.10/buffer_1.19-10_i386.deb$point/mondo/ubuntu10.10/mindi-busybox_1.18.3-3_i386.deb $point/mondo/ubuntu10.10/mindi_2.0.7.8-1_i386.deb $point/mondo/ubuntu10.10/mondo_2.2.9.7-1_i386.deb
|
Sauvegarde / Création des partitions
Script exécuté lors de la sauvegarde. Il sauvegarde les tables de partition et construit un script utilisé lors de la restauration et qui crée la table de partitions.
#!/bin/bash
fdisk -l > scripts_restauration_2_partitions.log
# sauvegarde des tables de partition
fdisk -l|grep Disk|awk '{print $2}'|awk -F: '{print "sfdisk -d "$1" > backup_"substr($1,length($1)-2,4)}'|sh
# préparation du script utilisant les sauvegardes créées ci-dessus et restaurant les tables
fdisk -l|grep Disk|awk '{print $2}'|awk -F: '{print "sfdisk "$1" < backup_"substr($1,length($1)-2,4)}' >> scripts_restauration_2_partitions
|
Sauvegarde / Création partitions LVM2
Script exécuté lors de la sauvegarde. Il construit un script utilisé lors de la restauration et qui crée les partitions LVM2.
#!/bin/bash
echo
echo preparation script creation FS LVM
echo
echo "Le fichier scripts_restauration_3_lvm2 sera écrasé. On continue ? (ctrl-c pour stopper)"
read reponse
#echo pvscan |grep -v Total|awk '{print "pvcreate "$2}'
pvscan |grep -v Total|awk '{print "pvcreate "$2}'
pvscan |grep -v Total|awk '{print "pvcreate "$2}' > scripts_restauration_3_lvm2
#echo pvscan |grep -v Total|awk '{print "vgcreate "$4" "$2}'
pvscan |grep -v Total|awk '{print "vgcreate "$4" "$2}'
pvscan |grep -v Total|awk '{print "vgcreate "$4" "$2}' >> scripts_restauration_3_lvm2
#echo lvdisplay -C|grep -v LV|awk '{print "lvcreate -L "$4" -n "$1" "$2}'
lvdisplay -C|grep -v LV|awk '{print "lvcreate -L "$4" -n "$1" "$2}'
lvdisplay -C|grep -v LV|awk '{print "lvcreate -L "$4" -n "$1" "$2}' >> scripts_restauration_3_lvm2
#echo mount|grep mapper|awk '{print "mkfs."$5" "$1}'
mount|grep mapper|awk '{print "mkfs."$5" "$1}'
mount|grep mapper|awk '{print "mkfs."$5" "$1}' >> scripts_restauration_3_lvm2
chmod 755 scripts_restauration_3_lvm2
echo
echo fichier scripts_restauration_3_lvm2 créé
echo
echo creation des logs - fichier scripts_restauration_3_lvm2.log
echo pvscan > scripts_restauration_3_lvm2.log
pvscan >> scripts_restauration_3_lvm2.log
echo vgscan >> scripts_restauration_3_lvm2.log
vgscan >> scripts_restauration_3_lvm2.log
echo lvscan >> scripts_restauration_3_lvm2.log
lvscan >> scripts_restauration_3_lvm2.log
echo
echo fichier scripts_restauration_3_lvm2.log créé
echo |
Montages
Script exécuté lors de la sauvegarde. Il construit un script utilisé lors de la restauration et qui monte les partitions.
#!/bin/bash
echo mkdir /restore > scripts_restauration_4_montages
mount|grep -v proc |grep -v sysfs |grep -v devpts |grep -v tmpfs |grep -v sunrpc |grep -v "type nfs"|awk '{print "mount "$1" /restore"$3}' >> scripts_resta
uration_4_montages
mount > scripts_restauration_4_montages.log |
| Erreurs |  |
Please insert nfs #12 and press enter
Lors d'une restauration via NFS, mondorestore bloque :
Please insert nfs #12 and press enter" |
Solution : faire le montage à la main de l'iso en question :
mount [...].iso -t iso9660 -o loop,ro /mnt/cdrom |
Note : on peut regarder /var/log/mondorestore.log et trouver un exemple de montage de fichier iso.
mondorestore : compression program bzip2 not found
Lors d'une restauration via NFS, mondorestore ne restaure pas tout le FS et dans le fichier mondorestore.log, on trouve :
compression program bzip2 not found |
Pour moi, le message d'erreur ne correspondant pas au problème : le FS destination était tout simplement plein...
|
|
Contact
|
|---|
Pour m'envoyer un mail, Pour me laisser un commentaire :richard.brunooo chez gmail.com |  |
|
|