不仅Docker有镜像,KVM也有多种方式操作镜像 (1)

叁叁肆2018-11-06 15:41

此文已由作者刘超授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。


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



容器服务是网易云提供的无服务器容器服务,让企业能够快速部署业务,轻松运维服务。容器服务支持弹性伸缩、垂直扩容、灰度升级、服务发现、服务编排、错误恢复及性能监测等功能。点击可免费试用


免费体验云安全(易盾)内容安全、验证码等服务

11.1—11.15云计算基础服务全场5折起

更多网易技术、产品、运营经验分享请点击