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)实现。
只能对运行态的虚拟机进行。
-
检查点快照
同时保存虚拟机的磁盘快照和内存快照。用于将虚拟机恢复到某个时间点。可以保证数据的一致性。
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.178linux.com/11256
评论列表(1条)
漂亮,已置顶