一种复制虚拟机的方法和系统的制作方法

文档序号:6397363阅读:244来源:国知局
专利名称:一种复制虚拟机的方法和系统的制作方法
技术领域
本发明涉及计算机应用领域,尤其涉及一种复制虚拟机的方法和系统
背景技术
云计算作为一种新型的基于Internet的服务供应方式,已经对于IT的服务理念产生深远的影响。随着IT企业和社会对云计算理念的关注,及科研人员对云计算需求和实现方法的探索与研究,云计算的神秘面纱正逐渐被揭开。人们在云计算诸多方面已经达成了共识,如资源流转、按需分配、按量计费等;云计算在应用上分为三层,即云基础设施即服务(IaaS)、云平台即服务(PaaS)和云软件即服务(SaaS),分别面向硬件基础设施,平台服务和应用服务三个领域云计算。云计算实现的资源整合,必然会带来运算任务的高度集中。云计算的优势是可以在非常短的时间内聚集大量的计算资源(包括物理机和虚拟机)来完成以前的互联网时代无法完成短时间大计算量的处理任务。虚拟机复制,本质上是虚拟机内存的快速复制,是将父虚拟机的实时状态,即实时的内存信息分发到不同的主机上,然后每个内存副本在主机上成为新的子虚拟机进行运行计算。在现有的虚拟机复制系统中,如何实现快速复制是最大的挑战。一个上G内存虚拟机的复制是一个非常消耗资源的操作,如果复制多份,将对父虚拟机运行的主机带来非常大的负载和网络阻塞。根据测试结果,随着复制虚拟机数量的增加,对主机系统带来的延迟将是线性增长。

