Sauvegarde de VM sur VMware ESXi (Free) avec GhettoVCB
mardi 10 septembre 2019 à 10:00I. 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 🙂