怎么在VMware中保存Linux快照,虚拟机动态保存快照的方法

虚拟机动态保存快照的方法

【技术领域】

[0001]本发明涉及一种保存快照的方法,具体地,涉及一种虚拟机动态保存快照的方法。

【背景技术】

[0002]如今,云计算技术越来越广泛的得到使用,正在很多领域逐渐取代传统的IT服务模式,为IT行业的市场带来巨大的变革,也为IT技术的创新开辟了新的方向;虚拟化是构建云基础架构不可或缺的关键技术之一,对比传统的物理资源,虚拟化技术在资源的有效利用、动态调配和高可靠性方面有着巨大的优势;QEMU-KVM虚拟化(简称KVM)作为一种新兴的开源虚拟化软件,因其虚拟化效率高、与Linux内核完美集成、操作配置简单等优势,与老牌的虚拟化软件如VMWARE、Xen等一起,并列为现今主流的虚拟化技术,并有逐步取代的趋势;但是KVM虚拟化因其发展时间较短,在基本功能上仍有一些欠缺之处,比如:对于正在运行的虚拟机,无法动态的、集成的备份其内存与磁盘的内容(虚拟化快照技术),一种传统方法快照过程中会主动挂起虚拟机服务,快照保存流程完成后再恢复虚拟机服务。另一种传统方法只能动态保存虚拟机磁盘范围的内容,所以在做快照恢复操作时无法还原到虚拟机快照时间点的运行中状态;所以,在使用快照或快照恢复功能时,都会在很大程度上影响云平台的服务质量。

【发明内容】

[0003]针对现有技术中的缺陷,本发明的目的是提供一种虚拟机动态保存快照的方法,其在不影响虚拟机内应用服务的前提下完成虚拟机快照操作,并能在需要时根据快照保存的档案完全恢复虚拟机磁盘与内存的当时状态。

[0004]根据本发明的一个方面,提供一种虚拟机动态保存快照的方法,其特征在于,所述虚拟机动态保存快照的方法包括以下步骤:

[0005]步骤一,使用一特定结构初始化文件,该文件在后续步骤用于分段保存虚拟机状态数据与内存数据,此步骤需要初始化该文件的标准I/o流对象,并注册基础读写操作集;

[0006]步骤二,创建一块新的虚拟磁盘文件,在虚拟机主进程中注册其结构化数据,并将其置于虚拟磁盘链表的末端;

[0007]步骤三,遍历该虚拟机中挂载的所有虚拟设备,使用不同虚拟设备注册的特定方法保存全量的虚拟设备状态数据与客户机内存数据至步骤一创建的文件中;在数据写入的开始、循环迭代及结束过程中均使用魔数分割数据片段,用于读取时识别分段恢复;

[0008]步骤四,循环迭代的保存虚拟设备状态与虚拟机内存中变化的部分至指定的文件,并统计每次保存数据量与保存消耗时间;

[0009]步骤五,每次循环迭代开始,首先统计所有待决的脏数据量,跳出迭代后即加锁虚拟机1线程,停止虚拟CPU线程,使动态的数据不再变化,安全完成最后一部分保存动作,完成虚拟机内存与虚拟设备数据的保存后,马上切换虚拟磁盘指针至新的虚拟磁盘,使后续的I/o流向新磁盘设备,而之前的磁盘设备移动为磁盘链表的倒数第二项,同时作为磁盘快照节点,在需要恢复快照时,直接使用该节点生成虚拟机即可;

[0010]步骤六,解锁虚拟机1线程,并恢复虚拟CPU线程,至此虚拟机恢复运行态。

[0011]优选地,所述虚拟机动态保存快照的方法涉及的数据对象分为三个部分:虚拟设备状态、虚拟机内存和虚拟机磁盘。

[0012]优选地,所述步骤三的魔数分割数据片段包括以下步骤:将数据保存到文件的步骤分为预备、迭代和结尾三部分,文件前两字节依次保存快照动作整体魔数和快照版本信息,接下来排列预备段信息,依次写入预备段开始魔数、单个设备预备快照控制信息、单个设备预备快照数据信息;完成预备段数据后,循环的写入迭代段开始魔数、单个设备迭代快照控制信息、单个设备迭代快照数据信息;最后写入完成段开始魔数、单个设备完成快照控制信息、单个设备完成快照数据信息。

[0013]与现有技术相比,本发明具有如下的有益效果:本发明在于保存虚拟机快照时,虚拟机内运行的应用业务无感知、不会被终止其服务,从而同时满足了虚拟化技术中数据安全与服务连贯性的需求。

【附图说明】

[0014]通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

[0015]图1为本发明实施虚拟磁盘链表的示意图。

[0016]图2为本发明实施虚拟磁盘链表增加一个磁盘后的示意图。

【具体实施方式】

[0017]下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。

[0018]本发明将虚拟机涉及的数据对象分为三个部分——虚拟设备状态(例如虚拟CPU寄存器内容、驱动后端缓冲区数据)、虚拟机内存和虚拟机磁盘(以下简称为“磁盘”),动态保存快照就是在这三类数据不断变化的过程中,在保障数据一致的前提下将数据保存为档案,并能在快照恢复时读取档案还原数据,构造虚拟机运行场景;所以,动态虚拟机快照在实现过程中有两个技术要点:第一、快照点保存的虚拟设备状态、内存数据及虚拟机磁盘数据必须确保协调一致;第二、保存快照时虚机运行态的必须停机时间需要尽量短暂,以不影响虚拟机内应用服务为准。

[0019]本发明虚拟机动态保存快照的方法包括以下步骤:

[0020]步骤一,使用一特定结构初始化文件,该文件在后续步骤用于分段保存虚拟机状态数据与内存数据,此步骤需要初始化该文件的标准I/o流对象,并注册基础读写操作集;虚拟机磁盘格式应使用QCOW2 (Copy On Write)磁盘格式,用以之后的步骤使用磁盘链表完成磁盘部分的快照,如图1所示,虚拟磁盘链表采用虚拟机、磁盘A、磁盘B ;

[0021]步骤二,创建一块新的虚拟磁盘文件,在虚拟机主进程中注册其结构化数据,并将其置于虚拟磁盘链表的末端,即将此磁盘数据结构中的磁盘链表前项指针指向目前虚拟机使用的磁盘文件结构;如图2所示,在图1的基础上新增了一个磁盘C ;

[0022]步骤三,遍历该虚拟机中挂载的所有虚拟设备(包括虚拟CPU,虚拟内存,虚拟PCI设备等),使用不同虚拟设备注册的特定方法保存全量的虚拟设备状态数据与客户机内存数据至步骤一创建的文件中;在数据写入的开始、循环迭代及结束过程中均使用魔数分割数据片段,用于读取时识

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值