一种虚拟机保护中有效数据获取系统及方法与流程

文档序号:22175904发布日期:2020-09-11 21:30阅读:153来源:国知局
一种虚拟机保护中有效数据获取系统及方法与流程

本发明涉及计算机数据备份容灾领域,特别是涉及一种虚拟机保护中有效数据获取系统及方法。



背景技术:

随着信息技术快速发展,各企业在信息化建设过程中,数据量越来越多,数据也越来越重要,对容灾备份的要求也在逐步提高,对容灾备份都需要更快速的保护,更少的传输及更小的存储。

hyper-v虚拟平台作为windows服务器自带的平台,具有部署方便、成本低、界面友好等优点,但是作为后起之秀,hyper-v虚拟平台也有一些缺点,最主要的就是缺乏查询有效数据块的接口支持,这里所说的有效数据指的是全量保护中的非空数据,以及增量或者差异保护中的变化数据,如图5所示。

现有技术中,以虚拟机配置版本5.0(windowsserver2012r2上hyper-v平台支持的最高配置版本)为分水岭,等于或低于5.0版本的虚拟机,接口无法获取有效数据块;高于此版本的虚拟机,接口无法获取全量数据的有效数据块,但是能获取基于快照(参考点)的变化块数据(如图2所示)。随着接口的完善,各安全厂商的产品对hyper-v虚拟平台的支持越来越多,也促使hyper-v越来越受到用户的青睐,使用越来越广泛,部署的虚拟机也越来越多,对数据安全也就是虚拟机的安全需求越来越迫切。

虚拟机的安全通过虚拟机的保护来进行。一般地,虚拟机的保护可以分为虚拟机备份及恢复、虚拟机迁移和虚拟机复制来完成,如图3所示。其中,虚拟机备份,需要获取虚拟机的配置和数据并传输到另一台机器的存储上予以保存;虚拟机恢复是把备份的虚拟机配置和数据传输到一个虚拟平台上,并创建出和备份时一样的虚拟机;虚拟机迁移是把虚拟机从当前虚拟平台迁移到同一个或者另一个虚拟平台,为一次性任务;虚拟机复制是在虚拟机迁移的基础上,设定计划,定期复制源虚拟机的数据到目标虚拟机上,保持源虚拟机和目标虚拟机尽量一致,并可以进行切换,以对外提供不间断的服务。

一般来说,虚拟机配置信息的数据量都很小,通常是以千字节(kb)为单位。而虚拟机的保护主要还是磁盘数据的保护,磁盘数据至少以10gb起,tb级别也越来越常见。目前,hyper-v的磁盘分为三种类型:固定大小磁盘、动态扩展磁盘和差异磁盘,如图4所示,顾名思义,固定大小磁盘创建时就分配指定空间并把所有数据置空;动态扩展磁盘创建时分配少量空间,根据使用中需要进行扩展一直到指定大小;差异磁盘是以固定大小磁盘或者动态扩展磁盘为父磁盘而产生的子磁盘,最常见的场景是虚拟机打快照,虚拟机打快照过程中新产生的磁盘就是差异磁盘,是指向快照磁盘(可以为三类磁盘中的任一种,但是根磁盘一定是固定大小或者动态扩展磁盘)的。这三类磁盘中,固定大小磁盘性能最好,但是会有大量空数据占据存储。空数据是需要重点去除的数据之一。

虚拟机保护根据获取到的数据量不同可以分为全量保护、增量保护和差异保护(如图1所示),其中全量保护需要把所有有效数据进行传输和储存,增量保护是基于前一次保护(全量或者另一个增量)后的变化数据进行,差异保护是基于前一次的全量保护后的变化数据进行,可见,对于虚拟机保护,最重要的则是有效数据块的获取,包括全量中的数据块和增量或者差异中的变化数据块,

现有的技术中,很多都是在虚拟平台宿主机上安装一个代理并开一个服务,监控虚拟机磁盘i/o变化并记录,从而得到有效数据信息,然而这种方式对虚拟平台宿主机的性能有影响。

因此,在虚拟机保护中,如何获取到有效数据,以便更快的时间,更少的传输和更小的存储进行虚机保护是亟待解决的问题。



技术实现要素:

为克服上述现有技术存在的不足,本发明之目的在于提供一种虚拟机保护中有效数据获取系统及方法,以在虚拟机保护中,获取到有效数据进行保护,以便更快的时间,更少的传输和更小的存储进行虚机保护。

为达上述目的,本发明提供一种虚拟机保护中有效数据获取系统,应用于等于或低于5.0版本的hyper-v虚拟机配置系统,包括:

数据处理模块,设置于虚拟平台宿主机上,用于虚拟平台宿主机上的磁盘操作与数据传输,所述数据处理模块与备份服务器建立连接,根据从备份服务器获取到的快照所指向的配置信息和磁盘信息所在的所有文件的路径读取所有配置信息文件并传输到备份服务器,于全量保护时,以默认值大小为单位读取磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,将有效数据块连同该有效数据块在磁盘中的偏移量传输至备份服务器,并计算所述有效数据块的哈希值,于所有磁盘数据读取完毕时,将记录的所有哈希值及其偏移量传到备份服务器;

备份服务器,用于对需要保护的虚拟机当前的状态进行快照,取得快照所指向的配置信息和磁盘信息所在的所有文件的路径,发送启动指令至数据处理模块以启动数据处理模块,与所述数据处理模块建立连接,并于建立连接后将取得的路径发送至数据处理模块,于接收到所述数据处理模块发送的有效数据块及其在磁盘中的偏移量时,记录所述有效数据块在磁盘中的偏移量并把所述有效数据块保存到相应的存储区域中,接收并保存所述数据处理模块传送的所有有效数据块的偏移量信息以及哈希值信息。

优选地,所述数据处理模块进一步包括:

连接单元,用于接收所述备份服务器的启动指令,根据所述启动指令连接到备份服务器,建立和备份服务器的连接;

配置信息获取传输单元,用于根据从备份服务器获取的快照所指向的配置信息文件的路径,使用一般文件的读取接口读取所有配置信息文件并传输到所述备份服务器;

全量保护的有效数据获取单元,用于根据从备份服务器获取的快照所指向的磁盘文件的路径,使用专用磁盘读取接口,以默认值大小为单位读取磁盘文件的磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同该有效数据块在磁盘中的偏移量传输至备份服务器,并计算所述有效数据块的哈希值,于所有磁盘数据读取完毕时,将记录的所有哈希值及其偏移量传到备份服务器。

优选地,所述全量保护的有效数据获取单元进一步包括:

磁盘文件打开模块,用于根据磁盘信息所在文件的路径打开磁盘文件以读取对应的磁盘数据;

磁盘数据块读取模块,用于以默认值为单位读取所述磁盘文件中的磁盘数据,获得默认值大小的磁盘数据块;

