方法2 -使用脚本备份运行的虚拟机

要备份运行在XenServer上的所有vm,我们还可以使用下面的shell脚本。
这个脚本挂载了通过NFS导出的远程文件系统。
这个脚本非常适合我,但可能不适合你。
因此,使用此脚本的风险自负。

#!/bin/bash
#

DATE=`date +%d%b%Y`
XSNAME=`echo $HOSTNAME`
UUIDFILE=/tmp/xen-uuids.txt
NFS_SERVER_IP="192.168.10.100"
MOUNTPOINT=/xenmnt
FILE_LOCATION_ON_NFS="/backup/citrix/vms"

### Create mount point

mkdir -p ${MOUNTPOINT}

### Mounting remote nfs share backup drive

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

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

方法1 -手动备份运行中的VM

下面的步骤也可以通过XenCenter执行。
这里我们使用命令行完成。

1.1. 找到vm UUID

使用以下命令可以获得所有vm的uuid列表以及其他详细信息。
这个UUID将在下一步中使用

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

根据以上输出test-vm uuid为“ 8ac95696-94f3-83c1-bc89-8bb2603f832b”。

1.2. 创建虚拟机快照

现在使用下面的命令使用上面步骤中找到的uuid创建vm快照。
确保我们使用了正确的uuid。

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

上面的命令将返回快照的UUID,使用该UUID将快照转换为vm,这样我们可以使用下面的命令将其导出为文件。

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

1.3. 将快照导出到文件

现在我们可以将创建的快照导出到.xva文件,该文件可以很容易地从命令行或XenCenter中恢复。

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

1.4. 销毁快照

最后,因为我们已经备份到xva文件,所以我们可以销毁从xenserver创建的快照。

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

如何在XenServer中备份正在运行的虚拟机

备份运行在XenServer中的虚拟机。
我与Citrix XenServer合作多年,使用安装在独立windows机器上的XenCenter管理所有XenServer。
我们经常手动备份VM,直到今天,我总是在关闭VM后进行备份。
大多数VM所有者因为服务器宕机很长时间而感到失望。
这里有一种更好的方法来备份虚拟机,而无需关闭它们。
这就是说我们不用停机,就可以运行VM备份。

本教程将逐步备份运行VM的过程。
这里还有一个shell脚本,它可以进行所有VM备份或指定的VM备份,我们也可以通过crontab进行调度。

日期:2019-05-19 01:25:30 来源:oir作者:oir