Sauvegarde de VM sur VMware ESXi (Free) avec GhettoVCB

I. Présentation

Les solutions de sauvegarde de machines virtuelles telles que Veeam, Altaro ou encore Naviko sont performantes, mais également coûteuses. Bien que proposée en version gratuite, l'utilisation n'est pas sans contrainte (nombre limité de VMs, planification impossible, etc.). Certains produits sont même incompatibles avec la version Free de VMware ESXi.

Si vous avez besoin de sauvegarder vos machines virtuelles sur ESXi à moindre coût, alors il existe un outil gratuit nommé GhettoVCB. Ce dernier existe depuis plusieurs années et il s'avère performant, si ce n'est qu'il faut passer un peu de temps à le configurer, car tout se joue en ligne de commande.

Dans ce tutoriel, je vous propose de voir comment sauvegarder vos VM sur ESXi avec GhettoVCB. Pour stocker vos sauvegardes, nous avons le choix entre : stockage local, SAN ou montage NFS.

II. Installer GhettoVCB sur ESXi

Depuis votre machine, téléchargez la dernière version de GhettoVCB depuis Github à l'adresse suivante : GhettoVCB

Lorsque le fichier est téléchargé, vous devez l'envoyer sur le serveur ESXi via SSH, dans le dossier "/tmp" (par exemple) avec WinSCP si vous êtes sur Windows. Continuez une fois le fichier transféré.

Maintenant, vous pouvez fermer WinSCP. Connectez-vous sur votre ESXi en ligne de console via l'accès SSH. Ensuite, installez l'outil GhettoVCB fraîchement transféré :

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

L'installation est rapide et vous donnera le résultat suivant :

Installation Result
   Message: Operation finished successfully.
   Reboot Required: false
   VIBs Installed: virtuallyGhetto_bootbank_ghettoVCB_1.0.0-0.0.0
   VIBs Removed:
   VIBs Skipped:

GhettoVCB est livré avec deux scripts :

  • ghettoVCB.sh : exécuter une sauvegarde
  • ghettoVCB-restore.sh : exécuter une restauration

Pour le reste, ce sont des fichiers de configuration que je vais vous présenter :

  • /etc/ghettovcb/ghettoVCB.conf : fichier de configuration principal qui contient les paramètres de sauvegarde globaux de l'outil
  • Deux fichiers de template comme exemple pour la sauvegarde et la restauration (ghettoVCB-vm_backup_configuration_template / ghettoVCB-restore_vm_restore_configuration_template)
  • vms_to_backup : fichier où l'on déclare les VMs à sauvegarder (fichier facultatif)
  • vms_to_restore : fichier où l'on déclare la ou les machines virtuelles à restaurer

Passons à l'utilisation du script GhettoVCB 🙂

III. Configuration de GhettoVCB

Je vous propose de voir comment configurer GhettoVCB, ouvrez le fichier de configuration :

vi /etc/ghettovcb/ghettoVCB.conf

Le contenu suivant est présent par défaut :

VM_BACKUP_VOLUME=/vmfs/volumes/OVH_StorageBackup/VM
DISK_BACKUP_FORMAT=thin
VM_BACKUP_ROTATION_COUNT=7
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
ENABLE_NON_PERSISTENT_NFS=0
UNMOUNT_NFS=0
NFS_SERVER=172.30.0.195
NFS_VERSION=nfs
NFS_MOUNT=/nfsshare
NFS_LOCAL_NAME=nfs_storage_backup
NFS_VM_BACKUP_DIR=mybackups
SNAPSHOT_TIMEOUT=15
EMAIL_ALERT=0
EMAIL_LOG=0
EMAIL_SERVER=smtp.server.com
EMAIL_SERVER_PORT=25
EMAIL_DELAY_INTERVAL=1
EMAIL_USER_NAME=
EMAIL_USER_PASSWORD=
EMAIL_TO=florian@server.com
EMAIL_ERRORS_TO=
EMAIL_FROM=root@ghettoVCB
WORKDIR_DEBUG=0
VM_SHUTDOWN_ORDER=
VM_STARTUP_ORDER=

Dans le cas où l'on utilise l'espace de stockage OVH Backup Storage pour les sauvegardes, il est nécessaire de le monter via NFS au préalable. Cela est plus intéressant comme ça il est visible au niveau ESXi et vous pouvez parcourir la banque de données directement depuis l'interface web.

Dans le fichier de configuration, il y a trois paramètres indispensables :

  • VM_BACKUP_VOLUME : la cible où vous souhaitez stocker vos backups
  • DISK_BACKUP_FORMAT : la valeur "thin" correspond à dynamique ça veut dire que le disque de la sauvegarde utilisera uniquement l'espace disque utilisé dans la VM, il n'est pas statique, ce qui permet d'optimiser la taille utilisée par vos backups (mais allonger le temps de l'opération). Autrement dit, cette option permet de choisir le format du VMDK de la sauvegarde. Les autres valeurs sont : zeroedthick, eagerzeroedthick, et 2gbsparse
  • VM_BACKUP_ROTATION_COUNT : le nombre de sauvegardes à conserver pour chaque VM
  • ENABLE_COMPRESSION : lorsque cette option est activée, la sauvegarde est compressée une fois qu'elle est réalisée. La tâche de compression peut s'avérer longue, je préfère ne pas utiliser cette fonctionnalité.

Sachez que ces paramètres peuvent être écrasés pour une VM en particulier qui ne rentrerait pas dans le moule de base en créant un fichier de configuration spécifique. Si vous souhaitez mettre en place les notifications par e-mail, configurez les différentes options qui commencent par "EMAIL_".

