5 月 312016
 

Source: How to Backup running Virtual Machine in XenServer

I am working with Citrix XenServer from many years and managing all XenServers using XenCenter installed on a standalone windows machine. We regularly takes backup of VMs manually till today, I was taking backup after shutting down the VMs. Most of VM owner getting disappointed due to server down for a long time. While searching with the google I found a better way to back up VMs without shutdown them. It means we can take running vm backups and not downtime occurred.

In this article we will help you step by step backup process of running vm. Also here is a shell script which can take all vms backup or specified vm backup, which we can schedule through cron.

1. Steps to Manually Backup Running VM

Following steps also can be performed through XenCenter, But Linux lovers loves command line. So find below commands to do it.

1.1. Find VMs UUID

Use the following command to get list of UUIDs of all vms along with other details. this UUID will be used in next step

# xe vm-list is-control-domain=false is-a-snapshot=false
uuid ( RO)           : 8ac95696-94f3-83c1-bc89-8bb2603f832b
     name-label ( RW): test-vm
    power-state ( RO): running

As per above output test-vm uuid is “8ac95696-94f3-83c1-bc89-8bb2603f832b“. It can be different in your case.

1.2. Create VMs Snapshot

Now use the following command to create snapshot of vm using uuid found in above step. Make sure you are using correct uuid.

# xe vm-snapshot uuid=8ac95696-94f3-83c1-bc89-8bb2603f832b new-name-label=testvmsnapshot

Above command will retrun a UUID of snapshot, Use that UUID to convert snapshot to a vm, so we can export it to file using below command.

# xe template-param-set is-a-template=false ha-always-run=false uuid=b15c0531-88a5-98a4-e484-01bc89131561

1.3. Export Snapshot to File

Now we can export created snapshot to .xva file, Which can be easily restored from command line or XenCenter.

# xe vm-export vm=b15c0531-88a5-98a4-e484-01bc89131561 filename=vm-backup.xva

1.4. Destroy Snapshot

Finally as we have already taken backup to xva file, so we can destroy created snapshot from xenserver.

# xe vm-uninstall uuid=b15c0531-88a5-98a4-e484-01bc89131561 force=true

2. Bash Script for Backup Running VMs

To backup all vms running on XenServer, we can use following shell script also. This script mounted remote file system exported through NFS. This Scripts works for me perfectly, but it may not for you. So use this script on your own risk.

#!/bin/bash
#
# Written By: Rahul Kumar
# Created date: Jun 14, 2014
# Version: 1.1
# Visit: http://tecadmin.net
#

DATE=`date +%d%B%y`
XSNAME=`echo $HOSTNAME`
mkdir -p /mnt1
UUIDFILE=/tmp/uuids.txt

### Mounting remote nfs share backup drive

[ ! -d /mnt1 ]  && echo "No mount point found, kindly check"; exit 0
mount -F nfs 192.168.10.100:/backup/citrix/metadata /mnt1

BACKUPPATH=/mnt1/$XSNAME/$DATE
mkdir -p $BACKUPPATH
[ ! -d $BACKUPPATH ]  && echo "No backup directory found"; exit 0


# Fetching list UUIDs of all VMs running on XenServer
xe vm-list is-control-domain=false is-a-snapshot=false | grep uuid | cut -d":" -f2 > $UUIDFILE

[ ! -f $UUIDFILE ] && echo "No UUID list file found"; exit 0

while read VMUUID
do
    VMNAME=`xe vm-list uuid=$VMUUID | grep name-label | cut -d":" -f2 | sed 's/^ *//g'`

	SNAPUUID=`xe vm-snapshot uuid=$VMUUID new-name-label="SNAPSHOT-$VMUUID-$DATE"`

	xe template-param-set is-a-template=false ha-always-run=false uuid=$SNAPUUID

	xe vm-export vm=$SNAPUUID filename="$BACKUPPATH/$VMNAME-$DATE.xva"

	xe vm-uninstall uuid=$SNAPUUID force=true

done < $UUIDFILE

umount /mnt1

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

CAPTCHA Image
Play CAPTCHA Audio
Reload Image