Skip to content
2011/02/13 / vpourchet

Ghettovcb.sh : Le VCenter Backup du pauvre !

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.

Comment ca marche ?

 

C’est très simple, avez-vous déjà essaye de copier une machine virtuelle d’un hôte vers un autre sans l’éteindre ? Essayez et vous verrez que cela vous pette une erreur. Pourquoi ? Car lorsqu’une VM est allumée, les vmdk ou fichier de disques virtuels sont lockés (verrouilles). 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. Des lors que le snapshot est créé, le fichier du snapshot est locke et le lock du vmdk initial relâché. Scriptez ce principe et vous obtiendrez Ghettovcb.sh.

Voila pour le principe.

Fonctionnalités

  • Support de backups multiples de VMDKs par VM.
  • Backup des VMDK valides uniquement.
  • Backup a 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 vms contenant déjà des snapshots ne sont pas backupees L .
  • 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és en beta)
  • Possibilité de définir des stratégies de sauvegarde différentes selon les VMs.
  • Possibilité d’inclure/exclure certains vmdk pour une certaine VM.
  • Création de log de sortie.
  • Timeout pour l’arrêt des VMS (optionnel) et la création de snapshots.
  • Snapshots paramétrables (mémoire, etc…).
  • Debugging durant l’exécution du script.
  • Support RDM.
  • Support d’une liste d’exclusion de VMS.
  • Possibilité de backuper toutes les vms 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 hote.
  • Arborescence de répertoires pour les backups (rsync) .
  • Email de log/resultat (expérimental).
  • Support Rsync (expérimental).

     

Pré-requis

 

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

 

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)!

 

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= Eteindre 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’as pas les tools (0=false/non 1=true/oui).
  • ITER_TO_WAIT_SHUTDOWN= nombre de minutes a attendre avant le HARD POWER OFF.
  • POWER_DOWN_TIMEOUT= nombre de minutes a attendre avant extinction de la VM avant de l’ignorer et passer a la suivante.
  • SNAPSHOT_TIMEOUT= nombre de minutes a attendre pendant le snapshot avant d’ignorer et passer a la VM suivante.
  • ENABLE_COMPRESSION= Activer la compression des backup (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= definir un vmdk en particulier a 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 a utiliser.
  • EMAIL_TO= adresse a laquelle part le mail.
  • EMAIL_FROM= émetteur du mail.
  • RSYNC_LINK= Support d’un lien symbolique RSYNC.

     

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 VMS d’un hote.
   -f     Liste des vms a backuper.
   -c     Repertoire des fichiers de configuration des VMS backupees.
   -g     Chemin vers le fichier .conf de ghettovcb.
   -l     Fichier de log de sortie.
   -d     Niveau de debug (info|debug|dryrun) (defaut: info).

 

Exemples

  • Backuper les VMs d’une liste : #./ghettoVCB.sh -f vms_liste
    • Avec le fichier liste comportant le nom des VMs (1 par ligne).
  • Backuper toutes les VMs d’un hote : #./ghettoVCB.sh –a
  • Backuper toutes les VMs d’un haute sauf celles listees : #./ghettoVCB.sh –a –e vms_excliste

 

Mise en tache planifiée (ESX)

 

Pour mettre le backup en tache 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 sur J

Sauvegarder et quitter.

# crontab –l

Votre entrée crontab devrait maintenant apparaitre.

 

Mise en tache 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 | grep crond | cut -f 1 -d ‘ ‘)
  • Esxi 3.5u3+ :
    • # kill $(pidof crond)
    • # crond
  • Esxi 4.0 :
    • # kill $(cat /var/run/crond.pid)
    • # busybox crond

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
      « <votre commande vcbGhetto.sh>« 
      >> /var/spool/cron/crontabs/root
    • crond
  • Esxi 4.0 :
    • /bin/echo « <votre commande vcbGhetto.sh> » >> /var/spool/cron/crontabs/root
    • /bin/busybox crond

On backup la nouvelle conf :

# /sbin/auto-backup.sh

On vérifie:

  • Que cron tourne bien :
    • ESX :
      • # ps -ef | grep crond | grep -v grep
    • ESXi :
      • # ps | grep crond | grep -v grep
  • Que le date/time est correct :
    • # date

 

Et « that’s IT ! » J

 

 

 

 

 

 

 

 

 

 

 

32 commentaires

