Sauvegarder des machines virtuelles ESXi: 3ème partie

Sauvegarder des machines virtuelles ESXi: 3ème partie 1

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.

Sauvegarder des machines virtuelles ESXi: 3ème partie 2

Il est possible de supprimer des SnapShots depuis l’interface graphique d’administration de ESXi.

Sauvegarder des machines virtuelles ESXi: 3ème partie 3

Sauvegarder des machines virtuelles ESXi: 3ème partie 4

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

Sauvegarder des machines virtuelles ESXi: 3ème partie 5

Sauvegarder des machines virtuelles ESXi: 3ème partie 6

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.

Sauvegarder des machines virtuelles ESXi: 3ème partie 7

Lors de l’installation, « Vmware infrastructure remote cli » installe l’interpréteur PERL ActivePerl 5.8 (http://www.activestate.com/activeperl/)

Sauvegarder des machines virtuelles ESXi: 3ème partie 8

La ligne de commande RCLI est accessible depuis le menu “démarrer”, « programmes », « Vmware », « Vmware Vi remote CLI », « command prompt ».

Sauvegarder des machines virtuelles ESXi: 3ème partie 9

Les applications PERL de contrôle de ESXi sont rangées dans le dossier “/bin”.

Sauvegarder des machines virtuelles ESXi: 3ème partie 10

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.

Sauvegarder des machines virtuelles ESXi: 3ème partie 11

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=xp
export 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]

A propos Olivier Olejniczak

Cofondateur de SynerGeek.fr. Passionné d'informatique, je m'intéresse plus particulièrement aux technologies de virtualisation et de stockage. J'apprécie la liberté et la quasi-absence de frontières à mon imagination qu'offre l'OpenSource et Linux. Professionnellement, je travaille exclusivement avec les outils Microsoft. Les pieds bien sur terre et ancrés dans le quotidien de l'entreprise, j'aime faire partager mes découvertes et contribuer à un meilleur usage des technologies. Vous aussi, rejoignez-nous sur Synergeek et partagez votre expérience!

Je vous propose également...

J'ai tout cassé mon Xpenology 12

J’ai tout cassé mon Xpenology

Cette semaine, je me suis offert un disque SSD, un Intel 530 de 240 Go, suite à la vente d'un vrai Synology CS-407. L'objectif étant de m'en servir pour héberger mes VM du HP N54L. Tout content, je m'empresse de déplacer mes quelques VM, Ubuntu, Debian, Zeroshell, Pfsense, Win 7 et enfin Xpenology... Et là c'est le drame !!!

Utiliser un disque en Raw Device Mapping (RDM) pour Xpenology 13

Utiliser un disque en Raw Device Mapping (RDM) pour Xpenology

Suite à mon dernier article sur l'installation des VmWare tools sur la VM Xpenology, un lecteur m'a rapporté en commentaire quelques soucis pour intégrer un disque en RDM. Comme je ne m'étais pas fait de doc, c'est l'occasion de me rappeler la procédure.

11 commentaires

  1. Bonjour Géronimo ,

    as tu finalisé une restauration avec Vmexplorer, FastSCP ?

    Etait elle opérationnelle ?

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

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

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

  5. 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 🙂 )

  6. il faut donc faire un snapshot, copier la vm, et supprimer le snapshot une fois la copie finie si je comprends bien.

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

  8. il peut faire une copie complète de la VM, ou une snapshot. Le tout à chaud

  9. autant que je sache cette outil réalise un snapshot avant sauvegarde. Le snapshot est supprimé dès la fin de la copie

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