CentOS 6 KVM Snapshot
確認 VM Image 格式
- 執行 snapshot 的語法
virsh snapshot-create vmname
範例:
[root@asus-ts100e7 ~]# virsh snapshot-create e-plast-mail 錯誤:Requested operation is not valid: Disk '/var/lib/libvirt/images/e-plast-mail.img' does not support snapshotting
要能執行 snapshot 的 VM image 必須是 qcow2 的格式, 出現這樣的訊息, 就要去確認與轉換.
- 確認 image 的格式語法
qemu-img info yourdisk.img
範例:
[root@asus-ts100e7 ~]# qemu-img info /var/lib/libvirt/images/e-plast-mail.img image: /var/lib/libvirt/images/e-plast-mail.img file format: raw virtual size: 9.8G (10485760000 bytes) disk size: 9.8G
- 如果是 raw 要先轉成 qcow2 格式, 語法
qemu-img convert -f raw -O qcow2 yourdisk.img newdisk.qcow2
範例:
[root@asus-ts100e7 ~]# qemu-img convert -f raw -O qcow2 /var/lib/libvirt/images/e-plast-mail.img /var/lib/libvirt/images/e-plast-mail.qcow2 [root@asus-ts100e7 ~]# qemu-img info /var/lib/libvirt/images/e-plast-mail.qcow2 image: /var/lib/libvirt/images/e-plast-mail.qcow2 file format: qcow2 virtual size: 9.8G (10485760000 bytes) disk size: 3.0G cluster_size: 65536
- 更改 vm config file 範例:
virsh edit e-plast-mail
: <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/var/lib/libvirt/images/e-plast-mail.qcow2'/> <target dev='vda' bus='virtio'/> </disk> :
- 重新啟動 vm 範例:
virsh restart e-plast-mail
建立 snapshot
- 目前版本進行 snapshot 過程 vm 會無法運作
- 執行 snapshot 的語法
virsh snapshot-create vmname
範例:
[root@asus-ts100e7 ~]# virsh snapshot-create e-plast-mail Domain snapshot 1349058343 created
- 這時會在 /var/lib/libvirt/qemu/snapshot/e-plast-mail 產生 1349058343.xml, 內容如下
<domainsnapshot> <name>1349058343</name> <state>running</state> <creationTime>1349058343</creationTime> <domain> <uuid>8dd0c9a8-c3d3-b6c2-1112-c7876db57444</uuid> </domain> <active>0</active> </domainsnapshot>
查詢目前 snapshot
- 可以查看目前已經存在多少份 snapshot
virsh snapshot-list e-plast-mail
[root@asus-ts100e7 images]# virsh snapshot-list e-plast-mail 名稱 Creation Time 狀態 --------------------------------------------------- 1349058343 2012-10-01 10:25:43 +0800 running 1349059256 2012-10-01 10:40:56 +0800 running
- 目前是使用哪個 snapshot 版本
virsh snapshot-current e-plast-mail
[root@asus-ts100e7 images]# virsh snapshot-current e-plast-mail <domainsnapshot> <name>1349059256</name> <state>running</state> <parent> <name>1349058343</name> </parent> <creationTime>1349059256</creationTime> <domain> <uuid>8dd0c9a8-c3d3-b6c2-1112-c7876db57444</uuid> </domain> </domainsnapshot>
復原到特定版本 snapshot
- 經過驗證, libvirt 0.8.2-25.el5 在 VM 運行中執行 revert 後, VM 會當掉無法運作, 因此需要先關閉 VM 後再進行 revert
- 確認 VM 目前運作狀態
virsh domstate e-plast-mail
[root@asus-ts100e7 libvirt]# virsh domstate e-plast-mail 執行中
- 執行關閉 VM 指令
virsh shutdown e-plast-mail
[root@asus-ts100e7 libvirt]# virsh shutdown e-plast-mail 區域 e-plast-mail 正在執行關機
- 確認 VM 目前已經是關機狀態
virsh domstate e-plast-mail
[root@asus-ts100e7 save]# virsh domstate e-plast-mail 關機
- 確定要回覆哪份 snapshot 版本
virsh snapshot-list e-plast-mail
[root@asus-ts100e7 save]# virsh snapshot-list e-plast-mail 名稱 Creation Time 狀態 --------------------------------------------------- 1349058343 2012-10-01 10:25:43 +0800 running 1349059256 2012-10-01 10:40:56 +0800 running 1349071788 2012-10-01 14:09:48 +0800 running
- 執行 snapshot-revert 指令
virsh snapshot-revert e-plast-mail 1349071788
- 確認目前執行的 snapshot 版本
virsh snapshot-current e-plast-mail
[root@asus-ts100e7 save]# virsh snapshot-current e-plast-mail <domainsnapshot> <name>1349071788</name> <state>running</state> <parent> <name>1349059256</name> </parent> <creationTime>1349071788</creationTime> <domain> <uuid>8dd0c9a8-c3d3-b6c2-1112-c7876db57444</uuid> </domain> </domainsnapshot>
- revirt 後 VM 會自動啟動在當時 snapshot-create 的狀態
- 原本在 1349071788 (2012-10-01 14:09:48) 時所執行的程式還會繼續運作
- VM 內的系統時間還是在 1349071788 (2012-10-01 14:09:48) 所以要考慮時間矯正議題
刪除不需要的 snapshot
- 原有的 snapshot 清單
virsh snapshot-list e-plast-mail
[root@asus-ts100e7 save]# virsh snapshot-list e-plast-mail 名稱 Creation Time 狀態 --------------------------------------------------- 1349058343 2012-10-01 10:25:43 +0800 running 1349059256 2012-10-01 10:40:56 +0800 running 1349071788 2012-10-01 14:09:48 +0800 running
- 打算移除掉 1349059256 這份版本
virsh snapshot-delete e-plast-mail 1349059256
[root@asus-ts100e7 save]# virsh snapshot-list e-plast-mail 名稱 Creation Time 狀態 --------------------------------------------------- 1349058343 2012-10-01 10:25:43 +0800 running 1349071788 2012-10-01 14:09:48 +0800 running
- snapshot 主要在 image file 內增加 tag, 因此可以透過 qemu-img info 指令來瞭解
qemu-img info /var/lib/libvirt/images/e-plast-mail.qcow2
[root@asus-ts100e7 images]# qemu-img info /var/lib/libvirt/images/e-plast-mail.qcow2 image: /var/lib/libvirt/images/e-plast-mail.qcow2 file format: qcow2 virtual size: 9.8G (10485760000 bytes) disk size: 7.0G cluster_size: 65536 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 1349058343 977M 2012-10-01 10:25:43 1290:29:38.005 3 1349071788 965M 2012-10-01 14:09:48 1291:18:26.283