有效数据块判断模块,用于通过将获得的磁盘数据块分为若干更小数据块计算哈希值并与空数据块的哈希值进行比较,根据比较结果确定所述磁盘数据块是否为有效数据块;

哈希值及偏移量记录模块,用于计算所述有效数据块的哈希值,记录所述有效数据块的哈希值及所述有效数据块在磁盘中的偏移量;

数据传输模块,用于记录所述有效数据块在磁盘中的偏移量,将确定的有效数据块及其在磁盘中的偏移量传输至所述备份服务器进行数据存储,并于存储完毕返回至所述磁盘数据块读取模块,直至磁盘文件中的所有磁盘数据均已读完;

哈希值及偏移量传输模块,用于当所述磁盘数据块读取模块已读取完毕所述磁盘文件的所有磁盘数据,将所述哈希值及偏移量记录模块记录的所有哈希值及其偏移量传到所述备份服务器。

优选地,所述有效数据块判断模块将所述磁盘数据块切分为更小的若干小数据块,将各小数据块的哈希值与对应大小的空数据块的哈希值依次进行比较,若相等,则继续比较下一个小数据块,直到存在不相等的小数据块,则判断对应磁盘数据块为有效数据块。

优选地,所述系统还包括增量保护的有效数据获取单元,用于接收备份服务器发送的以基准备份点保存的磁盘数据哈希值,以所述哈希值对应的磁盘数据的大小为单位读取磁盘文件的磁盘数据块,计算并记录获取的磁盘数据块的哈希值,将所述磁盘数据块的哈希值与基准备份点中同一位置的哈希值进行比较,根据比较结果确定所述磁盘数据块数据是否为变化数据,于比较结果为变化数据时,将所述磁盘数据块及其在磁盘中的偏移量传输到备份服务器,并于所述磁盘文件所有数据读取完毕后,将记录的所有哈希值及其偏移量传到备份服务器。

优选地,所述增量保护的有效数据获取单元进一步包括:

基准点获取模块,用于接收所述备份服务器发送的以基准备份点保存的磁盘数据哈希值;

读取模块,用于根据所述配置信息获取传输单元获取的路径以所述哈希值对应的磁盘数据的大小为单位读取磁盘文件的磁盘数据块;

哈希比较模块,用于计算并记录获取的磁盘数据块的哈希值及该磁盘数据块在磁盘中的偏移量,将所述磁盘数据块的哈希值与所述基准备份点中同一位置的哈希值进行比较,根据比较结果确定所述磁盘数据块的数据是否为变化数据;

比较处理模块,用于当所述哈希比较模块的比较结果为变化数据时,将所述磁盘数据块及其在磁盘中的偏移量传输到备份服务器,并于所述磁盘文件所有数据读取完毕后,将记录的所有哈希值及偏移量传到备份服务器,若比较结果为未变化数据时,则返回所述读取模块读取下一块磁盘数据块,直至所有数据读取完毕。

优选地,所述备份服务器进一步包括:

快照单元,用于对需要保护的虚拟机当前的状态进行快照,并取得快照所指向的配置信息和磁盘信息所在的所有文件的路径;

连接建立单元,用于在进行虚拟机保护时,发送启动指令至数据处理模块以启动所述数据处理模块,与所述数据处理模块建立连接;

配置信息发送单元,用于在与所述数据处理模块建立连接后将并取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径发送至数据处理模块;

存储单元,用于接收并存储所述数据处理模块发送的配置信息文件,在接收到所述数据处理模块发送的有效数据块及其在磁盘中的偏移量时,记录所述有效数据块在磁盘中的偏移量并把所述有效数据块保存到相应存储区域中,并接收保存所述数据处理模块传送的所有有效数据块的偏移量信息以及哈希值信息。

为达到上述目的,本发明还提供一种虚拟机保护中有效数据获取方法,应用于等于或低于5.0版本的hyper-v虚拟机配置系统,包括如下步骤:

步骤s1,设置于虚拟平台宿主机上的数据处理模块根据备份服务器的启动指令启动,并与备份服务器建立连接,于建立连接后,根据备份服务器取得的快照所指向的配置信息文件的路径,读取所有配置信息文件传输到备份服务器;

步骤s2,于全量保护时,根据从备份服务器获取的快照所指向的磁盘文件的路径,以默认值大小为单位读取磁盘文件的磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同该有效数据块在磁盘中的偏移量传输至备份服务器,并计算所述有效数据块的哈希值,于所有磁盘数据读取完毕时,将记录的所有哈希值及其偏移量传到备份服务器;

步骤s3,于增量保护时,所述数据处理模块接收备份服务器发送的以基准备份点保存的磁盘数据哈希值,以所述哈希值对应的磁盘数据的大小为单位读取磁盘数据块,计算并记录获取的磁盘数据块的哈希值,将所述磁盘数据块的哈希值与基准备份点中同一位置的哈希值进行比较,根据比较结果确定所述磁盘数据块数据是否为变化数据,于比较结果为变化数据时,将所述磁盘数据块及其在磁盘中的偏移量传输到备份服务器,并于所有磁盘数据读取完毕时,将记录的所有哈希值及其偏移量传到备份服务器。

为达到上述目的,本发明还提供一种虚拟机保护中有效数据获取系统,应用于大于5.0版本的hyper-v虚拟机配置系统,包括:

数据处理模块,设置于虚拟平台宿主机上,用于所述虚拟平台宿主机上的磁盘操作与数据传输,根据备份服务器的启动指令启动,与备份服务器建立连接,于建立连接后,根据从备份服务器获取到的快照所指向的配置信息和磁盘信息所在的所有文件的路径,读取所有配置信息文件传输到备份服务器,于全量保护时,以默认值大小为单位读取磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,将有效数据块连同该数据块在磁盘中的偏移量传输至备份服务器;于增量保护时,接收备份服务器发送的增量变化块信息,基于该增量变化块信息获取磁盘对应位置的变化数据发送至备份服务器以进行备份;

备份服务器,用于对需要保护的虚拟机当前的状态进行快照,取得快照所指向的配置信息和磁盘信息所在的所有文件的路径,发送启动指令至数据处理模块以启动数据处理模块,与所述数据处理模块建立连接,并于建立连接后将取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径发送至数据处理模块,于接收到数据处理模块发送的有效数据块及其在磁盘中的偏移量时,记录所述有效数据块在磁盘中的偏移量并把所述有效数据块保存到对应的存储区域中,并记录此次备份的快照id,于增量保护时,根据上一次备份的快照id获得增量变化块信息传送至数据处理模块。

为达到上述目的,本发明还提供一种虚拟机保护中有效数据获取方法,应用于大于5.0版本的hyper-v虚拟机配置系统,包括如下步骤:

