Richard Bruno
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 s’effectuer 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 s’effectuer la récupération.
L’objectif est de refaire fonctionner (très) rapidement des machines après sinistre. on considère qu’on 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 l’ip 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


L’image 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 d’un 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 l’ancien, Mondorescue est perdu : il n’est 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 d’un 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 d’avoir 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 d’une 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 l’outil 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 d’un système, mondoarchive a planté et indiqué le message suivant :
Fatal error received – ‘Too many media. Use tape or net.’
Solution : Lors d’une sauvegarde sur un montage NFS, mondoarchive crée, par défaut, des fichiers de 650 Mo. Lorsqu’on 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 d’utiliser 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 l’exemple 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

L’utilisation de nohup n’est pas un luxe ! sans nohup, lorsque vous fermez votre terminal, vous killez le processus mondoarchive…
Note 4

L’option -G propose d’utiliser gzip plutôt que bzip2. On sait que bzip2 est puissant mais gourmand en puissance de calcul. J’ai fait plusieurs tests qui n’ont pas valeur de règle puisque tout dépend des données que l’on sauvegarde et compresse (ici, il s’agit 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 qu’avec gzip on peut allier rapidité de sauvegarde et limitation du volume des données => c’est avec ces options que je ferai maintenant les sauvegardes des systèmes RHEL 5.5 dont je m’occupe.

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...


Dernières modifs
Systemd (October 24th, 2020)
TP - rsyslogd (June 20th, 2017)
Gestion de la memoire (June 20th, 2017)
Ansible (November 10th, 2016)
Fichiers et systèmes de fichiers (November 8th, 2016)
X (October 20th, 2016)
Obtenir des informations sur le système (October 19th, 2016)

Contact
Pour m'envoyer un mail,
Pour me laisser un commentaire :
richard.brunooo
chez
gmail.com


powered by kure, modified by Bruno