Différences entre les versions de « Esxi Backup GhettoVCB »

De BlaxWiki
Aller à la navigationAller à la recherche
Ligne 237 : Ligne 237 :
</pre>
</pre>


=== Statistiques ===
Le backup est la restauration ont un effet bien sur sur le cpu, reseau et I/O de l'esxi plus ou moins important suivant
<pre>
Test de sauvegarde :
- VM éteinte : 8 Gio en 2 minutes 30
- VM allumé (sauvegarde par cliché instantané) : 8 Gio en 2 minutes 42 (Ping vers esxi-ins à 0,8 ~ 0,9 ms pendant la sauvegarde, 0,11 ms après)
Test de restauration (Disque-dur supprimée de la VM et recrée vierge via vSphere) :
- Restauration via GhettoVCB : 8 Gio en 12 minutes 28.
- Demande un renommage/déplacement de fichier ou dossier.
- Machine fonctionnelle, disque restaurée convenablement.
Test de restauration d'une VM (VM totalement supprimée via vSphere) :
- Restauration via GhettoVCB : 8 Gio en 12 minutes 28.
- VM recrée sous vSphere automatiquement.
- Machine fonctionnelle, disque restaurée convenablement.
- Remarque de vSphere au démarrage de la VM indiquant que son UUID provient d'une VM copiée, clonée ou déplacée.
</pre>


[[Catégorie:Virtualisation]]
[[Catégorie:Virtualisation]]

Version du 24 août 2012 à 10:19

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
<pre>
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

Statistiques

Le backup est la restauration ont un effet bien sur sur le cpu, reseau et I/O de l'esxi plus ou moins important suivant

Test de sauvegarde :
- VM éteinte : 8 Gio en 2 minutes 30
- VM allumé (sauvegarde par cliché instantané) : 8 Gio en 2 minutes 42 (Ping vers esxi-ins à 0,8 ~ 0,9 ms pendant la sauvegarde, 0,11 ms après)

Test de restauration (Disque-dur supprimée de la VM et recrée vierge via vSphere) :
- Restauration via GhettoVCB : 8 Gio en 12 minutes 28.
- Demande un renommage/déplacement de fichier ou dossier.
- Machine fonctionnelle, disque restaurée convenablement.

Test de restauration d'une VM (VM totalement supprimée via vSphere) :
- Restauration via GhettoVCB : 8 Gio en 12 minutes 28.
- VM recrée sous vSphere automatiquement.
- Machine fonctionnelle, disque restaurée convenablement.
- Remarque de vSphere au démarrage de la VM indiquant que son UUID provient d'une VM copiée, clonée ou déplacée.