步骤s1,设置于虚拟平台宿主机上的数据处理模块根据备份服务器的启动指令启动,并与备份服务器建立连接,于建立连接后,根据备份服务器取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径,读取所有配置信息文件传输到备份服务器;

步骤s2,于全量保护时,所述数据处理模块以默认值大小为单位读取磁盘文件的磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同该数据块在磁盘中的偏移量传输至备份服务器;

步骤s3,于增量保护时,接收备份服务器根据上一次备份快照id获取的增量变化块信息,基于该变化块信息获取磁盘对应位置的变化数据发送至备份服务器以进行备份;

步骤s4,备份服务器于接收到数据处理模块发送的有效数据块及其在磁盘中的偏移量时,记录所述有效数据块在磁盘中的偏移量并把所述有效数据块保存到对应的存储区域中,并记录此次备份的快照id。

与现有技术相比,本发明一种虚拟机保护中有效数据获取系统及方法通过设置于虚拟平台宿主机上的数据处理模块根据备份服务器的启动指令启动,并与备份服务器建立连接,于建立连接后,获取备份服务器对虚拟机快照所备份的配置信息和磁盘数据信息,并读取所有配置信息文件传输到备份服务器,在全量保护时,数据处理模块以默认值大小为单位读取磁盘文件的磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同此块数据在磁盘中的偏移量传输至备份服务器,通过本发明,可以更快的时间,更少的传输和更小的存储进行虚机保护。

附图说明

图1为虚拟机保护中按数据量分类示意图;

图2为现有技术中不同虚拟机配置版本接口支持示意图;

图3为虚拟机保护中的类型示意图;

图4为hyper-v中磁盘分类示意图;

图5为有效数据块的定义示意图;

图6为本发明一种虚拟机保护中有效数据获取系统的系统架构图;

图7为本发明第一实施例中虚拟机保护中有效数据获取系统的架构图;

图8为本发明第一实施例中全量保护的有效数据获取单元的细部结构图;

图9为本发明第一实施例中增量保护的有效数据获取单元的细部结构图;

图10为本发明第二实施例一种虚拟机保护中有效数据获取方法的步骤流程图;

图11为本发明第三实施例中全量保护的有效数据获取单元的细部结构图;

图12为本发明第四实施例一种虚拟机保护中有效数据获取方法的步骤流程图;

图13为本发明实施例中全量保护获取有效数据的流程图;

图14为本发明实施例中增量保护获取有效数据的流程图。

具体实施方式

以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。

为了便于说清楚有效数据块的获取和传输,对下文描述先进行如下约定:

1、下文描述中使用“备份”代替“保护”。因为保护中的备份、迁移和复制都是使用相同的技术获取有效块,且备份更易被理解,只使用备份更容易讲述清楚本发明。

2、由于增量保护和差异保护,都是取变化块数据进行保护,其重点是取变化块数据,因此可以放在一起,本发明使用增量备份来表述,其方法同样适用于差异备份。

3、由于虚拟机配置信息的数据量很小,本发明可以直接调用普通二进制文件读取的接口读取数据。

4、通常虚拟机中都有多个磁盘,多个磁盘的处理可以使用多线程同时进行,加快虚拟机保护的性能。多线程并发的处理和本发明关系不大,故本发明假设虚拟机中只有一个磁盘。

5、由于获取有效数据块分为两种情况,一是虚拟机配置版本大于5.0的情况,此情况虚拟机不提供全量有效数据块的查询接口,但提供增量变化数据块的查询接口;二是虚拟机配置版本等于或小于5.0,此情况下虚拟机查询数据块的接口均不提供,由于第二种情况可以涵盖第一种情况,本发明重点在于描述第二种情况。

图6为本发明一种虚拟机保护中有效数据获取系统的系统架构图。如图6所示,在本发明第一实施例中,一种虚拟机保护中有效数据获取系统,适用于虚拟机配置版本等于或小于5.0的情况,包括:

数据处理模块60,设置于虚拟平台宿主机上,用于虚拟平台宿主机上的磁盘操作与数据传输,根据备份服务器的启动指令启动,与备份服务器建立连接,于建立连接后,根据从备份服务器获取到的快照所指向的配置信息和磁盘信息所在的所有文件的路径,使用一般文件的读取接口读取所有配置信息文件传输到备份服务器,于全量保护时,以默认值大小为单位读取磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同此数据块在磁盘中的偏移量传输至备份服务器,并计算所述有效数据块的哈希(hash)值,于所有磁盘数据读取完毕时,将记录的所有哈希值及其偏移量传到备份服务器,由备份服务器保存此次备份的所有有效数据块的偏移量信息以及哈希值信息,以备增量备份和虚机恢复时使用;于增量保护时,接收备份服务器发送的以基准备份点保存的磁盘数据哈希值,以所述哈希值对应的磁盘数据的大小为单位读取磁盘数据块,计算并记录获取的磁盘数据块的哈希值,将所述磁盘数据块的哈希值与基准备份点中同一位置的哈希值进行比较,根据比较结果确定所述磁盘数据块数据是否为变化数据,于比较结果为变化数据时,将所述磁盘数据块及其在磁盘中的偏移量(位置)传输到备份服务器,并于所有磁盘数据读取完毕时,将记录的所有哈希值及其偏移量传到备份服务器。在本发明具体实施例中,第一次备份一般为全量备份,后续的备份都是基于前一次的增量备份。当然也可以通过规则进行备份类型的指定,例如定时执行,比如每周一0点执行全量备份,每周三,周六0点执行增量备份。

具体地,如图7所示,所述数据处理模块60进一步包括:

连接单元601,用于接收备份服务器的启动指令,根据所述启动指令连接到备份服务器,建立和备份服务器的连接。在本发明具体实施例中,备份服务器通过winrm启动数据处理模块,所述启动指令中包含连接信息(例如所连接的备份服务器的ip地址和端口等,可通过备份服务器的ip地址和端口连接到备份服务器),连接单元601于接收到启动指令后,根据连接信息,连接到备份服务器,建立和备份服务器的连接。

配置信息获取传输单元602,用于根据从备份服务器获取的快照所指向的配置信息文件的路径,使用一般文件的读取接口读取所有配置信息文件并传输到备份服务器。也就是说,在进行备份时,备份服务器首先通过winrm对需要保护的虚拟机打快照,将虚拟机当前的状态固定下来以供备份,所述当前的状态包括虚拟机的配置信息(虚拟机配置文件,运行时状态文件,虚拟机内存文件等)以及磁盘数据信息,当启动数据处理模块后,备份服务器会取得快照所指向的配置信息和磁盘信息所在的所有文件的路径,发送给所述数据处理模块60,所述配置信息获取传输单元602于获得备份服务器发送的所述快照所指向的配置信息和磁盘信息所在的所有文件的路径后,使用一般文件的读取接口,读取所有配置信息文件并传输到备份服务器保存。

