虚拟机备份方法、备份装置及宿主机与流程

文档序号:11635192阅读:432来源:国知局
虚拟机备份方法、备份装置及宿主机与流程

本发明涉及计算机领域,特别涉及一种虚拟机备份方法、备份装置及宿主机。



背景技术:

虚拟机(virtualmachine,简称vm)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整系统。虚拟机在运行时,由虚拟机所在的主机,即宿主机为虚拟机虚拟出各种硬件单元,例如虚拟机内存和虚拟机硬盘等。虚拟机内存中的数据由虚拟机自身进行管理,而虚拟机硬盘上的数据则由宿主机存储和管理。

图1所示为现有技术中虚拟机的结构示意图,如图1所示,虚拟机101使用的所有资源,例如cpu、内存、网络、存储资源均来源于宿主机102,宿主机102将自身资源,例如虚拟多处理器、虚拟机群集文件系统、虚拟网卡和交换机、存储协议栈、网络协议栈及设备驱动程序以共享的方式提供给虚拟机101使用,以使虚拟机101能够对外提供各种业务服务。通常,虚拟机101对外提供各种服务是通过虚拟机内部的应用(aplication,简称app)103来实现的。

为保证运行数据不丢失,或保证系统故障后能尽快恢复,虚拟机需要经常性的备份,并且保证备份数据与运行数据相一致。虚拟机的备份数据与运行数据相一致也可以称为虚拟机的一致性。现有技术中,虚拟机的备份方式有两种,一种是冷备份,冷备份是在虚拟机关闭时将数据进行备份;另一种是热备份,热备份是在虚拟机保持工作时对数据进行备份。

冷备份可以很好的保证虚拟机的一致性,但是冷备份需要关闭虚拟机,虚拟机被关闭时无法对外提供服务,因此较少采用冷备份。热备份无需关闭虚拟机,但是虚拟机运行时,虚拟机内部应用的数据会首先保存在缓存中,然后写入虚拟机硬盘中,即虚拟机硬盘中的数据是随时被读写和更新的,在备份过程是,数据也是随时更新的。因此,现有技术中热备份的方法无法实时的对虚拟机硬盘中更新数据进行备份,造成虚拟机备份过程中的数据丢失,无法保证虚拟机备份的一致性。

可见,现有技术中还没有一种备份方法即可以在备份时对外提供虚拟机功能,又能保证虚拟机备份的一致性的方法。



技术实现要素:

有鉴于此,本发明实施例的目的是提供一种虚拟机备份方法及备份装置,在对外提供虚拟机功能的情况下备份数据时,保证备份数据的一致性。

为了解决上述技术问题,本发明实施例公开了如下技术方案:

第一方面,提供了一种虚拟机备份方法,应用于与宿主机,所述宿主机上创建有多个虚拟机,在用户需要对所述宿主机上的虚拟机中的数据备份时,下达一虚拟机备份命令,所述宿主机接收到所述备份命令时,即中断待备份源虚拟机的业务,并创建克隆虚拟机及所述克隆虚拟机的克隆硬盘。

在克隆硬盘建好后,则建立所述克隆硬盘与所述源虚拟机的源硬盘的存储空间的映射关系,然后将所述源虚拟机的运行数据镜像至所述克隆虚拟机,以使所述克隆虚拟机根据所述运行数据开始运行,并设置所述克隆虚拟机接收io请求,这样所述克隆虚拟机即可接管源虚拟机的业务。这时即可恢复执行所中断的所述源虚拟机的业务,使在接收到用户的备份命令时还未执行的io请求继续执行,以保证数据的一致性。

在所述克隆虚拟机运行期间,如果到所述克隆虚拟机执行数据操作为对所述源硬盘中的数据进行修改时,则将修改后的数据记录至所述克隆硬盘中,并对记录的位置进行标记。在侦测到所述源虚拟机的业务执行完成之后,则关闭所述源虚拟机,开始备份所述源硬盘中的数据。

在侦测到数据备份结束后,根据所述映射关系将所述克隆硬盘中被标记的位置处的数据复制至所述克隆硬盘被标记的位置处所映射的所述源硬盘的位置,并设置所述源硬盘为所述克隆虚拟机的硬盘。

