一种获取虚拟机多磁盘间差异数据的方法和系统与流程

文档序号:12818631阅读:217来源:国知局
一种获取虚拟机多磁盘间差异数据的方法和系统与流程

本发明涉及计算机应用领域,特别是涉及一种获取虚拟机多磁盘间差异数据的方法和系统。



背景技术:

虚拟机技术,被定义为硬件设备的软件模拟实现,通常的使用模式是分时共享昂贵的大型机。虚拟机监视器(virtualmachinemonitor,vmm)是虚拟机技术的核心,它是一层位于操作系统和计算机硬件之间的代码,用来将硬件平台分割成多个虚拟机。vmm运行在特权模式,主要作用是隔离并且管理上层运行的多个虚拟机,仲裁它们对底层硬件的访问,并为每个客户操作系统虚拟一套独立于实际硬件的虚拟硬件环境(包括处理器,内存,i/o设备)。vmm采用某种调度算法在各个虚拟机之间共享cpu,如采用时间片轮转调度算法。

在计算机中,以某一个vhd(microsoftvirtualharddiskformat,微软虚拟磁盘文件)为母vhd创建子vhd后,从子vhd启动,对母vhd的改动都记录到子vhd中,不会影响母vhd。

获取两磁盘差分数据,是虚拟机进行备份、快照等高级功能的基础,但是在此过程中对宿主机的cpu与i/o占用一般都很大,影响宿主机的其它程序的正常运行。例如,在生成虚拟机的增量备份中,原磁盘是虚拟机现在的状态,而对比磁盘是过去的状态,是虚拟机在过去的备份,需要获得虚拟机现在的状态与过去的状态的改变有哪些,虚拟机在这段时间有什么变化,即现在磁盘的文件与相对于该磁盘早些时间时的区别。

因此,如何快速准确获取差分数据,并做到对宿主机的cpu与i/o占用最小,是该技术面临的主要问题。



技术实现要素:

本发明的目的是提供一种获取虚拟机多磁盘间差异数据的方法和系统,能够在充分减少宿主机cpu利用率和i/o占用的前提下,准确获取差分数据磁盘,实际使用过程中具有非常丰富的应用场景。

为解决上述技术问题,本发明实施例提供了一种获取虚拟机多磁盘间差异数据的方法,包括:

接收用户发起的获取磁盘文件差异数据的请求后,创建空差分磁盘;

获取源磁盘与对比磁盘的扇区数;

判断所述源磁盘与所述对比磁盘的扇区数是否相等;

若是,并按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据,并将所述差异数据写入所述空差分磁盘,若否,则按照所述源磁盘与所述对比磁盘的较少的扇区数作为对比次数,并按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据。

其中,所述将所述差异数据写入所述空差分磁盘,包括:

按照所述差异数据所在扇区将所述差异数据写入所述空差分磁盘对应的扇区。

其中,所述创建空差分磁盘,包括:

创建扇区数与所述源磁盘的扇区数相等的所述空差分磁盘。

其中,所述将所述差异数据写入所述空差分磁盘,包括:

在完成将所有所述源磁盘的扇区与所述对比磁盘的差异数据写入所述空差分磁盘后,返回操作成功响应。

其中,所述按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据,包括:

通过同时对多个扇区进行对比,获取源磁盘与所述对比磁盘的差异数据。

除此之外,本发明实施例还提供了一种获取虚拟机多磁盘间差异数据的系统,包括设置在宿主机的磁盘管理服务单元和与所述磁盘管理服务单元连接的差异对比服务单元,所述磁盘管理服务单元用于在接收到用户的发起的获取磁盘文件差异数据的请求后,获取并判断源磁盘和对比磁盘的扇区数是否相等,若相等,则将结果输出到所述差异对比服务单元,并创建与所述源磁盘扇区数相等的空差分磁盘,按照所述磁盘管理服务单元输入的扇区数,逐一获取所述源磁盘与所述对比磁盘的相应扇区进行对比,如果发现差异数据,则将所述差异数据写入所述空差分磁盘,否则,按照所述源磁盘与所述对比磁盘的较少的扇区数作为对比次数,并按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据,并将所述差异数据写入所述空差分磁盘。

其中,还包括与所述磁盘管理服务单元和所述差异对比服务单元连接的结果响应单元,用于在所述差异对比服务单元将所述源磁盘与所述对比磁盘的所有差异数据写入所述空差分磁盘后,输出操作成功响。

本发明实施例所提供的获取虚拟机多磁盘间差异数据的方法和系统,与现有技术相比,具有以下优点:

本发明实施例提供的获取虚拟机多磁盘间差异数据的方法,包括:

接收用户发起的获取磁盘文件差异数据的请求后,创建空差分磁盘;

获取源磁盘与对比磁盘的扇区数;

判断所述源磁盘与所述对比磁盘的扇区数是否相等;

若是,并按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据,并将所述差异数据写入所述空差分磁盘,若否,则按照所述源磁盘与所述对比磁盘的较少的扇区数作为对比次数,并按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据。

本发明实施例还提供的获取虚拟机多磁盘间差异数据的系统,包括设置在宿主机的磁盘管理服务单元和与所述磁盘管理服务单元连接的差异对比服务单元,所述磁盘管理服务单元用于在接收到用户的发起的获取磁盘文件差异数据的请求后,获取并判断源磁盘和对比磁盘的扇区数是否相等,若相等,则将结果输出到所述差异对比服务单元,并创建与所述源磁盘扇区数相等的空差分磁盘,按照所述磁盘管理服务单元输入的扇区数,逐一获取所述源磁盘与所述对比磁盘的相应扇区进行对比,如果发现差异数据,则将所述差异数据写入所述空差分磁盘,否则,按照所述源磁盘与所述对比磁盘的较少的扇区数作为对比次数,并按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据,并将所述差异数据写入所述空差分磁盘。

所述获取虚拟机多磁盘间差异数据的方法和系统,通过以扇区为粒度进行磁盘差异数据比对,能够在充分减少宿主机cpu利用率和i/o占用的前提下,准确获取差分数据磁盘,使得与现有的全量遍历的提取方法性能更优,其可用性也优于基于位图的提取方法,实际使用过程中具有非常丰富的应用场景。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的获取虚拟机多磁盘间差异数据的方法一种具体实施方式的步骤流程示意图;

图2为本发明实施例提供的获取虚拟机多磁盘间差异数据的系统的一种具体实施方式的结构示意图;

图3为本发明实施例提供的获取虚拟机多磁盘间差异数据的系统的另一种具体实施方式的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1~3,图1为本发明实施例提供的获取虚拟机多磁盘间差异数据的方法一种具体实施方式的步骤流程示意图;图2为本发明实施例提供的获取虚拟机多磁盘间差异数据的系统的一种具体实施方式的结构示意图;图3为本发明实施例提供的获取虚拟机多磁盘间差异数据的系统的另一种具体实施方式的结构示意图。

在一种具体实施方式中,所述获取虚拟机多磁盘间差异数据的方法,包括:

步骤1,接收用户发起的获取磁盘文件差异数据的请求后,创建空差分磁盘;需要指出的是,这里创建的空差分磁盘是为了将之后获取的差异数据写入或存储的磁盘,其扇区数不等低于源磁盘的扇区数;

步骤2,获取源磁盘与对比磁盘的扇区数;通过确定源磁盘和对比磁盘的扇区数,确定对比次数,以及差异数据的提取和写入次数。