La configuration étant définie, on va tester !

IV. Exécuter une sauvegarde avec GhettoVCB

L'exécution d'une sauvegarde s'appuie sur le script "ghettoVCB.sh" comme je le disais précédemment. Celui-ci supprime un ensemble de paramètres. Voici quelques exemples :

  • Sauvegarder une seule VM
./ghettoVCB.sh -m <nom-VM>
  • Sauvegarder toutes les VMs de cet ESXi
./ghettoVCB.sh -a
  • Sauvegarder les VMs contenues dans le fichier "/etc/ghettovcb/vms_to_backup" (le chemin peut-être différent)
./ghettoVCB.sh -f /etc/ghettovcb/vms_to_backup

Vous devez créer ce fichier et indiquer un nom de fichier par ligne, tout simplement.

Au niveau de l'espace de stockage, l'outil crée un dossier avec le nom de la VM, ici "ITC-DESKTOP" puis un sous-dossier par sauvegarde de cette VM.

Comme tout logiciel de sauvegarde, GhettoVCB crée un snapshot de la VM le temps de la sauvegarde. Ce dernier est automatiquement supprimé à la fin du processus.

Si vous obtenez le message "Final Status: All VMs backed up OK!" à la fin, c'est tout bon 🙂

 

V. Planification de la sauvegarde GhettoVCB

Faire des sauvegardes, c'est bien. Planifier les sauvegardes, c'est encore mieux 🙂

Cela est possible sur un serveur ESXi mais il y a quelques manipulations (un peu chiante) à réaliser. Suivez ces étapes pas à pas.

Nous allons modifier les droits sur le fichier crontab de root et ensuite éditer le fichier :

chmod +w /var/spool/cron/crontabs/root
vi /var/spool/cron/crontabs/root

Maintenant, à la fin du fichier, ajoutez la ou les lignes en fonction de vos besoins pour planifier les sauvegardes via GhettoVCB. Par exemple, pour sauvegarder la VM "ITC-DESKTOP" à 23h00 tous les jours :

0 23 * * * /opt/ghettovcb/bin/ghettoVCB.sh -m ITC-DESKTOP -g /etc/ghettovcb/ghettoVCB.conf

Pour prendre en compte les changements, nous devons recharger le processus cron. Pour cela, identifiez son PID avec la commande suivante :

cat /var/run/crond.pid

Tuez le processus, en adaptant la commande ci-dessous avec le bon PID :

kill <PID>

Relancez le processus :

crond

En fait, il y a un problème : le fonctionnement d'ESXi fait que lorsque l'on va redémarrer le serveur, les tâches planifiées seront perdues. Nous allons devoir intégrer au script local.sh l'ajout de nos tâches planifiées cron, puis le rechargement du cron. Ainsi, tout sera automatiquement recréé à chaque reboot du serveur.

Modifiez le fichier local.sh :

vi "/etc/rc.local.d/local.sh"

Ajoutez le contenu suivant :

/bin/kill $(cat /var/run/crond.pid)
/bin/echo '0 23 * * * /opt/ghettovcb/bin/ghettoVCB.sh -m ITC-DESKTOP -g /etc/ghettovcb/ghettoVCB.conf' >> /var/spool/cron/crontabs/root
/usr/lib/vmware/busybox/bin/busybox crond

La deuxième ligne permet d'ajouter au cron la tâche à planifier. Si besoin, dupliquer cette ligne autant de fois que nécessaire. Il est important de valider que ça fonctionne en redémarrant votre serveur ESXi, à vous de trouver le meilleur moment pour le faire 🙂

VI. Restaurer une VM

Pour restaurer une machine virtuelle, il y a là aussi, une procédure bien précise à suivre.

Tout d'abord, il faut se positionner dans le dossier ghettovcb :

cd /etc/ghettovcb/

Créer une copie du template (c'est bien de le garder de côté !) pour configurer notre tâche de restauration dans un fichier à part :

cp ghettoVCB-restore_vm_restore_configuration_template ghettoVCB-restore_itc-desktop

Modifiez le fichier template :

vi ghettoVCB-restore_itc-desktop

Vous devez avoir une ligne de ce type dans le fichier (à adapter) :

/vmfs/volumes/OVH_StorageBackup/VM/ITC-DESKTOP/ITC-DESKTOP-2019-07-18_19-19-45;/vmfs/volumes/VMFS;3;ITC-DESKTOP-RESTORE

Elle est constituée de 4 paramètres séparés par un point-virgule :

- Le chemin vers le sauvegarde (source)
- Le chemin vers le stockage de destination (où restaurer la VM)
- Le format du disque (1 pour zeroedthick, 2 pour 2gbsparse, 3 pour thin et 4 pour eagerzeroedthick)
- Le nom de la VM à restaurer

Lorsque tout est bon pour vous, exécutez la sauvegarde en appelant votre fichier de config que nous venons de créer :

/opt/ghettovcb/bin/ghettoVCB-restore.sh -c /etc/ghettovcb/ghettoVCB-restore_itc-desktop

En attendant que votre VM soit en restauration, n'hésitez pas à me dire ce que vous pensez de ce tutoriel 🙂

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian B.

Co-Fondateur d'IT-Connect, je souhaite partager mes connaissances et expériences avec vous, et comme la veille techno' est importante je partage aussi des actus.

florian has 1968 posts and counting.See all posts by florian

Laisser un commentaire

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.