本申请涉及计算机互联网技术领域,更具体地,涉及一种虚拟机的备份方法、恢复方法、备份装置、恢复装置以及备份服务器集群。
背景技术:
当虚拟机出现病毒、软件缺陷、入侵破坏、硬件故障、电力中断、自然灾难等情况时都会引起虚拟机业务中断、数据丢失、数据破坏等,需要对虚拟机进行备份。现有的虚拟机备份方案,在备份过程中,通常采用第一次全量备份,后续增量备份、隔一段时间再继续采用全量备份,按照这样的周期循环下去。在恢复和克隆某个备份版本的时候,通常要动态合并生产待恢复的版本,这中间涉及到数据的复制、增量回写,中间增量版本有多少,就会合并多少,并通过网络文件系统(networkfilesystem,简称nfs)或iscsi协议挂载到目标宿主机,这样就完成了恢复或者克隆。当然,也可以通过数据回写的方式,完成恢复。
然而,由于采用集中式存储,通过全量和增量交替执行的方式来保证数据安全,备份次数越来越多时,会很浪费存储空间。全量备份和增量备份交替进行,备份性能不高,特别对于超过tb级虚拟机,一次全量备份的时间会很长,对于频繁交替,会非常占用网络和系统资源。另外,数据进行恢复或克隆的时候,需要动态合并数据,生产完整可恢复的镜像,速度慢,也会增加存储io开销,同时增加存储空间消耗。
技术实现要素:
本申请提出了一种虚拟机的备份与恢复方法、装置、服务器及存储介质以解决上述问题。
第一方面,本申请实施例提供了一种虚拟机的备份方法,应用于备份服务器集群,所述备份服务器集群包括有调度服务(ts)以及多个备份服务器,每个所述备份服务器均包括:任务引擎(te)、数据备份模块(ba)、挂载点(mpt)、存储卷服务(sv)、数据块读写服务接口(bs)、分布式重删存储文件系统以及本地文件系统。该方法包括:所述备份服务器集群中的第一备份服务器的任务引擎获取虚拟机备份数据以及备份任务信息;所述任务引擎向所述第一备份服务器的数据备份模块发送调用请求;所述第一备份服务器的数据备份模块将所述虚拟机备份数据写入到所述分布式重删存储文件系统的挂载点,形成虚拟机备份数据的文件集合;所述分布式重删存储文件系统将所述文件集合写入所述本地文件系统以及复制到其他备份服务器。
第二方面,本申请实施例提供了一种虚拟机的恢复方法,应用于备份服务器集群,所述备份服务器集群包括有调度服务(ts)以及多个备份服务器,每个所述备份服务器均包括:任务引擎(te)、数据备份模块(ba)、挂载点(mpt)、存储卷服务(sv)、数据块读写服务接口(bs)、分布式重删存储文件系统以及本地文件系统。该方法包括:所述调度服务分发恢复任务给所述备份服务器集群中的第一备份服务器的任务引擎;所述第一备份服务器的任务引擎向对应的数据备份模块发送调用请求;接收到所述调用请求的数据备份模块执行所述恢复任务。
第三方面,本申请实施例提供了一种虚拟机的备份装置,运行于备份服务器,包括:任务引擎,用于获取备份任务信息及虚拟机备份数据,向数据备份模块发送调用请求;数据备份模块,用于将所述虚拟机备份数据写入到所述分布式重删存储文件系统的挂载点,形成虚拟机备份数据的文件集合;文件写入模块,用于所述分布式重删存储文件系统用于将所述文件集合写入所述本地文件系统以及复制到其他备份服务器。
第四方面,本申请实施例提供了一种虚拟机的恢复装置,运行于备份服务器,其特征在于,包括:调度服务,用于分发恢复任务给所述备份服务器集群中的备份服务器的任务引擎;任务引擎,用于向对应的数据备份模块发送调用请求;数据备份模块,用于执行所述恢复任务。
第五方面,本申请实施例提供了一种备份服务器集群,所述备份服务器集群包括有调度服务(ts)以及多个备份服务器,每个所述备份服务器均包括:任务引擎(te)、数据备份模块(ba)、挂载点(mpt)、存储卷服务(sv)、数据块读写服务接口(bs)、分布式重删存储文件系统以及本地文件系统,其中,所述任务引擎用于获取备份任务信息及虚拟机备份数据,向所述数据备份模块发送调用请求;所述数据备份模块用于将所述虚拟机备份数据写入到所述分布式重删存储文件系统的挂载点,形成虚拟机备份数据的文件集合;所述分布式重删存储文件系统用于将所述文件集合复制到其他备份服务。
相对于现有技术,本申请提供的虚拟机的备份与恢复方法、装置以及备份服务器集群,每台备份服务器上部署有专用分布式重删存储文件系统,在每个备份服务器上都会形成一个挂载点,所有写入挂载点的数据都会自动通过底层的分布式重删存储文件系统复制到其他备份服务器。每台备份服务器都内置了任务引擎,通过分布式任务管理和调度执行引擎,可以从任何一台备份服务器上发起备份、恢复等任务,可以减少数据传输和存储量,提高数据传输效率,同时也让所有的备份服务器都能本地化访问虚拟机的备份数据,从而可以继续在所有节点执行对应虚拟机的备份、恢复或克隆复制等任务。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了常用的虚拟机备份的架构图。
图2示出了基于图1架构的虚拟机的备份方式的示意图。
图3示出了基于图1架构的虚拟机的恢复方式的示意图。
图4示出了本申请实施例提供的虚拟机备份与恢复方法的应用环境示意图。
图5示出了本申请实施例提供的虚拟机的备份方法的流程图。
图6示出了本申请实施例提供的第二次以后的备份流程图。
图7示出了本申请实施例提供的故障切换备份流程图。
图8示出了本申请实施例提供的并行备份流程图。
图9示出了本申请实施例提供的虚拟机的备份方法的一具体示例图。
图10示出了本申请实施例提供的即时克隆(复制)流程图。
图11示出了本申请实施例提供的虚拟机的备份方法的另一具体示例图。
图12示出了本申请实施例提供的虚拟机的恢复方法的流程图。
图13示出了图12中部分步骤的具体流程图。
图14示出了本申请实施例提供的虚拟机的恢复方法的一具体示例图。
图15示出了本申请实施例提供的虚拟机的备份装置的结构框图。
图16示出了本申请实施例提供的虚拟机的恢复装置的结构框图。
图17示出了本申请实施例提供的一种服务器的结构框图。
图18示出了本申请实施例的用于保存或者携带实现根据本申请实施例的虚拟机的备份方法的程序代码的存储单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面首先对具体实施例中可能会涉及到的专业术语进行解释说明,以便更好的理解本申请:
虚拟机(virtualmachine,vm):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟机软件例如有vmware(vmwareace)、virtualbox和virtualpc,xen,kvm,微软hyper-v等都可以在windows系统上虚拟出多个计算机。
永久增量备份:备份系统分为增量备份、全量备份和差异备份三种方式,增量备份产生数据量最小,全量备份最多,差异备份产生从第n次全量备份以来的变化数据,数据量会逐步增加,永久增量备份指的是一直基于第一次全量增量备份。
快照:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。
分布式文件系统:文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。
超融合架构:用3台以上的服务器组成集群,每台服务器上部署有分布式文件系统、任务调度系统、计算处理系统、以及整体集群管理监控系统。每台服务器安装有相同的任务软件,可以对等执行不同或相同任务。当任何一台服务器宕机,其他服务器可以接管继续提供服务。数据在服务器之间完全共享。当有需要时,系统可以增加服务器节点,提高计算和存储能力。
请参阅图1提供的一种常用的虚拟机的备份与恢复的方案,在该方案中,多个生产服务器vm与交换机连接,交换机与备份服务器连接。存储服务器通常采用专门的企业级集中式存储设备或者普通的服务器结合raid存储整列构成存储服务器。管理服务器向备份服务器发起备份请求,备份服务器连接虚拟机管理平台的api,完成虚拟机列表,虚拟机磁盘和相关的配置数据抓取,并保存到存储服务器中。
请参阅图2,考虑到备份数据的可靠性,通常采用第一次全量备份,后续采用增量备份,隔一定周期之后再继续采用全量备份,按照这样的周期循环下去。
如图3所示,在恢复或克隆某个备份版本的时候,通常要动态合并生成待恢复的版本,具体的,将全量以及增量备份数据合成完整的可启动版本。这中间涉及到数据的复制以及增量回写,中间增量版本有多少,就会合并多少,并通过nfs或iscsi协议挂载到目标宿主机,完成虚拟机的备份和克隆。此外,可以通过数据回写的方式,完成虚拟机的恢复。
对于以上所述的虚拟机的备份与恢复的方案,发明人发现:(1)由于采用集中式存储,通过全量和增量交替执行的方式来保证数据安全,备份次数越来越多时,会很浪费存储空间;(2)数据进行恢复,或克隆时候,需要动态合并数据,生产完整可恢复的镜像,速度慢,也会增加存储io开销,同时也会增加存储空间消耗;(3)由于采用全量和增量交替,备份性能不高,特别对于超过tb级虚拟机,一次全量备份的时间会很长。对于频繁交替,会非常占用网络和系统资源;(4)由于采用单点存储方案,备份服务器再多,系统整体上有瓶颈,不能很好支持大规模,比如上千虚拟机的备份和恢复等;(5)如果增加存储服务器和增加的备份服务器形成新的组合,意味着几套系统之间整体上就会浪费很多空间去存储重复数据;(6)恢复和克隆数据,也只能在固定的备份节点上完成,不能跨越服务器去完成虚拟机恢复和可控。当需要并行恢复时,也无法保证这些虚拟机得到快速的恢复。
因此,发明人提出了本申请实施例中的虚拟机的备份方法、恢复方法、备份装置、恢复装置以及备份服务器集群。
下面将先对本申请实施例所涉及的虚拟机的备份方法、恢复方法中的应用环境(即备份服务器集群)进行介绍。
需要说明的是,作为一种方式,本申请实施例中采用的是由多台备份服务器组成集群,每台备份服务器上部署有分布式文件系统、任务调度系统、计算处理系统、以及整体集群管理监控系统。其中,每台备份服务器安装有相同的任务软件,可以对等执行不同或相同任务。当任何一台备份服务器宕机,其他备份服务器可以接管继续提供服务。数据在备份服务器之间完全共享。当有需要时,系统可以增加服务器节点,以提高计算和存储能力。其中,集群中的备份服务器的数量可以根据实际需要配置,例如,可以在集群中配置3台或4台备份服务器。
如图4所示,多个备份服务器(图中仅示出了备份服务器n1、n2和n3)组成备份服务器集群。每台备份服务器可以包括任务引擎(te)、数据备份模块(ba)、挂载点(mpt)、存储卷服务(sv)、数据块读写服务接口(bs)、分布式重删存储文件系统以及本地文件系统。备份服务器集群还可以包括主调度服务,每台备份服务器中也可以包括调度服务(ts)。
存储卷服务(sv)可以挂载存储入口到备份服务器上,形成挂载点(mpt),作为一种方式,在每个备份服务器上都会形成一个挂载点(mpt)。所有写入挂载点(mpt)的数据都会自动通过底层的分布式重删存储文件系统复制到其他备份服务器的节点。
作为一种方式,数据块读写服务接口(bs)可以通过网络或本地函数接口接收从各台备份服务器(或自身所在备份服务器)发送过来的读写请求,写入数据到磁盘,或者从磁盘读写数据。
可选的,每台备份服务器都内置了同样的备份软件,提供包括从虚拟化平台中备份数据、恢复数据到虚拟化平台、克隆备份数据到虚拟化平台中、从备份服务器存储(包括从挂载点mpt)中读写取备份的数据和/或跨备份服务器节点复制数据等功能。
可选的,每台备份服务器都内置了同样的任务引擎(te)、调度服务(ts),通过分布式任务引擎(te)和调度服务(ts),可以从任意一台备份服务器上发起备份、恢复、克隆、监控和/或复制等任务。
下面将结合附图具体描述本申请的各实施例。
请参阅图5,为本申请实施例提供的一种虚拟机的备份方法的流程图,本实施例提供一种虚拟机的备份方法,应用于备份服务器集群,所述方法包括:
步骤s110,所述备份服务器集群中的第一备份服务器的任务引擎获取虚拟机备份数据以及备份任务信息。
作为一种方式,虚拟机第一次备份时,由备份服务器集群中的第一备份服务器n1的任务引擎获取待备份虚拟机的备份数据。可选的,待备份虚拟机的备份数据可以包括虚拟机的uuid/moref唯一标识、虚拟机的虚拟化平台信息(例如虚拟机的ip、帐号、密码以及平台种类标志等)。需要说明的是,本申请实施例中的第一备份服务器可以是备份服务器集群中的任意一台备份服务器。
第一备份服务器的任务引擎可以通过获取到的待备份的虚拟机的数据获取对应备份任务信息。需要说明的是,备份任务信息可以由第一备份服务器来执行,也可以是由备份服务器集群中的第一备份服务器以外的备份服务器来执行。
步骤s120,所述任务引擎向所述第一备份服务器的数据备份模块发送调用请求。
任务引擎可以向第一备份服务器的数据备份模块发送调用请求。在其他实施方式中,也可以向备份服务器集群中的其他备份服务器发送调用请求,例如可以通过各备份服务器的负载情况来发送。
当任务引擎向第一备份服务器的数据备份模块发送调用请求时,执行以下步骤。
步骤s130,所述第一备份服务器的数据备份模块将所述虚拟机备份数据写入到所述分布式重删存储文件系统的挂载点,形成虚拟机备份数据的文件集合。
可选的,第一备份服务器接收到上述调用请求后,第一备份服务器的数据备份模块将待备份虚拟机的备份数据写入到对应的分布式重删存储文件系统的挂载点,进而得到虚拟机备份数据的文件集合。
所述虚拟机备份数据的文件集合可以包括带有路径的备份文件、文件属性集合、备份数据块索引和备份数据块。
其中,带有路径的备份文件是指包含有文件系统的文件路径和名称的备份文件。文件属性集合保存了文件的属性,例如:文件的大小、权限、创建以及修改日期等。备份数据块索引保存了文件数据块索引图,例如:数据块哈希值、大小以及偏移等相关数据与信息。备份数据块保存有数据块(包括数据块哈希以及数据内容等)。
步骤s140,所述分布式重删存储文件系统将所述文件集合写入所述本地文件系统以及复制到其他备份服务器。
具体的,分布式重删存储文件系统可以通过存储卷服务将带有路径的备份文件写入所述本地文件系统。分布式重删存储文件系统可以通过所述数据备份模块将所述文件属性集合、备份数据块索引或备份数据块写入所述本地文件系统。
写入带有路径的备份文件的方式可以采用包括以下两种方式:
根据数据块哈希值判断在其他所述备份服务器中是否存在对应的符合副本要求的数据块,如果不存在,通过所述存储卷服务将所述带有路径的备份文件写入所述本地文件系统,如果存在,则不写入;或者
通过所述存储卷服务网络读写接口将所述带有路径的备份文件写入到其他备份服务器的数据块读写服务接口,由所述数据块读写服务接口将所述带有路径的备份文件写入对应的本地文件系统。
写入文件属性集合、备份数据块索引或备份数据块的方式可以包括以下两种:
通过所述数据备份模块的本地接口,将所述文件属性集合、备份数据块索引或备份数据块写入所述本地文件系统;或者
通过所述数据备份模块的网络读写接口,将所述文件属性集合、备份数据块索引或备份数据块写入其他备份服务器的本地文件系统。
分布式重删存储文件系统将所述文件集合写入所述本地文件系统后,可以将写入的文件集合复制到其他备份服务器。
请参见图6,进一步的,在第一次备份任务执行完毕后,第二次以后的备份可以包括以下步骤:
步骤s150:所述数据备份模块复制前一次成功备份后的所述文件集合中的带有路径的备份文件、文件属性集合和备份数据块索引至指定存储位置,得到新的备份文件;
步骤s160:将所述文件集合中的备份数据块的增量部分读取到所述第一备份服务器的内存后,所述增量部分包括所述备份数据块的偏移和大小;
步骤s170:基于所述备份数据块的偏移和大小,将包括所述增量部分的所述文件集合中的备份数据块写入所述第一备份服务器的分布式重删存储文件系统的挂载点下所述指定存储位置对应的偏移。
请参见图7,进一步的,若第一备份服务器发生故障时,故障切换备份可以包括以下步骤:
步骤s210:若所述第一备份服务器发生故障,所述调度服务获取待备份的虚拟机的数据;
步骤s220:所述调度服务生成备份任务并派发至其他至少一个备份服务器;
步骤s230:接收到所述备份任务的备份服务器的任务引擎向对应的数据备份模块发送调用请求;
步骤s240:所述其他至少一个备份服务器的数据备份模块将所述虚拟机备份数据写入到所述分布式重删存储文件系统的挂载点,形成虚拟机备份数据的文件集合;
步骤s250:所述分布式重删存储文件系统将所述文件集合写入所述本地文件系统以及复制到其他备份服务器。
请参见图8,进一步的,基于图4所示的架构,并行备份可以包括以下步骤:
步骤s310:调度服务获取所述备份服务器集群的每个备份服务器的负载情况;
步骤s320:根据所述负载情况调度派发不同数量的备份任务到对应的备份服务器;
步骤s330:每个备份服务器的存储卷服务查询是否保存有对应的备份数据块,如果有,更新备份数据块索引,如果没有,写入对应的备份数据块和相应的元数据至分布式重删存储文件系统。
下面以图9为例,对本申请实施例提供的虚拟机的备份方法进行示例性的说明。图9所示为备份服务器n1、n2以及n3之间的虚拟机的备份流程。
假设待备份的虚拟机为vma,当虚拟机的数据需要备份时,任务引擎te获取待备份的虚拟机vma的备份数据,根据获取到的备份数据获取备份任务。
任务引擎te向数据备份模块ba发起调用请求,接收到该调用请求的数据备份模块ba将虚拟机vma的数据备份写入到备份服务器n1的分布式重删存储文件系统的挂载点mpt后,形成文件集合。文件集合包括:带有路径的vmabf备份文件,vmabfmeta文件属性集合(通常在kb级别),vmabfbi备份数据块索引集合(在几十mb到gb级),vmabfdata备份数据块集合。其中,vmabf是在文件系统的文件路径和名称(通常在1kb以下字节);vmabfmeta保存了文件属性(例如vma的文件的大小、权限、创建和/或修改日期等,通常在几k至十kb级);vmabfbi保存了文件数据块索引图(例如vma的数据块哈希值、大小以及其偏移)等相关数据与信息,值得注意的是,可以拆分成1mb为单位的文件进行保存;vmabfdata保存数据块(包含vma的数据块哈希以及vma的数据块内容)。
上述文件集合可以分别通过以下形式将数据写入到底层本地文件系统中。
可选的,作为一种方式,vmabfdata可以通过存储卷服务sv将备份数据写入备份服务器n1。在写入数据至备份服务器n1之前,存储卷服务sv先根据数据块的哈希值判断是否在备份服务器集群的其他服务器节点bs中存在对应的符合副本要求的数据块,如果存在,则不写入;否则写入一份至备份服务器n1的本地文件系统中。作为另一种方式,vmabfdata还可以通过存储卷服务sv的网络读写接口写入到备份服务器n2或n3的数据块读写服务接口中,数据块读写服务接口再通过内部的本地数据读写接口写入到备份服务器本地文件系统中。
可选的,作为一种方式,vmabf可以通过数据备份模块ba的本地接口将备份文件写入到备份服务器n1的本地文件系统中,并根据预先定义的存储规则保存,预先定义的存储规则包括按照备份次数对应的数字命名的子目录。例如:/backup/1/vmabf、/backup/2/vmabf以及/backup/3/vmabf等。作为另一种方式,vmabf还可以通过数据备份模块ba的网络读写接口将别分文件写入至备份服务器n2或n3的本地文件系统中,并根据预先定义的存储规则保存,此种情况下,预先定义的规则包括按照备份次数对应的数字命名的子目录,例如:/backup/1/vmabf、/backup/2/vmabf以及/backup/3/vmabf等。
可选的,作为一种方式,vmabfmeta可以通过数据备份模块ba的本地接口写入至备份服务器n1的本地文件系统中,作为另一种方式,vmabfmeta还可以通过数据备份模块ba的网络读写接口写入至备份服务器n2或n3的本地文件系统中。
可选的,作为一种方式,vmabfbi可以通过备份数据模块ba的本地接口写入至备份服务器n1的本地文件系统中;作为另一种方式,vmabfbi可以通过数据备份模块ba的网络读写接口写入至备份服务器n2;作为再一种方式,vmabfbi还可以通过备份服务器n3根据读取需要,动态异步从备份服务器n1读取,进而将读取到的数据存储至备份服务器n3的本地文件系统中。
作为一种实施方式,数据备份模块ba第二次以后的备份开始前,可以通过以下过程完成增量备份。假设当前备份次数为n,可以通过复制前一次成功备份后产生的vmabf、vmabfmeta以及vmabfbi至新的存储位置/backup/n/vmabf、/backup/n/vmabfmeta和/backup/n/vmabfbi,vmabf、vmabfmeta和vmabfbi都非常小,可以数秒完成复制,生成一个新的备份文件。继而把虚拟机vma的增量部分的数据块(通常设定1mb大小,在虚拟机磁盘的偏移)读取到服务器n1的内存后,根据数据块的偏移和大小,写入到备份服务器n1的分布式重删存储文件系统的挂载点mpt下面的/backup/n/vmabf对应的偏移,这样本地文件系统底层sv、bs完成vmabf对应的vmabfmeta、vmabfbi和vmabfdata数据的更新。这样就完成了一次增量备份,同时增量备份更新产生的vmabf是完整的虚拟机镜像系统,便于用于后续的虚拟机的即时恢复。
若数据备份模块所在的备份服务器n1出故障,那么虚拟机vma的第m次备份,则将由集群系统的调度服务(ts)自动在另外的备份服务器n2或n3发起备份请求(即te调用ba)。由于备份流程已经考虑了备份版本对应的信息和数据,值得注意的是,vmabf,vmabfmeta,vmabfbi和vmabfdata在各个服务器节点同步存储、按需存储,或全局集群范围共享(vmabfdata),综上所述,任何一个节点,都可以执行任何一个vma的下一次正确的备份。
总的调度服务(ts),可以全局调度任务到不同的备份服务器n1、n2或n3,对应的备份服务器所在的任务引擎te,可以根据各自获取到的备份任务,按照如图9所示的备份流程完成备份。其中ts会根据每台备份服务器的负载情况(例如备份服务器的cpu,磁盘io以及内存等),调度不同数量的任务到当前备份服务器,按照每次最多不超过5个并行执行任务,直到每台服务器负载不超过80%。每台服务器的sv都会全局查询是否保存了对应的备份数据块,如果有保存,则只更新vmabfbi备份数据块索引,不写入数据;否则根据如图9所示的备份流程,写入对应的数据块和相应的元数据信息到分布式重删存储文件系统中。
如图10所示,进一步的,基于图4所示的架构,即时克隆(复制)可以包括以下步骤:
步骤s410:所述调度服务获取所述备份服务器集群的资源情况;
步骤s420:将克隆任务派发给利用率最低的备份服务器;
步骤s430:接收到所述备份任务的备份服务器的任务引擎向对应的数据备份模块发送调用请求执行克隆任务。
作为一种实施方式,虚拟机的克隆过程可以包括:调用虚拟机平台相关存储管理相关api,api里面绑定有第一备份服务器中待恢复的备份数据版本的位置信息,创建恢复网络存储通道;根据虚拟机ovf模板文件,调用虚拟机平台相关api,创建新的虚拟机。
如图11所示,为备份服务器n1、n2以及n3之间的虚拟机的克隆流程。
可选的,调度服务ts可以根据备份服务器集群的系统资源情况,选取最空闲(例如cpu、磁盘io、内存的利用率最低)的一台备份服务器,把克隆任务信息(例如虚拟机moref/uuid,备份的版本标识,虚拟机平台信息(例如虚拟机平台的ip、帐号以及密码等),宿主机信息(ip))发送给服务器n1的任务引擎te,由任务引擎te调用数据备份模块ba执行克隆任务。
作为一种方式,在执行克隆任务之前,数据备份模块需要准备配置系统镜像文件,具体过程详细描述如下:假设当前克隆的是第n次备份的数据,则可以复制/mpt/backup/vmabf、vmabfmeta以及vmabfbi到新的存储位置/mpt/clone/akdjklmlopk/vmabf(其中akdjklmlopk是根据原来的存储路径参数(/mnt/backup/n和当前时间戳(毫秒))动态计算的base64编码),meta和bi对应的存储位置。由于vmabf、vmabfmeta以及vmabfbi都非常小,可以数秒内完成复制,生成一个新的备份文件。新的文件和已有的没有直接关联。
当准备好配置系统镜像文件后,数据备份模块可以通过调用虚拟机平台相关存储管理相关api,其中,api里面绑定有备份服务器n1中待恢复的备份数据版本的位置/mnt/clone/akdjklmlopk,进而创建恢复网络存储通道(如nfs)。
可选的,数据备份模块根据虚拟机的ovf模板文件,调用虚拟机平台的相关api,创建新的虚拟机。作为一种方式,虚拟机的名称采用原有虚拟机名字加上当前到毫秒级别的时间戳格式(例如以yyyy-mm-dd或hh-mm-ss-xxx的格式,其中,y表征年份,m表征月份,d表征日期,h表征小时,s表征秒数,x表征毫秒数),保持和原有虚拟机名称的区别。可选的,可以通过磁盘创建的api,绑定/mpt/clone/akdjklmlopk/vmabf到待克隆的虚拟机。
值得注意的是,如果选项中有开机,可以采用恢复流程进行恢复,联系不断从底层存储读写数据,具体的恢复流程可以参见描述恢复流程的实施方式。
可选的,对于任意多次的克隆流程,可以通过准确到毫秒的时间戳格式,猜中方式可以有效的规避存储路径的冲突问题。通过任意多次克隆任何一个备份版本的数据,可以形成新的虚拟机镜像文件。例如:对于大规模虚拟化和云数据中心的备份和恢复,由于采用了备份服务器集群的并行架构,通过全增量模型,数据采用了全局去重保存思路,使得在并行备份时,可以有效的减少数据传输和存储量,同时,提高了数据保护的规模化能力。此外,底层每台服务器都可以支持恢复任意的虚拟机的任意备份版本,可以有效的提高虚拟机的并行恢复效率。
可选的,现有的一些业务上线时常遇到版本bug,导致系统文件被删除或者数据丢失。任意多次克隆的技术方案支持快速任意多次的数据克隆,由于各版本之间互不信赖,因此可以快速复制线上的生产环境,具体的,可以用于研发测试。可选的,软件在全真的环境中测试后,可以降低上述出现bug的可能性。
综上所述,在克隆的分析环境中分析数据,对生产环境没有影响,可以提高效率,降低对业务环境的资源占用、业务中断或是数据丢失破坏等风险。
请参阅图12,为本申请实施例提供的一种虚拟机的恢复方法的流程图,本实施例提供一种虚拟机的恢复方法,应用于备份服务器集群,所述方法包括:
步骤s510,所述调度服务分发恢复任务给所述备份服务器集群中的第一备份服务器的任务引擎。
可以理解的是,通常任务引擎ts默认根据在哪里备份,就在哪里恢复原则,分发恢复任务(包括待恢复的虚拟机uuid/moref标识,是否开关机,是否断开网络,虚拟机平台的(ip、账号、密码、宿主机编号,待恢复的备份数据版本标记))给第一备份服务器的任务引擎te。
步骤s520,所述第一备份服务器的任务引擎向对应的数据备份模块发送调用请求。
任务引擎可以根据恢复任务向对应的备份数据模块发送恢复任务的调用请求。
步骤s530,接收到所述调用请求的数据备份模块执行所述恢复任务。
请参阅图13,作为一种方式,步骤s530可以包括:
步骤s531,调用虚拟机平台相关存储管理相关api并创建网络存储通道,所述api绑定有第一备份服务器的待恢复的备份数据的位置。
步骤s532,获取待恢复的虚拟机,调用虚拟机平台磁盘移除相关api,并移除相关的信息。
步骤s533,调用虚拟机平台相关绑定磁盘的api,绑定到所述待恢复的虚拟机。
可选的,若在虚拟机恢复的过程中虚拟机开机,则接收到调用请求的数据备份模块执行所述恢复任务的步骤还包括:启动待恢复的虚拟机内置的操作系统;向底层虚拟机平台发送请求;底层虚拟化平台通过标准的网络存储通道从备份服务器集群中读取备份数据块。
其中,读取备份数据块的详细过程可以包括:所述存储卷服务根据读取的偏移从备份数据块索引中读取数据块的哈希值,并计算所述数据块对应的备份服务器;如果对应的服务器为第一备份服务器,则存储卷服务直接调用本地文件系统函数接口读取相应的数据块;如果对应的服务器为其他备份服务器,所述存储卷服务调用网络数据读接口,从其他备份服务器的数据块读写服务接口中读取相应的数据块。
作为一种实施方式,下面以图14为例对上述实施例中的虚拟机的恢复方法进行示例性的说明:
如图14所示,可选的,备份服务器n1的任务引擎获取待恢复的虚拟机vma’的备份数据,分发恢复任务给备份服务器n1的任务引擎,所述任务引擎调用备份服务器n1的数据备份模块执行恢复流程。
作为一种方式,数据备份模块ba调用虚拟机平台相关存储管理相关api,并创建恢复网络通道,例如网络文件系统(networkfilesystem,nfs)。其中,api里面绑定有备份服务器n1中待恢复的备份数据版本的位置:/mnt/backup/n。
继而找到待恢复的虚拟机,调用虚拟机平台移除相关api,并移除相关的磁盘信息;然后调用虚拟机平台相关绑定磁盘的api,绑定/mnt/backup/n/vmabf到待恢复的虚拟机vma’。
如果选项中有开机,那么vma’内置的操作系统将启动,此种情况下,将调用底层虚拟机平台,由底层的虚拟化平台通过标准的网络存储通道(例如nfs),读取vmabf。vmabf将通过sv连续不断并行地的从备份服务器n1、n2或n3读取数据块。存储卷服务sv可以根据读取的偏移从vmabfbi中读取数据块的位置信息(例如数据块哈希值),并计算备份服务器的位置。存储卷服务sv可以一次性根据多个位置信息,计算出多个数据块的位置信息,继而并行启动多个读取线程,从备份服务器集群中读取数据。如果位置在备份服务器n1,则存储卷服务sv可以直接调用本地文件系统函数接口读取相应的数据块。而如果位置在备份服务器n2或n3,那么存储卷服务sv可以调用网络数据读接口,从备份服务器n2或n3的数据块读写服务接口存储引擎中读取相应的数据块。
作为一种方式,如果默认的备份服务器不在备份服务器集群中,调度服务ts将根据系统的负载状态,选择一台最空闲的执行恢复任务。由于系统的所有备份服务器都安装有te,ba,那么所有的备份服务器所在的节点都有同样的备份数据版本,因此可以正常完成恢复任务。
本实施例提供的虚拟机的恢复方法,通过调度服务分发恢复任务给所述备份服务器集群中的第一备份服务器的任务引擎;所述第一备份服务器的任务引擎向对应的数据备份模块发送调用请求;接收到所述调用请求的数据备份模块执行所述恢复任务。本方法可以实现提高虚拟机恢复的速度。
请参阅图15,为本申请实施例提供的一种虚拟机的备份装置的结构框图,本实施例提供一种虚拟机的备份装置600,应用于备份服务器集群中的备份服务器,每个所述备份服务器均包括有以下软件模块:调度服务(ts)、任务引擎(te)、数据备份模块(ba)、挂载点(mpt)、存储卷服务(sv)、数据块读写服务接口、文件写入模块。
该备份装置600包括任务引擎610、数据备份模块620以及文件写入模块630。
在备份过程中,任务引擎610用于获取备份任务信息及虚拟机备份数据,向数据备份模块发送调用请求;数据备份模块620用于将所述虚拟机备份数据写入到所述分布式重删存储文件系统的挂载点,形成虚拟机备份数据的文件集合;文件写入模块630用于所述分布式重删存储文件系统用于将所述文件集合写入所述本地文件系统以及复制到其他备份服务器。
备份装置600用于实现以上各实施例描述的备份流程,这里不再赘述。
请参阅图16,为本申请实施例提供的一种虚拟机的恢复装置的结构框图,本实施例提供一种虚拟机的恢复装置700,应用于备份服务器集群中的备份服务器,每个所述备份服务器均包括有以下软件模块:调度服务(ts)、任务引擎(te)、数据备份模块(ba)、挂载点(mpt)、存储卷服务(sv)、数据块读写服务接口、文件写入模块。
该备份装置700包括任务引擎710、任务引擎720以及数据备份模块730。
调度服务710用于分发恢复任务给所述备份服务器集群中的备份服务器的任务引擎;任务引擎720用于向对应的数据备份模块发送调用请求;数据备份模块730用于执行所述恢复任务。
备份装置700用于实现以上各实施例描述的备份流程,这里不再赘述。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
下面将结合图17对本申请实施例提供的一种服务器进行说明。
请参阅图17,基于上述的虚拟机的备份方法、虚拟机的恢复方法及装置,本申请实施例还提供了一种可以执行前述虚拟机的备份方法与恢复方法的服务器100。服务器100包括存储器104以及相互耦合的一个或多个(图中仅示出一个)处理器102,存储器104以及处理器102之间通信线路连接。存储器104中存储有可以执行前述实施例中内容的程序,而处理器102可以执行存储器104中存储的程序。
其中,处理器102可以包括一个或者多个处理核。处理器102利用各种接口和线路连接整个服务器100内的各个部分,通过运行或执行存储在存储器104内的指令、程序、代码集或指令集,以及调用存储在存储器104内的数据,执行服务器100的各种功能和处理数据。可选地,处理器102可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器102可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器102中,单独通过一块通信芯片进行实现。
存储器104可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。存储器104可用于存储指令、程序、代码、代码集或指令集。存储器104可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现前述各个实施例的指令等。存储数据区还可以存储服务器100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图18,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质800可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质800包括非瞬时性计算机可读介质(non-transitorycomputer-readablestoragemedium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。