Ghettovcb.sh : Le VCenter Backup du pauvre !

Valentin Pourchet

Vous aussi vous êtes pauvre et cherchez un moyen de backuper votre/vos hôte(s) esx(i) pour pas cher ? Ghettovcb.sh est la solution qu'il vous faut.

Niveau compatibilité, Ghettovcb.sh est compatible avec les versions d'ESX/ESXi 3.5/4.x.

Commentez

- Titre : Ghettovcb.sh : Le VCenter Backup du pauvre !

- Auteur : Valentin Pourchet

- Parution : 11 novembre 2011

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2011 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- 1. Comment ça marche ?

- 2. Fonctionnalités

- 3. Prérequis

- 4. Installation

- 5. Configuration

- 6. Utilisation

- 7. Exemples

- 8. Mise en tâche planifiée (ESX)

- 9. Mise en tâche planifiée (ESXi)

- X. Remerciements

1 - Comment ça marche ?

C'est très simple, avez-vous déjà essayé de copier une machine virtuelle d'un hôte vers un autre sans l'éteindre ? Essayez et vous verrez que cela vous donne une erreur. Pourquoi ? Parce que lorsqu'une VM est allumée, les vmdk ou fichiers de disques virtuels sont lockés (verrouillés). Comment faire alors ? C'est simple, pour enlever ce lock sur le vmdk il faut et il suffit de faire un snapshot de la VM. Ah bon ? Ben oui ! Un snapshot après tout c'est quoi ? Un fichier différentiel à partir d'un instant T dans lequel esxi va écrire les modifs jusqu'au delete ou merge de ce différentiel. Dès lors que le snapshot est créé, le fichier du snapshot est locké et le lock du vmdk initial relâché. Scriptez ce principe et vous obtiendrez Ghettovcb.sh.

Voilà pour le principe.

2 - Fonctionnalités

- Support de backups multiples de VMDKs par VM.

- Backup des VMDK valides uniquement.

- Backup à chaud.

- Possibilité d'éteindre la VM avant d'initier le backup puis de la redémarrer ensuite.

- Vérification de la bonne suppression des snapshots issus des backups précédents avant chaque backup.

- Les VM contenant déjà des snapshots ne sont pasbackupées.

- Possibilité de choisir le type des fichiers de disques de backup des VMDK (split 2Go...).

- Support des disques (virtuels) IDE et SCSI.

- Support des VMDk éparpillés sur plusieurs datastores.

- Possibilité de compresser les backups (fonctionnalité en bêta)

- Possibilité de définir des stratégies de sauvegarde différentes selon les VM.

- Possibilité d'inclure/exclure certains vmdk pour une certaine VM.

- Création de log de sortie.

- Timeout pour l'arrêt des VM (optionnel) et la création de snapshots.

- Snapshots paramétrables (mémoire, etc.).

- Débogage durant l'exécution du script.

- Support RDM.

- Support d'une liste d'exclusion de VM.

- Possibilité de backuper toutes les VM d'un hôte sans passer par une liste.

- Mécanismes de locks pour éviter l'exécution simultanée du script plusieurs fois sur le même hôte.

- Arborescence de répertoires pour les backups(rsync).

- Email de log/résultat (expérimental).

- Support Rsync (expérimental).

3 - Prérequis

Un seul prérequis est nécessaire : l'activation de SSH sur le/les hôte(s).

4 - Installation

Pour installer, commencer par télécharger ghettovbc.tar.gz

Déposer le package sur l'hôte esx/esxi.

Et c'est parti pour les commandes :

# tar -zxvf ghettoVCB.tar.gz

Extrait le contenu du package.

# cd ghettoVCB

C'est tout (pour le moment)!

5 - Configuration

Pour configurer le tout il est nécessaire d'éditer le .conf, notamment les valeurs des paramètres suivants :

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

6 - 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).

7 - Exemples

- Backuper les VM d'une liste :

#./ghettoVCB.sh -f vms_liste

Avec le fichier liste comportant le nom des VM (1 par ligne).

- Backuper toutes les VM d'un hôte :

#./ghettoVCB.sh -a

- Backuper toutes les VM d'un hôte sauf celles listées  :

#./ghettoVCB.sh -a -e vms_excliste

8 - Mise en tâche planifiée (ESX)

Pour mettre le backup en tâche cron, exécuter les commandes suivantes.

# crontab -e

Ajouter une entrée de type :

0 0 * * 1-5<path_script>/ghettoVCB.sh -f <path_script>/VMS_LIST ><path_script>/ghettoVCB-backup-$(date +\%s).log

En éditant la syntaxe avec les options voulues bien sûr

Sauvegarder et quitter.

# crontab -l

Votre entrée crontab devrait maintenant apparaitre.

9 - Mise en tâche planifiée (ESXi)

Ajouter la commande au fichier crontab déjà présent dans /var/spool/cron/crontabs/root

Killer le crontab qui tourne :

- Esxi< 3.5u3 :

# kill $(ps | grepcrond | cut -f 1 -d ' ')

- Esxi 3.5u3+ :

# kill $(pidofcrond)
# crond

- Esxi 4.0 :

# kill $(cat /var/run/crond.pid)
# busyboxcrond

Pour être sûr que la tâche sera persistante au reboot, ajouter les lignes également au fichier/etc/rc.local :

- Esxi 3.5 :

/bin/echo"<votrecommande vcbGhetto.sh>">> /var/spool/cron/crontabs/root
crond

- Esxi 4.0 :

/bin/echo "<votrecommande vcbGhetto.sh>" >> /var/spool/cron/crontabs/root
/bin/busyboxcrond

On backupe la nouvelle conf :

# /sbin/auto-backup.sh

On vérifie :

- Que cron tourne bien :

ESX :

# ps -ef | grepcrond | grep -v grep

ESXi :

# ps | grepcrond | grep -v grep

- Que le date/time est correct :

# date

X - Remerciements

Je voudrais remercier ClaudeLELOUP pour sa relecture orthographique détaillée.