Vous êtes sur la page 1sur 14

ghettoVCB

Solution de backup de machines virtuelles sous VMware ESXi

Florian Gillot 29 octobre 2012

Table des matires


1 Introduction 1.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 But du guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Conguration et utilisation 2.1 ghettoVCB (backup) . . . . . . . 2.1.1 Options de conguration . 2.1.2 Utilisation . . . . . . . . . 2.1.3 Bug ESXi 5.1 . . . . . . . 2.2 ghettoVCB-restore . . . . . . . . 2.2.1 Options de conguration . 2.2.2 Utilisation . . . . . . . . . 3 3 3 4 4 4 7 8 8 8 8 10 10 10 11 12 12 13 14

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

3 Installation sur un serveur VMware ESXi 3.1 Introduction . . . . . . . . . . . . . . 3.2 Mise en place du script . . . . . . . . 3.3 Envoi demail et rewall . . . . . . . 3.3.1 Premier test . . . . . . . . . . 3.3.2 Automatisation . . . . . . . . 3.4 Rendre les modications persistantes 4 Sources

version 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

1 Introduction
1.1 Prsentation
ghettoVCB est une alternative libre, lgre et gratuite loutil payant VMware VCB pour les sauvegardes de machines virtuelles sur les serveurs VMware ESX et ESXi. Cet outil se prsente sous la forum de 2 scripts .sh, un destin la sauvegarde et un destin la restauration. La documentation complte de loutil est disponible ladresse suivante : http://communities.vmware.com/docs/DOC-8760 pour loutil de sauvegarde et ici : http://communities.vmware.com/docs/DOC-10595 pour loutil de restauration.

1.2 But du guide


Devant mettre en place une solution de sauvegarde des machines virtuelles sur un serveur ESXi 5.1, jai dcouvert ce script trs performant qui correspondait mes attentes. Devant labsence de documentation jour et surtout en franais, jai dcid dcrire ce petit manuel pour aider tout ceux voulant une solution de backup performante, libre et gratuite.

2 Conguration et utilisation
2.1 ghettoVCB (backup)
2.1.1 Options de conguration
Loutil peut se congurer directement en modiant le script ou en crant un chier spar de conguration. Dans le package par dfaut disponible sur github ladresse suivante : https://github.com/lamw/ghettoVCB/downloads, un chier exemple de conguration est fourni : VM_BACKUP_VOLUME=/vmfs/volumes/dlgCore-NFS-bigboi.VM-Backups/WILLIAM_BACKUPS DISK_BACKUP_FORMAT=thin VM_BACKUP_ROTATION_COUNT=3 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 ENABLE_NON_PERSISTENT_NFS=0 UNMOUNT_NFS=0 NFS_SERVER=172.30.0.195 NFS_MOUNT=/nfsshare NFS_LOCAL_NAME=nfs_storage_backup NFS_VM_BACKUP_DIR=mybackups SNAPSHOT_TIMEOUT=15 EMAIL_LOG=0 EMAIL_DEBUG=0 EMAIL_SERVER=auroa.primp-industries.com EMAIL_SERVER_PORT=25 EMAIL_DELAY_INTERVAL=1 EMAIL_TO=auroa@primp-industries.com EMAIL_FROM=root@ghettoVCB VM_BACKUP_VOLUME Emplacement dans lequel vont se retrouver les machines sauvegardes.

DISK_BACKUP_FORMAT Format dans lequel les disques des machines sont sauvegards, ici la mthode "thin" est recommande. VM_BACKUP_ROTATION_COUNT Dnition du nombre de rotation des sauvegardes. Si le nombre est dni 3, ghettoVCB garde les 3 dernires sauvegardes de chaque VM, dans le cas dun 4me backup, la sauvegarde la plus vieille est automatiquement remplace. POWER_VM_DOWN_BEFORE_BACKUP Si cette option est dnie 1, chaque machine virtuelle est teinte pour raliser la sauvegarde. Avec cette mthode, le snapshot davant backup devient inutile. Cette option est non recommande dans un environnement de production. ENABLE_HARD_POWER_OFF Cette option dpend de POWER_VM_DOWN_BEFORE_BACKUP. Cette option est non recommande dans un environnement de production. ITER_TO_WAIT_SHUTDOWN Cette option dpend de POWER_VM_DOWN_BEFORE_BACKUP et ENABLE_HARD_POWER_OFF. Cette option est non recommande dans un environnement de production. POWER_DOWN_TIMEOUT Cette option dpend de POWER_VM_DOWN_BEFORE_BACKUP. Cette option est non recommande dans un environnement de production. ENABLE_COMPRESSION Si cette option est dnie 1, elle active la compression des sauvegardes, cette option nest pas recommand dans le cas de sauvegarde de machines de plus de 4GB. VM_SNAPSHOT_MEMORY Si cette option est dnie 1, elle active la backup de la mmoire vive. Cette option est non recommande. VM_SNAPSHOT_QUIESC Si cette option est dnie 1, elle active le quiescing. Cette option est non recommande.