发明内容
本发明提供一种复制虚拟机的方法和系统,要解决的技术问题是如何缩短虚拟机复制流程。为解决上述技术问题,本发明提供了如下技术方案一种复制虚拟机的方法,包括当发起将一虚拟机作为父虚拟机进行虚拟机复制操作时,承载该父虚拟机的终端获取子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据,并向其他终端发送子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据;其他终端根据子虚拟机启动所需的内存信息,启动子虚拟机,并执行父虚拟机的计算任务数据;当子虚拟机的计算任务执行结束后,向所述父虚拟机上报执行结果;在父虚拟机得到的执行结果后,承载该父虚拟机的终端发起关闭已执行完计算任务的子虚拟机的操作。优选的,所述方法还具有如下特点所述子虚拟机启动所需的内存信息包括父虚拟机的元数据以及父虚拟机的操作系统内核数据。优选的,所述方法还具有如下特点所述子虚拟机启动所需的内存信息是通过如下方式发送的,包括当检测到父虚拟机进入暂停状态后,将存储有所述子虚拟机启动所需的内存信息对应的内存数据拷贝到一个内存块中,并发送给其他终端。优选的,所述方法还具有如下特点所述方法还包括在子虚拟机执行计算任务过程中,如果子虚拟机向父虚拟机发起内存申请后,承载该父虚拟机的终端根据子虚拟机访问过程中本地内存的状态信息,确定该子虚拟机所申请的内存信息,并向所述承载子虚拟机的终端发送该子虚拟机所申请的内存信息;承载子虚拟机的终端加载所申请的内存信息,并继续执行所述计算任务。优选的,所述方法还具有如下特点该子虚拟机所申请的内存信息是通过如下方式确定的在子虚拟机访问父虚拟机后,如果检测到该子虚拟机访问一丢失的内存,则将所访问的丢失的内存作为与父虚拟机交互所需的内存信息。优选的,所述方法还具有如下特点所申请的内存信息是通过如下方式发送的,包括暂停发起内存申请的子虚拟机的访问,将与所述父虚拟机交互所需的内存信息拷贝到一个内存块中,并发送承载该发起内存申请的子虚拟机的终端。优选的,所述方法还具有如下特点所述方法还包括向父虚拟机所有的子虚拟机均发送该子虚拟申请的内存信息。一种复制虚拟机的系统,包括承载父虚拟机的终端,包括获取装置,用于当发起将一虚拟机作为父虚拟机进行虚拟机复制操作时,获取子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据;发送装置,与所述获取装置相连,用于向其他终端发送子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据;控制装置,用于在父虚拟机得到子虚拟机执行计算任务的执行结果后,发起关闭已执行完计算任务的子虚拟机的操作;承载子虚拟机的终端,包括执行装置,用于根据子虚拟机启动所需的内存信息,启动子虚拟机,并执行父虚拟机的计算任务数据;上报装置,与所述执行装置和所述控制装置相连,用于当子虚拟机的计算任务执行结束后,向所述父虚拟机上报执行结果。优选的,所述系统还具有如下特点所述子虚拟机启动所需的内存信息包括父虚拟机的元数据以及父虚拟机的操作系统内核数据。优选的,所述系统还具有如下特点所述子虚拟机启动所需的内存信息是通过如下方式发送的,包括当检测到父虚拟机进入暂停状态后,将存储有所述子虚拟机启动所需的内存信息对应的内存数据拷贝到一个内存块中,并发送给其他终端。优选的,所述系统还具有如下特点所述承载该父虚拟机的终端,还包括申请装置,用于在子虚拟机执行计算任务过程中,机向父虚拟机发起内存申请;
其中所述执行装置在加载所申请的内存信息,并继续执行所述计算任务;承载该父虚拟机的终端,还包括识别装置,与所述申请装置相连,用于根据子虚拟机访问过程中本地内存的状态信息,确定该子虚拟机所申请的内存信息;所述发送装置还用于向所述承载子虚拟机的终端发送该子虚拟机所申请的内存信息。优选的,所述系统还具有如下特点该子虚拟机所申请的内存信息是通过如下方式确定的在子虚拟机访问父虚拟机后,如果检测到该子虚拟机访问一丢失的内存,则将所访问的丢失的内存作为与父虚拟机交互所需的内存信息。优选的,所述系统还具有如下特点所申请的内存信息是通过如下方式发送的,包括暂停发起内存申请的子虚拟机的访问,将与所述父虚拟机交互所需的内存信息拷贝到一个内存块中,并发送承载该发起内存申请的子虚拟机的终端。优选的,所述系统还具有如下特点所述发送装置,还用于向父虚拟机所有的子虚拟机均发送该子虚拟申请的内存信息。与现有技术不同,本发明提供的实施例通过按需内存复制,并不完整的复制虚拟机的所有内存,这样就可以大大提高虚拟机的复制速度。另外通过分布式系统,将计算完成的任务传回父虚拟机。复制的子虚拟机就可以快速关闭,即时释放资源。这样,就实现了虚拟机的快速复制和即时释放。


