The Blog


XenServer 7.3 Restore VM with CLI

Posted on

Import/Restore a Xen VM from a backed-up image file, likely a backup taken of a VM prior to the destruction of said VM for any reason.

  1. Ensure you have mounted the location with the .xva file. For instance, if it is a remote NFS store, you may want to check the current mount points, or execute:

    mount -t nfs /mnt/backup
  2. Take note of the filename & path that you will use for restoration/import, such as:

  3. If you don’t have shared storage in your Xen Pool, or if you wish to place the VM on a specific server or Storage Repository (SR), execute the command:

    xe sr-list

    which will produce output such as this:

                uuid ( RO): 73a394e5-2a60-a13d-9c42-4987d81c1a77
          name-label ( RW): DVD drives
    name-description ( RW): Physical DVD drives
                host ( RO): XEN-SRV-4
                type ( RO): udev
        content-type ( RO): iso
                uuid ( RO): 3b3346b2-d08a-90a8-bc13-321e0fe988d9
          name-label ( RW): Removable storage
    name-description ( RW): 
                host ( RO): XEN-SRV-4
                type ( RO): udev
        content-type ( RO): disk
                uuid ( RO): 69659292-ca18-3875-8c3b-1c9873db1dc0
          name-label ( RW): Local storage
    name-description ( RW): 
                host ( RO): XEN-SRV-4
                type ( RO): lvm
        content-type ( RO): user

    Take note of the uuid of the “Local Storage” of the host on which you wish to place the VM. In this case, if we want to place the VM on “XEN-SRV-4,” then we will need the uuid “69659292-ca18-3875-8c3b-1c9873db1dc0

  4. Using the uuid & filename from above, you can then execute the vm-import command thus, preferably on the physical host where you are importing the VM, to minimize network traffic and potential slowdowns caused by passing packets from one server to another unnecessarily:

    xe vm-import filename=/mnt/backup/Test-VM-2016-02-17_12-23-01.xva sr-uuid=69659292-ca18-3875-8c3b-1c9873db1dc0

    If you want or need to retain the VIF MAC addresses (such as for a VM that gets its IP Address via DHCP), ensure that you specify the preserve=true option such as:

    xe vm-import filename=/mnt/backup/Test-VM-2016-02-17_12-23-01.xva sr-uuid=69659292-ca18-3875-8c3b-1c9873db1dc0 preserve=true
  5. If you wish to have the VM start automatically when the Hypervisor/Host boots, ensure you re-enable the autostart option, as it does not get restored when importing a VM from a file. For that, you’ll need the uuid of the VM (xe vm-list can help you there) and then you need to execute:

    xe vm-param-set uuid= other-config:auto_poweron=true
Posted in XenServer Leave a comment

XenServer 7.3 and NFS

Posted on

Took me all day to figure this out. Xen 7.3 does not come with NFS support oddly. So you need to install it.

First you will surely need the epel repository

yum --enablerepo=extras install epel-release

Now you can install other packages.

yum --enablerepo=epel --enablerepo=base install nfs-utils

I also like MC so let’s install that too.

yum --enablerepo=epel --enablerepo=base install mc

Some useful commends to test NFS.

rpcinfo -s <IP>
showmount -e <IP>
Posted in Virtualization, XenServer Leave a comment

Citrix XenServer backup without downtime.

Posted on

Backup running Virtual Machine in XenServer. I am working with Citrix XenServer for many years and managing all XenServers using XenCenter installed on a standalone windows machine. We regularly take backup of VMs manually until today, I always take backups after shutting down the VM. Most of VM owner getting disappointed due to server down for a long time. While searching for 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.


This tutorial 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 crontab as well.

Method 1 – Manual Backup of Running VM

Following steps also can be performed through XenCenter, But Linux lovers love the command line. So find 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

Sample Output:

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

Method 2 – Using 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 script works for me perfectly, but it may not for you. So use this script at your own risk.

# Written By: Mr Rahul Kumar
# Created date: Jun 14, 2014
# Last Updated: Mar 08, 2017
# Version: 1.2.1
# Visit:

DATE=`date +%d%b%Y`

### Create mount point

mkdir -p ${MOUNTPOINT}

### Mounting remote nfs share backup drive

[ ! -d ${MOUNTPOINT} ]  && echo "No mount point found, kindly check"; exit 0

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
    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 ${MOUNTPOINT}

Download this script directly from

Posted in Linux, Virtualization, XenServer 2 Comments

XenServer Limit with socket vs vCPU in windows

Posted on

The problem is that XenServer virtualises each core as a separate physical processor in its own socket. Windows Server 2008 and 2003 are limited to 4 sockets, so you can only see 4 of your 8 cores in the task manager.

If you look in the Device Manger you’ll see all 8 cores because Windows sees them all, but won’t let you use them.

If you look in the XenServer Host console in the Hardware section, it will report 8 physical CPUs too.

In XenCenter set the VCPUs for your VM to 2.

Then enter the attached code snipped into the XenServer Host console. To find the UUID for your VM, type:

xe vm-list

xe vm-param-set platform:cores-per-socket=4 uuid=xxxxxx

xe vm-param-set VCPUs-max=8 uuid=xxxxxxx

xe vm-param-set VCPUs-at-startup=8 uuid=xxxxxx

Now boot the VM and the task manager should show all 8 cores.

Posted in XenServer Leave a comment
Next Page »