ENABLE_NON_PERSISTENT_NFS Si cette option est dnie 1, elle active le montage dun partage NFS non persistant qui est mont chaque dbut de backup. UNMOUNT_NFS Si cette option est dnie 1 ainsi que ENABLE_NON_PERSISTENT_NFS, elle active le dmontage du volume NFS la n du processus de sauvegarde. NFS_SERVER Adresse du serveur NFS. NFS_MOUNT Dossier export du serveur NFS. NFS_LOCAL_NAME Nom local du datastore NFS. NFS_VM_BACKUP_DIR Nom du dossier de backup NFS. SNAPSHOT_TIMEOUT Dnition en nombre ditration (de 60 secondes) du temps dattente du script pendant le snapshot davant backup. Si le temps de snapshot excde la valeur dclare, le script ignore le backup pour la machine virtuelle. La valeur par dfaut (15) est recommande. EMAIL_LOG Active lenvoi du log daprs backup par email. EMAIL_DEBUG Si cette option est dnie 1, une copie des emails envoys est sauve sur le serveur. Cette option ne doit servir, normalement, que pour des tests de conguration. EMAIL_SERVER Adresse du serveur SMTP. EMAIL_SERVER_PORT Port du serveur SMTP

EMAIL_DELAY_INTERVAL Dans le cas dun envoi de plusieurs mails et dun serveur SMTP lent, ils est possible ici de dnir un dlai entre les envois (en secondes). EMAIL_TO Adresses sur lesquelles envoyer les logs. Dans le cas de plusieurs adresses, il convient de les sparer laide de virgules. EMAIL_FROM Adresse denvoi des emails.

2.1.2 Utilisation
Le programme est un script bash, on peut donc lexcuter comme ceci : [root@serveur-esxi ghettoVCB]# ./ghettoVCB.sh Pour pouvoir sauvegarder les machines virtuelles, il faut passer des arguments au script : -a Permet de sauvegarder tous les VMs du serveur. -f liste_vms Permet de sauvegarder les VMs spcies dans un chier (liste_vms dans lexemple ci dessus). -e exclusion_vms Combin avec largument -a, cet option permet dexclure certaines VMs de la sauvegarde spcies dans un chier (exclusion_vms dans lexemple ci dessus). -g /dossier/ghettovcb.conf Permet de dnir un chier de conguration (ici ghettovcb.conf) (Voir la section Options de conguration). - l /dossier/ghettovcb.log Permet de dnir lemplacement dun chier de log.

-d [info|debug|dryrun] Permet de dnir le niveau de debug dans le cas de tests, le niveau par dfaut est info. En utilisant debug, le script est bien plus bavard. Utiliser largument dryrun permet de simuler tout un processus de backup sans faire aucune sauvegarde.

2.1.3 Bug ESXi 5.1


Avant de lancer le processus de backup, GhettoVCB vrie la version du serveur ESX/ESXi, malheureusement il na pas t mis jour depuis quelques temps et ne fonctionnera pas si vous lexcutez tel quel sur une machine ESXi 5.1. Pour corriger cet erreur, il vous sut dditer votre script ghettoVCB.sh, et de modier la ligne 231 : if [[ "${ESX_VERSION}" == "5.0.0" ]]; then de cette faon : if [[ "${ESX_VERSION}" == "5.0.0" ]] || [[ "${ESX_VERSION}" == "5.1.0" ]]; then

