虚拟机连续快照方法和装置技术领域
本发明涉及计算机技术领域,尤其涉及一种虚拟机连续快照方法和装置。
背景技术
虚拟化技术可以有效整合和利用计算机资源,因此成为了云计算领域
的关键支撑计算。为了提供连续、高可用的云服务,虚拟机中的数据和状
态需要满足可靠性和安全性,由此引入了快照技术。快照技术可以保存虚
拟机运行过程中的完整状态,包括虚拟机的磁盘状态、内存状态及设备状
态,如CPU、网络等,在虚拟机故障时用于恢复虚拟机的状态,尽量少的
丢失虚拟机的数据和状态。
目前,虚拟机对内存状态进行快照时主要采用停机拷贝。停机拷贝是
在进行虚拟机连续快照时将虚拟机挂起,当所有的内存数据被保存了后再
恢复虚拟机运行,以保证此次快照时虚拟机内存中的各页面的数据完整,
未被修改。
但是,停机拷贝使得每次快照时虚拟机的宕机时间非常长,影响了虚
拟机的性能。
发明内容
本发明提供一种虚拟机连续快照方法和装置,用于解决现有技术中虚拟
机连续快照方法使虚拟机宕机时间长,影响虚拟机性能的问题。
本发明提供一种虚拟机连续快照方法,包括:
将虚拟机停机;
根据所述虚拟机中各页面的第一位图信息的值更新各页面的第二位图信
息的值,所述第一位图信息用于标识各页面是否已被修改,所述第二位图信
息用于标识所述各页面是否需要保存,所述各页面的第一位图信息和第二位
图信息与各页面的地址一一对应;
初始化所述虚拟机中各页面的第一位图信息的值;
恢复所述虚拟机的运行;
依次判断所述虚拟机中各页面的第二位图信息的值是否为第一预设的
值;
将第二位图信息的值为第一预设的值的各页面保存到缓存区,并将保存
到缓存区的各页面的第二位图信息的值更改为第二预设的值。
本发明提供一种虚拟机连续快照装置,包括:
停机模块,用于将虚拟机停机;
更新模块,用于根据所述虚拟机中各页面的第一位图信息的值更新各页
面的第二位图信息的值,所述第一位图信息用于标识各页面是否已被修改,
所述第二位图信息用于标识所述各页面是否需要保存,所述各页面的第一位
图信息和第二位图信息与各页面的地址一一对应;
初始化模块,用于初始化所述虚拟机中各页面的第一位图信息的值;
恢复模块,用于恢复所述虚拟机的运行;
判断模块,用于依次判断所述虚拟机中各页面的第二位图信息的值是否
为第一预设的值;
处理模块,用于将第二位图信息的值为第一预设的值的各页面保存到缓
存区,并将保存到缓存区的各页面的第二位图信息的值更改为第二预设的值。
本发明提供的虚拟机连续快照方法和装置,虚拟机连续快照装置仅需在
虚拟机停机过程中将虚拟机中各页面的第一位图信息的值复制到第二位图信
息中,即可恢复虚拟机的运行,在虚拟机运行过程中根据各页面的第二位图
信息的值依次对需要保存的各页面进行快照保存,由于对各页面位图信息的
操作所需的时间很短,使得一次快照过程中虚拟机停机时间较短,且在虚拟
机连续快照时仅需保存自上次快照后被修改的页面,使得所有的页面仅被保
存一次,保存的页面数量少,从而大大缩短了虚拟机一次快照的时间,降低
了虚拟机连续快照过程对虚拟机性能的影响。
附图说明
图1为本发明提供的一种虚拟机连续快照方法实施例一的流程示意图;
图2为本发明提供的一种虚拟机连续快照方法实施例二的流程示意图;
图3为本发明提供的一种虚拟机连续快照方法实施例三的流程示意图;
图4为本发明提供的一种虚拟机连续快照装置实施例一的结构示意图;
图5为本发明提供的一种虚拟机连续快照装置实施例二的结构示意
图。
具体实施方式
图1为本发明提供的一种虚拟机连续快照方法实施例一的流程示意图。
如图1所示,该方法包括:
S10,将虚拟机停机。
S11,根据所述虚拟机中各页面的第一位图信息的值更新各页面的第二位
图信息的值。
其中,所述第一位图信息用于标识各页面是否已被修改,所述第二位图
信息用于标识所述各页面是否需要保存,所述各页面的第一位图信息和第二
位图信息与各页面的地址一一对应。
具体的,本方法实施例由虚拟机连续快照装置执行。本发明中虚拟机内
存的最小单位为页面,每个页面对应一个页面地址。本发明提供的虚拟机连
续快照方法以对虚拟机的内存快照为例进行说明,首先为虚拟机中各页面建
立位图信息表,位图信息表中包括虚拟机中各页面的地址与第一位图信息和
第二位图信息的对应关系。可以分别通过一个比特的值来表示第一位图信息
和第二位图信息的两种状态。比如分别用1或0来表示第一位图信息和第二
位图信息的两种状态。
为方便说明,本发明各实施例中,第一位图信息的值用0表示该页面被
写保护,未被修改,用1表示改页面已被修改;第二位图信息的值用1表示
该页面需要保存但未保存,用0表示该页面已经被保存或不需要保存为例进
行说明。
本实施例中在进行虚拟机连续快照时,首先将虚拟机停机,然后将位图
信息表中第一位图信息的值拷贝到第二位图信息中,这样虚拟机连续快照装
置即可根据该页面是否被修改来判断该页面是否需要保存了。举例来说,若
虚拟机中共包括3个页面,虚拟机停机时,第一页面和第三页面的第一位图
信息的值均为1,第二页面的第一位图信息的值为0,则说明第一页面和第三
页面已被修改,第二页面未被修改,将各页面的第一位图信息复制到第二位
图信息后,第一页面和第三页面的第二位图信息为1,第二页面的第二位图
信息为0,则说明第一页面和第三页面需要保存,而第二页面不需要保存。
S12,初始化所述虚拟机中各页面的第一位图信息的值。
具体的,将虚拟机中各页面的第一位图信息复制到第二位图信息后,为
记录此次快照过程中各页面的被修改情况,将各页面的第一位图信息初始化,
即将各页面的第一位图信息的值置0。在下次快照开始前,虚拟机连续快照
装置再将各页面的第一位图信息值复制到第二位图信息中,此时根据各页面
的第二位图信息即可确定在上次快照过程中被修改的页面,从而只保存相应
被修改过的页面了。
S13,恢复所述虚拟机的运行。
需要说明的是,上述S11和S12仅是一些简单的数据操作,所需时间很
短,从而使虚拟机停机的时间很短。
S14,依次判断所述虚拟机中各页面的第二位图信息的值是否为第一预设
的值。
S15,将第二位图信息的值为第一预设的值的各页面保存到缓存区,并将
保存到缓存区的各页面的第二位图信息的值更改为第二预设的值。
具体的,本实施例中的第一预设的值即为1。虚拟机连续快照装置在虚
拟机停机后,仅将虚拟机中各页面的第一位图信息的值复制到第二位图信息
后,即恢复虚拟机的运行,之后,依次判断虚拟机中各页面的第二位图信息
的标识,若某页面的第二位图信息的标识是0,则说明该页面已经被保存或
无需保存,若为1,则说明该页面需要保存但未保存,将虚拟机中第二位图
信息的值为1的各页面保存到缓存区中,另外为防止虚拟机连续快照装置在
依次判断各页面的第二位图信息是否为1的过程中,对某一页面进行了重复
判断,而多次保存的情况,虚拟机连续快照装置在根据第二位图信息标识将
需要保存的页面保存到缓存区后,再将该页面地址对应的第二位图信息的标
识更改为0。
在本发明提供的虚拟机连续快照方法中,在对虚拟机第一次快照前,可
将虚拟机中各页面的第二位图信息的值统一设置为1,这样虚拟机连续快照
装置对虚拟机进行第一次快照时,可以依次将各页面保存到缓存中。在之后
的快照过程中,各页面的第二位图信息的值可以根据该页面的第一位图信息
的值来确定,若页面被修改了,则将页面的第二位图信息值修改为1,以便
下次快照时虚拟机连续快照装置保存该页面,使得虚拟机连续快照装置每次
快照时只对需要保存的页面进行缓存,保证了虚拟机连续快照的完整性。
本发明提供的虚拟机连续快照方法,虚拟机连续快照装置仅需在虚拟机
停机过程中将虚拟机中各页面的第一位图信息的值复制到第二位图信息中,
即可恢复虚拟机的运行,在虚拟机运行过程中根据各页面的第二位图信息的
值依次对需要保存的各页面进行快照保存,由于对各页面位图信息的操作所
需的时间很短,使得一次快照过程中虚拟机停机时间较短,且在虚拟机连续
快照过程中仅需保存自上次快照后被修改的页面,使得所有的页面仅被保存
一次,保存的页面数量少,从而大大缩短了虚拟机一次快照的时间,降低了
虚拟机连续快照过程对虚拟机性能的影响。图2为本发明提供是虚拟机连续
快照方法实施例二的流程示意图。如图2所示,在上述S13之前,该方法还
包括:
S20,对所述虚拟机的内存页面进行写保护。
具体的,虚拟机连续快照装置为了实时截获对虚拟机内存页面的写请求,
需要对虚拟机进行写保护。
上述S13之后,该方法还包括:
S21,截获对虚拟机的被写保护的内存页面的写请求,所述写请求中包括
待写入的数据及待写入数据的页面的地址。
具体的,当网络中任一实体需要向虚拟机内存中的页面写入新数据时,
可以向虚拟机发送写请求,由于虚拟机进行了写保护,对内存页面的写操作
会使得虚拟机陷出到虚拟机监控器,从而虚拟快照装置能够截获到对虚拟机
的写请求。其中,写请求中包括待写入新数据的页面的地址。
S22,将与所述待写入数据的页面的第一位图信息的值更改为第三预设的
值。
具体的,虚拟机连续快照装置在截获到有写请求时,即可确定与该写请
求中的页面地址对应的第一位图信息的值为0,即说明该页面被写保护,不
允许修改,则虚拟机连续快照装置可将该页面的第一位图信息的值更改为1,
以标记该页面被修改。
S23,判断所述待写入数据的页面的第二位图信息的值是否为第一预设的
值,若是则执行S24,否则执行S25。
S24,将所述待写入数据的页面保存到缓存区。
S25,去除对所述待写入数据的页面的写保护,并将所述待写入的数据写
入到所述待写入数据的页面中。
需要说明的是,本实施例中的上述步骤S20对虚拟机进行写保护的操作
与上述S11及S12间无固定的先后顺序,只要保证S11、S12和S20在S13
前执行即可,图2中以S20在S12之后为例进行说明。另外本实施例中的步
骤S21~S25是在截获到对虚拟机的写请求后触发的,它们的执行与上述S14
由虚拟机连续快照装置主动发起的动作之间可以是同时进行的。上述S14可
以由虚拟机连续快照装置在后台一直重复执行,而步骤S10~S13、S21~S25
需要在前台操作控制实现,即两个过程是并行进行的两个线程,互不影响。
为了防止待写入数据的页面在被修改前未被保存,本实施例中在对待写
入数据的页面进行修改前先判断该页面是否已存入缓存区,即先判断该页面
的第二位图信息的值是否为1,若是1则先将该页面存入缓存区后再对该页
面进行修改,若是0,则说明该页面被修改前的数据可能已在虚拟机连续快
照装置执行上述S14的过程中存入了缓存区,无需再保存。
本发明提供的虚拟机连续快照方法,虚拟机连续快照装置仅需在虚拟机
停机过程中将虚拟机中各页面的第一位图信息的值复制到第二位图信息中,
即可恢复虚拟机的运行,虚拟机运行时根据各页面的第二位图信息的值依次
对需要保存的各页面进行快照保存,由于对各页面位图信息的操作所需的时
间很短,缩短了虚拟机的停机时间,且在虚拟机连续快照过程中仅需保存自
上次快照后被修改的页面,使得所有的页面仅被保存一次,保存的页面数量
少,从而大大缩短了虚拟机一次快照的时间,降低了虚拟机连续快照过程对
虚拟机性能的影响。另外,在收到对虚拟机的写请求时,在修改了待写入数
据的页面的第一位图信息的值后,先确定待写入数据的页面已保存后再对该
页面进行修改,使得待写入数据的页面在写入数据前后的状态能在前后两次
的快照过程中被保存下来,保证了虚拟机连续快照的完整性和连续性。
图3为本发明提供的虚拟机连续快照方法实施例三的流程示意图。如图
3所示,该方法还包括:
S30,监测所述缓存区的剩余容量是否已达到第四预设的值,若是则执行
S31,否则执行S34。
具体的,虚拟机连续快照装置在向缓存区中存入页面时,也要同时监测
缓存区的剩余容量,以防止缓存区已存满或容量不够,而存入的新的页面并
未被保存。第五预设的值可以根据缓存区的容量设置,比如设置为缓存区容
量的1%、3%或者0等等。本实施例对此不做限定。
S31,将所述缓存区中保存的页面移存至指定的位置,并记录所用时间
T1。
由于将缓存区中的数据转存至磁盘时,会占用宿主机大量的输入输出
(InputandOutput,简称IO)速率,从而影响虚拟机对IO资源的访问,影响
虚拟机的性能,因此本发明实施例中可以控制虚拟机连续快照装置将缓存区
中的数据移存至指定位置的速率。
S32,判断所述时间T1是否小于预设的时间T2,若是,则执行S33,否
则执行S34。
本发明实施例以相邻两次将缓存区中的数据移存至指定位置的开始时刻
为一个周期,若能控制每个周期内将缓存区中的数据移存至指定位置占用宿
主机的IO速率尽量不影响虚拟机占用的IO速率,即可改善虚拟机的性能。
则该方法中还包括:
记录从前一次所述将缓存区中保存的页面移存至指定的位置的操作结束
时至本次将缓存区中保存的页面移存至指定的位置的操作的时间间隔T4内
所述虚拟机的实际输入输出速率Vvm。
具体的,在虚拟机运行过程中,记录每一次IO操作的数据的大小,通常
虚拟机的IO操作以扇区为单位,每个扇区默认为512字节,所以记录时只记
录每次IO操作的扇区个数即可。假设在T4内记录的扇区总数为N,则可确
定在T4时间内虚拟机的实际输入输出速率Vvm=(N*512)/T4。
根据所述虚拟机的最大输入输出速率Vmax及所述实际输入输出速率Vvm,
确定所述虚拟机的可用输入输出速率Vava=Vmax-Vvm。
通常,管理员在虚拟机启动时会给定虚拟机一个最大IO速率Vmax,由此
可确定虚拟机的可用IO速率Vava=Vmax-Vvm。
根据所述缓存区当前的存储量Sbuf及所述虚拟机的可用输入输出速率
Vava确定所述预设的时间T2=Sbuf/Vava。若缓存区此次的存储量为Sbuf,则可确
定此次将缓存区的数据移存至指定位置可用的时间,即预设的时间
T2=Sbuf/Vava=Sbuf/(Vmax-Vvm)=Sbuf/(Vmax-(N*512)/T4)。
S33,将所述将第二位图信息的值为第一预设的值的各页面保存到缓存区
的操作挂起T3时间,所述T3=T2-T1。
若通过比较确定此次将缓存区的数据写入磁盘所用的时间T1比本周期
内可用的时间T2短,那么说明此次将缓存区的数据写入磁盘的速率可能大于
可用的IO速率,为了使本次周期内将缓存区的数据写入磁盘所用的速率比较
均匀,可以将虚拟机的快照进程挂起T3时间,从而保证从整体上看该次将缓
存区的数据写入磁盘的操作时间T1与T2相当,继而保证将缓存区的数据写
入磁盘的速度小于上述可用的IO速率。
需要说明的是上述S30~S33的过程与上述S10~S14及S20~S25的过程之
间没有固定的先后顺序,可以是并行进行的过程,也可以在虚拟机连续快照
装置每完成一次快照时,即触发执行一次S30~S33,或者也可以设定一个固
定的时间间隔,在每隔该时间间隔后,虚拟机连续快照装置即触发执行一次
S30~S33等等,本实施例对此不做限定。
S34,执行依次判断所述虚拟机中各页面的第二位图信息的值是否为第一
预设的值的操作。
具体的,若虚拟机连续快照装置判断缓存区的容量仍可继续保存页面时,
则可继续判断虚拟机中的各页面的第二位图信息是否为1,并将第二位图信
息为1的页面保存到缓存区中。
本实施例提供的虚拟机连续快照方法,虚拟机连续快照装置在将虚拟机
内存中的页面存入到缓存区的过程中,同时检测缓存区的容量,以及时将缓
存区中的页面移存至指定的位置,且根据将缓存区的页面移至指定位置的时
间,控制将快照过程挂起的时间,通过控制每次将缓存区中的页面移存至指
定的位置的速率,尽量降低了将缓存区中的页面移存至指定的位置对虚拟机
性能的影响。
图4为本发明提供的虚拟机连续快照装置实施例一的结构示意图。如图
1所示,该虚拟机连续快照装置400,包括:停机模块401、更新模块402、
初始化模块403、恢复模块404、判断模块405及处理模块406。其中,停机
模块401用于将虚拟机停机;更新模块402用于根据所述虚拟机中各页面的
第一位图信息的值更新各页面的第二位图信息的值,所述第一位图信息用于
标识各页面是否已被修改,所述第二位图信息用于标识所述各页面是否需要
保存,所述各页面的第一位图信息和第二位图信息与各页面的地址一一对应;
初始化模块403用于初始化所述虚拟机中各页面的第一位图信息的值;恢复
模块404用于恢复所述虚拟机的运行;判断模块405用于依次判断所述虚拟
机中各页面的第二位图信息的值是否为第一预设的值;处理模块406用于将
第二位图信息的值为第一预设的值的各页面保存到缓存区,并将保存到缓存
区的各页面的第二位图信息的值更改为第二预设的值。
本实施例提供的虚拟机连续快照装置中各模块的具体功能及虚拟机连续
快照处理流程可参照上述虚拟机连续快照方法实施例一的详细描述,此处不
再赘述。
本实施例提供的虚拟机连续快照装置,虚拟机连续快照装置仅需在虚拟
机停机过程中将虚拟机中各页面的第一位图信息的值复制到第二位图信息
中,即可恢复虚拟机的运行,在虚拟机运行过程中根据各页面的第二位图信
息的值依次对需要保存的各页面进行快照保存,由于对各页面位图信息的操
作所需的时间很短,使得一次快照过程中虚拟机停机时间较短,且在虚拟机
连续快照过程中仅需保存自上次快照后被修改的页面,使得所有的页面仅被
保存一次,保存的页面数量少,从而大大缩短了虚拟机一次快照的时间,降
低了虚拟机连续快照过程对虚拟机性能的影响。
图5为本发明提供的虚拟机连续快照装置实施例二的结构示意图。如图
5所示,在图4所示的基础上,该虚拟机连续快照装置400还包括:写保护
模块501和截获模块502。
其中,写保护模块501用于对所述虚拟机的内存页面进行写保护;截获
模块502用于截获对虚拟机的被写保护的内存页面的写请求,所述写请求中
包括待写入的数据及待写入数据的页面的地址;所述处理模块406还用于将
与所述待写入数据的页面的第一位图信息的值更改为第三预设的值;所述判
断模块405还用于判断所述待写入数据的页面的第二位图信息的值是否为第
一预设的值;所述处理模块406还用于若是,则将所述待写入数据的页面保
存到缓存区;所述处理模块406还用于去除对所述待写入数据的页面的写保
护,并将所述待写入的数据写入到所述待写入数据的页面中。
进一步地,该虚拟机连续快照装置还包括:监测模块503。
其中,监测模块503用于监测所述缓存区的剩余容量是否已达到第五预
设的值;所述处理模块406还用于若是,则将所述缓存区中保存的页面移存
至指定的位置,并记录所用时间T1;所述判断模块405还用于判断所述时间
T1是否小于预设的时间T2;所述处理模块406还用于若是,则将所述将第
二位图信息的值为第一预设的值的各页面保存到缓存区的操作挂起T3时间,
所述T3=T2-T1。
本发明的一种可能的实现形式中,上述处理模块406还用于若否,则继
续执行依次判断所述虚拟机中各页面的第二位图信息的值是否为第一预设的
值的操作。
本发明的一种较优的实现形式中,虚拟机连续快照装置400还包括:运
算模块504。
其中,运算模块504用于记录从前一次所述将缓存区中保存的页面移存
至指定的位置的操作结束时至本次将缓存区中保存的页面移存至指定的位置
的操作的时间间隔T4内所述虚拟机的实际输入输出速率Vvm;所述运算模块
504还用于根据所述虚拟机的最大输入输出速率Vmax及所述实际输入输出速
率Vvm,确定所述虚拟机的可用输入输出速率Vava=Vmax-Vvm;所述运算模块
504还用于根据所述缓存区当前的存储量Sbuf及所述虚拟机的可用输入输出
速率Vava确定所述预设的时间T2=Sbuf/Vava。
本实施例提供的虚拟机连续快照装置中各模块的具体功能及处理流程可
参照上述虚拟机连续快照处理方法实施例二和三的详细描述,此处不再赘述。
本发明提供的虚拟机连续快照方法,虚拟机连续快照装置仅需在虚拟机
停机过程中将虚拟机中各页面的第一位图信息的值复制到第二位图信息中,
即恢复虚拟机的运行,在虚拟机运行时根据各页面的第二位图信息的值依次
对需要保存的各页面进行快照保存,由于对各页面位图信息的操作所需的时
间很短,缩短了虚拟机的停机时间,且在虚拟机连续快照过程中仅需保存自
上次快照后被修改的页面,使得所有的页面仅被保存一次,保存的页面数量
少,从而大大缩短了虚拟机一次快照的时间,降低了虚拟机连续快照过程对
虚拟机性能的影响。另外,在收到对虚拟机的写请求时,在修改了待写入数
据的页面的第一位图信息的值后,先确定待写入数据的页面已保存后再对该
页面进行修改,使得待写入数据的页面在写入数据前后的状态能在前后两次
的快照过程中被保存下来,保证了虚拟机连续快照的完整性和连续性。另外,
根据将缓存区的页面移至指定位置的时间,控制将快照过程挂起的时间,通
过控制每次将缓存区中的页面移存至指定的位置的速率,尽量降低了将缓存
区的快照移存时对虚拟机性能的影响。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步
骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可
读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而
前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码
的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对
其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通
技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,
或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并
不使相应技术方案的本质脱离本发明各实施例技术方案的范围。