Virtual-Machine

了解 libvirt 快照的儲存方式

  • April 22, 2020

起初我以為它會被儲存,/var/lib/libvirt/images/但是當我為域創建快照時centos7,這個目錄中沒有任何變化:

drwx--x--x 2 root         root       4096 Feb 29 21:28 .
drwxr-xr-x 7 root         root       4096 Feb 28 23:47 ..
-rw------- 1 libvirt-qemu kvm  5370216574 Feb 29 22:09 centos7-1.qcow2
-rw------- 2 libvirt-qemu kvm  5931597824 Feb 29 22:12 centos7.qcow2
-rw------- 1 root         root 1499267135 Feb 28 21:07 centos7-server.qcow2

接下來我檢查了/var/lib/libvirt/qemu/snapshot/centos7哪些顯示了這些 xml 文件:

client2.xml client.xml disks.xml

這是我給我的快照起的名字。

有人可以告訴我為什麼快照是 xml 文件而不是磁碟映像嗎?這些 xml 文件儲存的是什麼,我猜他們需要我images目錄中的原始 qcow2 圖像才能工作,並且不能與任何圖像一起工作 - 對嗎?

xml 文件代表快照元數據,如果您打開它,您會看到類似這樣的內容(為簡潔起見,域定義被縮短):

你的快照.xml

<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
 virsh snapshot-edit
or other application using the libvirt API.
-->

<domainsnapshot>
 <name>your-snapshot</name>
 <state>shutoff</state>
 <creationTime>1567455358</creationTime>
 <memory snapshot='no'/>
 <disks>
   <disk name='hda' snapshot='internal'/>
 </disks>
 <domain type='kvm'>
   <name>centos76-client</name>
   [...]
 </domain>
 <active>1</active>
</domainsnapshot>

該文件記錄了快照的名稱、域創建時的狀態、創建時間、記憶體是否也是快照、磁碟以及當時的域定義。

此域定義相當於您將獲得的相同資訊virsh dumpxml your-domain。這是快照時您的設備、CPU、記憶體等的配置。例如,如果在快照之後您更改了某些設備、記憶體大小等,這允許您返回到拍攝快照時的確切設置。

現在在該disks部分中,您可以看到實際快照的磁碟設備。您希望創建一個磁碟映像,但對於qcow2文件,它的工作方式略有不同。

qcow2實現寫時復製圖像。在像這樣的其他寫時復製文件系統上,btrfs這意味著文件不會在原地更改,而是在修改時將它們的副本與更改一起儲存在磁碟上的其他位置。

對於qcow2快照,圖像始終在原地修改,但如果已創建快照,則在該qcow2文件中,每當在快照之後修改文件時,將保存應用修改之前的副本以用於快照。這意味著圖像和快照都在qcow2文件中。qcow2(可以在此處找到有關文件格式和快照如何工作的更深入的說明。

qemu-img您可以使用該命令列出這些磁碟快照並與之互動(列出、恢復、創建、刪除) 。例如,您可以像這樣列出快照:

# qemu-img snapshot -l /var/lib/libvirt/qemu/centos7-server.qcow2
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         your-snapshot             0 2019-09-02 22:15:58   00:00:00.000

這裡的 TAG 應該與您的快照 XML 文件的名稱和nameXML 本身內部的條目相匹配,這就是知道它應該恢復到圖像libvirt中的哪個快照的方式。qcow2

引用自:https://unix.stackexchange.com/questions/570414