这样,在对虚拟机中的数据进行备份时,通过创建包括克隆硬盘的克隆虚拟机,将虚拟机在备份过程中执行的业务转移至所述克隆虚拟机执行,并将虚拟机备份过程中,将对源虚拟机中存储的数据的修改记录在所述克隆硬盘中,并对修改的数据进行标记,如此,在虚拟机的数据备份完成之后,可用克隆硬盘中记录的修改数据更新所述源虚拟机中的数据,如此,在保证备份数据的一致性的同时,也不会中断虚拟机的业务,从而提高了虚拟机的运行效率。

可选的,在建立所述克隆硬盘与所述源硬盘的存储空间的映射关系时,可以先将所述源硬盘和克隆硬盘分别按照预设大小分割为多个存储块,然后建立源存储块的地址与克隆存储块的地址的映射关系。

通过这样的划分方式,可以使源硬盘中的每个存储块都对应一个克隆存储块,这样,可以精确的标记被修改的源存储块,及记录在克隆存储块中的修改数据。

可选地,可以通过为所述映射表中的每个源存储块的地址与克隆存储块的地址映射关系设置更新标识来标记被修改的源存储块,具体方法为将记录所述修改后的数据的克隆存储块的地址所在的映射关系对应的更新标记设置为已更新。

更过所述更新标识可以方便的标识出所述源硬盘中被修改的数据。

对所述源硬盘中的数据进行修改可以是在备份时间点所述源硬盘中存储的数据的基础上写入新的数据,或者是对在备份时间点所述源硬盘中存储的数据的更新,也可以是在备份时间点所述源硬盘中存储的数据的基础上删除数据。

可选地,在恢复执行源虚拟机所终端的业务后,在侦测到所述源虚拟机执行的数据操作对所述源硬盘中的数据进行更新时,判断所述数据更新请求所更新的源存储块的地址所在的映射关系对应的更新标识是否为已更新,在确定所述数据更新请求所更新的源存储块的地址所在的映射关系对应的更新标识不是已更新时,将所述数据更新请求所更新的源存储块中被更新数据拷贝至所述数据更新请求所更新的源存储块对应的克隆存储块,在所述数据更新请求所更新的源存储块中写入所述数据更新请求中的更新数据;并将所述数据更新请求所更新的源存储块对应的更新标识设置为已更新。

由于源虚拟机中执行的业务也被镜像至所述克隆虚拟机,所以在所述克隆虚拟机中也会执行跟源虚拟机相同的业务,所以,在对源虚拟机中的数据进行更新时,也需要将源虚拟机中被更新的数据转移至所述克隆存储块中,以便所述克隆虚拟机后续用到该数据。

可选的,在所述克隆虚拟机运行期间,对读io请求进行处理的方法如下:

接收读io请求;

判断所述读io请求所读取的克隆存储块对应的更新标识是否为已更新;

确定所述读io请求所读取的克隆存储块对应的更新标识为未更新时,从所述所读取的克隆存储块对应的源存储块中读取数据;

确定所述读io请求所读取的克隆存储块对应的更新标识为已更新时,从所述所读取的克隆存储块中读取数据。

可选的,在根据所述映射关系将克隆硬盘中被标记的位置处的数据复制至克隆硬盘被标记的位置处所映射的源硬盘的位置时,首先确定被设置为已更新的更新标识对应的映射关系中的克隆存储块;将所述被设置为已更新的更新标识对应的映射关系中的克隆存储块所存储的数据复制至所述被设置为已更新的更新标识对应的映射关系中的源存储块;然后将所述被设置为已更新的更新标识设置为未更新。

这样,在数据复制完成后,也对修改标记进行设置,可以使在此期间接收到读io请求时,可以根据所述修改标记判断出所读取数据的位置。

可选地,在侦测到数据备份结束后,接收到数据写入请求时,将所述数据写入请求中的待写入数据写入所述源硬盘中,并将写入所述待写入数据的源存储块对应的更新标识设置为未更新。

可选地,在所述克隆硬盘中的数据全部复制至所述源硬盘后,可以删除所述克隆硬盘和所述映射表。

第二方面,提供了一种虚拟机备份装置,所述备份装置包括创建单元、标记单元、备份单元、读取单元、及更新单元,所述创建单元、标记单元、备份单元、读取单元、及更新单元执行的功能与第一方面的提供的方法相对应,在此不再赘述。