步骤3,判断所述源磁盘与所述对比磁盘的扇区数是否相等;在本发明中由于虚拟机在操作过程中,可能会存在删除或写入数据,那么通过扇区数可以确定比较次数,一般是以扇区数较少的磁盘的扇区数作为对比次数,如果写入数据,那么源磁盘比对比磁盘的空间会大,扇区数会多,这时只需要将对于过程执行到对比磁盘的扇区数完毕即可,剩余的源磁盘的数据都为差异数据,直接写入创建的空差分磁盘中即可,例如源磁盘有100个扇区,对比磁盘有90个扇区,那么比较到90个扇区时,即可完成比较,将源磁盘中的前90个扇区的差异数据写入空差分磁盘,写入的部分也是差异数据,从第91个扇区到底100个扇区都是差异数据,直接写入空差分磁盘;如果发生删除数据,那么源磁盘比对比磁盘的空间会小,扇区少,比较到源磁盘结束之后,源磁盘全部比较完毕,那么差异就是删除的部分,只需要在空差分磁盘中写零即可,或者是直接结束差异数据提取即可,如源磁盘有90个扇区,对比磁盘有100个扇区,删除部分为第91-100扇区,那么只需要比较千90个扇区即可,通过判断扇区数是否相等,确定比较次数可以减少比较次数,提高差异文件的获取效率。

若是,步骤4,并按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据,并将所述差异数据写入所述空差分磁盘,若否,步骤5,则按照所述源磁盘与所述对比磁盘的较少的扇区数作为对比次数,并按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据。

在源磁盘的扇区数与对比磁盘的扇区数相等时,源磁盘与对比磁盘的对此次数为扇区数,即每一个扇区均需要进行对此,获取差异数据,而在源磁盘的扇区数与对比磁盘的扇区数不相等,源磁盘的扇区数大于对比磁盘的扇区数,则需要只需要将与对比磁盘的扇区对应的源磁盘扇区对比即可,其余的扇区即是差异扇区,其中的数据均为差异数据,就无需进行对比,直接写入空差分磁盘即可,这样能够提高的差异数据获取效率;源磁盘的扇区数小于对比磁盘的扇区数将源磁盘的扇区与对比磁盘的相应的扇区一一对比,对于磁盘对于源磁盘的扇区也无需对比,减少了对比扇区数,提高差异数据的获取效率,降低对宿主机cpu利用率和i/o占用。

通过以扇区为粒度进行磁盘差异数据比对,能够在充分减少宿主机cpu利用率和i/o占用的前提下,准确获取差分数据磁盘,使得与现有的全量遍历的提取方法性能更优,其可用性也优于基于位图的提取方法,实际使用过程中具有非常丰富的应用场景。

由于是按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据,然后将所述差异数据写入所述空差分磁盘,为了保证差异数据在空差分磁盘中的位置与在原来的源磁盘中的位置相同,便于后续的查找,只要直接获得差异数据在空差分磁盘中的位置,就可以根据该位置快速在源磁盘中获得该差异数据,因此,所述将所述差异数据写入所述空差分磁盘,包括:

按照所述差异数据所在扇区将所述差异数据写入所述空差分磁盘对应的扇区。

即如果源扇区的第90个扇区出现与对比磁盘的第90个扇区不同的数据,则将该数据写入空差分磁盘的第90个扇区,这样只要对孔差分磁盘进行读取时,差分数据所在的位置即是源磁盘与对此磁盘的差异数据的位置。即在此过程中,例如源磁盘包括三个扇区,每个扇区中在不同的位置有差异数据,则直接将这些差异数据按照原有的扇区,写入空差分磁盘。这样,在差异数据的写入过程中,检查或扫描差异数据时,空差分磁盘所在的扇区位置也在相应的移动。

在本发明中,对差异数据在空差分磁盘的写入方式不做具体限定。在本发明中,可以是在一次对比完成后,将差分数据写入空差分磁盘,也可以是只要出现差异数据,立即将其写入差分磁盘。

