1. 快照分類
2. 創建快照的方式
2.1 內置快照
2.1.1 使用 qemu-img 命令:關機狀態下
2.1.2 使用 virsh 命令(qemu-monitor-command,QEMU 監控器命令):運行狀態下
2.1.3 使用 virsh 命令(snapshot-create-as):運行狀態下
2.2 外置快照
2.1.1 使用 qemu-img 命令(-o backing_file):關機狀態下
2.1.2 使用 virsh 命令(snapshot-create-as):運行狀態下
注意要使用 KVM 的快照功能,虛擬機的硬盤一定要是 qcow2 格式,否則無法使用快照功能。
1. 快照分類
-
磁盤快照
對磁盤數據進行快照。主要用于虛擬機備份等場合。
-
按快照信息保存方式,可以分為:
-
內置快照
-
內置磁盤快照(Internal disk snapshot):
快照點的磁盤狀態、數據和快照和 base 磁盤數據放在一個 qcow2 文件中。
虛擬機運行狀態和關閉狀態都可以創建。
-
Libvirt 使用 'qemu-img' 命令創建關機狀態的磁盤快照。
-
Libvirt 使用 'savevm' 命令創建運行狀態的磁盤快照。
-
內置系統還原點(Internal system checkpoint):
內存狀態、設備狀態和磁盤狀態,可以為運行中的虛擬機創建。
所有信息都存儲在同一個qcow2文件中,只有在運行狀態才能創建內置系統還原點。
-
Libvirt 使用'savevm' 命令來創建這種快照
外置快照
-
外置磁盤快照(External disk snapshot):
磁盤的快照被保存在一個文件中,創建時間點以后的數據被記錄到一個新的 qcow2 文件中。
同樣可以在運行和關閉狀態創建。
-
Libvirt 使用 'transaction' 命令來為運行狀態創建這種快照。.
-
Libvirt 使用 'qemu-img' 命令(-o backing_file 指定后端映像)為關閉狀態創建這種快照。
-
外置系統還原點(External system checkpoint):
虛擬機的磁盤狀態將被保存到一個文件中,內存和設備的狀態將被保存到另外一個新的文件中。
-
按虛擬機狀態可以分為:
-
關機態快照
數據可以保證一致性。
-
運行態快照
數據無法保證一致性,類似與系統 crash 后的磁盤數據,使用時可能需要 fsck 等操作。
-
按磁盤數量可以分為
-
單盤
單盤快照不涉及原子性
-
多盤
涉及原子性,主要依賴于 qemu 的 transaction 實現。主要分兩個方面:
-
1、是所有盤快照點相同;
-
2、所有盤要么都快照成功,要么都快照失敗。
-
內存快照(VM state)
對虛擬機的 內存/設備 信息進行保存。該機制同時用于休眠恢復,遷移等場景。
主要使用 virsh save(qemu migrate to file)實現。
只能對運行態的虛擬機進行。
-
檢查點快照
同時保存虛擬機的磁盤快照和內存快照。用于將虛擬機恢復到某個時間點??梢员WC數據的一致性。
2. 創建快照的方式
KVM 可以使用兩種方法生成虛擬機的快照:
-
方法一:使用 qemu-img snapshot 命令進行生成快照
-
方法二:使用 virsh snapshot 相關命令進行生成快照(推薦)
2.1 內置快照
2.1.1 使用 qemu-img 命令:關機狀態下
使用 qemu-img 創建快照、還原快照時,一定要在關機狀態下,否則會搞崩虛擬機。
[root@Mallux kvm-machine]# virsh list Id Name State ---------------------------------------------------- 1 ubuntu running 4 DBHost running [root@Mallux kvm-machine]# qemu-img snapshot -c k1-snap Koan.img ### 創建快照 [root@Mallux kvm-machine]# qemu-img snapshot -l Koan.img ### 列出快照 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 k1-snap 0 2015-12-13 13:48:09 00:00:00.000 [root@Mallux kvm-machine]# qemu-img snapshot -a k1-snap Koan.img ### 還原快照
2.1.2 使用 virsh 命令(qemu-monitor-command,QEMU 監控器命令):運行狀態下
使用 virsh qemu-monitor-command 命令時,虛擬機需要處理于運行狀態。
[root@Mallux kvm-machine]# virsh start Koan Domain Koan started [root@Mallux kvm-machine]# virsh qemu-monitor-command Koan --hmp 'savevm k2-snap' ### 創建快照 [root@Mallux kvm-machine]# qemu-img snapshot -l Koan.img Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 k1-snap 0 2015-12-13 13:48:09 00:00:00.000 2 k2-snap 220M 2015-12-13 13:59:31 00:00:56.494 [root@Mallux kvm-machine]# virsh qemu-monitor-command Koan --hmp 'loadvm k2-snap' ### 恢復快照
2.1.3 使用 virsh 命令(snapshot-create-as):運行狀態下
快照目錄:/var/lib/libvirt/qemu/snapshot/
[root@Mallux kvm-machine]# virsh snapshot-list Koan ### 查看快照 Name Creation Time State ------------------------------------------------------------ [root@Mallux kvm-machine]# virsh snapshot-create-as Koan k3-snap ### 創建快照 [root@Mallux kvm-machine]# virsh snapshot-list Koan Name Creation Time State ------------------------------------------------------------ k3-snap 2015-12-13 14:30:29 +0800 running [root@Mallux kvm-machine]# qemu-img snapshot -l Koan.img Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 k1-snap 0 2015-12-13 13:48:09 00:00:00.000 2 k2-snap 220M 2015-12-13 13:59:31 00:00:56.494 3 k3-snap 220M 2015-12-13 14:10:54 00:02:47.322 [root@Mallux kvm-machine]# virsh snapshot-revert Koan k3-snap ### 還原快照 [root@Mallux kvm-machine]# virsh doblklist Target Source ------------------------------------------------ vda /home/kvm-machine/Koan.img ### 內置快照,使用同一映像
2.2 外置快照
2.1.1 使用 qemu-img 命令(-o backing_file):關機狀態下
### 指定 backing_file 后端硬像時,將采用 Copy on write(寫時復制機制),改變的部分以單獨的文件來存儲。 [root@Mallux ~]# qemu-img create -f qcow2 /home/kvm-machine/node1.img \ -o backing_file=/home/kvm-machine/CentOS.img,size=30G [root@Mallux ~]# virt-install -n "node1" --vcpus 1 -r 512 \ --connect qemu:///system \ --disk path=/home/kvm-machine/node1.img,bus=virtio \ --network network=default,model=virtio \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole \ --import
2.1.2 使用 virsh 命令(snapshot-create-as):運行狀態下
[root@Mallux kvm-machine]# virsh snapshot-create-as Koan k4-snap "k4-snap description" \ --disk-only --diskspec vda,snapshot=external,file=/home/kvm-machine/k4-snap-of-Koan.img \ --atomic error: Operation not supported: live disk snapshot not supported with this QEMU binary [root@Mallux kvm-machine]# qemu-kvm -version QEMU PC emulator version 0.12.1 (qemu-kvm-0.12.1.2-2.448.el6_6.4), Copyright (c) 2003-2008 Fabrice Bellard ### 測試不通過,網上說問題可能出現在內核版本和 libvirt 的版本有依賴或兼容性問題,以及 qemu 的版本的關系。
END
原創文章,作者:影·隨行,如若轉載,請注明出處:http://www.www58058.com/11256
漂亮,已置頂