首頁  >  文章  >  運維  >  如何在XenServer中備份正在運行的虛擬機

如何在XenServer中備份正在運行的虛擬機

不言
不言原創
2019-03-25 16:30:503406瀏覽

這篇文章介紹的內容是關於如何在XenServer中備份正在運行的虛擬機,並且可以逐步運行VM的備份過程,此外還有一個shell腳本,可以將所有VM備份或指定的VM備份,我們也可以透過crontab進行調度。

如何在XenServer中備份正在運行的虛擬機

方法1:手動備份正在執行的虛擬機器

以下步驟也可以透過XenCenter執行,但Linux使用者喜歡使用命令行。

1、查找VMS UUID

使用以下命令取得所有vms的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

根據上述輸出測試,vm uuid為「8ac95696-94f3-83c1-bc89-8bb2603f832b」。你可能是其他情況。

2、建立VMS快照

現在使用下面的指令使用上面步驟中找到的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

3、將快照匯出到文件

現在,我們可以將創建的快照匯出到.xva文件,這可以很容易地從命令列或Xencenter恢復。

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

4、銷毀快照

最後,因為我們已經備份到XVA文件,所以我們可以從XenServer銷毀創建的快照。

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

方法2:使用腳本備份執行vms

為了備份XenServer上執行的所有虛擬機,我們也可以使用下列shell腳本。此腳本安裝了透過NFS導出的遠端檔案系統。這個腳本非常適合這個例子,但對你可能不適用。所以使用這個腳本並不能保證你的可行。

#!/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中備份正在運行的虛擬機的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn