虚拟机运行状态下基于qcow2格式的快照实现方法与流程

文档序号:16428768发布日期:2018-12-28 19:59阅读:1057来源:国知局
虚拟机运行状态下基于qcow2格式的快照实现方法与流程

本发明涉及一种虚拟机运行状态下,基于qcow2格式的镜像文件,增量快照的实现方法。该方法可以不受镜像文件本身大小的限制,并且在创建和恢复快照的时间上都有很大提升。

背景技术

随着云计算的发展,互联网的功能越来越强大,用户可以通过云计算在互联网上处理庞大的数据和获取所需的信息。云计算产业发展、行业推广、应用基础、安全管理等重要环节的宏观政策环境已经基本形成。

在linux全虚拟化解决方案中,kvm负责提供cpu虚拟化和内存虚拟化,但是kvm对于一些计算机硬件设备还是无法进行完美的虚拟(如:网卡/磁盘/io设备等)。于是就引入了qemu,qemu负责提供硬件设备的虚拟化,以此弥补来自kvm的缺陷。同时,为了提高qemu虚拟出来的虚拟硬件设备性能,于是产生了passthrough半虚拟化设备virtio_blk/virtio_net。而qemu-kvm就是将两者整合到了一起的媒介,kvm+qemu才能实现真正意义上虚拟化。

这种架构在云计算中应用非常广泛,比如:openstack是一个由nasa(美国国家航空航天局)和rackspace合作研发并发起的云计算管理平台项目。openstack原生使用kvm虚拟化技术,以kvm作为最底层的hypervisor,kvm用于虚拟化cpu和内存,但kvm缺少对网卡/磁盘/显卡等周边i/o设备的虚拟化能力,所以需要qemu-kvm的支持,它构建于kvm内核模块之上为kvm虚拟机提供完整的硬件设备虚拟化能力。除了openstack之外,很多国内的云计算管理平台也是基于kvm+qemu的整体虚拟化解决方案来实现的。

qcow2镜像格式是qemu模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的raw格式的镜像相比,有以下特性:

·更小的空间占用,即使文件系统不支持空洞(holes);

·支持写时拷贝(cow,copy-on-write),镜像文件只反映底层磁盘的变化;

·支持快照(snapshot),镜像文件能够包含多个快照的历史;

·可选择基于zlib的压缩方式;

·可以选择aes加密。

对于虚拟机来说,快照是一种非常重要的备份方式。然而经过测试,qemu原生的快照功能存在很多缺陷,比如:快照大小会占用qcow2文件的大小;随着快照数量的增加,创建需要花费的时间会指数增加;随着快照数量的增加,恢复快照的时间会指数增加等问题。

因此需要一种快照大小并不占用qcow2文件大小,并且创建和恢复的时间都很快的实现方法。以保证快照功能的正常使用,为虚拟机中的数据保护起到重要作用。



技术实现要素:

发明目的:本发明所要解决的技术问题是基于qcow2格式的文件,在创建快照时,不受限于qcow2文件的大小限制,并且优化了创建和恢复的时间。

在linux全虚拟化解决方案中,kvm+qemu是一种常用的架构,而qcow2格式的文件又是qemu中一种重要的磁盘镜像,因其具备写时copy,快照,加密等特性,被广泛应用于虚拟机的镜像文件。

快照是虚拟机管理的一个重要功能,特别是在虚拟机开机状态下,进行快照操作。

在qemu内部有一个guestagentdaemon(qemu-guest-agent),用来接收qemumonitor发来的命令,并执行对应的处理函数。在线快照可以通过qemumonitor发来的命令进行。

(1)创建镜像文件

命令:#qemu-imgcreate-fqcow2centos.qcow25g

(2)使用创建的镜像启动虚拟机,并安装centos操作系统

(3)安装完虚拟机后,确保虚拟机运行

(4)查看block信息

命令:(qemu)infoblock

说明:可以看出centos.qcow2对应的设备名为ide0-hd0

(5)进行内置快照

命令:(qemu)savevms1

说明:创建一个内置快照,名为s1

命令:(qemu)infosnapshot

说明:查看内置快照信息