由于空差分磁盘的扇区数必须不小于源磁盘的扇区数,这时由于如果空差分磁盘的扇区数必须小于源磁盘的扇区数,在将差分数据一一写入对应的磁盘过程中,可能会出现空差分磁盘的扇区不足,后续的差分数据无法写入空差分磁盘的时间。为避免这一现象,同时也为了减少空差分磁盘的空间以及扇区数,所述创建空差分磁盘,包括:

创建扇区数与所述源磁盘的扇区数相等的所述空差分磁盘。

由于在差异数据写入对比文件是在系统内完成的,操作原不知道当前的对比进度,为了判断当前的差异数据提取是否完成,所述将所述差异数据写入所述空差分磁盘,包括:

在完成将所有所述源磁盘的扇区与所述对比磁盘的差异数据写入所述空差分磁盘后,返回操作成功响应。

在完成将所有的源磁盘的扇区的差异数据写入空差分磁盘后,返回操作成功响应,操作员通过判断是否有操作成功响应判断是否完成所有的差异文件的提取和写入。

在本发明中对于差异数据的提取和写入是按照扇区进行的,但是并不一定每次都是以一个扇区为单位。因为一个扇区的数据非常有限,如果扇区数非常大,而每个扇区的数据很少,频繁的进行差异数据的对比开始和结束,会造成大量占用宿主机cpu利用率和i/o的情况,如果一次性将所有的扇区比较完,宿主计算的单次对此的负荷过大,因此可以合理设定每次的扇区数,如每次进行10个扇区的对比,没完成10个扇区的对比,将差异数据写入空差分磁盘,本发明对于每次对比的扇区数不做具体限定。

因此,所述按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据,包括:

通过同时对多个扇区进行对比,获取源磁盘与所述对比磁盘的差异数据。

除此之外,本发明实施例还提供了一种获取虚拟机多磁盘间差异数据的系统,包括设置在宿主机的磁盘管理服务单元10和与所述磁盘管理服务单元10连接的差异对比服务单元20,所述磁盘管理服务单元10用于在接收到用户的发起的获取磁盘文件差异数据的请求后,获取并判断源磁盘和对比磁盘的扇区数是否相等,若相等,则将结果输出到所述差异对比服务单元20,并创建与所述源磁盘扇区数相等的空差分磁盘,按照所述磁盘管理服务单元10输入的扇区数,逐一获取所述源磁盘与所述对比磁盘的相应扇区进行对比,如果发现差异数据,则将所述差异数据写入所述空差分磁盘,否则,按照所述源磁盘与所述对比磁盘的较少的扇区数作为对比次数,并按照扇区逐一获取所述源磁盘与所述对比磁盘的差异数据,并将所述差异数据写入所述空差分磁盘。

本发明获取虚拟机多磁盘间差异数据的系统,通过合适粒度的差异比对,快速获取磁盘间差异数据,并保存差异数据到新建的差分磁盘中,为虚拟机备份和快照提供基础支撑数据文件,有利于虚拟机备份、快照方案的多样化设计。

为了判断当前的差异数据的获取以及写入过程是否正常,是否已经完成所有的差异数据提取,在本发明一个实施例中,获取虚拟机多磁盘间差异数据的系统还包括与所述磁盘管理服务单元10和所述差异对比服务单元连接20的结果响应单元,用于在所述差异对比服务单元20将所述源磁盘与所述对比磁盘的所有差异数据写入所述空差分磁盘后,输出操作成功响。

通过输出操作成功响应,操作员可以获知当前的差异数据的提取是否已经完毕。

综上所述,本发明实施例提供的获取虚拟机多磁盘间差异数据的方法和系统,通过以扇区为粒度进行磁盘差异数据比对,能够在充分减少宿主机cpu利用率和i/o占用的前提下,准确获取差分数据磁盘,使得与现有的全量遍历的提取方法性能更优,其可用性也优于基于位图的提取方法,实际使用过程中具有非常丰富的应用场景。

以上对本发明所提供的获取虚拟机多磁盘间差异数据的方法和系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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