第三方面,提供一种宿主机,所述宿主机包括:处理器、内存、硬盘、通讯接口、系统总线,所述处理器、内存、硬盘和通信接口之间通过系统总线连接并完成相互间的通信,所述内存中用于存储计算机执行指令,所述宿主机运行时,所述处理器执行所述内存中的计算机执行指令以利用所述宿主机中的硬件资源建立虚拟机,并执行第一方面所提供的方法。通过本发明所提供的实施例,在对虚拟机中的数据进行备份时,通过创建包括克隆硬盘的克隆虚拟机,将虚拟机在备份过程中执行的业务转移至所述克隆虚拟机执行,并将虚拟机备份过程中,将对源虚拟机中存储的数据的修改记录在所述克隆硬盘中,并对修改的数据进行标记,如此,在虚拟机的数据备份完成之后,可用克隆硬盘中记录的修改数据更新所述源虚拟机中的数据,如此,在保证备份数据的一致性的同时,也不会中断虚拟机的业务,从而提高了虚拟机的运行效率。

附图说明

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

图1所示为现有技术中虚拟机的结构示意图;

图2所示为本发明实施例的宿主机的结构图;

图3所示为本发明实施例的虚拟机备份方法的流程图;

图4所示为本发明实施例的建立源硬盘与克隆硬盘的存储空间的映射关系的示意图;

图5所示为本发明实施例在克隆虚拟机运行期间,对源硬盘中的数据进行更新的示意图;

图6所示为本发明实施例的克隆虚拟机读数据的示意图;

图7所示为本发明实施例在源虚拟机运行期间,对源硬盘中的数据进行更新的示意图;

图8所示为本发明实施例将所述克隆硬盘中的数据复制至所述源硬盘的示意图;及

图9所示为本发明实施例提供的一种数据备份装置的模块图。

通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。

具体实施方式

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

为了全面理解本发明,在以下详细描述中提到了众多具体的细节,但是本领域技术人员应该理解,本发明可以无需这些具体细节而实现。在其他实施例中,不详细描述公知的方法、过程、组件和电路,以免不必要地导致实施例模糊。

本发明实施例对源虚拟机的源硬盘中的数据进行备份时,可创建一个克隆虚拟机及克隆硬盘,并将源虚拟机中的运行数据转移至克隆虚拟机并对后续访问源虚拟机的io请求进行重定向,是所述克隆虚拟机接管所述源虚拟机的业务,并在数据备份完成后,用克隆硬盘中与源硬盘中不一致的数据覆盖源硬盘中的数据,并将所述源硬盘作为所述克隆虚拟机的硬盘,这样,在备份所述源虚拟机中的数据时,在不中断虚拟机所执行业务的情况下,保证备份数据的一致性。

下面将结合实施例对本发明实施例所提供的技术方案做详细说明。

如图2所示,为本发明实施例的宿主机20的结构图。所述宿主机20可包括处理器201、内存202、硬盘204、通讯接口207、系统总线200。处理器201、内存202、硬盘204和通信接口207之间通过系统总线200连接并完成相互间的通信。

处理器201可能为单核或多核中央处理单元,或者为特定集成电路,或者为被配置成实施本发明实施例的一个或多个集成电路。

内存202可以为高速ram存储器,也可以为非易失性存储器(non-volatilememory),例如至少一个磁盘存储器,内存202用于存储计算机执行指令。具体的,计算机执行指令中可以包括程序代码。

在所述宿主机20运行时,所述处理器201执行所述内存中的计算机执行指令203以利用所述宿主机中的硬件资源建立多个虚拟机,如源虚拟机208及克隆虚拟机209,在所述硬盘204中为所述源虚拟机208及克隆虚拟机209分别建立源硬盘205及克隆硬盘206。所述克隆虚拟机209及克隆硬盘206是在将所述源虚拟机208的源硬盘205中的数据备份至所述备份存储器30时创建的,下面将结合图3所示的虚拟机备份方法的流程图说明所述源虚拟机中的备份过程。

如图3所示,本发明实施例的虚拟机备份方法包括:

步骤301,接收备份命令,中断源虚拟机的业务,创建克隆虚拟机及所述克隆虚拟机的克隆硬盘。

本发明实施例中,源虚拟机208的业务为所述虚拟机正在执行的i/o请求,中断源虚拟机208的业务即将所述源虚拟机208正在执行的io请求挂起。