命令:(qemu)loadvms1

说明:回到s1时刻状态

命令:(qemu)delvms1

说明:删除内置快照s1

qemu原生的内置快照,虽然功能上是可以实现的。但是效率上很低,经过反复测试,存在两个比较大的问题:

①、恢复时,效率很低,时间很长,几乎无法恢复;

②、创建时,快照会以上一次的快照大小为基准,而不是实际变化量。比如,第一次快照创建时,变化量是1g,那么快照大小是1g。第二次变化量是100m,但是快照大小还是1g。导致qcow2文件的大小会随着快照的个数增加,不断增加。最后会导致镜像文件本身无空间可用。

之所以出现以上问题,是因为原生的qemu中,将虚拟机运行状态下的内存信息也保存到qcow2文件中,如果当前虚拟机的内存占用较高,会导致qcow2文件的实际占用急速增加,导致恢复和创建的效率极低。

所以本方法提供了一种内存信息和磁盘快照分别保存的技术,来解决qcow2文件的实际空间被内存信息占用的问题,同时提高了创建和恢复时的效率。而且采用本方法提供的技术,创建的快照个数不受限制,理论上可以无限创建。

技术方案:一种虚拟机运行状态下基于qcow2格式的快照实现方法,虚拟机在运行状态时,基于qcow2格式进行快照操作,包括创建快照,恢复快照和删除快照。对比qemu原生的快照管理方式,本方法采用内存信息单独保存,磁盘快照中不保存内存信息。对于qemu原生的快照管理操作,快照不再占用qcow2文件本身的大小,同时在操作速度上也有很大提升。

虚拟机运行状态下创建快照的流程描述如下:

步骤101,虚拟机vm1运行状态下,创建快照;假设虚拟机内存配置是1g;

步骤102,根据虚拟机配置的内存大小,创建一个raw文件,取名为mem.raw,用于保存内存信息。mem.raw文件大小=内存大小*2;

步骤103,虚拟机vm1,中止所有的io操作,并将内存信息写入mem.raw文件中;

步骤104,虚拟机vm1,针对磁盘进行快照,并将虚拟机状态大小设置为0;

步骤105,磁盘快照创建成功后,恢复虚拟机vm1的io操作;

步骤106,快照创建成功,qcow2文件实际占用没有增加,内存文件单独保存在存储上。

虚拟机运行状态下恢复快照的流程描述如下:

步骤201,虚拟机vm1恢复快照;

步骤202,根据虚拟机的快照名称,查找到内存信息文件mem.raw;

步骤203,先关闭虚拟机vm1,恢复磁盘快照;

步骤204,启动虚拟机vm1,同时把内存信息文件mem.raw作为启动项加载;

步骤205,虚拟机vm1启动成功,即快照恢复成功;

步骤206,快照恢复成功,由于在虚拟机关机时,恢复磁盘快照,所以速度非常快。

虚拟机运行状态下删除快照的流程描述如下:

步骤301,虚拟机vm1删除快照;

步骤302,根据虚拟机的快照名称,查找到内存信息文件mem.raw,并删除该文件;

步骤303,直接删除对应的磁盘快照;

步骤304,虚拟机vm1的快照删除成功;

步骤305,快照删除成功,由于直接利用系统命令删除内存文件,所以删除的速度非常快。

有益效果:与现有技术相比,本发明提供的虚拟机运行状态下基于qcow2格式的快照实现方法,磁盘“快照”是虚拟机磁盘文件在某个点即时的副本。系统崩溃或系统异常,可以通过使用恢复到快照来保持磁盘文件系统和系统存储。当升级应用和服务器及给它们打补丁的时候,快照可以保证系统升级异常时,迅速恢复正常。本发明可应用于各种云计算管理系统中,在数据保护,业务稳定等方面具有广泛的应用前景。

附图说明

图1为本发明实施例所述的虚拟机运行状态下快照创建时序图;

图2为本发明实施例所述的虚拟机运行状态下快照恢复时序图;

图3为本发明实施例所述的虚拟机运行状态下快照删除时序图;

图4为本发明实施例所述的虚拟机运行状态下快照创建实际效果图。

