VMware ESXi ne propose pas de base la sauvegarde de machines virtuelles à chaud.
Un script développé par virtuallyghetto, nommé GhettoVCB permet de contourner ce problème !
La page Github de GhettoVCB est disponible à cette adresse : GhettoVCB
Préparation
Téléchargez l’ensemble des fichiers en cliquant sur ici.
Activez SSH sur votre hyperviseur.
Transférez ghettoVCB-master.zip sur votre hyperviseur (avec WinSCP par exemple).
Ensuite, connectez-vous en SSH sur votre hyperviseur (avec PuTTY par exemple).
Utilisation
# ghettoVCB.sh -f <LISTE_DE_VMS> -c <FICHIER_CONFIG_VMS>-l <FICHIER_LOG> -d <NIVEAU_DEBUG> -g <CONF GLOBALE> -e <LISTE_VMS_EXCLUES>
OPTIONS
- -a Backuper toutes les VM d’un hôte.
- -f Liste des VM à backuper.
- -c Répertoire des fichiers de configuration desVM backupées.
- -g Cheminvers le fichier .conf de ghettovcb.
- -l Fichier de log de sortie.
- -d Niveau de débogage (info|debug|dryrun) (defaut: info).
Les paramètres disponibles
VM_BACKUP_VOLUME = volume ou datastore sur lequel poser les backups ;
DISK_BACKUP_FORMAT = format de disque (zeroedthick | eagerzeroedthick | thin | 2gbsparse) ;
VM_BACKUP_ROTATION_COUNT = rotation par VM ;
POWER_VM_DOWN_BEFORE_BEFORE_BACKUP = éteindre la VM avant backup (0=false/non 1=true/oui) ;
ENABLE_HARD_POWER_OFF = force un arrêt de la VM si l’option précédente est activée et que la VM n’a pas les tools (0=false/non 1=true/oui) ;
ITER_TO_WAIT_SHUTDOWN = nombre de minutes à attendre avant le HARD POWER OFF ;
POWER_DOWN_TIMEOUT = nombre de minutes à attendre avant extinction de la VM avant de l’ignorer et passer à la suivante ;
SNAPSHOT_TIMEOUT = nombre de minutes à attendre pendant le snapshot avant d’ignorer et passer à la VM suivante ;
ENABLE_COMPRESSION = activer la compression des backups (0=false/non 1=true/oui) ;
ADAPTER_FORMAT = format du contrôleur de stockage des VMDK de sortie (lsilogic | buslogic) ;
VM_SNAPSHOT_MEMORY =&VM_SNAPSHOT_QUIESCE= (0=false/non 1=true/oui) activer ou désactiver les options de mémoire et d’attente du snapshot ;
VMDK_FILES_TO_BACKUP =définir un vmdk en particulier à backup pour une certaine VM, utiliser « all » pour tous les backuper ;
EMAIL_LOG = (0=false/non 1=true/oui) activer l’envoi du log par e-mail ;
EMAIL_DEBUG = si l’envoi du mail est OK, en conserver une copie sur l’hôte quand même (0=false/non 1=true/oui) ;
EMAIL_SERVER = adresse du serveur mail ;
EMAIL_SERVER_PORT = port du serveur mail à utiliser ;
EMAIL_TO = adresse à laquelle part le mail ;
EMAIL_FROM = émetteur du mail ;
RSYNC_LINK = support d’un lien symbolique RSYNC.
Pour avoir plus de détails sur les commandes : GhettoVCB
Configuration de base de GhettoVCB ESXi 5
Notre répertoire de travail sera : /opt/ghettoVCB
Dézipper votre fichier zip :
unzip ghettoVCB-master.zip
Rendre exécutable votre script :
chmod +x ghettoVCB.sh
Éditer votre fichier ghettoVCB.sh :
vi ghettoVCB.sh
Modifier les variables suivantes :
VM_BACKUP_VOLUME=/vmfs/volumes/52304bd6-af562afc-e5fa-08606ee5bd47/backups # où "52304bd6-af562afc-e5fa-08606ee5bd47" correspond à mon datastoreVM_BACKUP_ROTATION_COUNT=2
Création d’un fichier listvm :
touch listvm
Ajouter les noms des VM :
core.vyatta.master
core.vyatta.slave
srv.owncloud
srv.zimbra
srv.zpush
Mise en tache planifiée
Rechercher le processus « crond » :
ps | grep crond | grep -v grep
==> 3255 23255 crond crond
Tuer le processus cron :
kill 3255
Modification des droits du cron :
chmod 644/var/spool/cron/crontabs/root
chmod +t /var/spool/cron/crontabs/root
Programmer la tâche cron :
vi /var/spool/cron/crontabs/root
Ajouter cette ligne dans la cron :
0 0 * * 1 /opt/ghettoVCB/ghettoVCB.sh -f /opt/ghettoVCB/listvm
Se rendre dans le fichier rc.local :
vi /etc/rc.local
Pour la version 5.1 :
vi /etc/rc.local.d/local.sh
Ajouter ceci :
/bin/echo "0 0 * * 1 /opt/ghettoVCB/ghettoVCB.sh -f /opt/ghettoVCB/listvm" >> /var/spool/cron/crontabs/root
Redémarrage du crond :
crond
Pour tester le bon fonctionnement du script :
/opt/ghettoVCB/ghettoVCB.sh -f /opt/ghettoVCB/listvm
