Chez JL

Joliciel Libre

Accueil > Informatique > Haute Disponibilité > Sauver une machine virtuelle Xen

Sauver une machine virtuelle Xen

mardi 15 juin 2010

Sauvegarde

Principe : sauver une volume /dev/vg1/vm dans le volume de même taille /dev/vg1/vmsauv. On utilise un snapshot, montage de l’arborescence et sauvegarde avec rsync. Le volume lvm à sauver peut contenir des partitions. Pour initialiser la sauvegarde, faire alors une copie avec dd (inclu la copie de la table des partitions...).

Initialisation

lvcreate -L 1g -s -n vmsnap /dev/vg1/vm
dd if=/dev/vg1/vmsnap of=/dev/vg1/vmsauv

Exemple. La machine virtuelle est dans un volume logique /dev/vg1/vm1. Elle va être sauvée dans le volume logique /dev/vg1/vm1sauv (qui existe).

Exemple d’appel du script

./sauv_vm_linux vm1

Détail du script (basique) pour une vm linux

# script sauv_vm_linux
echo "Creation du snapshot"
lvcreate -L 1g -s -n $1snap /dev/vg1/$1
echo "Creation des repertoires pour montage"
mkdir $1sauv
mkdir $1snap
echo "Montage"
mount /dev/vg1/$1sauv $1sauv/
mount /dev/vg1/$1snap $1snap/
echo "Valider pour synchroniser le snapshot avec la sauvegarde"
read
rsync -a --stats --progress --delete $1snap/ $1sauv/
echo "Démontage"
umount $1snap/
umount $1sauv/
echo "Suppression des repertoires"
rmdir $1sauv
rmdir $1snap
echo "Suppression du snapshot"
lvremove /dev/vg1/$1snap

Pour une machine virtuelle windows

echo "Creation du snapshot"
lvcreate -L 1g -s -n $1snap /dev/vg1/$1

echo "Creation des répertoires pour montage"
mkdir $1sauv
mkdir $1snap

echo "Recuperation des index de partitions ntfs"
kpartx -a /dev/vg1/$1sauv
kpartx -a /dev/vg1/$1snap

echo "Montage"
mount -t ntfs-3g /dev/mapper/vg1-$1sauv1 $1sauv/
sleep 1
mount /dev/mapper/vg1-$1snap1 $1snap/

echo "Valider pour synchroniser le snapshot avec la sauvegarde"
read
rsync -a --stats --progress --delete $1snap/ $1sauv/

echo "Démontage"
umount $1snap/
umount $1sauv/

echo "Suppression des index de partitions ntfs"
kpartx -d /dev/vg1/$1sauv
kpartx -d /dev/vg1/$1snap

echo "Suppression des répertoires"
rmdir $1sauv
rmdir $1snap

echo "Suppression du snapshot"
lvremove /dev/vg1/$1snap

Restauration

echo "Début de la restauration"
mkdir $1
mkdir $1sauv
mount /dev/vg1/$1 $1/
mount /dev/vg1/$1sauv $1sauv/
echo "Valider pour synchroniser les donnees"
read
rsync -av --stats --progress --delete $1sauv/ $1/
umount $1/
umount $1sauv/
rmdir $1
rmdir $1sauv
echo "Restauration terminée"