在实际应用时,在接收到备份命令后,可以先中断源虚拟机的业务,再创建克隆虚拟机及克隆虚拟机的克隆硬盘,也可以先创建克隆虚拟机及克隆虚拟机的克隆硬盘再中断源虚拟机的业务,具体可以根据实际情况设定两者的顺序。

步骤302,建立所述克隆硬盘与所述源虚拟机的源硬盘的存储空间的映射关系。

在建立所述克隆硬盘与所述源硬盘的存储空间的映射关系时,先将所述源硬盘和克隆硬盘分别按照预设大小分割为多个存储块,然后再建立源存储块的地址与克隆存储块的地址的映射关系。

在创建所述克隆虚拟机209及克隆硬盘206时,可首先获取所述源虚拟机208及源硬盘205的参数,根据所述源虚拟机208及源硬盘205的参数创建所述克隆虚拟机209及克隆硬盘206,所述克隆硬盘206的容量与所述源硬盘205的容量相等。

在建立所述克隆硬盘206与所述源硬盘205的存储空间的映射关系时,首先将所述源硬盘205和克隆硬盘206分别按照预设大小分割为多个存储块,然后建立源存储块的地址与克隆存储块的地址的映射关系。

图4所示为所述克隆硬盘与所述源硬盘的存储空间的映射关系的示意图,源硬盘205和克隆硬盘206都被分割为多个存储块,例如源硬盘205的源存储块2051和2052等,以及克隆硬盘206的克隆存储块2061和2062。

所述克隆硬盘206与所述源硬盘205的存储空间的映射关系包括源存储块的地址与源存储块对应的克隆存储块的地址,每个对应关系可设置一个更新标识。如图4所示,每个对应关系对应的更新标识可以通过独立的列表401所示,所述列表401包括存储块索引号和索引号对应的更新标识。存储块索引号pa~pe指向各自对应的对应关系。在其他实施方式中,所述更新标识也可与所述源存储块与克隆存储块的对应关系记录在一起,而不需要通过所述独立的列表401来记录。更新标识包括已更新或未更新,图4所示的实施例中,以0表示数据未更新,以1标识数据已更新。在本发明其他实施例中,也可以用1表示数据未更新,用0标识数据已更新。所述更新标识的作用将在下文做详细介绍。

克隆硬盘与所述源硬盘的存储空间的映射关系,以及对应的更新标识可以采用映射表的形式,也可以采用其他形式,在此不再赘述。

步骤303,将所述源虚拟机的运行数据镜像至所述克隆虚拟机,以使所述克隆虚拟机根据所述运行数据开始运行,设置所述克隆虚拟机接收io请求,恢复执行所中断的所述源虚拟机的业务。

所述运行数据包括所述源虚拟机208中的内存中的数据、cpu寄存器中的数据、io请求堆栈中的io请求、网络堆栈中的数据。所述源虚拟机208中的内存中的数据为源虚拟机运行所需要的数据,所述cpu寄存器中的数据为当前处理的进程或者线程的状态位信息,所述io请求堆栈中的io请求包括所述源虚拟机208正在处理的io请求及已经接收但还未被处理的io请求,所述网络堆栈中所存储的数据为所述源虚拟机208要发送给外部的数据及从外部接收的数据。将所述运行数据镜像至所述克隆虚拟机209后,还需要设置所述克隆虚拟机接收io请求,这样后续接收到的io请求就会发送至所述克隆虚拟机处理。在所述克隆虚拟机开始执行业务开始,即可恢复执行所中断的所述源虚拟机的业务。由于用户指示进行备份的备份时间点为用户下达备份命令(即接收到备份命令的时刻)开始算起,所以用户需要的数据也为所述备份时间点之前接收到的所有数据,但是由于处理器处理io请求的延时,备份时间点之前的io请求还没有被及时处理,例如被正在执行,或在io请求堆栈中还未被及时处理,所以在所述克隆虚拟机开始执行业务开始,也需要恢复执行所中断的所述源虚拟机的业务,以使备份时间点后,还未被写入所述源硬盘的数据写入所述源硬盘,从而保证数据的一致性。

