Sauvegardez vos ESXi 6.5 sans licence avec GhettoVCB

Posted by

GhettoVCB, depuis VMware Infrastructure 3, toujours compatible !

En 2010, un de mes tout premiers articles sur ce blog parlait d’un script s’appelant GhettoVCB. Il permettait de réaliser des sauvegardes à chaud sur des ESXi, SANS vCenter. Et c’est là toute la nuance, car si toutes les solutions de sauvegardes d’entreprises savent aujourd’hui sauvegarder des machines virtuelles VMware, elles se basent toutes sur un API (historiquement VCB pour VMware Consolidated Backup).

Or, l’usage l’API de sauvegarde (VCB, puis VADP et maintenant VMware vSphere Storage APIs – Data Protection) est conditionnée à la présence d’une licence ! Impossible d’utiliser ces outils avec un ESXi « gratuit » (free).

What licensing is required to use VMware vSphere Storage APIs – Data Protection?
Data Protection APIs are included with all licensed vSphere editions.

Ce script (mis en ligne depuis 2008 !) se base directement sur les binaires présents sur l’OS, sans passer par l’API VCB. Il fait donc pratiquement la même chose, mais gratuitement. Inutile de vous dire que ce script est très populaire parmi les bidouilleurs au budget limités et souhaitant quand même faire des sauvegardes.

Je vous met aussi le lien vers le post historique.

Installation

Historiquement, en guise « d’installation », il fallait simplement copier le script dans le répertoire de son choix. Aujourd’hui, c’est un peu plus « propre » puisque l’auteur a mis à disposition un VIB qui permet d’installer sur l’ESXi via un package. Les sources ont été hébergées sur Github.

Télécharger le fichier depuis le Github, puis le copier en SSH/SCP/SFTP dans /tmp. Se connecter en SSH et installer la VIB :

esxcli software vib install -v /tmp/vghetto-ghettoVCB.vib -f

Pas besoin de rebooter avec cette VIB (simple copie du script). E-Z.

Mise en place de la sauvegarde

La documentation n’a pas été reportée sur le Github malheureusement, mais elle est toujours disponible sur le site historique de la communauté VMware.

Dans l’exemple suivant, on va, configurer le datastore VMFS_BCK comme destination de notre sauvegarde, sélectionner les VMs qu’on souhaite sauvegarder, et planifier (enfin… crontab quoi) nos sauvegardes. Youhou !

Sauf erreur de ma part, la documentation n’indique pas les chemins des fichiers scripts et de configuration. Avant c’était plus simple, vous téléchargiez tout et vous le mettiez dans le dossier que vous vouliez. Maintenant, la VIB dépose le fichier de configuration principal, un template de sauvegarde et un autre de restauration dans /etc/ghettovcb/. Les scripts sont quant à eux installés dans /opt/ghettovcb/bin/.

Se connecter en SSH sur le serveur VMware concerné. Voici un exemple de configuration de sauvegarde :

cd /etc/ghettovcb/
vi ghettoVCB.conf
  VM_BACKUP_VOLUME=/vmfs/volumes/VMFS_BCK/backup
  DISK_BACKUP_FORMAT=thin
  VM_BACKUP_ROTATION_COUNT=3
  POWER_VM_DOWN_BEFORE_BACKUP=0
  ENABLE_HARD_POWER_OFF=0
  ITER_TO_WAIT_SHUTDOWN=3
  POWER_DOWN_TIMEOUT=5
  ENABLE_COMPRESSION=0
  VM_SNAPSHOT_MEMORY=0
  VM_SNAPSHOT_QUIESCE=0
  ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP=0
  SNAPSHOT_TIMEOUT=15
  EMAIL_ALERT=0
  EMAIL_LOG=0
  EMAIL_SERVER=[@IP]
  EMAIL_SERVER_PORT=25
  EMAIL_DELAY_INTERVAL=1
  EMAIL_TO=ghettovcb@zwindler.fr
  EMAIL_ERRORS_TO=
  EMAIL_FROM=alert_ghettoVCB@zwindler.fr
  WORKDIR_DEBUG=0
  VM_SHUTDOWN_ORDER=
  VM_STARTUP_ORDER=

Ce fichier va nous permettre de configurer toutes les valeurs « par défaut » lors de nos sauvegardes.

Pour éviter tout souci, vérifiez qu’il y a bien de l’espace disponible sur le datastore choisi et que le chemin existe ;-).

ls /vmfs/volumes/VMFS_BCK/backup

Chacune des valeurs contenues dans la configuration peuvent être surchargées par le fichier de sauvegarde que nous allons créer. Dans cet exemple je ne modifie rien mais là c’est à vous de voir ! Ici, j’ajoute simplement la VM à une liste des machines virtuelles à sauvegarder :

vi /etc/ghettovcb/vm_backup_list
  ma_vm_a_sauvegarder

On commence par lancer le script à la main pour voir en live si ça fonctionne :

/opt/ghettovcb/bin/ghettoVCB.sh -f /etc/ghettovcb/vm_backup_list -g /etc/ghettovcb/ghettoVCB.conf

Une fois que le script rend la main, vérifier dans le dossier de destination que la sauvegarde s’est bien réalisée. Il devrait contenir un dossier daté du jour et tous les fichiers de la VM.