全量保护的有效数据获取单元603,用于根据从备份服务器获取的快照所指向的磁盘文件的路径,使用专用磁盘读取接口,以默认值大小为单位读取磁盘文件的磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同该有效数据块在磁盘中的偏移量传输至备份服务器,并计算所述有效数据块的哈希(hash)值,于所有磁盘数据读取完毕时,将记录的所有哈希值及其偏移量传到备份服务器。

具体地,如图8所示,全量保护的有效数据获取单元603进一步包括:

磁盘文件打开模块603a,用于根据磁盘信息所在文件的路径打开磁盘文件以读取对应的磁盘数据。在本发明具体实施例中,所述磁盘文件打开模块603a调用windows库virtdisk.dll打开磁盘文件并准备开始读取磁盘数据。

磁盘数据块读取模块603b,用于以默认值(例如1mb为单位)为单位读取所述磁盘文件中的磁盘数据,获得默认值大小的磁盘数据块。

有效数据块判断模块603c,用于通过将获得的磁盘数据块分为若干更小数据块并与空数据块进行比较,根据比较结果确定所述磁盘数据块是否为有效数据块。具体地说,有效数据块判断模块603c将磁盘数据块切分为更小的若干小块(例如以1mb大小的磁盘数据块为例,分为128个8kb的更小数据块)并计算哈希值,将各小数据块的哈希值与对应大小的空数据块(全0的8k数据)的哈希值依次进行比较,若相等,则继续比较下一个小数据块,直到不相等,并判断该磁盘数据块(1mb大小)为有效数据块,需要备份;若全部的小数据块与空数据块都相等,则表明该磁盘数据块不是有效数据块,则抛弃该磁盘数据块。在本发明具体实施例中,有效数据块判断模块603c以8kb为一个小数据块与空数据(全0的8k数据)块进行比较,如果相等,继续比较下一个8kb,直到不相等,判断该磁盘数据块为有效数据块,需要备份,如果全部的128个8kb数据块都相等,则抛弃此磁盘数据块。在本发明具体实施例中,综合系统性能和存储,选择1mb数据作为比较的磁盘数据块,如果其包含的小数据块全空则无效,有非空的,则都认为是有效,当然可以选择别的大小的数据作为比较的磁盘数据块,比如512kb,本发明不以此为限。

哈希值及偏移量记录模块603d,用于计算所述有效数据块的哈希(hash)值,记录所述有效数据块的哈希值及所述有效数据块在磁盘中的偏移量。由于对于相同的一段数据,经过固定的哈希(散列)算法,得到的哈希值是一样的,而不同的数据,得到的哈希值是不同的(对于256位的哈希值,哈希冲突概率极小到可以忽略),因此,计算各有效数据块的哈希值,可以用于增量备份和虚机恢复时使用。

数据传输模块603e,用于将所述有效数据块及其在磁盘中的偏移量(位置)传输至备份服务器进行数据存储,并于存储完毕返回至磁盘数据块读取模块603b,直至磁盘文件中的所有磁盘数据均已读完。

哈希值及偏移量传输模块603f,用于当磁盘数据块读取模块603b已读取完毕所述磁盘文件的所有磁盘数据,将所述哈希值及偏移量记录模块603d记录的所有哈希值及其偏移量传到备份服务器,备份服务器保存此次备份的所有有效数据块的偏移量信息以及哈希值信息,以备增量备份和虚机恢复时使用。

这样,当此次备份完毕,全部的配置文件,所有有效数据块及其哈希值,以及各有效数据块在磁盘中的偏移量都被保存到备份服务器中,同时,备份服务器还记录此次备份的其他相关信息以备下一次备份使用,包括此次备份的时间点及唯一标识符。

增量保护的有效数据获取单元604,用于接收备份服务器61发送的以基准备份点保存的磁盘数据哈希值,以所述哈希值对应的磁盘数据的大小为单位读取磁盘文件的磁盘数据块,计算并记录获取的磁盘数据块的哈希值,将所述磁盘数据块的哈希值与基准备份点中同一位置的哈希值进行比较,根据比较结果确定所述磁盘数据块数据是否为变化数据,于比较结果为变化数据时,将所述磁盘数据块及其在磁盘中的偏移量(位置)传输到备份服务器,并于所述磁盘文件所有数据读取完毕后,将记录的所有哈希值及其偏移量传到备份服务器。

具体地,如图9所示,所述增量保护的有效数据获取单元604进一步包括:

基准点获取模块604a,用于接收备份服务器61发送的以基准备份点保存的磁盘数据哈希值。也就是说,于备份服务器端61需要指定基准备份点,可以是全量备份点也可以是增量备份点,于确定基准备份点后,取得该基准备份点保存的磁盘数据哈希值,发送到数据处理模块60的基准点获取模块604a,一般地,基准备份点指的是前一次备份结果,在备份数据里会有一个数据链,从第一次备份到后续的备份,都会链接起来。

读取模块604b,用于根据配置信息获取传输单元602获取的路径以所述哈希值对应的磁盘数据的大小为单位读取磁盘文件的磁盘数据块,在本发明具体实施例中,假设基准备份点的磁盘数据哈希值对应的磁盘数据大小为1mb,则读取模块604b以1mb为单位读取磁盘数据,获取1mb的磁盘数据块。配置信息获取传输单元602。

哈希比较模块604c,用于计算并记录获取的磁盘数据块的哈希值及该磁盘数据块在磁盘中的偏移量,将所述磁盘数据块的哈希值与所述基准备份点中同一位置(即与该磁盘数据块相同偏移量)的哈希值进行比较,根据比较结果确定所述磁盘数据块的数据是否为变化数据。

比较处理模块604d,用于当哈希比较模块604c的比较结果为变化数据时,将所述磁盘数据块及其在磁盘中的偏移量(位置)传输到备份服务器,并于所述磁盘文件所有数据读取完毕后,将记录的所有哈希值及偏移量传到备份服务器,若比较结果为未变化数据时,则返回读取模块604b读取下一块磁盘数据块,直至所有数据读取完毕。也就是说,当得到1mb大小的一块磁盘数据块,哈希比较模块604c计算此磁盘数据块的256位哈希值并记录,获取相同偏移量上的基准备份点的数据哈希值,如果获取成功并且和此次计算出的哈希值相同,则表示当前磁盘数据块为未变化块,抛弃此块磁盘数据块,并返回读取模块604b进行读取下一块数据块,否则表示此块磁盘数据块为变化数据,将所述磁盘数据块及其在磁盘中的偏移量(位置)传输到备份服务器。相应地,备份服务器61的存储单元613同样记录此块有效数据在磁盘中的偏移量并把此块数据保存到相应存储区域中,同样,其存储数据的格式可以在备份服务器配置中指定。