具体实施方式

下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

虚拟机运行状态下基于qcow2格式的快照实现方法,包括创建快照,恢复快照和删除快照。对比qemu原生的快照管理方式,本方法采用内存信息单独保存,磁盘快照中不保存内存信息。对于qemu原生的快照管理操作,快照不再占用qcow2文件本身的大小,同时在操作速度上也有很大提升。

图1所示的是本发明所述的,虚拟机运行状态下创建快照的时序图,流程描述如下:

步骤101,虚拟机vm1运行状态下,创建快照。假设虚拟机内存配置是1g;

步骤102,根据虚拟机配置的内存大小,创建一个raw文件,取名为mem.raw,用于保存内存信息。mem.raw文件大小=内存大小*2;

步骤103,虚拟机vm1,中止所有的io操作,并将内存信息写入mem.raw文件中;

步骤104,虚拟机vm1,针对磁盘进行快照,并将虚拟机状态大小设置为0;

步骤105,磁盘快照创建成功后,恢复虚拟机vm1的io操作;

步骤106,快照创建成功,qcow2文件实际占用没有增加,内存文件单独保存在存储上。

图2所示的是本发明所述的,虚拟机运行状态下恢复快照的时序图,流程描述如下:

步骤201,虚拟机vm1恢复快照;

步骤202,根据虚拟机vm1的快照名称,查找到内存信息文件mem.raw;

步骤203,先关闭虚拟机vm1,恢复磁盘快照;

步骤204,启动虚拟机vm1,同时把内存信息文件mem.raw作为启动项加载;

步骤205,虚拟机vm1启动成功,即快照恢复成功;

步骤206,快照恢复成功,由于在虚拟机vm1关机时,恢复磁盘快照,所以速度非常快。

图3所示的是本发明所述的,虚拟机运行状态下删除快照的时序图,流程描述如下:

步骤301,虚拟机vm1删除快照;

步骤302,根据虚拟机vm1的快照名称,查找到内存信息文件mem.raw,并删除该文件;

步骤303,直接删除对应的磁盘快照;

步骤304,虚拟机vm1的快照删除成功;

步骤305,快照删除成功,由于直接利用系统命令删除内存文件,所以删除的速度非常快。

如图4所示,对比qemu原生的快照管理方式,本方法采用内存信息单独保存,磁盘快照中不保存内存信息的方式。

本方法的优势在于:

①、磁盘快照不占用qcow2文件的大小,不影响虚拟机对磁盘空间的使用,从图1中可以看到,vmsize等于0,基于这个理论,快照数量也同样不受限制,理论上可以无限创建。而原生的qemu快照,当disksize接近virtualsize时,快照就无法创建了;

②、由于磁盘快照只保存快照信息,不保存增量内存信息,保证随着快照数量的增加,快照的操作速度不受影响。根据qcow2文件的实现原理,数据的存放分为数据的长度和真实的数据两个部分,qcow2文件使用l1,l2和cluster三张表管理用户数据。如果大量的内存信息写入qcow2文件中,势必会造成qcow2文件的独写效率下降,最终影响到快照功能。而本方法则避免了这种影响;

③、恢复快照时,本方法采用直接关闭虚拟机,再以内存信息文件做为加载项启动,保证了虚拟机启动后,运行状态停留在对应内存文件中保存的状态,因为不需要从qcow2文件中读取内存信息,所以启动速度非常快。而原生的qemu的快照在恢复时,首先要查找到对应的内存信息,随着快照数量的增加,查找本身就很慢。查找到之后,还需将内存信息做为快照恢复,qcow2文件此时的性能消耗极大,导致恢复的时间很长。

④、删除快照时,由于直接使用系统命令删除内存信息文件,再从磁盘快照中删除快照信息,减少了在qcow2文件中查找内存信息的工作,所以速度非常快。而原生的qemu在删除快照时,同样需要保存在qcow2文件中的内存信息,同样会对qcow2带来较大的性能消耗,导致删除速度较慢。

综上所述,本方法不管是在创建快照的数量上,还是在创建、恢复和删除的速度上,相对于原生qemu的实现,都有极大的提升。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1