cd /vmfs/volumes/VMFS_BCK/backup

Pour faire simple, vous pouvez commencer par une sauvegarde toutes les semaines (dimanche minuit) :

crontab -e
	#Sauvegarde hebdo des VMs critiques
	00 0 * * 0 /opt/ghettovcb/bin/ghettoVCB.sh -f /etc/ghettovcb/vm_backup_list -g /etc/ghettovcb/ghettoVCB.conf

Restauration

Nous allons jouer ici le scénario d’une restauration (ma_vm_a_restaurer) située sur le datastore /vmfs/volumes/VMFS. Il faut donc :

  • Mettre de côté la machine HS
  • Trouver la sauvegarde que l’on souhaite restaurer
  • La restaurer à l’emplacement initial de la VM

Retirer la VM à restaurer de l’inventaire et garder une copie au cas où

vmware-cmd -s unregister ma_vm_a_restaurer
mv /vmfs/volumes/VMFS/ma_vm_a_restaurer /vmfs/volumes/VMFS/ma_vm_a_restaurer.ko

Retrouver la sauvegarde qu’on souhaite restaurer

cd /vmfs/volumes/VMFS_BCK/backup/ma_vm_a_restaurer
ls -l
	drwxr-xr-x 1 root root 840 Sep  3 14:12 ma_vm_a_restaurer-2032-09-03_00-00-00

Réaliser la restauration en elle même

Ici, on fait une copie du template de restauration et on y modifie les variables comme le chemin souhaité et le datastore cible. On termine l’opération en exécutant le script ghettoVCB-restore.sh

cd /etc/ghettovcb/
cp ghettoVCB-restore_vm_restore_configuration_template ghettoVCB-restore_ma_vm_a_sauvegarder
vi ghettoVCB-restore_ma_vm_a_restaurer
  /vmfs/volumes/VMFS_BCK/backup/ma_vm_a_restaurer/ma_vm_a_restaurer-2032-09-03_00-00-00;/vmfs/volumes/VMFS;3
/opt/ghettovcb/bin/ghettoVCB-restore.sh -c /etc/ghettovcb/ghettoVCB-restore_ma_vm_a_restaurer

Finaliser la restauration

Une fois la recopie de la sauvegarde terminée, la VM devrait réapparaitre (automatiquement) dans l’inventaire de votre serveur VMware (le script effectue le register_vm).

Démarrer la VM. Si tout a fonctionné, la VM devrait rester bloquée et c’est « normal ».

VMware va détecter qu’il y a eu une opération et vous posera la question pour savoir si c’est une copie ou déplacement. Même si dans la majorité des cas ça ne devrait pas avoir d’impact, il est préférable de répondre « I moved it »/ »Je l’ai déplacé ».

Dans le cas contraire, VMware modifiera une partie de la VM, notamment son adresse MAC, ce qui n’est pas forcément souhaitable dans le cadre d’une restauration. « I moved it » permet de garder la VM telle quelle.

Enjoy !

7 comments

  1. Bonjour,

    Merci pour cette page qui m’a permis de mettre en place Ghetto très facilement.
    Une seule chose que je n’ai pas comprise, c’est à propos de l’automatisation des sauvegardes.
    Vous indiquez dans un fichier :
    crontab -e
    #Sauvegarde hebdo des VMs critiques
    00 0 * * 0 /opt/ghettovcb/bin/ghettoVCB.sh -f /etc/ghettovcb/vm_backup_list -g /etc/ghettovcb/ghettoVCB.conf

    Je suppose que c’est un fichier qu’il faut mettre dans un endroit précis, mais où ?
    Merci d’avance pour votre aide !
    Cordialement

  2. Crontab est une commande Unix pour planifier des tâches récurrentes. Il suffit d’exécuter « crontab -e » puis écrire la ligne commençant par 00 (la tâche lancée à minuit 00 tous les dimanches)

  3. Bonjour,

    J’ai eu un plantage assez sérieux sur ESXi avec mon datastore. J’ai réussi non sans mal à faire une sauvegarde de ces dernières grâce à votre tutoriel et j’ai réussi à les réinstaller. Cependant n’ayant pu les désincrire de l’inventaire j’ai maintenant des VMs en statut ‘non valide’ et je n’arrive pas à m’en débarrasser… Auriez vous une idée pour m’aider à nettoyer mon inventaire ? Je précise que je n’ai qu’un Host ESXi 6.7 et son interface WEB / Client SSH.

    Merci !
    Bien à vous

  4. Et la commande suivante que je cite dans l’article ?
    vmware-cmd -s unregister ma_vm_a_restaurer
    vmware-cmd-s register full_path_to_virtual_machine\virtual_machine_name.vmx
    Il y a un message d’erreur ? C’est quoi « non valide » ?

  5. Bonjour,
    La commande vmware-cmd ou vmware-cmd-s ne semble pas disponible sur le vSphere v6.7 (connecté en SSH).
    Une idée pour solutionner ça ? (Google n’est pas très efficace pour l’instant…)
    (La sauvegarde marche nickel en tout cas)
    Steve

  6. En effet, c’est bien ça, je me permet d’apporter le complément d’info :
    vim-cmd vmsvc/unregister vmid (la VM doit être arrêté)
    Merci pour le coup de main zwindler :)
    Steve

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.