图1为本发明提供的复制虚拟机的方法实施例的流程示意图;图2为本发明应用实例中快速虚拟机复制系统流程示意图;图3为本发明应用实例中内存按需复制示意图;图4为本发明应用实例中内存快速复制示意图;图5为本发明提供的复制虚拟机的系统实施例的结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。图1为本发明提供的复制虚拟机的方法实施例的流程示意图。图1所示方法实施例,包括步骤101、当发起将一虚拟机作为父虚拟机进行虚拟机复制操作时,承载该父虚拟机的终端获取子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据;其中,该步骤的目的是使复制出的虚拟机不包括父虚拟机的磁盘等,仅使用最低限度的内存资源,完成对应的计算任务,即子虚拟机仅完成父虚拟机交付的计算任务,不执行其他任务;步骤102、承载该父虚拟机的终端向其他终端发送子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据;步骤103、其他终端根据子虚拟机启动所需的内存信息,启动子虚拟机;步骤104、其他终端上的子虚拟机执行父虚拟机的计算任务数据;步骤105、当子虚拟机的计算任务执行结束后,向所述父虚拟机上报执行结果;步骤106、在父虚拟机得到的执行结果后,承载该父虚拟机的终端发起关闭已执行完计算任务的子虚拟机的操作。下面对本发明提供的方法实施例作进一步说明其中,所述子虚拟机启动所需的内存信息包括父虚拟机的元数据以及父虚拟机的操作系统内核数据;而所述子虚拟机启动所需的内存信息是通过如下方式发送的当检测到父虚拟机进入暂停状态后,将存储有所述子虚拟机启动所需的内存信息对应的内存数据拷贝到一个内存块中,并发送给其他终端。在实际应用中,在子虚拟机执行计算任务过程中,可能会发现计算所需的部分内存并不存在,原因是没有完全复制过来,则子虚拟机进入暂停状态,向父虚拟机发起内存,承载该父虚拟机的终端根据子虚拟机访问过程中本地内存的状态信息,确定该子虚拟机所申请的内存信息,并向所述承载子虚拟机的终端发送该子虚拟机所申请的内存信息;而承载子虚拟机的终端加载所申请的内存信息,并继续执行所述计算任务。其中该子虚拟机所申请的内存信息是通过如下方式确定的在子虚拟机访问父虚拟机后,如果检测到该子虚拟机访问一丢失的内存,则将所访问的丢失的内存作为与父虚拟机交互所需的内存信息。所申请的内存信息是通过如下方式发送的,包括暂停发起内存申请的子虚拟机的访问,将与所述父虚拟机交互所需的内存信息拷贝到一个内存块中,并发送承载该发起内存申请的子虚拟机的终端。为了避免后续其他终端也向父虚拟机申请内存,所述方法还包括向父虚拟机所有的子虚拟机均发送该子虚拟申请的内存信息。由上可以看出,本发明建立一种按需内存复制机制,仅将子虚拟机运行所需要的内存进行复制即可,这将大大提高虚拟机的复制速度。另外每个复制出来的子虚拟机经常只完成计算任务,即该任务一般是计算密集型,而不会产生IO访问请求,所以每个复制出来的子虚拟机并不需要存储数据,该虚拟机只需要在每个主机上的内存中存在,这样一旦计算任务结束,子虚拟机把运算结果返回给父虚拟机后,子虚拟机可以快速关闭,释放资源。下面进行进一步说明图2为本发明应用实例中快速虚拟机复制系统流程示意图。经过实验,得到如下结论,每个从虚拟机复制得到的子虚拟机在启动时,只需要父虚拟机很小部分的内存信息,相应的,每个子虚拟机在运行过程中也只需要访问父虚拟机的很小一部分的内存信息。步骤Al、内存分析模块获取子虚拟机运行所需的内存信息,;其中,一个子虚拟机所需的内存信息包括该虚拟机启动所需的内存信息和用于与父虚拟机交互时所使用的内存信息,而这些内存信息是需要通过分析和识别得到,下面进行分别说明
对于子虚拟机如何单独启动运行,这就需要对父虚拟机的内存进行分析,抽取出运行所需的基本内存信息,即子虚拟机启动所需内存主要包括父虚拟机的元数据和操作系统内核管理数据。用于与父虚拟机交互时所使用的内存信息是通过如下方式确定和下发的当子虚拟机启动后需要同父虚拟机交互时,虚拟机监控器中内存分析模块会发现子虚拟机的CPU将访问一块丢失的内存,此时内存分析模块会剥夺分给这个VCPU的时间片,将该VCPU切入暂停状态,并从父虚拟机中获取这部分内存信息,将该VCPU所访问的内存信息作为与父虚拟机交互时所使用的内存信息。步骤A2、内存复制模块对子虚拟所需的内存信息进行复制,包括图3为本发明应用实例中内存按需复制示意图。具体说明如下对于子虚拟机启动所需的内存信息,复制方式如下当父虚拟机一直处于运行状态,上述的内存数据一直处于活跃状态,无法进行复制,此时可以将父虚拟机进入短暂的暂停状态,进入暂停状态后,快速的将对应的内存数据拷贝到一个内存块中,将拷贝得到的内存块中的内存信息作为复制得到的子虚拟机启动所需的内存息;在父虚拟机处于暂停状态时,父虚拟机的外部IO数据会全部缓存到主机系统中,当父虚拟机恢复时,再由父虚拟机传递给子虚拟机,所以说整个暂停过程是非常快而且不会导致虚拟机数据丢失的。当然,子虚拟机除了启动时所需内存外,在虚拟机的运行过程中,还会有一部分数据需要从父虚拟机处获取,这部分内存也需要获取。而这部分内存是通过如下方式确定和下发的当子虚拟机启动后需要同父虚拟机交互时,处于虚拟机监控器中的内存分析模块会发现某个VCPU将访问一块丢失的内存,此时内存分析模块会剥夺分给这个VCPU的时间片,将该VCPU切入暂停状态,并从父虚拟机中获取这部分内存信息,将数据从父虚拟机中拷贝至子虚拟机所处的主机中,然后将VCPU跳转至运行状态,从而保证子虚拟机的正确运行。图4为本发明应用实例中内存快速复制示意图。由于每个子虚拟机需要跟父虚拟机交互的内容大致相同,他们一般需要执行相同的代码和访问相同的数据结构。如果每个虚拟机都等到运行的时候向父虚拟机发起访问请求,然后再传输,这样产生的网络流量负载是相当惊人的。所以当有某个子虚拟机向父虚拟机申请内存数据时,将这些数据通过网络组播给所有的子虚拟机。在一次操作中将数据发送给所有的子虚拟机比点对点的每次发送要极大的降低网络负载和提高效率。步骤A3、当子虚拟机的计算任务结束时,关闭子虚拟机;由于每个子虚拟机在主机上不存在存储系统,所以在子虚拟机运算的结果全部存在内存中,这样关闭虚拟机操作将变得非常简单而且快速。每个子虚拟机被创建时,都是带有特殊的唯一标识,在父虚拟机所处的主机上,维护一张任务列表,这些列表维护了虚拟机的任务和唯一标识,当子虚拟机运算结束时,会将运算结果的内存信息返回给父虚拟机,然后父虚拟机通过唯一标识对子虚拟机实现关闭,这样由于不需要同步内存和存储里面的数据,虚拟机的关闭时间将大大缩短,而且子虚拟机运算所占据的内存将全部释放,实现资源的闻效利用。上述的目标主要是通过虚拟机的复制来实现的。但是在虚拟机的复制中,经常需要实现虚拟机的快速复制,希望在非常短的时间内,完成计算资源的准备;当计算任务完成时,希望可以即时释放资源,让资源可以用于其它计算任务。由上可以看出,采用一个内存分析模块来计算哪些内存信息是子虚拟机所必须的,复制出的子虚拟机并不是完整的复制父虚拟机的全部内存信息,这样就可以大大提高虚拟机的复制速度,再采用内存复制模块来将需要复制的内存信息组播给所有的复制出来的子虚拟机,通过在一次操作中将数据发送给所有的子虚拟机来提高复制的速度,进而采用内存回收模块来实现子虚拟机的快速关闭。内存回收模块负责将子虚拟机运算结果返回给父虚拟机,然后直接关闭子虚拟机,释放其内存信息。图5为本发明提供的复制虚拟机的系统实施例的结构示意图。图5所示复制虚拟机的系统实施例,包括承载该父虚拟机的终端,包括获取装置,用于当发起将一虚拟机作为父虚拟机进行虚拟机复制操作时,获取子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据;发送装置,与所述获取装置相连,用于向其他终端发送子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据;控制装置,用于在父虚拟机得到子虚拟机执行计算任务的执行结果后,发起关闭已执行完计算任务的子虚拟机的操作;承载子虚拟机的终端,包括执行装置,用于根据子虚拟机启动所需的内存信息,启动子虚拟机,并执行父虚拟机的计算任务数据;上报装置,与所述执行装置和所述控制装置相连,用于当子虚拟机的计算任务执行结束后,向所述父虚拟机上报执行结果。其中,所述子虚拟机启动所需的内存信息包括父虚拟机的元数据以及父虚拟机的操作系统内核数据。其中,所述子虚拟机启动所需的内存信息是通过如下方式发送的,包括当检测到父虚拟机进入暂停状态后,将存储有所述子虚拟机启动所需的内存信息对应的内存数据拷贝到一个内存块中,并发送给其他终端。其中,所述承载该父虚拟机的终端,还包括申请装置,用于在子虚拟机执行计算任务过程中,机向父虚拟机发起内存申请;其中所述执行装置在加载所申请的内存信息,并继续执行所述计算任务;承载该父虚拟机的终端,还包括识别装置,与所述申请装置相连,用于根据子虚拟机访问过程中本地内存的状态信息,确定该子虚拟机所申请的内存信息;所述发送装置还用于向所述承载子虚拟机的终端发送该子虚拟机所申请的内存信息。其中,该子虚拟机所申请的内存信息是通过如下方式确定的在子虚拟机访问父虚拟机后,如果检测到该子虚拟机访问一丢失的内存,则将所访问的丢失的内存作为与父虚拟机交互所需的内存信息。其中,所申请的内存信息是通过如下方式发送的,包括暂停发起内存申请的子虚拟机的访问,将与所述父虚拟机交互所需的内存信息拷贝到一个内存块中,并发送承载该发起内存申请的子虚拟机的终端。可选的,所述发送装置,还用于向父虚拟机所有的子虚拟机均发送该子虚拟申请的内存信息。本发明提供的实施例通过按需内存复制,并不完整的复制虚拟机的所有内存,这样就可以大大提高虚拟机的复制速度。另外通过分布式系统,将计算完成的任务传回父虚拟机。复制的子虚拟机就可以快速关闭,即时释放资源。这样,就实现了虚拟机的快速复制和即时释放。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
权利要求
1.一种复制虚拟机的方法,其特征在于,包括: 当发起将一虚拟机作为父虚拟机进行虚拟机复制操作时,承载该父虚拟机的终端获取子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据,并向其他终端发送子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据; 其他终端根据子虚拟机启动所需的内存信息,启动子虚拟机,并执行父虚拟机的计算任务数据; 当子虚拟机的计算任务执行结束后,向所述父虚拟机上报执行结果; 在父虚拟机得到的执行结果 后,承载该父虚拟机的终端发起关闭已执行完计算任务的子虚拟机的操作。
2.根据权利要求1所述的方法,其特征在于,所述子虚拟机启动所需的内存信息包括父虚拟机的元数据以及父虚拟机的操作系统内核数据。
3.根据权利要求1所述的方法,其特征在于,所述子虚拟机启动所需的内存信息是通过如下方式发送的,包括: 当检测到父虚拟机进入暂停状态后,将存储有所述子虚拟机启动所需的内存信息对应的内存数据拷贝到一个内存块中,并发送给其他终端。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 在子虚拟机执行计算任务过程中,如果子虚拟机向父虚拟机发起内存申请后,承载该父虚拟机的终端根据子虚拟机访问过程中本地内存的状态信息,确定该子虚拟机所申请的内存信息,并向所述承载子虚拟机的终端发送该子虚拟机所申请的内存信息; 承载子虚拟机的终端加载所申请的内存信息,并继续执行所述计算任务。
5.根据权利要求4所述的方法,其特征在于,该子虚拟机所申请的内存信息是通过如下方式确定的:在子虚拟机访问父虚拟机后,如果检测到该子虚拟机访问一丢失的内存,则将所访问的丢失的内存作为与父虚拟机交互所需的内存信息。
6.根据权利要求4所述的方法,其特征在于,所申请的内存信息是通过如下方式发送的,包括: 暂停发起内存申请的子虚拟机的访问,将与所述父虚拟机交互所需的内存信息拷贝到一个内存块中,并发送承载该发起内存申请的子虚拟机的终端。
7.根据权利要求4至6任一所述的方法,其特征在于,所述方法还包括: 向父虚拟机所有的子虚拟机均发送该子虚拟申请的内存信息。
8.一种复制虚拟机的系统,其特征在于,包括: 承载父虚拟机的终端,包括: 获取装置,用于当发起将一虚拟机作为父虚拟机进行虚拟机复制操作时,获取子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据; 发送装置,与所述获取装置相连,用于向其他终端发送子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据; 控制装置,用于在父虚拟机得到子虚拟机执行计算任务的执行结果后,发起关闭已执行完计算任务的子虚拟机的操作; 承载子虚拟机的终端,包括: 执行装置,用于根据子虚拟机启动所需的内存信息,启动子虚拟机,并执行父虚拟机的计算任务数据;上报装置,与所述执行装置和所述控制装置相连,用于当子虚拟机的计算任务执行结束后,向所述父虚拟机上报执行结果。
9.根据权利要求8所述的系统,其特征在于,所述子虚拟机启动所需的内存信息包括父虚拟机的元数据以及父虚拟机的操作系统内核数据。
10.根据权利要求8所述的系统,其特征在于,所述子虚拟机启动所需的内存信息是通过如下方式发送的,包括:当检测到父虚拟机进入暂停状态后,将存储有所述子虚拟机启动所需的内存信息对应的内存数据拷贝到一个内存块中,并发送给其他终端。
11.根据权利要求8所述的系统,其特征在于:所述承载该父虚拟机的终端,还包括:申请装置,用于在子虚拟机执行计算任务过程中,机向父虚拟机发起内存申请; 其中所述执行装置在加载所申请的内存信息,并继续执行所述计算任务;承载该父虚拟机的终端,还包括:识别装置,与所述申请装置相连,用于根据子虚拟机访问过程中本地内存的状态信息,确定该子虚拟机所申请的内存信息;所述发送装置还用于向所述承载子虚拟机的终端发送该子虚拟机所申请的内存信息。
12.根据权利要求11所述的系统,其特征在于,该子虚拟机所申请的内存信息是通过如下方式确定的:在子虚拟机访问父虚拟机后,如果检测到该子虚拟机访问一丢失的内存,则将所访问的丢失的内存作为与父虚拟机交互所需的内存信息。
13.根据权利要求11所述的系统,其特征在于,所申请的内存信息是通过如下方式发送的,包括:暂停发起内存申请的子虚拟机的访问,将与所述父虚拟机交互所需的内存信息拷贝到一个内存块中,并发送承载该发起内存申请的子虚拟机的终端。
14.根据权利要求11至13任一所述的系统,其特征在于:所述发送装置,还用于向父虚拟机所有的子虚拟机均发送该子虚拟申请的内存信息。
全文摘要
本发明提供一种复制虚拟机的方法和系统。所述方法,包括当发起将一虚拟机作为父虚拟机进行虚拟机复制操作时,承载该父虚拟机的终端获取子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据,并向其他终端发送子虚拟机启动所需的内存信息以及父虚拟机的计算任务数据;其他终端根据子虚拟机启动所需的内存信息,启动子虚拟机,并执行父虚拟机的计算任务数据;当子虚拟机的计算任务执行结束后,向所述父虚拟机上报执行结果;在父虚拟机得到的执行结果后,承载该父虚拟机的终端发起关闭已执行完计算任务的子虚拟机的操作。
文档编号G06F9/455GK103077072SQ20131000114
公开日2013年5月1日 申请日期2013年1月4日 优先权日2013年1月4日
发明者熊坤, 张东 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1