步骤304,在侦测到所述克隆虚拟机执行数据操作为对所述源硬盘中的数据进行修改时,则将修改后的数据记录至所述克隆硬盘中,并对记录的位置进行标记,这里即可采用上述的更新标识对源硬盘或者克隆硬盘数据更新的位置进行标记。

对所述源硬盘中的数据进行修改可以是在备份时间点所述源硬盘中存储的数据的基础上写入新的数据,或者是对在备份时间点所述源硬盘中存储的数据的更新,也可以是在备份时间点所述源硬盘中存储的数据的基础上删除数据。

如果所述数据操作为写入新数据,则将待写入的新数据存储至所述克隆硬盘的空闲的克隆存储块中,并将写入所述数据的克隆存储块对应的更新标记设置为已更新;如果所述数据操作为对源硬盘中的数据进行更新,则根据源存储块与克隆存储块的映射关系,将所述更新数据写入所述克隆硬盘中与所述待更新的源存储块对应的克隆存储块中,并将待更新的源存储块(或者写入更新数据的克隆存储块)的更新标识设置为已更新。如果所述数据操作为对源硬盘中的数据进行删除,则将所述待删除数据所在的源存储块(或者所述待删除数据所在的源存储块对应的克隆存储块)对应的更新标识设置为已更新。

下面通过具体应用场景说明修改所述源硬盘中备份时间点存储的数据时进行标记的过程。

图5所示的应用场景为在侦测到所述克隆虚拟机执行数据操作为对所述源硬盘中的数据进行更新。如图5所示,源虚拟机包括源硬盘205,克隆虚拟机包括克隆硬盘206。

所述数据操作为需要将源硬盘205中的源存储块2053中的数据e更新为f,则首先在所述标记列表501中找到所述源存储块2053对应的更新标识,即索引号pe对应的更新标识,确定所述更新标识是否为已更新(更新标识为1),从图中可以看出,所述更新标识不是已更新,即未更新(更新标识为0),则将数据更新数据f写入所述源存储块2053对应的克隆硬盘206的克隆存储块2063中,并将标记列表501中记录的索引号pe对应的更新标识修改为已更新(由0修改为1)。另外一种情况下,即所述更新标识为已更新时,则只需要将所述更新数据f写入所述克隆存储块2063即可,而无需更改更新标识。

在备份时间点在所述源硬盘中所存储的数据的基础上写入新数据的场景和删除数据的场景与上述更新数据的场景类似,在此不再举例说明。

步骤305,在侦测到所述源虚拟机的业务执行完成之后,关闭所述源虚拟机,备份所述源硬盘中的数据。

在数据备份的过程中,如果所述克隆虚拟机接收到数据操作请求时,也通过上述方法对修改的数据进行标记。

在克隆虚拟机运行期间,如果接收到读io请求,则通过下面的方法执行:

首先,所述克隆虚拟机接收读io请求;

然后,判断所述读io请求所读取的克隆存储块对应的更新标识是否为已更新;

当确定所述读io请求所读取的克隆存储块对应的更新标识为未更新时,从所述所读取的克隆存储块对应的源存储块中读取数据;

确定所述读io请求所读取的克隆存储块对应的更新标识为已更新时,从所读取的克隆存储块中读取数据。

下面结合图6说明克隆虚拟机运行期间进行数据读取的方法。

在图6所示的应用场景中,源虚拟机包括源硬盘205,克隆虚拟机包括克隆硬盘206。

如图6所示,当所述克隆虚拟机接收到数据读取请求时,首先确定所读取数据对应的克隆存储块2065对应的更新标记(也即源存储块2056对应的更新标识),当克隆存储块2065对应的更新标识为0时,表示所述克隆存储块2065对应的所述源存储块2055中的数据还未被更新,则直接从所述源存储块2054中读取数据数据b。当另外一个数据读取请求所读取数据对应的克隆存储块2064对应的更新标识为1时,则表示所述克隆存储块2064对应的源存储块2054中的数据已经被修改,则从所述克隆存储块2064中读取数据f。

在恢复执行所中断的所述源虚拟机的业务后,由于所述源虚拟机所执行的业务也被镜像至所述克隆虚拟机,所以所述源虚拟机及所述克隆虚拟机会同时执行相同的业务,但是由于克隆虚拟机与源虚拟机并不同步,源虚拟机对源硬盘中的数据可能会早于克隆虚拟机对数据的更新,这样,在克隆虚拟机需要读取源硬盘中的数据时,则由于源硬盘的数据已经被更新,则会导致错误,所以在这种情况下,需要将所述源硬盘中的数据先迁移至所述克隆虚拟机,并设置更新标记进行标记,具体方法为:

在侦测到所述源虚拟机执行的数据操作为对所述源硬盘中的数据进行更新时,判断所述数据更新请求所更新的源存储块的地址所在的映射关系对应的更新标识是否为已更新;

确定所述数据更新请求所更新的源存储块的地址所在的映射关系对应的更新标识不是已更新时,将所述数据更新请求所更新的源存储块中被更新数据拷贝至所述数据更新请求所更新的源存储块对应的克隆存储块;

在所述数据更新请求所更新的源存储块中写入所述数据更新请求中的更新数据;

将所述数据更新请求所更新的源存储块对应的更新标识设置为已更新。

如图7所示,当源存储块2056中的数据b要被更新为f时,则先确定所述源存储块2056对应的修改标记,当所述源存储块2056对应的修改标记为0时,则将所述源存储块2056中存储的数据b迁移至所述源存储块2056对应的克隆存储块2066中,然后将所述更新数据f写入所述源存储块2056中。相反地,如果所述源存储块2056对应的修改标记为1时,则直接将源存储块2056中的数据b更新为f,无需将数据b迁移至所述克隆存储块2066中,所述源存储块2056对应的更新标记也不必修改。步骤306,在侦测到数据备份结束后,根据所述映射关系将所述克隆硬盘中被标记的位置处的数据复制至所述克隆硬盘被标记的位置处所映射的所述源硬盘的位置,并设置所述源硬盘为所述克隆虚拟机的硬盘。

在根据映射关系将克隆硬盘中被标记的位置处的数据复制至克隆硬盘被标记的位置处所映射的源硬盘的位置时,首选确定被设置为已更新的更新标识对应的映射关系中的克隆存储块;将所述被设置为已更新的更新标识对应的映射关系中的克隆存储块所存储的数据复制至所述被设置为已更新的更新标识对应的映射关系中的源存储块;将所述被设置为已更新的更新标识设置为未更新。

然后可以删除所述克隆硬盘和所述映射表。

在将克隆硬盘中的数据拷贝至所述源硬盘后后,克隆虚拟机209将取代源虚拟机208,对外提供业务,此时克隆虚拟机209使用的是源硬盘205。

图8所示为本发明实施例将所述克隆硬盘中的数据复制至所述源硬盘的示意图。

如图8所示,源虚拟机包括源硬盘205,克隆虚拟机包括克隆硬盘206。在复制数据时,先通过标识列表901获取更新标识为1的克隆存储块,比如克隆存储块9022及克隆存储块9021,克隆存储块9022中存储的数据为f,克隆存储块9021中,并没有存储数据,表示之前对克隆存储块9021对应的源存储块9011的进行的数据操作为删除操作,如此,在复制时,用更新标记为1的所述克隆存储块中的数据覆盖所述克隆存储块对应的源存储块的数据,即用克隆存储块9022中的数据f覆盖源存储块9012中的数据,用克隆存储块9021中的空数据覆盖源存储块9011中的数据c,也可以为直接删除所述数据c。再将克隆存储块中的数据复制至所述源存储块后,即可将更新标记由1设置为0。

当所述克隆硬盘标记为已更新的克隆存储块中的数据全部拷贝至所述源硬盘后,则删除克隆硬盘和映射表,此时由克隆虚拟机对外提供业务。

本发明实施例中,在侦测到数据备份结束后,接收到数据写入请求时,将所述数据写入请求中的待写入数据写入所述源硬盘中,并将写入所述待写入数据的源存储块对应的更新标识设置为未更新。

通过本发明实施例的方法,在对虚拟机中的数据进行备份时,通过创建包括克隆硬盘的克隆虚拟机,将虚拟机在备份过程中执行的业务转移至所述克隆虚拟机执行,并将虚拟机备份过程中,将对源虚拟机中存储的数据的修改记录在所述克隆硬盘中,并对修改的数据进行标记,如此,在虚拟机的数据备份完成之后,可用克隆硬盘中记录的修改数据更新所述源虚拟机中的数据,如此,在保证备份数据的一致性的同时,也不会中断虚拟机的业务,从而提高了虚拟机的运行效率。