Laisser un commentaire
  1. Manu / Fév 13 2011 13:16

    Vive le pas cher ^^
    Manu

    • vpourchet / Fév 13 2011 16:11

      je te le fais pas dire :)

  2. ff / Fév 28 2011 10:50

    bon voilà tu as mon retour sur ghettoVCB :)

    crond et non plus /busybox/crond

    Sinon cela marche du tonnerre et en auto !

    PS : la restauration marche niquel.

    • vpourchet / Fév 28 2011 11:05

      Merci Mr François pour ce feedback !

  3. LE MAISTRE Colas / Mar 24 2011 09:37

    Bonjour,
    Tout d’abords merci pour ton tuto qui m’a vraiment guidé.
    Cependant j’ai une petite question, peut-on avoir un fichier de conf propre pour chaque VM ? je pensais au fichier template, peut-on en faire un pour chaque VM et ainsi affiner les paramètres?
    Si oui, comment faire? et où le placer ? sur la même racine ?

    Merci d’avance

    • vpourchet / Mar 24 2011 20:20

      Oui tout a fait :

      # mkdir backup_vms_config

      Avec dedans autant de copies du template que de type de policies :
      # cp ghettoVCB-vm_backup_configuration_template MonTemplate

      + 1 copie du template par défaut

      le run :

      #./ghettoVCB.sh -f vms_to_backup -c backup_vms_config

      A noter : si une vm listée dans la liste n’as pas sa propre policy, c’est celle par défaut qui sera appliquée ;)

      Cela réponds a la question ?

      • LE MAISTRE / Avr 28 2011 11:05

        Oui tout a fais merci, ça marche a merveille, je cherche maintenant à inventorier des VM sur GLPI et ainsi les lier à des serveurs ESXi mais je ne trouve pas le plugin qu’il faut, tu aurai une idée ?

        Cordialement

        Colas

        • vpourchet / Mai 14 2011 12:11

          Hmmmm peut etre le plugin fusion inventory qui inventorie les périphériques snmp …. la dessus je ne me suis jamais penché.

  4. iotefa / Avr 5 2011 06:07

    Bonjour,

    pourrais tu me dire ou trouvez le scrip ghettoVCB-restore.sh ?

    merci,

    • vpourchet / Avr 12 2011 19:57

      Avec tout les autre : sur le ghetto VMware : http://communities.vmware.com/docs/DOC-9852 ;)

  5. ziarn / Avr 12 2011 10:56

    Merci pour le petit tutoriel.
    Je viens d’installer l’ESXi 4.0 update 1
    J’ai un soucis pour la planification, je n’ai pas de auto-backup.sh
    J’ai bien entré dans la crontab le script (qui fonctionne si je le lance en manuel) mais pas de lancement auto.
    De plus, la commande « ps | grep crond | grep -v grep » ne donne rien…

    Une info ?
    Merci d’avance.

    • georges / Oct 6 2011 14:20

      bonjour as tu solutionner ton probleme de cron qui ne se lance pas avec esxi 4.0 update 1
      j’ai le meme probleme…
      merci pour ta reponse.

  6. Alain Spineux / Avr 18 2011 14:36

    Ceux qui trouve la partie upload des fichiers de config et config du cron un peu difficile, il y a mksbackup qui est un front-end pour ghettoVCB.
    Il se lance depuis un Windows ou un Linux, il peut s’auto-installer et télécharger ghettoVCB.sh
    Il se charge du transfert des fichiers de config sur le serveur ESX(i) et de lancer ghettoVCB.sh
    A la fin in génère un rapport très complet et l’envoi par email.
    Vous avez juste a modifier ghettoVCB.conf ainsi que le fichier de config propre, mksbackup.ini pour spécifier la liste des machines a sauvegarder et le destinataire du mail.
    mksbackup peut aussi rapatrier le backup via SCP ou bien l’uploader sur un site FTP, y compris sur la machine Windows ou le Linux via un serveur FTP intégré.
    Pour automatiser la tache, configurés une tache sur votre Windows ou votre Linux pour lancer mksbackup chaque jour.

    http://www.magikmon.com/mksbackup/ghettovcb.en.html

    Bonne amusement.

    • vpourchet / Avr 18 2011 20:04

      C’est un exellent tip, merci de le partager.

      Sincères salutations.

      Valentin

  7. Pascal / Juin 14 2011 21:49

    Bonsoir, c’est vrai que ce script marche super bien :-D, par contre j’ai un soucis, ma sauvegarde tourne depuis 6 mois sans soucis, sur un NAS netgear, et tout d’un coup, sans changement apparent, il me met une erreur d’ecriture sur ‘/vms/volumes/backup’, ce lien étant le paramètre de ‘VM_BACKUP_VOLUME =’, avez vous une idée ?

    • vpourchet / Juin 15 2011 00:12

      Bonsoir,
      Puis je avoir le message d’erreur ?

      Cdt,

      VPT

      • Pascal / Juin 15 2011 21:30

        mkdir: cannot create directory `/vmfs/volumes/backup’: Operation not permitted

        Voilà ce que le script me renvoi lors de l’exécution manuelle, ce script fonctionnait jusqu’a lors, j’ai vérifié le partage sur le NAS, il est bien monté en NFS

        • Pascal / Juin 19 2011 13:07

          up !! :-D

  8. Clement / Juin 24 2011 11:35

    Bonjour,
    Pour moi ce script marche tres bien. Les seul hic c’est qu’il me génere pas de mail quand ma tache est executé en cronjob.
    Je le fais bien resortir vers un fichier de log pourtant.
    JE tourne un peu en rond de ce coté la.

  9. Cazes Luc / Août 24 2011 10:34

    Salut,

    Merci pour to tuto.
    Je l’ai mis en oeuvre et tout fonctionne bien.
    Seul HIC c’est que c’est super lent sur un ESX 3.5 : 92Min pour une VM de 5Go!!!!!
    Es ce normal ??
    @plus

    • vpourchet / Sep 4 2011 12:02

      Hmmm non dans mes souvenirs c’était plus rapide.

      Au niveau des NIC quelle config est appliquée ? Et au niveau du share ?

      Cordialement,

      V

  10. Jérémy / Jan 31 2012 11:36

    Bonjour à tous,

    J’ai un problème de backup avec certaines VM : Vers les 30 %, j’ai droit à un message d’erreur :

    2012-01-31 10:24:26 — info: ERROR: error in backing up of « /vmfs/volumes/datastore1/cirrus_1/cirrus_1.vmdk » for cirrus
    2012-01-31 10:24:28 — info: Removing snapshot from cirrus …
    2012-01-31 10:24:34 — info: Backup Duration: 33.38 Minutes
    2012-01-31 10:24:34 — info: ERROR: Unable to backup cirrus due to error in VMDK backup!

    2012-01-31 10:24:34 — info: ###### Final status: ERROR: No VMs backed up! ######

    J’ai testé la sauvegarde sur un serveur NFS sous XP et aussi grâce à un SAN, sa ne change rien.

    Merci de votre aide.

    • vpourchet / Mar 9 2012 19:26

      Bonjour,

      Cette VM comporte des snapshots ?

      Cordialement,

      V.

  11. HATSADOURIAN / Mar 21 2012 14:06

    Bonjour,

    J’ai eu ce problème avec des VM dont les disques étaient supérieurs à 40Go
    La solution et de passer en 2Gbsparse au lieu de thin . Ce qui créera plusieurs fichiers de 2Gbs lors de la sauvegarde.

    • vpourchet / Avr 29 2012 10:33

      Bonjour,

      Merci pour cette information.

      Cordialement,

      V

  12. aicha / Avr 20 2012 18:27

    bonsoir d’abord merci pour ce tuto c vmt intéressant
    je travaille sur esxi5 est ce que ce script est valable pour cette version
    j une autre question méme si je vais sortir un peu du sujet
    j créer un snapshot juste pour tester j remarquer l’ajout de 2 fichiers .vmsn et .vmdk sur ma banque de données et Apres j essayer de les supprime pour le fichier .vmsn sa supprime mais l’autre me donne un msg d’erreur
    j’aimerais avoir une explication et merci

    • vpourchet / Avr 29 2012 10:16

      Bonjour,

      Je suppose que le script fonctionne avec ESXi 5 (à confirmer).

      Pour supprimer les snapshots le mieux est de passer par l’interface du client vSphere car en supprimant manuellement les fichiers sur la banque de données vous allez avoir des ennuis.
      Quel est le message d’erreur ? Si la VM tourne au moment de la suppression, le fichier est verouillé.

      Cordialement,

      V

  13. hajaring / Avr 25 2012 17:25

    salut, pour moi j’ai tester le script ghettoVCB.sh et ca marche tres bien (il snapshote, il copie la VM et il supprime le snapshot), comme cible des sauvegarde j’ai selectionné un emplacement local (sur le datastore de mon serveur Esxi 5) mais ca juste pour tester le script…

    mon objectif est de sauvegarder les VMs sur un robot de sauvegarde situé sur le LAN, est ce que c’est possible ou non??

    Merci de me repondre

    • vpourchet / Avr 29 2012 10:12

      Bonjour,

      Je n’ai jamais testé cette configuration mais n’hésitez pas à venir partager votre retour.

      Cordialement,

      V

      • hajaring / Avr 29 2012 13:14

        Bonjour, apres les recherches, j’ai devoilé que les systemes de stockage possibles pour ce script sont: stockage local, un LUN sur un SAN ou NFS, alors pour mon cas j’ai installé le service NFS sur mon robot de sauvegarde et j’ai monté un volume sur mon Esxi et ca marche à la merveille!
        c’est juste pour votre information :)

        • hajaring / Avr 29 2012 13:20

          je demande encore une chose …

          j’ai pas encore testé la restauration avec le script ghettoVCB-restore.sh mai en gros ce que j’ai compris que ce script permet de restaurer des VMs situées ds un fichier backup-vm vers un autre fichier restore-vm c’est ca ou nn??

          si oui, pourquoi faire, on peut tous simplement faire un copier coller du fichier où on a les backup vers le fichier de restauration

          pour moi j ai deja testé avec cette methode, j’ai crée une Vm, j’ai supprimé son disque et ja’i un ajouté le disque .vmdk et les autre fichier de conf (backupé ) et j’ai eu finalement ma VM

          qu’est ce que vous pensez????

          merci de me repondre

Trackbacks

  1. On vous recommande 5 clics et nouveaux onglets par jour (ou presque) – ツ Tym-Project

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :