本篇文章介绍的内容是关于
如何在XenServer中备份正在运行的虚拟机,并且可以逐步运行VM的备份过程,此外还有一个shell脚本,可以将所有VM备份或指定的VM备份,我们也可以通过crontab进行调度。
方法1:手动备份正在运行的虚拟机
以下步骤也可以通过XenCenter执行,但Linux用户喜欢使用命令行。
1、查找VMS UUID
使用以下命令获取所有vms的UUID列表以及其他详细信息。此UUID将在下一步中使用
1
|
# xe vm-list is -control-domain= false is -a-snapshot= false
|
输出
1
2
3
|
uuid ( RO) : 8ac95696-94f3-83c1-bc89-8bb2603f832b
name -label ( RW): test-vm
power-state ( RO): running
|
根据上述输出测试,vm uuid为“8ac95696-94f3-83c1-bc89-8bb2603f832b”。你可能是其他情况。
2、创建VMS快照
现在使用下面的命令使用上面步骤中找到的UUID创建VM快照。确保使用正确的UUID。
1
|
# xe vm-snapshot uuid=8ac95696-94f3-83c1-bc89-8bb2603f832b new- name -label=testvmsnapshot
|
上面的命令将检索快照的uuid,使用该uuid将快照转换为vm,因此我们可以使用下面的命令将其导出到文件。
1
|
# xe template-param-set is-a-template=false ha-always-run=false uuid=b15c0531-88a5-98a4-e484-01bc89131561
|
3、将快照导出到文件
现在,我们可以将创建的快照导出到.xva文件,这可以很容易地从命令行或Xencenter恢复。
1
|
# xe vm-export vm=b15c0531-88a5-98a4-e484-01bc89131561 filename=vm-backup.xva
|
4、销毁快照
最后,因为我们已经备份到XVA文件,所以我们可以从XenServer销毁创建的快照。
1
|
# xe vm-uninstall uuid=b15c0531-88a5-98a4-e484-01bc89131561 force = true
|
方法2:使用脚本备份运行vms
为了备份XenServer上运行的所有虚拟机,我们还可以使用以下shell脚本。此脚本安装了通过NFS导出的远程文件系统。这个脚本非常适合这个例子,但对你可能不适用。所以使用这个脚本并不能保证你的可行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#!/bin/bash
#
# Written By : Mr Rahul Kumar
# Created date : Jun 14, 2014
# Last Updated: Mar 08, 2017
# Version: 1.2.1
# Visit: https://tecadmin.net/backup-running-virtual-machine- in -xenserver/
#
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}
|
本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的Linux视频教程栏目!
以上就是如何在XenServer中备份正在运行的虚拟机的详细内容,更多文章请关注木庄网络博客!