2.2 ghettoVCB-restore
2.2.1 Options de conguration
Le script ghettoVCB-restore fonctionne indpendamment du script de sauvegarde, ils ne partagent pas les mmes chiers de conguration. Avant dexcuter le script il convient dcrire un chier avec les informations sur les machines restaurer. Pour chaque machine restaurer, une ligne doit tre crite de cette faon : "<EMPLACEMENT_DE_LA_SAUVEGARDE>;<EMPLACEMENT_DU_DATASTORE>;<FORMAT_DU_DISQUE>" Le format du disque doit tre spci laide dun chire : 1. zeroedthick 2. 2gbsparse 3. thin 4. eagerzeroedthick Dans notre cas nous utilisons thin, ce qui nous donne par exemple : "/vmfs/volumes/storage1/BACK/MA_VM/MA_VM-2012-10-29_00-00-02;/vmfs/volumes/storage1;3"

2.2.2 Utilisation
Tout comme le programme de backup le programme est un script bash, on peut donc lexcuter comme ceci : [root@serveur-esxi ghettoVCB]# ./ghettoVCB-restore.sh Il faut aussi passer des arguments au script pour lancer la ou les restaurations :

-c vms_restore Permet dindiquer au script le chier contenant les machines restaurer (ici vms_restore) (Voir la section Options de conguration). - l /dossier/ghettovcb.log Permet de dnir lemplacement dun chier de log. -d [1|2] Permet de simuler une restauration (dryrun) avec debug plus ou moins verbeux (1 ou 2).

3 Installation sur un serveur VMware ESXi version 5.1


3.1 Introduction
La procdure dtaille ici nest un exemple de ce que lon peut faire avec ce script. Le but nal de linstallation dcrite ici est de sauvegarder toutes les machines virtuelles du serveur dans le datastore local (storage1 ici), la procdure est exactement la mme pour un datastore permanent mont en NFS (Voir loption ENABLE_NON_PERSISTENT_NFS de GhettoVCB pour les partages NFS "non persistants"). Le backup des VMs doit tre transparent pour les utilisateurs, automatis de faon a avoir une sauvegarde par jour pour chaque machine, et persistant en cas de crash ou de redmarrage du serveur.

3.2 Mise en place du script


VMware ESXi 5.1 fonctionne la manire dun LiveCD Linux (ou autre), chaque redmarrage, larborescence du systme ainsi quun grand nombre de chiers de conguration sont remis zero. Cest pour cela quil est primordial de stocker GhettoVCB dans un dossier persistant au redmarrage. Je vous conseille de stocker vos scripts et chiers de cong GhettoVCB dans un datastore local, ce qui vous vitera bien des ennuis en cas de redmarrage. Vous pouvez tlcharger la dernire version de GhettoVCB ici : https://github.com/ lamw/ghettoVCB/downloads Seul les 2 scripts (ghettoVCB.sh et ghettoVCB-restore.sh) sont primordiaux. Dans mon exemple je les ai copis dans le dossier suivant : /vmfs/volumes/storage1/BACKUPS/ghettoVCB Ma conguration ntant pas amene changer souvent, je nai pas jug utile de crer un chier de conguration part, jai directement modi le script pour y inscrire mes valeurs, voici les lignes que jai du modier : VM_BACKUP_VOLUME=/vmfs/volumes/storage1/BACKUPS EMAIL_LOG=1 EMAIL_SERVER=smtp.baobabcorporation.net EMAIL_FROM=ghettoVCB@baobabcorporation.net EMAIL_TO=admin1@baobabcorporation.net,admin2@baobabcorporation.net

10

La conguration dorigine me convenant parfaitement, je nai eu modier beaucoup doptions. Attention, pour que GhettoVCB sexcute correctement sur ESXi 5.1, il est impratif de modier le script comme expliqu dans la sous section 2.1.3 Bug ESXi 5.1.

3.3 Envoi demail et rewall


VMware ESXi est quip dun rewall, qui dorigine, bloque les envois de message sur le port 25 en SMTP. VMware na pas jug utile de faire une rgle pour ce port, cest pour cela quil va falloir la crer. Pour crer une nouvelle rgle de pare-feu, il faut se rendre dans le dossier : /etc/vmware/firewall/ Vous pouvez prendre exemple sur le chier service.xml pour crer votre propre rgle. Je vous conseille nanmoins de ne pas modier ce chier et den crer un nouveau pour vos propres rgles. Pour ma part jai cre le chier ghettoVCB.xml que jai rempli comme ceci : <ConfigRoot> <service id=1337> <id>ghettoVCB SMTP</id> <rule> <direction>outbound</direction> <protocol>tcp</protocol> <porttype>dst</porttype> <port>25</port> </rule> <enabled>true</enabled> <required>false</required> </service> </ConfigRoot> Pour que le rewall prenne en compte votre nouvelle rgle, il vous sut dexcuter ces 2 commandes : esxcli network firewall refresh esxcli network firewall ruleset list Votre rgle devrait sacher comme ceci : ghettoVCB SMTP true

Attention, si vous redmarrez et que vous navez pas rendu vos modications persistantes (voir Rendre les modications persistantes), vos rgles de rewall seront eaces.

11

3.3.1 Premier test


Maintenant que GhettoVCB est congur et que le rewall permet lenvoi demails, vous pouvez le bon fonctionnement du script en faisant un "dryrun". Dans mon cas, en me rendant dans le dossier ou se situe le script, jexcute : ./ghettoVCB.sh -a -d dryrun Le script va simuler le backup de toutes les machines mais sans faire de sauvegarde. Noublier pas de vrier si les logs ont bien ts envoys par email. Il se peut que vous nayez pas les droits dexcution sur le script, pour cela faites un chmod +x ghetthoVCB.sh pour le rendre excutable.

3.3.2 Automatisation
Pour automatiser la procdure de sauvegarde des machines virtuelles, nous utiliserons Cron. Attention son fonctionnement peut direr dune version lautre de lESX/ESXi. Si vous ne connaissez pas la syntaxe dune tche Cron, je vous invite vous renseigner, ici par exemple : http://fr.wikipedia.org/wiki/Crontab Avant de pouvoir modier votre table Cron, il faut dj arrter le processus avec la commande : /bin/kill $(cat /var/run/crond.pid) Il faut ensuite modier le chier /var/spool/cron/crontabs/root et ajouter votre tche de backup. Attention, il est indispensable de "rediriger" la sortie du script laide de ">" car le script pourrait sarrter en plein de milieu de sa tche en cas de buer plein. Vous pouvez redirigez la sortie dans un chier de log comme dans mon exemple ou bien dans un chier dans /tmp ou mme pointer directement vers /dev/null. La tche que jai programme sexcute tous les jours minuit et fait le backup complet des machines virtuelles du serveur et inscrit le rsultat dans le chier backups.log (tout tient sur la mme ligne, jai du sauter une ligne pour des raisons de mise en page) : 0 0 * * * /vmfs/volumes/storage1/BACKUPS/ghettoVCB/ghettoVCB.sh -a > /vmfs/volumes/storage1/BACKUPS/backups.log Il sut ensuite de redmarrer Crond : /usr/lib/vmware/busybox/bin/busybox crond Attention, si vous redmarrez et que vous navez pas rendu vos modications persistantes (voir Rendre les modications persistantes), vos rgles de Cron seront eaces.

12

3.4 Rendre les modications persistantes


VMware ESXi remettant zro un grand nombre de chiers chaque redmarrage, les paramtres de rewall et de cron sont malheureusement eacs. Nanmoins il existe une technique pour rendre ces modications persistantes. Il sut dditer le chier /etc/rc.local.d/local.sh qui sexcute chaque dmarrage, voici le contenu du mien (la commande commenant par /bin/echo et se terminant par contabs/root tient sur une seule ligne) : #!/bin/sh echo "<ConfigRoot> <service id=1337> <id>ghettoVCB SMTP</id> <rule> <direction>outbound</direction> <protocol>tcp</protocol> <porttype>dst</porttype> <port>25</port> </rule> <enabled>true</enabled> <required>false</required> </service> </ConfigRoot>" > /etc/vmware/firewall/ghettoVCB.xml esxcli network firewall refresh /bin/kill $(cat /var/run/crond.pid) /bin/echo "0 0 * * * /vmfs/volumes/storage1/BACKUPS/ghettoVCB/ghettoVCB.sh -a > /vmfs/volumes/storage1/BACKUPS/backups.log" >> /var/spool/cron/crontabs/root /usr/lib/vmware/busybox/bin/busybox crond exit 0 Comme vous pouvez le constater, ce script ne fait quautomatiser ce que lon a mis en place dans les sections prcdentes.

13

4 Sources
virtuallyGhetto ghettoVCB.sh - Free alternative for backing up VMs for ESX(i) 3.5, 4.x+ & 5.x Ghetto Tech Preview - ghettoVCB-restore.sh - Restoring VMs backed up from ghettoVCB to ESX(i) 3.5, 4.x+ & 5.x Modifying ghettoVCB to run on VMware ESXi 5.1

14