Skip to content
Advertisement
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

 

 

 

 

 

 

 

 

 

 

 

37 Comments

Leave a Comment
  1. Manu / Feb 13 2011 15:16

    Vive le pas cher ^^

    Manu

  2. ff / Feb 28 2011 12: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 / Feb 28 2011 13:05

      Merci Mr François pour ce feedback !

  3. LE MAISTRE Colas / Mar 24 2011 11: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 22: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 / Apr 28 2011 13: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 / May 14 2011 14: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 / Apr 5 2011 08:07

    Bonjour,

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

    merci,

  5. ziarn / Apr 12 2011 12: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 16: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 / Apr 18 2011 16: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.ht

    Bonne amusement.

    • vpourchet / Apr 18 2011 22:04

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

      Sincères salutations.

      Valentin

  7. Pascal / Jun 14 2011 23: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 / Jun 15 2011 02:12

      Bonsoir,
      Puis je avoir le message d'erreur ?

      Cdt,

      VPT

      • Pascal / Jun 15 2011 23: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 / Jun 19 2011 15:07

          up !! :-D

  8. Clement / Jun 24 2011 13: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 / Aug 24 2011 12: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 14: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 13: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 21:26

      Bonjour,

      Cette VM comporte des snapshots ?

      Cordialement,

      V.

  11. HATSADOURIAN / Mar 21 2012 16: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 / Apr 29 2012 12:33

      Bonjour,

      Merci pour cette information.

      Cordialement,

      V

  12. aicha / Apr 20 2012 20: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 / Apr 29 2012 12: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 / Apr 25 2012 19: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 / Apr 29 2012 12:12

      Bonjour,

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

      Cordialement,

      V

      • hajaring / Apr 29 2012 15: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 / Apr 29 2012 15: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

  14. Julien / Sep 20 2012 03:04

    Bonjour,

    Merci pour l'article. J'avais aussi suivi la page du projet.

    Malheureusement chez moi ça ne marche pas. Je n'ai qu'un datastore sur l'ESXi, j'y ai donc créé un dossier "backups" pour faire la copie sur le même datastore que la source.

    J'obtiens "Snapshot found for Debian 6 – test – srvv1a, backup will not take place" puis "Final status: ERROR: All VMs failed!".

    Voilà les logs après exécution :
    http://pastebin.com/P2fffQ3p

    Avez-vous une idée de pourquoi ça ne fonctionne pas ?

    Je ne trouve pas de détail sur l'erreur qui mène à l'échec…

    Merci

    • Julien / Sep 20 2012 20:40

      Je me réponds à moi même car j'ai identifié le problème, le nom de ma VM, avec des espaces posait problème. J'en ai créé une nouvelle, sans espace cette fois et ça fonctionne très bien.

      • vpourchet / Sep 24 2012 10:28

        Merci d'avoir partagé cette information.

        Cordialement,

        V

  15. Pierre / Oct 3 2013 15:01

    Bonjour,

    Une nouvelle version de GhettoVCB est sortie depuis cette article permettant, entre autre, d’effectuer le backup d’une VM et de ces snapshots et d’effectuer plusieurs backups simultanement .

    Il y a une erreur dans ce tuto : VM_SNAPSHOT_QUIESCE n’est pas une option d’attente du snapshot . VM_SNAPSHOT_QUIESCE permet de mettre en pause les process d’une VM durant la snapshot ( si les VMware Tools sont installes )

    • vpourchet / Oct 3 2013 23:19

      Bonsoir,

      Merci pour ces clarifications.

      Bien cordialement,

      V

Trackbacks

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

Leave a Reply

Your email address will not be published.