如图9所示,本发明实施例还提供一种数据备份装置10,所述数据备份装置包括创建单元11、标记单元12、备份单元13、读取单元14、及更新单元15。所述创建单元11用于接收备份命令,中断源虚拟机的业务,创建克隆虚拟机及所述克隆虚拟机的克隆硬盘,建立所述克隆硬盘与所述源虚拟机的源硬盘的存储空间的映射关系,并将所述源虚拟机的运行数据镜像至所述克隆虚拟机,以使所述克隆虚拟机根据所述运行数据开始运行,设置所述克隆虚拟机接收io请求,恢复执行所中断的所述源虚拟机的业务。

所述创建单元11在建立所述克隆硬盘与所述源硬盘的存储空间的映射关系时,具体用于将所述源硬盘和克隆硬盘分别按照预设大小分割为多个存储块;建立源存储块的地址与克隆存储块的地址的映射关系。

所述克隆硬盘与所述源虚拟机的源硬盘的存储空间的映射关系的建立方法和将所述源虚拟机的运行数据镜像至所述克隆虚拟机的方法在方法实施例中做了详细描述,在此不再赘述。

所述标记单元12用于在侦测到所述克隆虚拟机执行数据操作为对所述源硬盘中的数据进行修改时,则将修改后的数据记录至所述克隆硬盘中,并对记录的位置进行标记。

所述标记单元12在对记录的位置进行标记时,具体用于将记录所述修改后的数据的克隆存储块的地址所在的映射关系对应的更新标记设置为已更新。

所述标记单元12还用于在侦测到所述源虚拟机执行的数据操作对所述源硬盘中的数据进行更新时,判断所述数据更新请求所更新的源存储块的地址所在的映射关系对应的更新标识是否为已更新;确定所述数据更新请求所更新的源存储块的地址所在的映射关系对应的更新标识不是已更新时,将所述数据更新请求所更新的源存储块中被更新数据拷贝至所述数据更新请求所更新的源存储块对应的克隆存储块;在所述数据更新请求所更新的源存储块中写入所述数据更新请求中的更新数据;将所述数据更新请求所更新的源存储块对应的更新标识设置为已更新。

所述备份单元13用于在侦测到所述源虚拟机的业务执行完成之后,关闭所述源虚拟机,备份所述源硬盘中的数据。

还包括读取单元14,用于接收读取所述克隆虚拟机中的数据的读io请求接收;判断所述读io请求所读取的克隆存储块对应的更新标识是否为已更新;确定所述读io请求所读取的克隆存储块对应的更新标识为未更新时,从所述所读取的克隆存储块对应的源存储块中读取数据;确定所述读io请求所读取的克隆存储块对应的更新标识为已更新时,从所述所读取的克隆存储块中读取数据。

所述更新单元15用于在侦测到数据备份结束后,根据所述映射关系将所述克隆硬盘中被标记的位置处的数据复制至所述克隆硬盘被标记的位置处所映射的所述源硬盘的位置,并设置所述源硬盘为所述克隆虚拟机的硬盘。

所述更新单元15具体用于确定被设置为已更新的更新标识对应的映射关系中的克隆存储块;将所述被设置为已更新的更新标识对应的映射关系中的克隆存储块所存储的数据复制至所述被设置为已更新的更新标识对应的映射关系中的源存储块;将所述被设置为已更新的更新标识设置为未更新。

在所述克隆硬盘中的数据复制完成之后,所述更新单元删除所述克隆硬盘及映射表。

通过本发明实施例的方法,在对虚拟机中的数据进行备份时,通过创建包括克隆硬盘的克隆虚拟机,将虚拟机在备份过程中执行的业务转移至所述克隆虚拟机执行,并将虚拟机备份过程中,将对源虚拟机中存储的数据的修改记录在所述克隆硬盘中,并对修改的数据进行标记,如此,在虚拟机的数据备份完成之后,可用克隆硬盘中记录的修改数据更新所述源虚拟机中的数据,如此,在保证备份数据的一致性的同时,也不会中断虚拟机的业务,从而提高了虚拟机的运行效率。

对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:rom、ram、磁碟、光盘等。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。本文中应用了具体个例对本发明的原理及实施方式进行了闸述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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