Esxi Backup GhettoVCB

De BlaxWiki
Révision datée du 24 août 2012 à 10:13 par 217.174.199.129 (discussion) (Page créée avec « === Introduction === GhettoVCB est un script SH permettant la sauvegarde au chaud ou froid et la restauration de machines virtuelles sous ESX ou ESXi. ==== Installation =... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Introduction

GhettoVCB est un script SH permettant la sauvegarde au chaud ou froid et la restauration de machines virtuelles sous ESX ou ESXi.

= Installation

Télécharger la dernière version et la mettre sur l'ESXi avec scp ou WinSCP, puis, décompresser l'archive pour l'installer :

# tar -xzf lamw-ghettoVCB-518cef7.tar.gz
# rm lamw-ghettoVCB-518cef7.tar.gz
# mv lamw-ghettoVCB-518cef7 ghettoVCB
# cd ghettoVCB
# ls -hl
-rw-rw-r-- 1 root root   281 Nov 28  2011 README
-rwxrwxr-x 1 root root 15.6k Nov 28  2011 ghettoVCB-restore.sh
-rw-rw-r-- 1 root root   309 Nov 28  2011 ghettoVCB-restore_vm_restore_configuration_template
-rw-rw-r-- 1 root root   356 Nov 28  2011 ghettoVCB-vm_backup_configuration_template
-rw-rw-r-- 1 root root   631 Nov 28  2011 ghettoVCB.conf
-rwxrwxr-x 1 root root 48.2k Nov 28  2011 ghettoVCB.sh

Sauvegarde

La sauvegarde se fait en utilisant le script ghettoVCB.sh

  • Configuration

La configuration se fait en modifiant le fichier ghettoVCB.conf

 * VM_BACKUP_VOLUME : Datastore et répertoire dans lequel les sauvegardes sont entreposées, si le répertoire n'existe pas, il sera crée.
 * DISK_BACKUP_FORMAT : Format de disque, peut être paramétré à zeroedthick, eagerzeroedthick, thin ou 2gbsparse.
 * VM_BACKUP_ROTATION_COUNT : Nombre de rotation de sauvegarde pour un machine virtuelle.
 * POWER_VM_DOWN_BEFORE_BACKUP : Indique si le script doit stopper la machine virtuelle avant d'en faire la sauvegarde. Si la VM est stoppe avant sauvegarde, elle ne sera pas 
sauvegarde en utilisant la méthode des cliché instantané (snapshot)
 * ENABLE_HARD_POWER_OFF : Activer l'arrêter brutal d'une machine virtuelle si POWER_VM_DOWN_BEFORE_BACKUP est activé et qu'elle ne dispose pas des VMware Tools.
 * ITER_TO_WAIT_SHUTDOWN : Indique le nombre de minutes d'attente avant l'arrêt brutale d'une machine virtuelle si ENABLE_HARD_POWER_OFF est activé.
 * POWER_DOWN_TIMEOUT : Minutes d'attente avant qu'une machine virtuelle soit éteinte. Si la VM n'est pas éteinte une fois ce délai écoulé la sauvegarde de celle-ci est annulée.
 * SNAPSHOT_TIMEOUT : Minutes d'attente pour la création d'un cliché instantané d'une machine virtuelle. Si ce délai est écoulé la sauvegarde de celle-ci est annulée.
 * ENABLE_COMPRESSION : Activation ou non de la compression. (Expérimental)
 * VM_SNAPSHOT_MEMORY et VM_SNAPSHOT_QUIESCE : Activer ou désactiver les options de mémoire et d’attente du snapshot. (Désactivé par défaut)
 * EMAIL_LOG : Activer l’envoi du log par e-mail.
 * EMAIL_DEBUG : Conserver une copie sur l’hôte si l'envoi du mail s'est bien déroulé.
 * EMAIL_SERVER : Adresse du serveur mail.
 * EMAIL_SERVER_PORT : Port du serveur mail a utiliser.
 * EMAIL_TO : Adresse a laquelle part le mail.
 * EMAIL_FROM : Émetteur du mail.
  • Manuel
SYNTAXE : ./ghettoVCB.sh -f [VM_BACKUP_UP_LIST] -c [VM_CONFIG_DIR] -l [LOG_FILE] -d [DEBUG_LEVEL] -g [GLOBAL_CONF] -e [VM_EXCLUSION_LIST]

OPTIONS :
   -a     Sauvegarder toutes les machines virtuelles de l'hôte.
   -f     Liste des machines virtuelles à sauvegarder.
   -e     Liste des machines virtuelles à exclure de la sauvegarde.
   -c     Dossier contenant un fichier de configuration spécifique à la sauvegarde de machines virtuelles.
   -g     Chemin d'excès du fichier de configuration global de ghettoVCB.
   -l     Fichier journal.
   -d     Niveau de débogage [info|debug|dryrun] (Par défaut: info)

Sauvegarder les VM indiquées dans une liste
        ./ghettoVCB.sh -f vms_to_backup

Sauvegarder toutes les VM d'un hôte
        ./ghettoVCB.sh -a

Sauvegarder toutes les VM d'un hôte sauf celle listées.
        ./ghettoVCB.sh -a -e vm_exclusion_list

Sauvegarder les VM en utilisant la configuration stocké dans un répertoire spécifique
        ./ghettoVCB.sh -f vms_to_backup -c vm_backup_configs

Sauvegarder les VM en utilisant le fichier de configuration global
        ./ghettoVCB.sh -f vms_to_backup -g /global/ghettoVCB.conf

Spécification de l'emplacement des journaux (Ceux-ci sont par défaut dans /tmp/ghettoVCB.log)
        ./ghettoVCB.sh -f vms_to_backup -l /vmfs/volume/local-storage/ghettoVCB.log

Essai à blanc (Aucune sauvegarde ne sera faite)
        ./ghettoVCB.sh -f vms_to_backup -d dryrun

Les fichiers de listes de machines virtuelles à sauvegarder ou exclure est de la forme suivante :

VM01
VM02
VM03

Utilisation

Les disques des machines virtuelles à sauvegarder ne doivent pas être déclarés comme indépendants, si c'est le cas, un test de sauvegarde à blanc (option -d dryrun) remontera l'erreur suivante :

Snapshots can not be taken for indepdenent disks!

Exemple d'utilisation :

# ./ghettoVCB.sh -f ./vm_backup_list -g ./ghettoVCB.conf -l ./testBackup.log
Insufficient arguments.
2012-08-23 14:50:28 -- info: ============================== ghettoVCB LOG START ==============================

2012-08-23 14:50:28 -- info: CONFIG - USING GLOBAL GHETTOVCB CONFIGURATION FILE = ./ghettoVCB.conf
2012-08-23 14:50:28 -- info: CONFIG - VERSION = 2011_11_19_1
2012-08-23 14:50:28 -- info: CONFIG - GHETTOVCB_PID = 9436587
2012-08-23 14:50:28 -- info: CONFIG - VM_BACKUP_VOLUME = /vmfs/volumes/5e909b68-89b5a355
2012-08-23 14:50:28 -- info: CONFIG - VM_BACKUP_ROTATION_COUNT = 3
2012-08-23 14:50:28 -- info: CONFIG - VM_BACKUP_DIR_NAMING_CONVENTION = 2012-08-23_14-50-27
2012-08-23 14:50:28 -- info: CONFIG - DISK_BACKUP_FORMAT = thin
2012-08-23 14:50:28 -- info: CONFIG - POWER_VM_DOWN_BEFORE_BACKUP = 1
2012-08-23 14:50:28 -- info: CONFIG - ENABLE_HARD_POWER_OFF = 0
2012-08-23 14:50:28 -- info: CONFIG - ITER_TO_WAIT_SHUTDOWN = 3
2012-08-23 14:50:28 -- info: CONFIG - POWER_DOWN_TIMEOUT = 5
2012-08-23 14:50:28 -- info: CONFIG - SNAPSHOT_TIMEOUT = 15
2012-08-23 14:50:28 -- info: CONFIG - LOG_LEVEL = info
2012-08-23 14:50:28 -- info: CONFIG - BACKUP_LOG_OUTPUT = ./testBackup.log
2012-08-23 14:50:28 -- info: CONFIG - VM_SNAPSHOT_MEMORY = 0
2012-08-23 14:50:28 -- info: CONFIG - VM_SNAPSHOT_QUIESCE = 0
2012-08-23 14:50:28 -- info: CONFIG - VMDK_FILES_TO_BACKUP = all
2012-08-23 14:50:28 -- info: CONFIG - EMAIL_LOG = 0
2012-08-23 14:50:28 -- info:
Datastore not found.

Datastore not found.

Datastore not found.

2012-08-23 14:50:31 -- info: Powering off initiated for CentOS6.0-MEP-base_ssh_snmp, backup will not begin until VM is off...
2012-08-23 14:50:32 -- info: VM is powerdOff
2012-08-23 14:50:32 -- info: Initiate backup for CentOS6.0-MEP-base_ssh_snmp
Destination disk format: VMFS thin-provisioned
Cloning disk '/vmfs/volumes/datastore2/CentOS6Test/CentOS6Test.vmdk'...
Clone: 94% done.
2012-08-23 14:52:50 -- info: Backup Duration: 2.30 Minutes
2012-08-23 14:52:50 -- info: Successfully completed backup for CentOS6.0-MEP-base_ssh_snmp!

Datastore not found.

Datastore not found.

Datastore not found.

2012-08-23 14:52:52 -- info: ###### Final status: All VMs backed up OK! ######

2012-08-23 14:52:53 -- info: ============================== ghettoVCB LOG END ================================

Il est bien entendu possible de rediriger vers /dev/null les messages, ceci est fortement conseillé si GhettoVCB est utilisé via une crontab.

# ./ghettoVCB.sh -f ./vm_backup_list -g ./ghettoVCB.conf -l ./testBackup.log > /dev/null

Une fois la sauvegarde terminée, celle-ci est stocké dans un répertoire du type $VM_BACKUP_VOLUME/$NOM_VM/$NOM_VM-$(date +%Y-%m-%d_%H-%M-%S)/
Ce qui, pour la VM d'exemple ci-dessus donne quelque chose du type :

# ls -hl /vmfs/volumes/ESXBackup/CentOS6.0-MEP-base_ssh_snmp/CentOS6.0-MEP-base_ssh_snmp-2012-08-23_14-50-27/
-rw------- 1 root root 8.0G Aug 23 14:52 CentOS6Test-flat.vmdk
-rw------- 1 root root  516 Aug 23 14:52 CentOS6Test.vmdk
-rwxr-xr-x 1 root root 2.8k Aug 23 14:50 CentOS6Test.vmx
-rw-r--r-- 1 root root   30 Aug 23 14:52 STATUS.ok

Restauration

La restauration d'une sauvegarde se fait en utilisant le script ghettoVCB-restore.sh

Ce script ne fait que restaurer les fichiers de la VM dans un nom de dossier contenant la date de la sauvegarde, si vous restaurez une VM dans un état antérieur (celle-ci n'a pas été supprimé) il sera nécessaire de faire un renommage pour que la VM utilise les fichiers restauré. Si vous restaurer une VM supprimé corp et biens, celle-ci sera automatiquement recrée et visible sous vSphere.

Si lors du démarrage via vSphere d'une VM restaurée de A à Z vous recevez un message vous indiquand que l'UUID provient d'une VM copié ou déplacé, indiquez que vous avez copié ladite VM.

  • Configuration
La configuration de la restauration se fait créant un fichier de configuration pour la/les machine(s) virtuelle(s) à restaurer, ce fichier est ensuite donnée à la commande de 
restauration.

Le syntaxe du fichier de configuration est la suivante :

"<DIRECTORY or .TGZ>;<DATASTORE_TO_RESTORE_TO>;<DISK_FORMAT_TO_RESTORE>"

Avec :
 * DIRECTORY or .TGZ : Le répertoire contenant la sauvegarde.
 * DATASTORE_TO_RESTORE_TO : Le Datastore contenant la VM à restaurer.
 * DISK_FORMAT_TO_RESTORE : Nombre indiquant le format de disque-dur de la VM à restaurer. (1 : zeroedthick, 2 : 2gbsparse, 3 : thin, 4 : eagerzeroedthick)
Ajouter une ligne par VM à restaurer, en indiquand plusieurs lignes, il est possible de restaurer plusieurs VM.

Par exemple, pour restaurer la VM précédemment sauvegarder, indiquer la ligne suivante :

"/vmfs/volumes/ESXBackup/CentOS6.0-MEP-base_ssh_snmp/CentOS6.0-MEP-base_ssh_snmp-2012-08-24_08-38-21;/vmfs/volumes/datastore2;3"
  • Manuel

SYNTAXE: ./ghettoVCB-restore.sh -c [VM_BACKUP_UP_LIST] -l [LOG_FILE] -d [DRYRUN_DEBUG_INFO]

OPTIONS:
   -c     Liste des machines virtuelles à sauvegarder.
   -l     Fichier journal.
   -d     Essai à blanc/Information de débogage [1|2]

Afficher les messages de sortie à l'écran (pas de fichier journal spécifié)
        ./ghettoVCB-restore.sh -c vms_to_restore

Mettre les messages de sortie dans /tmp/ghettoVCB-restore.log
        ./ghettoVCB-restore.sh -c vms_to_restore -l /tmp/ghettoVCB-restore.log

Essai à blanc/Information de débogage (Pas de restauration)
        ./ghettoVCB-restore.sh -c vms_to_restore -d 1
        ./ghettoVCB-restore.sh -c vms_to_restore -d 2

Utilisation

Exemple d'utilisation : # ./ghettoVCB-restore.sh -c vm_restore_list ################## Restoring VM: CentOS6.0-MEP-base_ssh_snmp ##################### Start time: Fri Aug 24 09:10:22 UTC 2012 Restoring VM from: "/vmfs/volumes/ESXBackup/CentOS6.0-MEP-base_ssh_snmp/CentOS6.0-MEP-base_ssh_snmp-2012-08-24_08-38-21" Restoring VM to Datastore: "/vmfs/volumes/datastore2" using Disk Format: "thin" Creating VM directory: "/vmfs/volumes/datastore2/CentOS6.0-MEP-base_ssh_snmp-2012-08-24_08-38-21" ... Copying "CentOS6Test.vmx" file ... Restoring VM's VMDK(s) ... Updating VMDK entry in "CentOS6Test.vmx" file ... Destination disk format: VMFS thin-provisioned Cloning disk '/vmfs/volumes/ESXBackup/CentOS6.0-MEP-base_ssh_snmp/CentOS6.0-MEP-base_ssh_snmp-2012-08-24_08-38-21/CentOS6Test.vmdk'... Clone: 100% done. Registering CentOS6.0-MEP-base_ssh_snmp ... 608 End time: Fri Aug 24 09:22:39 UTC 2012 ################## Completed restore for CentOS6.0-MEP-base_ssh_snmp! ##################### Start time: Fri Aug 24 09:10:22 UTC 2012 End time: Fri Aug 24 09:22:39 UTC 2012 Duration  : 12.28 Minutes
}}}