当所有磁盘数据读取完毕,则比较处理模块604d还将记录的所有哈希值及偏移量传到备份服务器。相应地,所述备份服务器的存储单元613保存此次备份的所有有效数据块的偏移量信息以及哈希值信息,以备增量备份和虚机恢复时使用。

可见,在本发明中,虚拟平台宿主机上的数据处理模块只做虚拟机磁盘的操作及其数据的传输,不对虚拟平台进行管理,而是由备份服务器通过winrm对虚拟平台进行远程管理。如果通过数据处理模块对虚拟平台进行管理,则需要开启一个服务和备份服务器通信,增加了系统的复杂性。

备份服务器61,用于对需要保护的虚拟机当前的状态进行快照,取得快照所指向的配置信息和磁盘信息所在的所有文件的路径,于进行虚拟机保护时,发送启动指令至数据处理模块60以启动数据处理模块60,与所述数据处理模块建立连接,并于建立连接后将取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径发送至数据处理模块60,于接收到数据处理模块60发送的有效数据块及其在磁盘中的偏移量(位置)时,记录所述有效数据块在磁盘中的偏移量并把所述有效数据块保存到对应的存储区域中,接收并保存数据处理模块60传送的所有有效数据块的偏移量信息以及哈希值信息,以备增量备份和虚机恢复时使用。

也就是说,每次备份的全部的配置文件,所有有效数据块及其哈希值,以及在磁盘中的偏移量都被保存到备份服务器中,并且备份服务器61记录此次备份的信息以备下一次备份使用,包括此次备份的时间点及唯一标识符。

具体地,备份服务器61包括:

快照单元610,用于对需要保护的虚拟机当前的状态进行快照,所述当前的状态包括虚拟机的配置信息(虚拟机配置文件,运行时状态文件,虚拟机内存文件等)和磁盘数据信息,就算虚拟机还在运行中,有数据的持续读写,也不会改变快照内的这些信息。在本发明具体实施例中,所述快照单元610通过winrm对需要保护的虚拟机打快照,把虚拟机当前的状态固定下来以供备份,并取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径。

连接建立单元611,用于在进行虚拟机保护时,发送启动指令至数据处理模块60以启动数据处理模块60,与所述数据处理模块60建立连接。所述连接建立单元611通过winrm启动数据处理模块60,所述启动指令中包含连接信息(ip地址和端口等)作为参数,以便所述数据处理模块60可根据连接信息,连接到备份服务器,建立和备份服务器的连接。

路径信息发送单元612,用于在与数据处理模块60建立连接后将快照所指向的配置信息和磁盘信息所在的所有文件的路径发送至数据处理模块60。也就是说,在快照单元610对需要保护的虚拟机当前的状态进行快照时,会取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径,当与数据处理模块60建立连接后,路径信息发送单元612会将取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径信息,发送给数据处理模块60。

存储单元613,用于接收并存储所述数据处理模块60发送的配置信息文件,在接收到所述数据处理模块60发送的有效数据块及其在磁盘中的偏移量(位置)时,记录所述有效数据块在磁盘中的偏移量并把所述有效数据块保存到相应的存储区域中,存储数据的格式可以在备份服务器配置中指定,例如,如果备份服务器也带有hyper-v虚拟平台,则可以存储为虚拟磁盘格式,以便于直接使用此数据创建虚拟机,而这也是瞬时恢复的基本原理。同时,当数据处理模块60读取完所有磁盘数据,将记录的所有哈希值及其偏移量传到备份服务器,所述存储单元613则保存此次备份的所有有效数据块的偏移量信息以及哈希值信息,以备增量备份和虚机恢复时使用。同样,每次备份的全部的配置文件,所有变化数据块及其哈希值,以及在磁盘中的偏移量都被保存到备份服务器中。备份服务器记录此次备份的信息以备下一次备份使用,包括此次备份的时间点及唯一标识符。

图10为本发明一种虚拟机保护中有效数据获取方法的步骤流程图。如图10所示,在本发明第二实施例中,本发明一种虚拟机保护中有效数据获取方法,适用于虚拟机配置版本小于5.0的情况,包括如下步骤:

步骤s1,设置于虚拟平台宿主机上的数据处理模块根据备份服务器的启动指令启动,并与备份服务器建立连接,于建立连接后,根据备份服务器取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径,读取所有配置信息文件传输到备份服务器。

具体地,步骤s1进一步包括:

步骤s100,备份服务器对需要保护的虚拟机当前的状态进行快照,取得快照所指向的配置信息和磁盘信息所在的所有文件的路径,所述当前的状态包括虚拟机的配置信息(虚拟机配置文件,运行时状态文件,虚拟机内存文件等)和磁盘数据信息,就算虚拟机还在运行中,有数据的持续读写,也不会改变快照内的这些信息。在本发明具体实施例中备份服务器通过winrm对需要保护的虚拟机打快照,把虚拟机当前的状态固定下来以供备份。

步骤s101,备份服务器发送启动指令至数据处理模块以启动数据处理模块与所述数据处理模块建立连接。具体地,备份服务器通过winrm启动数据处理模块,所述启动指令中包含连接信息(ip地址和端口等)作为参数,以便所述数据处理模块可根据连接信息,连接到备份服务器,建立和备份服务器的连接。

步骤s102,备份服务器在与数据处理模块建立连接后将取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径发送至数据处理模块。

步骤s103,数据处理模块根据从备份服务器获得的快照所指向的配置信息文件的路径,使用一般文件接口读取所有配置信息文件并传输到备份服务器。

步骤s2,于全量保护时,所述数据处理模块根据从备份服务器获取的快照所指向的磁盘文件的路径,使用专用磁盘读取接口,以默认值大小为单位读取磁盘文件的磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同此块数据在磁盘中的偏移量传输至备份服务器,并计算所述有效数据块的哈希(hash)值,于所有磁盘数据读取完毕时,将记录的所有哈希值及其偏移量传到备份服务器,由备份服务器保存此次备份的所有有效数据块的偏移量信息以及哈希值信息,以备增量备份和虚机恢复时使用。

具体地,步骤s2进一步包括:

步骤s200,所述数据处理模块打开磁盘文件以读取对应的磁盘数据。在本发明具体实施例中,所述数据处理模块调用windows库virtdisk.dll打开磁盘文件并准备开始读取磁盘数据。

步骤s201,以默认值(例如1mb为单位)为单位读取所述磁盘文件中的磁盘数据,获得默认值大小的磁盘数据块;

