Pour sauvegarder une machine virtuelle, celle-ci ne doit pas être en cours d’utilisation. Comme la mise “hors ligne” d’un serveur durant toute la durée de sa sauvegarde n’est pas toujours possible, ce troisième article d’une série de six explore l’usage des SNAPSHOTS.
Création /Suppression de SnapShot
Il n’est pas possible de sauvegarder une VM si elle est on fonctionnement. Ceci est assez gênant si l’on considère que la sauvegarde peut durer plusieurs heures. Heureusement, il existe une alternative ; les SnapShots.
Initialement, un SnapShot est un outil permettant de figer l’état d’un VM à un instant donné. Il est ensuite possible soit de revenir à l’état antérieur d’un VM et ainsi supprimer touts les changements effectués sur un disque depuis le SnapShot, soit de supprimer le SnapShot et ainsi considérer l’état actuel de la VM comme définitif.
Les SnapShots présentent un grand avantage en termes de sauvegarde. En effet, lorsque l’on crée un SnapShot sur la VM « xp », le disque virtuel initial « xp.vmdk » est figé et toutes les modifications sont inscrites dans un disque « enfant » : « xp-0001.vmdk ». Par conséquent, il devient tout à fait possible de sauvegarder « xp.vmdk » alors que la VM continue de fonctionner sur « xp-0001.vmdk ». En fin de sauvegarde, il suffit de supprimer le snapshot afin d’appliquer les modifications faites à « xp-0001.vmdk » à « xp.vmdk ».
Depuis « Vmware Infrastructure Client »
Il est possible de créer des SnapShots depuis l’interface graphique d’administration de ESXi.
Il est possible de supprimer des SnapShots depuis l’interface graphique d’administration de ESXi.
Depuis l’API Perl
Vmware propose un pack logiciel permettant d’administrer partiellement ESXi depuis un PC du LAN : « Vmware infrastructure remote cli » ou « RCLI ». Cet outils est disponible pour :
- Windows (40Mo),
- Linux (32Mo),
- Sous la forme d’une machine virtuelle basée sur une distribution RedHat entreprise 5 (240Mo).
Installation de « Vmware infrastructure remote cli »
Télécharger la version Windows de RCLI depuis le site de Vmware.
Installez le « vmware infrastructure remote cli » sous une instance de Windows XP.
Lors de l’installation, « Vmware infrastructure remote cli » installe l’interpréteur PERL ActivePerl 5.8 (http://www.activestate.com/activeperl/)
La ligne de commande RCLI est accessible depuis le menu “démarrer”, « programmes », « Vmware », « Vmware Vi remote CLI », « command prompt ».
Les applications PERL de contrôle de ESXi sont rangées dans le dossier “/bin”.
A titre d’exemple, la commande « vicfg-nics –server 192.168.1.60 –l » listera l’état des cartes réseaux du serveur ESXi répondant à l’adresse IP 192.168.1.60. Vous devez disposer des identifiant d’administration sur ESXi pour exploiter cette commande.
La commande ci-dessous permets de créer un SnapShot de nommé « SNAP » pour la VM « xp » tournant sur le serveur 192.168.1.60.
perl $RCLIPath/Perl/apps/vm/snapshotmanager.pl –url https://192.168.1.60i/sdk/vimService –username root –password password –operation create –powerstatus poweredOn –snapshotname SNAP –vmname xp –children 1
La commande ci-dessous permets de supprimer le SnapShot de nommé « SNAP » pour la VM « xp » tournant sur le serveur 192.168.1.60.
perl $RCLIPath/Perl/apps/vm/snapshotmanager.pl –url https://192.168.1.60i/sdk/vimService –username root –password password –operation remove –powerstatus poweredOn –snapshotname SNAP –vmname xp –children 1
Depuis la console, Il est possible de créer un SnapShot nommé « vcb_snap » depuis la console SSH de ESXi avec la séquence suivante : [shell]export VM_NAME=xp
export VMWARE_CMD=/bin/vim-cmd
echo “VM_NAME: $VM_NAME”
# get VM_ID
${VMWARE_CMD} vmsvc/getallvms | sed ‘s/[[:blank:]]{3,}/ /g’ | awk -F’ ‘ ‘{print “””$1″”;””$2″”;””$3″””}’ | sed ‘s/] /]”;”/g’ | sed ‘1,1d’ > /tmp/vms_list
export VM_ID=`grep -E “”${VM_NAME}”” /tmp/vms_list | awk -F “;” ‘{print $1}’ | sed ‘s/”//g’`
echo “VM_ID: $VM_ID”
echo “Create snapshot”
${VMWARE_CMD} vmsvc/snapshot.create ${VM_ID} vcb_snap VCB_BACKUP_${VM_NAME}_`date +%F`[/shell]
La procédure est un peu complexe car les outils en mode console ne savent pas exploiter le nom des VM, seulement l’identifiant interne à ESXi. La première partie du code retrouve le code associé à une VM.
La suppression du SnapShot est un peu plus complexe car il existe bien une commande “snapshot.remove” mais elle est très mal documentée. L’exemple ci-dessous semble fonctionner même s’il génère une erreur. La première partie du code liste les caractéristiques de tous les snapshots de la VM et traite le fichier résultant pour calculer le nombre de SnapShots associés à la VM (4 Snapshots numérotés de 0 à 3, par exemple). Le script supprime simplement le dernier.
[shell]export VM_NAME=xpexport VMWARE_CMD=/bin/vim-cmd
echo “VM_NAME: $VM_NAME”
${VMWARE_CMD} vmsvc/snapshot.get ${VM_ID} > /tmp/snp_list
export SNP_COUNT=`grep datastoreUrl /tmp/snp_list|wc -l`
let “SNP_COUNT=$SNP_COUNT-1”
echo “remove snapshot $SNP_COUNT”
${VMWARE_CMD} vmsvc/snapshot.remove ${VM_ID} vcb_snap ${SNP_COUNT}[/shell]
Bonjour Géronimo ,
as tu finalisé une restauration avec Vmexplorer, FastSCP ?
Etait elle opérationnelle ?
salut,
j’ai testé les 3 solutions suivantes; VMExplorer, FastSCP et le script ghettoVCB.sh et le dernier est de loin le plus fiable…il faut un peu plus de temps pour le maitriser mais après au moins pas de mauvaise surprise…
Bonjour le monde,
J’ai lu le tuto ( Merci ! ), j’essais VMexplorer en ce moment et il m’est impossible de restaurer une VM ( ESXi 4 ). Tout ce déroule bien puis à 80% de progression, les fichiers up @ 0.10 MB/s…Trop long.
je test Veeam FastSCP en ce moment.
j’ai pas mal peaufiné un script batch DOS pour les sauvegardes utilisant ghettovcb. J’ai peas encore eu le temps de le mettre en ligne. Je te l’envoie tout de suite si tu veux
oui ça m’intéresse! je suis justement sur ton script batch mais j’ai des soucis d’exécution avec pscp (bug 9 fois sur 10…j’ai lu qu’il fallait créer un PATH pour qu’il fonctionne correctement mais ce n’est pas le cas chez moi.)
Merci 8)
je parle trop vite il y a justement le script Perl dans ta 6exe partie qui le fait. Merci pour ton superbe boulot ( à moi de m’y mettre 🙂 )
il faut donc faire un snapshot, copier la vm, et supprimer le snapshot une fois la copie finie si je comprends bien.
copier la vm a chaud n’est pas un problème mais tu vas avoir des soucis si tu veux re-utiliser l’image. L’usage d’un snapshot durant la copie fige le contenu des disques durant la sauvegarde.
il peut faire une copie complète de la VM, ou une snapshot. Le tout à chaud
autant que je sache cette outil réalise un snapshot avant sauvegarde. Le snapshot est supprimé dès la fin de la copie
je continu dans mon retour d’expérience :p
‘Il n’est pas possible de sauvegarder une VM si elle est on fonctionnement.’ Si je ne dis pas de bêtise, c”est possible avec Trilead VMExplorer (gratuit). J’ai fais une sauvegarde de ma VM, mais n’ai pas testé de la remonter. En tout cas la vm originelle continuait de tourner lorsque l’opération s’effectuait.