Sauvegarde de VM sur VMware ESXi (Free) avec GhettoVCB
Sommaire
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.
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 protected] 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 🙂
En attendant que les vms soient en restauration ?? non non je n’espère jamais à devoir faire cela ^^
Super tuto !! explication pas à pas au top !
Merci beaucoup et très bonne soirée.
Bonjour,
Merci pour ce tuto claire et complet.
Avez vous pu configurer la partie envoi de log par mail ?
j’ai des problème de blocage par le ESXI 6.xx
en vous remerciant de votre aide.
Sur la version ESXi installé par OVH que nous utilisons, nous n’avons pas de serveur de mail qui est installé. J’ai cherché une façon d’en installer un, sans succès 🙁
Sinon, merci beaucoup Florian B pour ce superbe tutoriel.
Bonjour Florian,
Merci pour le tuto je vais tester! ça me semble être une bonne solution pour sauvegarder mes VM.
MERCI
Bertrand
Bonjour,
merci pour le tuto
primo , je fais un backup avec le fichier conf avec l option DISK_BACKUP_FORMAT = thin (pour test) d’une VM avec 2 DD , un en statique de 1 GO et un en dynamique de 300 go
(il n y a aucune data dessus , c’est vraiment pour tester le backup)
le backup se passe bien mais surprise sur mon serveur sur lequel est sauvegardé cette VM, j’ai bien 2 fichiers .vmdk correspondant a mes 2 disques mais la place occupée sur le disque est de 300 go !!! alors que je pensais que ce mode ne sauvegardait que la donnée utilisée soit rien chez moi , une idée ?
secundo, j’ai cette erreur « Slept 1 seconds to work around NFS I/O error » , j’ai l option VM_BACKUP_ROTATION_COUNT = 2 donc si je comprends bien au bout de la 3eme sauvegarde il écrase la plus ancienne or je pense qu’il a un souci d ou cette erreur , une idée ?
merci bcp
anthony
Bonjour, bon tuto mais chez moi…
[VibValidationError]
VIB virtuallyGhetto_bootbank_ghettoVCB_1.0.0-0.0.0 violates extensibility rule checks: [‘(line 23: col 0) Element vib failed to validate content’]
Une idée ?
Je me réponds à moi-même, j’avais oublié le « -f » à la fin de la commande d’install…
Désolé pour le bruit.
Marc
Bonjour,
super explications comme d’habitude.
J’ai testé et pour ma part tout fonctionne sauf l’envoi des log par mail.
(serveur exhange online avec port 587 et starttls nécéssaire).
Je pense justement que c’est le starttls qui pose soucis a ghettovcb.
Je précise que le port a été ouvert dans le firewall de l’ESXI.
Merci d’avance si l’un d’entre vous a réussi a faire fonctionner les notification de ghettovcb avec exchange online ou office365 de partager ses infos!
sinon merci pour ce tuto!
Bonjour,
Il existe Veeam Backup Replication Community, qui est gratuit et qui fait très bien le travail.