步骤s202,通过将获得的磁盘数据块分为若干更小数据块并与空数据块进行比较,根据比较结果确定所述磁盘数据块是否为有效数据块。在本发明具体实施例中,将磁盘数据块切分为更小的若干小块(例如以1mb大小的磁盘数据块为例,分为128个8kb的更小数据块)并计算哈希值,将各小数据块的哈希值与对应大小的空数据块(全0的8k数据)的哈希值依次进行比较,若相等,则继续比较下一个小数据块,直到不相等,并判断该磁盘数据块(1mb大小)为有效数据块,需要备份;若全部的小数据块的哈希值与空数据块的哈希值都相等,则表明该磁盘数据块不是有效数据块,则抛弃该磁盘数据块。在本发明具体实施例中,有效数据块判断模块603c以8kb为一个小数据块与空数据(全0的8k数据)块进行哈希值比较,如果相等,继续比较下一个8kb,直到不相等,判断该磁盘数据块为有效数据块,需要备份,如果全部的128个8kb数据块都相等,则抛弃此磁盘数据块。

步骤s203,计算所述有效数据块的哈希(hash)值,记录所述有效数据块的哈希值及所述有效数据块在磁盘中的偏移量。由于对于相同的一段数据,经过固定的哈希(散列)算法,得到的哈希值是一样的,而不同的数据,得到的哈希值是不同的(对于256位的哈希值,哈希冲突概率极小到可以忽略),因此,计算各有效数据块的哈希值,可以用于增量备份和虚机恢复时使用。

步骤s204,将所述有效数据块及其在磁盘中的偏移量(位置)传输至备份服务器进行数据存储,并于存储完毕返回至步骤s201,直至磁盘文件中的所有磁盘数据均已读完。

步骤s205,当所述数据处理模块读取完毕所述磁盘文件的所有磁盘数据,将记录的所有哈希值及其偏移量传到备份服务器,备份服务器保存此次备份的所有有效数据块的偏移量信息以及哈希值信息,以备增量备份和虚机恢复时使用。

这样,当此次备份完毕,全部的配置文件,所有有效数据块及其哈希值,以及各有效数据块在磁盘中的偏移量都被保存到备份服务器中,同时,备份服务器还记录此次备份的其他相关信息以备下一次备份使用,包括此次备份的时间点及唯一标识符。

步骤s3,于增量保护时,接收备份服务器发送的以基准备份点保存的磁盘数据哈希值,以所述哈希值对应的磁盘数据的大小为单位读取磁盘数据块,计算并记录获取的磁盘数据块的哈希值,将所述磁盘数据块的哈希值与基准备份点中同一位置的哈希值进行比较,根据比较结果确定所述磁盘数据块数据是否为变化数据,于比较结果为变化数据时,将所述磁盘数据块及其在磁盘中的偏移量(位置)传输到备份服务器,并于所有磁盘数据读取完毕时,将记录的所有哈希值及其偏移量传到备份服务器。

具体地,步骤s3进一步包括:

步骤s300,接收备份服务器发送的以基准备份点保存的磁盘数据哈希值。也就是说,于备份服务器端需要指定基准备份点,可以是全量备份点也可以是增量备份点,于确定基准备份点后,取得该基准备份点保存的磁盘数据哈希值,发送到数据处理模块,一般地,基准备份点指的是前一次备份结果,在备份数据里会有一个数据链,从第一次备份到后续的备份,都会链接起来。

步骤s301,根据步骤s1获取的路径以所述哈希值对应的磁盘数据的大小为单位读取磁盘文件的磁盘数据块,在本发明具体实施例中,假设基准备份点的磁盘数据哈希值对应的磁盘数据大小为1mb,则以1mb为单位读取磁盘数据,获取1mb的磁盘数据块。

步骤s302,计算并记录获取的磁盘数据块的哈希值及该磁盘数据块在磁盘中的偏移量,将所述磁盘数据块的哈希值与所述基准备份点中同一位置(即与该磁盘数据块相同偏移量)的哈希值进行比较,根据比较结果确定所述磁盘数据块的数据是否为变化数据。

步骤s303,当步骤s302的比较结果为变化数据时,将所述磁盘数据块及其在磁盘中的偏移量(位置)传输到备份服务器,并于所述磁盘文件所有数据读取完毕后,将记录的所有哈希值及偏移量传到备份服务器,若比较结果为未变化数据时,则返回步骤s301读取下一块磁盘数据块,直至所有数据读取完毕。也就是说,当得到1mb大小的一块磁盘数据块,计算此磁盘数据块的256位哈希值并记录,获取相同偏移量上的基准备份点的数据哈希值,如果获取成功并且和此次计算出的哈希值相同,则表示当前磁盘数据块为未变化块,抛弃此块磁盘数据块,并返回步骤s301进行读取下一块数据块,否则表示此块磁盘数据块为变化数据,将所述磁盘数据块及其在磁盘中的偏移量(位置)传输到备份服务器。

在本发明中,对于hyper-v虚拟平台中虚拟机配置版本大于5.0的系统,由于提供了获取增量变化块的接口,可以基于以上方法稍微修改进行实现。对于hyper-v虚拟平台中虚拟机配置版本大于5.0的系统,增量数据不是基于上一次备份的哈希值进行比较得出,而是基于上一次备份的快照查询得出,所以要修改的部分主要是去掉有效数据块哈希值相关部分内容,包括哈希值的计算、比较、传输和保存;保存上一次备份的快照id。

因此,具体地,在本发明第三实施例中,对于hyper-v虚拟平台中虚拟机配置版本大于5.0的系统,所述一种虚拟机保护中有效数据获取系统,包括:

数据处理模块,设置于虚拟平台宿主机上,用于虚拟平台宿主机上的磁盘操作与数据传输,根据备份服务器的启动指令启动,与备份服务器建立连接,于建立连接后,根据从备份服务器获取到的快照所指向的配置信息和磁盘信息所在的所有文件的路径,使用一般文件的读取接口读取所有配置信息文件传输到备份服务器,于全量保护时,以默认值大小为单位读取磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同此块数据在磁盘中的偏移量传输至备份服务器;于增量保护时,接收备份服务器根据上一次备份的快照id获取的增量变化块信息(所述增量变化块信息包括变化数据的偏移量和长度,不包含变化数据本身),基于该增量变化块信息获取磁盘对应位置的变化数据发送至备份服务器以进行备份。

具体地,所述数据处理模块包括:

连接单元,用于接收备份服务器的启动指令,根据所述启动指令连接到备份服务器,建立和备份服务器的连接。在本发明具体实施例中,备份服务器通过winrm启动数据处理模块。由于连接单元与第一实施例的连接单元相同,在此不予赘述。

配置信息获取传输单元,用于根据从备份服务器获取的快照所指向的配置信息和磁盘信息所在的所有文件的路径,读取所有配置信息文件并传输到备份服务器。由于配置信息获取传输单元与第一实施例的连接单元相同,在此不予赘述

全量保护的有效数据获取单元,用于以默认值大小为单位读取磁盘文件的磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同该有效数据块在磁盘中的偏移量传输至备份服务器。

