此文已由作者刘超授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
KVM的镜像也是可以像孙悟空说“定”一样保存下当前的状态的,也是可以有层级的,层级之间是可以灵活操作的,这些操作在KVM里面叫做snapshot。
Snapshot广义来讲分为三个级别:
Volume Manager级别:常见的是LVM的snapshot,在openstack中,对block storage进行snapshot对应这个级别
lvcreate --size 100M --snapshot --name snap /dev/vg00/lvol1
文件系统级别: OCFS2,常用的ext3不支持
文件级别:raw文件不支持snapshot,qcow2支持snapshot,分两种
Internal Snapshot: snapshot保存在qcow2文件的内部
VM State snapshot: snapshot整个VM,而不仅仅是disk
Disk State snapshot: 仅仅snapshot这个disk
External Snapshot: 原来的qcow2成为read-only的模式,新的改变保存到另外的qcow2文件
一、Internal Snapshot中的VM State snapshot
启动一个虚拟机
在虚拟机里面启动一个python进程,里面无限循环
将VM State保存在一个文件里面
virsh save ubuntutest ubuntutest_vmstate
完毕后虚拟机被关闭
直接启动虚拟机
virsh start ubuntutest
启动一个全新的虚拟机,python进程不存在
恢复虚拟机
virsh restore ubuntutest_vmstate
虚拟机启动了
VNC登录虚拟机,发现python进行和原来的状态一样
二、Internal Snapshot中的Disk State snapshot
这种snapshot是在虚拟机在运行状态下进行的
查看snapshot的信息,为空
virsh snapshot-list ubuntutest
创建snapshot
virsh snapshot-create ubuntutest
创建过程中虚拟机处于pause的状态
查看snapshot的信息
查看Image的信息
创建了internal snapshot后,vm无法undefined
virsh destroy ubuntutest
删除snapshot
virsh snapshot-delete ubuntutest 1412782509
三、External Snapshot
查看block storage
virsh domblklist ubuntutest –details
创建一个snapshot
virsh snapshot-create-as ubuntutest snap1-ubuntutest "snap1 description" --diskspec vda,file=/home/openstack/snap1-ubuntutest.qcow2 --disk-only --atomic
如果报下面的错误,则是apparmor在作怪,参考下面的操作:
修改/etc/libvirt/qemu.conf,其中security_driver = [ “selinux”, “apparmor” ]改为security_driver = "none“
重启libvirt: service libvirt-bin restart
重启虚拟机:virsh destroy ubuntutest,virsh start ubuntutest
可以正确执行了
虚拟机使用新的snapshot作为硬盘,在snapshot后创建一个512M的文件
再创建两个snapshot,每打一次snapshot都创建一个512M的文件
virsh snapshot-create-as ubuntutest snap2-ubuntutest "snap2 description" --diskspec vda,file=/home/openstack/snap2-ubuntutest.qcow2 --disk-only --atomic
virsh snapshot-create-as ubuntutest snap3-ubuntutest "snap3 description" --diskspec vda,file=/home/openstack/snap3-ubuntutest.qcow2 --disk-only --atomic
虚拟机使用新的snapshot作为硬盘
查看文件backing_file链
查看snapshot
容器服务是网易云提供的无服务器容器服务,让企业能够快速部署业务,轻松运维服务。容器服务支持弹性伸缩、垂直扩容、灰度升级、服务发现、服务编排、错误恢复及性能监测等功能。点击可免费试用。
更多网易技术、产品、运营经验分享请点击。