Bannière

Métadonnées du document:
[ Auteur : Clockover ][ Création le : 02/03/2010 ][ Dernière modification le : 03/03/2010 ][ Version : 3.1 ]

Sauvegarder des VMs sous vSphere (ESX v4) [Shell]

Etat du script: Fonctionnel

Présentation:

Ce script permet de sauvegarder des machines virtuelles pré-définies sur un serveur vSphere qui ne dispose pas de vcb. Pour cela un snapshot est fait puis la VM est copiée et enfin le snapshot est supprimé.
Pour que le script soit executé d'une façon planifiée, il suffit d'ajouter une entrée dans la crontab. Exemple (pour tous les jours à 3h):
[root@esx root]# crontab -e 
SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root 
HOME=/root/

00 3 * * * /bin/sh /root/backup.sh >> /dev/null 

Les machines sauvegardées sont celles qui auront "backup-auto" en annotation (via vCenter tout simplement).

Le script:

#!/bin/sh 
# Sauvegarde machines virtuelles pour ESX4 
# Fonctionnement: Ajouter simplement l'annotation backup-auto à la machine à sauvegarder
# v0.1 20100303 clockover

#Variables
LOG=/root/backup.txt
FROM=/vmfs/volumes/Datastore-production
TO=/vmfs/volumes/Datastore-backup
TODAY=`date +%Y%m%d`
OLD_BACKUP=`date --date '14 days ago' "+%Y%m%d"`

#Créer un répertoire de sauvegarde et supprimer l'ancien backup
mkdir $TO/$TODAY
rm -rf $TO/$OLD_BACKUP

#Remonter toutes les VMs comprenant une annotation "backup-auto"
vim-cmd vmsvc/getallvms | grep backup-auto > $LOG

#Lecture du résultat ligne par ligne et backup de chaque VM
exec < $LOG
while read line 
do
	#Récupération de l'id de la VM et création d'un snapshot
	vmid=$(echo $line | awk 'BEGIN{FS=" "} {print $1}')
	vim-cmd vmsvc/snapshot.create $vmid backup-auto 1 1
	#Attente de la création du snapshot
	while [`vim-cmd vmsvc/snapshot.get $vmid | grep "backup-auto"` -eq ""] > /dev/null
			##A CORRIGER: ERREUR A CE NIVEAU. STRING PRIT POUR UNE COMMANDE A LA FIN DE LA BOUCLE
			##NE GENE PAS LE FONCTIONNEMENT
	do
		sleep 10s
	done
	#Récupération du dossier contenant la VM et lancement de la copie
	vmfolder=$(echo $line | awk 'BEGIN{FS=" "} {print $4}' | awk 'BEGIN{FS="/"} {print $1}')
	mkdir $TO/$TODAY/$vmfolder
	cp -f $FROM/$vmfolder/$vmfolder-flat.vmdk $TO/$TODAY/$vmfolder/
	cp -f $FROM/$vmfolder/$vmfolder.vmdk $TO/$TODAY/$vmfolder/
	cp -f $FROM/$vmfolder/$vmfolder.nvram $TO/$TODAY/$vmfolder/
	cp -f $FROM/$vmfolder/$vmfolder.vmx $TO/$TODAY/$vmfolder/
	cp -f $FROM/$vmfolder/$vmfolder-vmxf $TO/$TODAY/$vmfolder/
	cp -f $FROM/$vmfolder/$vmfolder.vmsd $TO/$TODAY/$vmfolder/
	cp -f $FROM/$vmfolder/*.log $TO/$TODAY/$vmfolder/
	#Suppression du snapshot
	vim-cmd vmsvc/snapshot.remove $vmid
done

TODO Liste:

-Corriger erreur de syntaxe à l'attente de la confirmation de la création du snapshot.
-Faire une remontée d'information via mail.

Historique:

flecheflecheVersion 0.1 (2010/03/03)
-Création du script.

Il y a 2 commentaire(s) sur ce sujet.
L'intégralité du portail est placé sous licence Creative Commons License NC v2.0 (sauf mentions contraires indiquées sur les pages et/ou documents concernés !). Version: 4.2
Ce portail répond normalement aux critères de compatibilité XHTML v1.1 et CSS v2.0 du W3C:
Valid XHTML 1.1! Valid CSS 2.0!

Page générée en 0.006 secondes