Backing up VMware ESXi VMs with ghettoVCB

Pre-requisites

  • SSH access to your ESXi host.
  • A datastore, preferably a remote NFS or iSCSI one, where backups can be stored.

Installation

  1. Download the ghettoVCB VIB and then using your tool of choice (e.g. the vSphere Client or FileZilla over SFTP), transfer the VIB to your ESXi host.
  2. Connect to your ESXi host over SSH and enable the installation of “community” packages using the command esxcli software acceptance set level=CommunitySupported . By default, ESXi will only allow the installation of official packages, so unless the acceptance level is set to Community Supported, installation of ghettoVCB will fail.
  3. Install the ghettoVCB VIB using the command esxcli software vib install v /path/to/vghettoghettoVCB.vib f . If you used the vSphere Client to upload it to a datastore, you can find it at /vmfs/volumes/DATASTORENAME/vghettoghettoVCB.vib.

You can verify that the installation was successful by navigating to /opt/ghettovcb/bin . If successful, there should be two files in here – ghettoVCBrestore.sh and ghettoVCB.sh scripts.

Configuration

  1. Using the text editor of your choice (e.g. vi ), edit /opt/ghettovcb/ghettoVCB.conf .
  2. Copy the example configuration from https://github.com/lamw/ghettoVCB/blob/master/ghettoVCB.conf and paste it in to the new file.
  3. Adjust the configuration values as desired. Important values are;
    • VM_BACKUP_VOLUME – The path to your datastore where backups will be stored. For example, if your datastore was called “ISCSI-DATASTORE” and you wanted to store backups inside a folder called “Backups”, you would set this to /vmfs/volumes/ISCSIDATASTORE/Backups .
    • VM_BACKUP_ROTATION_COUNT – The number of backups you wish to retain for each VM. Once more than this number of backups exist, the oldest one will be deleted automatically.
    • EMAIL_SERVER and EMAIL_SERVER_PORT  – The address and port of the email server you want to send backup reports to. ghettoVCB uses netcat to directly speak the SMTP protocol to your email server and as a result authentication and SSL/TLS are not supported! If you don’t want email reports on backups, delete these configuration lines.
    • EMAIL_TO – The email address to send backup reports to. If you don’t want email reports on backups, delete this configuration lines.
  1. Save and quit.

Run

Now that ghettoVCB is installed and configured, we can run a backup. Firstly, try backing up a single VM using the command /opt/ghettovcb/bin/ghettoVCB.sh g /opt/ghettovcb/ghettoVCB.conf mVMNAME , replacing VMNAME with the name of your VM. ghettoVCB will then start backing up this VM to your configured datastore directory by creating a snapshot and then cloning the VM’s disks. Once complete, ghettoVCB will remove the snapshot and return you to the console.

Review the output of ghettoVCB for any errors. If the backup was successful, you should see the line ###### Final status: All VMs backed up OK! ###### in the output. Now, try backing up all of your VMs using the command /opt/ghettovcb/bin/ghettoVCB.sh g /opt/ghettovcb/ghettoVCB.conf a . Again, monitor the output of ghettoVCB and make sure that the backup completes successfully.

Schedule

Running backups on a manual schedule is no fun though, so instead it’s possible to run ghettoVCB automatically using a cron job.

  1. Using the text editor of your choice (e.g. vi ), edit /var/spool/cron/crontabs/root .
  2. Add a new line containing 0 1 * * * /opt/ghettovcb/bin/ghettoVCB.sh g/opt/ghettovcb/ghettoVCB.conf l /tmp/ghettoVCB.log a > /dev/null .
  3. Save and quit – as this file is typically read-only you may need to force your editor to save (in vi , use the command :wq! ).

What does this new line do?

    • At 1am every day, executes the backup command. You can change the time that the backup command is executed by changing the cron expression from 0 1 * * * . If you’re unfamiliar with cron-syntax, you can use a tool such as Cron Maker to generate a suitable cron-syntax.
    • Uses the configuration file /opt/ghettovcb/ghettoVCB.conf to adjust how the backup runs.
    • Outputs a log of the backup process to /tmp/ghettoVCB.log , which can be viewed later.
    • Includes all VMs on the host as a backup target. If you only want to backup a specific VM, you can change a to m VMNAME . To backup a list of VMs, change a to f/opt/ghettoVCB/vmlist and edit /opt/ghettoVCB/vmlist so that it contains a list of the VM names you wish to backup, one per line.
    • Redirects the output of the script to /dev/null , as some issues have been reported with running ghettoVCB with a cron job when the output isn’t redirected.

Leave a Reply

Your email address will not be published. Required fields are marked *