2017-04-17 95 views
0

例如:如何在虛擬機克隆後保留(導入)KVM快照?

virt-clone --connect=qemu:///system -o winxp_sp3_00 -n winxp_sp3_03 -f /opt/vme/winxp_sp3/winxp_sp3_03.updated.qcow2 

我得到了一個新的領域winxp_sp3_03其qcow2已克隆快照:

qemu-img info winxp_sp3_03.updated.qcow2 

image: winxp_sp3_03.updated.qcow2 
file format: qcow2 
virtual size: 80G (85899345920 bytes) 
disk size: 8.2G 
cluster_size: 65536 
Snapshot list: 
ID  TAG     VM SIZE    DATE  VM CLOCK 
1   winxpsp3_basic   0 2017-04-14 23:44:14 00:00:00.000 
2   winxpsp3_pajno   0 2017-04-16 02:12:27 00:00:00.000 
Format specific information: 
    compat: 1.1 
    lazy refcounts: false 

不過的virsh不顯示快照:

virsh snapshot-list winxp_sp3_03 
Name     Creation Time    State 
------------------------------------------------------------ 

什麼是安全的方法讓virsh認出這些快照?

THX

回答

0

的virsh快照列表winxp_sp3_10l_sc_99

的virsh快照dumpxml winxp_sp3_10l_sc_99 1497601133> snapshot.xml

基於傾倒snapshot.xml

--create快照

的virsh snapshot-創建 - 域winxp_sp3_10l_sc_01 snapshot.xml

0

virt-clone從qcow2文件中刪除某些元數據。如果您使用virt-clone克隆虛擬機,則將從磁盤文件中刪除snapshot tags的元數據,因此您無法使用xml定義來自源的redefine快照。嗯,在技術上你可以,但他們只會指出在重新定義快照時虛擬機的狀態。快照將出現在機器上,但在恢復後不會看到實際的預期快照。

qemu摔跤幾天,並通過數百頁的文檔去後,我想出了下面的方法原理:

我們需要XML定義來定義目標VM。我們使用virt-clone來生成xml定義。

virt-clone --original $Source_VM_Name --name $Destination_VM_Name --file /var/lib/libvirt/images/$Destination_VM_Name.qcow2 --print-xml > $Destination_VM_Name.xml

上述命令只產生一個XML定義,而無需實際克隆的VM。

使用Linux cp命令複製qcow2磁盤。調整命令以指向系統上正確的磁盤文件。

cp $Source_VM_Name.qcow2 $Destination_VM_Name.qcow2

現在,你必須重新配置目標磁盤文件:

virt-sysprep -a $Destination_VM_Name.qcow2

請注意,您可能需要使用sudo對於上面的命令,根據你的配置。該命令將重置目標虛擬機中需要重置的UUID,MAC地址和其他元素。

我們將使用步驟文件生成的XML文件中的順序使用的virsh命令來定義目標機器:

virsh define $Destination_VM_Name.xml

我們有一個功能VM現在,我們需要導出快照定義從這個步驟源vm。

virsh snapshot-list $Source_VM_Name --tree 

該命令將列出源VM的快照。

對於此樹中列出每個快照:

virsh snapshot-dumpxml $Source_VM_Name $Snapshot_Name --security-info > Snapshot_Name.xml 

我們需要在快照XML定義更改UUID和域名。

nano Snapshost_Name.xml 

變化

<domain type='kvm'> 
    <name>$Source_VM_Name</name> 
    <uuid>$Source_UUID<uuid> 

<domain type='kvm'> 
    <name>$Destination_VM_Name</name> 
    <uuid>$Destination_UUID<uuid> 

的MAC地址字段也更改爲目的MAC地址:

<mac address='$Destination_MACADDRESS'/>

和CH所述背襯的磁盤文件折邊到目的地磁盤文件:

<source file='/var/lib/libvirt/images/$Destination_VM_Name.qcow2'/>

現在重新定義每個快照,用於克隆的VM。

virsh snapshot-create $Destination_VM Snapshot_Name.xml --redefine 

請注意,重新定義快照的順序很重要,有些快照可能是其他快照的混淆。從樹的根開始到樹葉。

如果您使用virt-manager,請關閉它,再次打開,您應該看到快照。