具体地,如图11所示,在本实施例中,所述全量保护的有效数据获取单元进一步包括:

磁盘文件打开模块103a,用于根据磁盘信息所在文件的路径打开磁盘文件以读取对应的磁盘数据。在本发明具体实施例中,所述磁盘文件打开模块103a调用windows库virtdisk.dll打开磁盘文件并准备开始读取磁盘数据。

磁盘数据块读取模块103b,用于以默认值(例如1mb为单位)为单位读取所述磁盘文件中的磁盘数据,获得默认值大小的磁盘数据块。

有效数据块判断模块103c,用于通过将获得的磁盘数据块分为若干更小数据块,计算哈希值,并与空数据块的哈希值进行比较,根据比较结果确定所述磁盘数据块是否为有效数据块。由于有效数据块判断模块103c与第一实施例的有效数据块判断模块相同,在此不予赘述。

数据传输模块103d,用于将所述有效数据块及其在磁盘中的偏移量(位置)传输至备份服务器进行数据存储,并于存储完毕返回至磁盘数据块读取模块103b,直至磁盘文件中的所有磁盘数据均已读完。

增量保护的有效数据获取单元104,用于接收备份服务器发送的变化块信息(所述变化块信息包括变化数据的偏移量和长度,不包含变化数据本身),基于该变化块信息获取磁盘对应位置的变化数据发送至备份服务器以进行备份。

备份服务器,用于对需要保护的虚拟机当前的状态进行快照,取得快照所指向的配置信息和磁盘信息所在的所有文件的路径,发送启动指令至数据处理模块以启动数据处理模块,与所述数据处理模块建立连接,并于建立连接后将取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径发送至数据处理模块,于接收到数据处理模块发送的有效数据块及其在磁盘中的偏移量(位置)时,记录所述有效数据块在磁盘中的偏移量并把所述有效数据块保存到对应的存储区域中,并记录此次备份的快照id,于增量保护时,根据上一次备份的快照id获取的增量变化块信息发送至数据处理模块。

具体地,备份服务器包括:

快照单元,用于对需要保护的虚拟机当前的状态进行快照,所述当前的状态包括虚拟机的配置信息(虚拟机配置文件,运行时状态文件,虚拟机内存文件等)和磁盘数据信息,就算虚拟机还在运行中,有数据的持续读写,也不会改变快照内的这些信息。在本发明具体实施例中,所述快照单元通过winrm对需要保护的虚拟机打快照,把虚拟机当前的状态固定下来以供备份,并取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径。

连接建立单元,用于在进行虚拟机保护时,发送启动指令至数据处理模块以启动数据处理模块,与所述数据处理模块建立连接。所述连接建立单元通过winrm启动数据处理模块,所述启动指令中包含连接信息(ip地址和端口等)作为参数,以便所述数据处理模块可根据连接信息,连接到备份服务器,建立和备份服务器的连接。

路径信息发送单元,用于在与数据处理模块建立连接后将快照所指向的配置信息和磁盘信息所在的所有文件的路径发送至数据处理模块。也就是说,在快照单元对需要保护的虚拟机当前的状态进行快照时,会取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径,当与数据处理模块建立连接后,路径信息发送单元会将取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径信息,发送给数据处理模块。

存储记录单元,用于接收并存储所述数据处理模块发送的配置信息文件,在接收到所述数据处理模块发送的有效数据块及其在磁盘中的偏移量(位置)时,记录所述有效数据块在磁盘中的偏移量并把所述有效数据块保存到相应的存储区域中,存储数据的格式可以在备份服务器配置中指定,例如,如果备份服务器也带有hyper-v虚拟平台,则可以存储为虚拟磁盘格式,以便于直接使用此数据创建虚拟机,而这也是瞬时恢复的基本原理。同时,存储记录单元还记录当前备份的快照id,以备增量备份和虚机恢复时使用;

增量变化块信息获取发送单元,用于在增量保护时,根据上一次备份的快照id获取的增量变化块信息发送至数据处理模块。

需说明的是,在本发明中,全量保护时的快照id是在全量保护时保存在备份服务器的。但用户如果选择增量保护,而之前没有做过全量保护,则会自动转成全量保护。

图12为本发明第四实施例一种虚拟机保护中有效数据获取方法的步骤流程图。如图12所示,在本发明第四实施例中,本发明一种虚拟机保护中有效数据获取方法,适用于虚拟机配置版本大于5.0的情况,包括如下步骤:

步骤s1,设置于虚拟平台宿主机上的数据处理模块根据备份服务器的启动指令启动,并与备份服务器建立连接,于建立连接后,根据备份服务器取得的快照所指向的配置信息和磁盘信息所在的所有文件的路径,读取所有配置信息文件传输到备份服务器。由于步骤s1与第二实施例的步骤s1相同,在此不予赘述。

步骤s2,于全量保护时,所述数据处理模块以默认值大小为单位读取磁盘文件的磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同此块数据在磁盘中的偏移量传输至备份服务器。

具体地,步骤s2进一步包括:

步骤s200,所述数据处理模块打开磁盘文件以读取对应的磁盘数据。在本发明具体实施例中,所述数据处理模块调用windows库virtdisk.dll打开磁盘文件并准备开始读取磁盘数据。

步骤s201,以默认值(例如1mb为单位)为单位读取所述磁盘文件中的磁盘数据,获得默认值大小的磁盘数据块;

步骤s202,通过将获得的磁盘数据块分为若干更小数据块并与空数据块进行比较,根据比较结果确定所述磁盘数据块是否为有效数据块。

步骤s203,将有效数据块及其在磁盘中的偏移量(位置)传输至备份服务器进行数据存储,并于存储完毕返回至步骤s201,直至磁盘文件中的所有磁盘数据均已读完。

步骤s3,于增量保护时,接收备份服务器发送的变化块信息(所述变化块信息包括变化数据的偏移量和长度,不包含变化数据本身),基于该变化块信息获取磁盘对应位置的变化数据发送至备份服务器以进行备份。

步骤s4,备份服务器于接收到数据处理模块发送的有效数据块及其在磁盘中的偏移量(位置)时,记录所述有效数据块在磁盘中的偏移量并把所述有效数据块保存到对应的存储区域中,并记录此次备份的快照id。

实施例1

在本实施例中,以对hyper-v虚拟平台中虚拟机配置版本小于5.0的系统为例,对hyper-v虚拟平台中虚拟机进行保护,需要开启windows系统的远程管理(winrm)服务。并且需要使用hyper-v的快照功能和windows系统提供的操作虚拟磁盘的库virtdisk.dll。

对于全量保护,如图13所示,根据以下步骤进行有效数据获取:

步骤1,备份服务器通过winrm对需要保护的虚拟机打快照,把虚拟机当前的状态固定下来以供备份。当前的状态包括虚拟机的配置信息(虚拟机配置文件,运行时状态文件,虚拟机内存文件等)和磁盘数据信息,。就算虚拟机还在运行中,有数据的持续读写,也不会改变快照内的这些信息。

步骤2,备份服务器通过winrm启动数据处理模块,连接信息(ip地址和端口等)作为参数。

步骤3,数据处理模块根据连接信息,连接到备份服务器,建立和备份服务器的连接。

步骤4,备份服务器取得快照所指向的配置信息和磁盘信息所在的所有文件的路径,发送给数据处理模块。

步骤5,数据处理模块传输使用一般文件的读取接口,读取所有配置信息文件并传输到备份服务器保存。

步骤6,数据处理模块调用windows库virtdisk.dll打开磁盘文件并准备开始读取磁盘数据。

步骤7,数据处理模块以默认值1mb为单位读取磁盘数据。一次读取块的大小可以根据配置进行调整,如果数据已经读完,进入步骤12。

步骤8,数据处理模块得到1mb大小的一块数据,以8kb为一个小块与空数据(全0的8k数据)块进行比较,如果相等,继续比较下一个8kb,直到不相等,判断此数据块是有效数据块,需要备份,进入步骤9。如果全部的128个8kb数据块都相等,则抛弃此块数据。进入步骤7。

步骤9,数据处理模块计算此1mb有效数据块的256位哈希值并和数据在磁盘中的偏移量记录下来。解释一下哈希值的作用:相同的一段数据,经过固定的哈希(散列)算法,得到的哈希值是一样的,不同的数据,得到的哈希值是不同的(对于256位的哈希值,哈希冲突概率极小到可以忽略)。

步骤10,数据处理模块把此1mb有效数据块连同此块数据在磁盘中的偏移量(位置)传输到备份服务器。

步骤11,备份服务器记录此块有效数据在磁盘中的偏移量并把此块数据保存到存储中。存储数据的格式可以在备份服务器配置中指定。如果备份服务器也带有hyper-v虚拟平台,则可以存储为虚拟磁盘格式,以便于直接使用此数据创建虚拟机。这也是瞬时恢复的基本原理。跳回步骤7。

步骤12,数据处理模块此时已经读取完毕磁盘数据,现在把步骤9中记录的所有哈希值及其偏移量传到备份服务器。

步骤13,备份服务器保存此次备份的所有有效数据块的偏移量信息以及哈希值信息,以备增量备份和虚机恢复时使用。

步骤14,全部的配置文件,所有有效数据块及其哈希值,以及在磁盘中的偏移量都被保存到备份服务器中。备份服务器记录此次备份的信息以备下一次备份使用,包括此次备份的时间点及唯一标识符。

步骤15,数据处理模块断开与备份服务器的连接并退出,备份结束。

在本实施例中,如图14所示,对于增量保护(需要指定基准备份点,可以是全量备份点也可以是增量备份点),根据以下步骤进行有效数据获取:

步骤1~5步和全量保护相同,在此略过。

步骤6,备份服务器找到基准备份点,并取得这个备份点保存的磁盘数据哈希值,发送到数据处理模块。

步骤7,数据处理模块接收到基准备份点的磁盘数据哈希值,调用windows库virtdisk.dll打开磁盘文件并准备开始读取磁盘数据。

步骤8,数据处理模块以1mb为单位读取磁盘数据,一次读取块的大小可以根据配置进行调整。如果数据已经读完,进入步骤12。

步骤9,数据处理模块得到1mb大小的一块数据,计算此数据块的256位哈希值并记录,获取相同偏移量上的上次备份的数据哈希值,如果获取成功并且和此次计算出的哈希值相同,则为未变化块,抛弃此块数据,回到步骤8。否则此块数据为变化数据,进入下一步步骤10。

步骤10,数据处理模块把此1mb变化数据连同此块数据在磁盘中的偏移量(位置)传输到备份服务器。

步骤11,备份服务器记录此块有效数据在磁盘中的偏移量并把此块数据保存到存储中,存储数据的格式可以在备份服务器配置中指定。跳回步骤8。

步骤12,若数据处理模块此时已经读取完毕磁盘数据,将步骤9中记录的所有哈希值及其偏移量传到备份服务器。

步骤13,备份服务器保存此次备份的所有有效数据块的偏移量信息以及哈希值信息,以备增量备份和虚机恢复时使用。

步骤14,全部的配置文件,所有变化数据块及其哈希值,以及在磁盘中的偏移量都被保存到备份服务器中。备份服务器记录此次备份的信息以备下一次备份使用,包括此次备份的时间点及唯一标识符。

步骤15,数据处理模块断开与备份服务器的连接并退出,备份结束。

实施例2

本实施例中,对于hyper-v虚拟平台中虚拟机配置版本大于5.0的系统,由于提供了获取增量变化块的接口,可以基于以上实施例稍微修改进行实现。因为增量数据不是基于上一次备份的哈希值进行比较得出,而是基于上一次备份的快照查询得出,所以要修改的部分是去掉哈希值相关部分内容,包括哈希值的计算、比较、传输和保存;保存上一次备份的快照id。

在全量备份中,基本和以上全量备份一致,需要去掉的有数据块哈希值的计算、传输和保存,需要增加的是记录此次备份的快照id,以备增量时基于此id查询变化数据块。

在增量备份中,备份服务器需要获取上一次备份的快照id,然后调用winrm接口去查询增量变化块信息(变化数据的偏移量和长度,不包含变化数据本身),然后把变化块信息发送给数据处理模块。数据处理模块基于此变化块信息去虚拟机磁盘中获取变化数据进行备份。

可见,通过本发明有效数据块的获取,可以实现大部分hyper-v虚拟平台中虚拟机的有效保护,无论虚拟机是什么配置版本,是什么软硬件配置以及有多少个磁盘,都可以利用本发明进行备份及恢复,迁移和复制。如果备份服务器也是一个hyper-v虚拟平台,则可以把磁盘数据备份成磁盘格式,需要的时候则可以在备份服务器即时(秒级别)拉起备份的虚拟机,均可以检验备份的数据完整性或者直接使用拉起的虚拟机。

综上所述,本发明一种虚拟机保护中有效数据获取系统及方法通过设置于虚拟平台宿主机上的数据处理模块根据备份服务器的启动指令启动,并与备份服务器建立连接,于建立连接后,获取备份服务器对虚拟机快照所备份的配置信息和磁盘数据信息,并读取所有配置信息文件传输到备份服务器,在全量保护时,数据处理模块以默认值大小为单位读取磁盘文件的磁盘数据块,并判断所读取的磁盘数据块是否为有效数据块,若为有效数据块,则将该有效数据块连同此块数据在磁盘中的偏移量传输至备份服务器,通过本发明,可以更快的时间,更少的传输和更小的存储进行虚机保护。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

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