恢复虚拟机的方法、系统及控制器、服务器、寄宿主的制造方法

文档序号:6491480阅读:179来源:国知局
恢复虚拟机的方法、系统及控制器、服务器、寄宿主的制造方法
【专利摘要】本发明公开了一种恢复虚拟机的方法、系统及控制器、服务器、寄宿主机,所述方法包括:服务器接收来自控制器的第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机;服务器根据第一迁移指令将虚拟机的镜像的内存数据单次预拷贝至寄宿主机,在寄宿主机恢复虚拟机。通过上述方式,本发明能够有效提高虚拟机的启动时间。
【专利说明】恢复虚拟机的方法、系统及控制器、服务器、寄宿主机
【技术领域】
[0001]本发明涉及计算机【技术领域】,特别是涉及一种恢复虚拟机的方法、系统及控制器、服务器、寄宿主机。
【背景技术】
[0002]虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。进入虚拟机的操作系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响。其中,一台物理计算机上可以虚拟出一台或多台虚拟机。
[0003]虚拟机的启动方式主要有三种,分别为:光驱启动、硬盘启动及网络启动。光驱启动指虚拟机从光驱启动。网络启动为指虚拟机不是在寄宿主机的本地硬盘启动,而是从网络共享的硬盘启动。硬盘启动指虚拟机从寄宿主机的硬盘启动。
[0004]光驱启动主要适用于空虚拟机的操作系统的安装场景,但启动时较慢,不宜推广,不适用于大规模场景使用。网络启动要求所有使用该共享的硬盘启动的虚拟机的应用场景必须一致,因而限制虚拟机的应用场景,并且启动时间受网络状况的影响,启动过程不稳定,不利推广应用。硬盘启动为虚拟机常用的启动方式,也是最简单最直接的方式,但启动时间慢。如前述,现有技术恢复虚拟机时启动速度过慢,极大地影响了虚拟机的推广应用。

【发明内容】

[0005]本发明实施方式主要解决的技术问题是提供一种恢复虚拟机的方法及控制器、月艮务器、寄宿主机,能够提高虚拟机的启动时间。
[0006]第一方面,提供一种恢复虚拟机的方法,其包括以下步骤:控制器接收启动虚拟机的启动通知;控制器查询服务器是否存在虚拟机的镜像,若服务器存在虚拟机的镜像,控制器分别向服务器及寄宿主机发送第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机。
[0007]在第一方面的第一种可能的实现方式中,控制器接收启动虚拟机的启动通知,具体包括:控制器接收来自服务器发送的虚拟机重启通知;或者,控制器接收来自寄宿主机发送的虚拟机的特殊状态通知,特殊状态包括虚拟机启动状态或者宕机状态。
[0008]结合第一方面实现方式,在第一方面的第二种可能的实现方式中,控制器接收启动虚拟机的启动通知之前,还包括:控制器分别向服务器和虚拟机的寄宿主机发送第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝至服务器,以使服务器生成虚拟机的镜像。
[0009]结合第一方面实现方式,在第一方面的第三种可能的实现方式中,控制器分别向服务器和虚拟机的寄宿主机发送第二迁移指令的步骤之前,还包括:控制器接收来自服务器的备份虚拟机的第一备份指令,并根据第一备份指令生成第二迁移指令。
[0010]第二方面,提供一种恢复虚拟机的方法,其包括以下步骤:服务器接收来自控制器的第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机;服务器根据第一迁移指令将虚拟机的镜像的内存数据单次预拷贝至寄宿主机,以使寄宿主机恢复虚拟机。
[0011]在第二方面的第一种可能的实现方式中,服务器接收来自控制器的第一迁移指令,具体包括:服务器接收来自虚拟机第一消息,第一消息用于指示虚拟机重启;服务器根据第一消息,向控制器发送虚拟机重启通知,并向寄宿主机发送摧毁虚拟机的摧毁指令;月艮务器接收由控制器根据虚拟机的重启通知而发送的第一迁移指令。
[0012]结合第二方面实现方式,在第二方面的第二种可能的实现方式中,服务器接收来自控制器的第一迁移指令的步骤之前,还包括:服务器接收来自控制器的第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到服务器;服务器接收来自虚拟机的内存数据,并生成虚拟机的镜像。
[0013]结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,服务器接收来自控制器的第二迁移指令的步骤之前,还包括:
[0014]服务器接收来自虚拟机的连接请求,建立与虚拟机的连接;服务器获取虚拟机的IP地址和计算机名称;服务器根据虚拟机的IP地址和计算机名称,查询是否存在虚拟机的镜像;若服务器没有存在虚拟机的镜像,则服务器向控制器发送备份虚拟机的第一备份指令;服务器接收来自控制器的第二迁移指令的步骤包括:服务器接收由控制器根据第一备份指令发送的第二迁移指令。
[0015]结合第二方面的第二种可能的实现方式,在第二方面的第四种可能的实现方式中,服务器接收来自控制器的第二迁移指令的步骤包括:服务器接收由控制器的触发模块触发的第二迁移指令。
[0016]结合第二方面实现方式,在第二方面的第五种可能的实现方式中,服务器接收来自控制器的第一迁移指令的步骤之前,还包括:服务器接收来自虚拟机发送的备份虚拟机的第二备份指令;服务器根据第二备份指令向寄宿主机发送第三迁移指令;服务器接收由寄宿主机根据第三迁移指令而传输的虚拟机的内存数据,并生成虚拟机的镜像。
[0017]第三方面,提供一种恢复虚拟机的方法,其包括以下步骤:寄宿主机接收来自控制器的第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝到寄宿主机;寄宿主机根据第一迁移指令接收虚拟机的镜像的内存数据,并在寄宿主机上恢复虚拟机。
[0018]在第三方面的第一种可能实现方式中,寄宿主机接收来自控制器的第一迁移指令的步骤之前,还包括:寄宿主机检测虚拟机的特殊状态,特殊状态包括虚拟机启动状态或者宕机状态;寄宿主机在检测到虚拟机的特殊状态时,向控制器发送虚拟机的特殊状态通知;寄宿主机接收来自控制器的第一迁移指令,具体包括:寄宿主机接收由控制器根据虚拟机的特殊状态通知发送的第一迁移指令。
[0019]结合第三方面实现方式,在第三方面的第二种可能实现方式中,寄宿主机接收来自控制器的第一迁移指令的步骤之前,还包括:寄宿主机接收来自控制器的第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到服务器;寄宿主机根据第二迁移指令或者第三迁移指令挂起虚拟机,并将虚拟机的内存数据单次预拷贝到服务器,在服务器上生成虚拟机的镜像。[0020]结合第三方面实现方式,在第三方面的第三种可能实现方式中,寄宿主机接收来自控制器的第一迁移指令之前,还包括:寄宿主机接收来自服务器的第三迁移指令,第三迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到服务器,在服务器上生成虚拟机的镜像;寄宿主机根据第三迁移指令挂起虚拟机,并将虚拟机的内存数据单次预拷贝到服务器,以使服务器生成虚拟机的镜像。
[0021]第四方面,提供一种控制器,其包括:第一接收模块,用于接收启动虚拟机的启动通知;查询模块,用于查询服务器是否存在虚拟机的镜像;第一发送模块,用于在查询模块查询到虚拟机的镜像后,分别向服务器和寄宿主机发送第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机。
[0022]在第四方面的第一种可能实现方式中,第一接收模块具体用于:接收来自服务器发送的虚拟机重启通知;或者,接收来自寄宿主机发送的虚拟机的特殊状态通知,特殊状态包括虚拟机的启动状态和宕机状态。
[0023]结合第四方面的实现方式,在第四方面的第二种可能的实现方式中,控制器还包括:第二发送模块,用于分别向寄宿主机和服务器发送第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝至服务器,以使服务器生成虚拟机的镜像。
[0024]结合第四方面的第二种可能实现方式,在第四方面的第三种可能的实现方式中,控制器还包括:第二接收模块,用于接收来自服务器的备份虚拟机的第一备份指令;生成模块,用于根据第一备份指令生成第二迁移指令。
[0025]结合第四方面的第二种可能的实现方式,在第四方面的第四种可能的实现方式中,控制器包括:触发生成模块,用于触发第二迁移指令。
[0026]第五方面,提供一种服务器,包括:第一接收模块,用于接收来自控制器的第一迁移指令,其中,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机;预拷贝模块,用于根据第一迁移指令,将虚拟机的镜像的内存数据单次预拷贝到寄宿主机,以使寄宿主机上恢复虚拟机。
[0027]在第五方面的第一种可能实现方式中,服务器还包括:第二接收模块,用于接收来自虚拟机的第一消息,第一消息用于指不虚拟机重启;第一发送模块,用于根据第一消息,向控制器发送虚拟机重启通知,并向寄宿主机发送摧毁虚拟机的摧毁指令;第一接收模块具体为:接收由控制器根据虚拟机重启通知发送的第一迁移指令。
[0028]结合第五方面实现方式,在第五方面的第二种可能实现方式中,服务器还包括:第三接收模块,用于接收来自控制器的第二迁移指令;第一接收生成模块,根据第二迁移指令接收来自寄宿主机的虚拟机的内存数据,并生成虚拟机的镜像。
[0029]结合第五方面的第二种实现方式中,在第五方面的第三种可能实现方式中,服务器还包括:接收建立模块,用于接收来自虚拟机的连接请求,建立与虚拟机的连接;获取模块,用于获取虚拟机的IP地址和计算机名称;查询模块,用于根据IP地址和计算机名称,查询是否存在虚拟机的镜像;第二发送模块,用在于查询模块没有查询到虚拟机的镜像时,向控制器发送备份虚拟机的第一备份指令。第三接收模块具体用于接收由控制器根据第一备份指令而发送的第二迁移指令。
[0030]结合第五方面的第二种实现方式中,在第五方面的第四种可以实现方式中,第三接收模块具体用于:接收由控制器的触发模块触发的第二迁移指令。[0031]结合第五方面实现方式,在第五方面的第五种可能实现方式中,服务器包括:第四接收模块,接收来自虚拟机发送的备份虚拟机的第二备份指令;第三发送模块,用于根据第二备份指令向虚拟机的寄宿主机发送第三迁移指令;第二接收生成模块,用于接收来由寄宿主机根据第三迁移指令而传输的虚拟机的内存数据,并生成虚拟机的镜像。
[0032]第六方面,提供一种寄宿主机,其包括:第一接收模块,用于接收来自控制器的第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝到寄宿主机;接收恢复模块,用于根据第一迁移指令接收来自服务器传输的虚拟机的镜像的内存数据,并在寄宿主机上恢复出虚拟机。
[0033]在第六方面的第一种可以实现方式中,寄宿主机还包括:检测模块,用于检测虚拟机的特殊状态,特殊状态包括虚拟机的启动状态和宕机状态;第一发送模块,用于在检测模块检测到虚拟机的特殊状态时,向控制器发送虚拟机的特殊状态通知;第一接收模块具体用于接收由控制器根据虚拟机的特殊状态通知发送的第一迁移指令。
[0034]结合第六方面的实现方式,在第六方面的第二种可能实现方式中,寄宿主机还包括:第二接收模块,用于接收来自控制器的第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到服务器;预拷贝模块,用于挂起虚拟机,并将虚拟机的内存数据单次预拷贝到服务器。
[0035]结合第六方面的实现方式,在第六方面的第三种可能实现方式中,寄宿主机还包括:第三接收模块,用于接收服务器的第三迁移指令,第三迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到服务器;预拷贝模块,用于根据第三迁移指令挂起虚拟机,并将虚拟机的内存数据单次预拷贝到服务器。
[0036]第七方面,本发明实施例还提供了一种虚拟机恢复系统,包括上述第四方面所述任一控制器、上述第五方面所述的任一服务器和上述第六方面任一所述的寄宿主机。
[0037]本发明实施方式的有益效果是:本发明预先通过内存迁移的方式,把虚拟机的内存数据单次预拷贝到服务器上,在服务器上生成虚拟机的镜像;在虚拟机重启、关机后启动或者虚拟机宕机时,将服务器上虚拟机的镜像的内存数据单次预拷贝到寄宿主机,寄宿主机再为虚拟机挂载硬盘,从而恢复出虚拟机,并且该虚拟机可带启动项。使得虚拟机不再需要经历在寄宿主机生成虚拟机的生成过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。而虚拟机的内存数据一般较小,从服务器单次预拷贝到寄宿主机的时间极短,不影响到虚拟机的启动时间。
【专利附图】

【附图说明】
[0038]图1是本发明恢复虚拟机的方法的第一实施方式的流程图;
[0039]图2是本发明恢复虚拟机的方法的第二实施方式的流程图;
[0040]图3是本发明恢复虚拟机的方法的第三实施方式的流程图;
[0041]图4是本发明恢复虚拟机的方法的第四实施方式的流程图;
[0042]图5是本发明第四实施方式中服务器接收第一迁移指令的子步骤的流程图;
[0043]图6是本发明恢复虚拟机的方法的第五实施方式的流程图;
[0044]图7是本发明恢复虚拟机的方法的第六实施方式的流程图;
[0045]图8是本发明控制器的第一实施方式的结构示意图;[0046]图9是本发明控制器的第二实施方式的结构示意图;
[0047]图10是本发明服务器的第一实施方式的结构示意图;
[0048]图11是本发明服务器的第二实施方式的结构示意图;
[0049]图12是本发明寄宿主机的第一实施方式的结构示意图;
[0050]图13是本发明寄宿主机的第二实施方式的结构示意图;
[0051]图14是本发明恢复虚拟机的系统实施方式的结构示意图;
[0052]图15是本发明恢复虚拟机的系统实施方式中初次启动虚拟机的流程图;
[0053]图16是本发明恢复虚拟机的系统实施方式中,虚拟机内部操作备份流程图;
[0054]图17是本发明恢复虚拟机的系统实施方式中,虚拟机发起内部重启的流程图;
[0055]图18是本发明恢复虚拟机的系统实施方式中,虚拟机启动的流程图。
【具体实施方式】
[0056]请参阅图1,图1是本发明恢复虚拟机的方法的第一实施方式的流程图。如图所示,所述方法包括:
[0057]步骤SlOl:控制器接收启动虚拟机的启动通知;
[0058]控制器为管理一个集群下所有虚拟机的节点,并且控制器与集群下所有的寄宿主机相连接。虚拟机为寄宿在寄宿主机上的虚拟化的计算机系统。寄宿主机为物理意义上的计算机。一台寄宿主机可以划分出多台虚拟机。寄宿主机能够感知寄宿在该寄宿主机的上虚拟机的关机、启动等行为。其中,寄宿主机感知到的虚拟机的启动状态和宕机状态时,把虚拟机的启动状态和宕机状态作为虚拟机的特殊状态,并向控制器发送虚拟机的特殊状态通知。因此,步骤SlOl可具体为:控制器接收来自寄宿主机发送的虚拟机的特殊状态通知,特殊状态包括虚拟机的启动状态和宕机状态。
[0059]服务器作为虚拟机的影子节点,并且与集群下所有的虚拟机的客户端保持服务器客户端的关系。客户端作为虚拟机内部的一个程序,通过系统接口感知虚拟机的行为,并且将感知到的虚拟机的行为信息,发送到服务器。由于客户端作为虚拟机内部的一个程序,因此,客户端会比寄宿主机更早一步感知到虚拟机的行为。服务器将获得的虚拟机的行为信息,发送到控制器。因此,步骤SlOl又可具体为:控制器接收来自服务器发送的虚拟机重启通知。
[0060]步骤S102:控制器查询服务器是否存在虚拟机的镜像,若服务器存在虚拟机的镜像,则进入步骤S103 ;
[0061]步骤S103:控制器分别向服务器及寄宿主机发送第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机;
[0062]虚拟机的镜像为虚拟机在服务器上的一个副本,并且服务器上运行着该虚拟机的镜像,简而言之,服务器上运行着与运行在寄宿主机上的虚拟机一样的虚拟机。当然,服务器还可以对虚拟机的镜像进行内存压缩,形成压缩镜像。
[0063]单次预拷贝是一次性(包括内存中的脏数据)将寄宿主机的虚拟机的内存数据拷贝到服务器。服务器接收到虚拟机的内存数据后,会在服务器生成虚拟机。其中,控制器,还可向寄宿主机发送挂载指令,使寄宿主机为虚拟机挂载硬盘。
[0064]在本发明实施方式中,控制器接收虚拟机的启动通知后,指示服务器将虚拟机的镜像的内存数据单次预拷贝到寄宿主机,恢复虚拟机。使得虚拟机的启动不需要经历在寄宿主机生成虚拟机的生成过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。而虚拟机的内存数据较小,从服务器预拷贝到寄宿主机的时间极短,不影响到虚拟机的启动时间。
[0065]请参阅图2,图2是本发明恢复虚拟机的方法第二实施方式的流程图。如图所示,包括:
[0066]步骤S201:控制器接收来自服务器的备份虚拟机的第一备份指令,并根据第一备份指令生成第二迁移指令;
[0067]虚拟机为寄宿在寄宿主机上的虚拟化的计算机系统。服务器为集群中的虚拟机的影子节点。服务器可为单独部署的物理服务器,也可为虚拟化部署的虚拟服务器,例如:通过虚拟机形式,提供服务器功能。其中,服务器与控制器处于相同级别,服务器与集群中的所有虚拟机的保持连接,并且服务器能够获取虚拟机的IP地址和计算机名称。进一步的,服务器根据IP地址和计算机名称查询本地是否存在虚拟机的镜像,若本地没有该虚拟机的镜像,在接收到客户端发送的虚拟机启动完成的信息后,向控制器发送备份虚拟机的第一备份指令。
[0068]控制器用于管理集群下的所有虚拟机,并与虚拟机的寄宿主机相连接,通过接收寄宿主机的信息,而感知虚拟机的行为,比如:虚拟机的启动、关机等等。在本发明实施方式中,也可在控制器设置触发模块,触发模块触发第二迁移指令,其中,触发模块的触发点可以根据实情况进行设置,例如:重启或开机自动同步、手动同步、应用修改后同步、定时同步等等。控制器感知到虚拟机的行为满足触发点时触发第二迁移指令,比如:应用修改后同步,则为控制器感知到虚拟机的增加应用程序或者减少应用程序,则控制器触发第二迁移指令。因此,步骤S201也可为:控制器的触发模块触发生成第二迁移指令。
[0069]步骤S202:控制器分别向虚拟机的寄宿主机和服务器发送第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝至服务器,以在服务器生成虚拟机的镜像。
[0070]寄宿主机为运行虚拟机的物理主机。一台寄宿主机可以运行多个虚拟机。这里单次预拷贝为指直接挂起寄宿主机的虚拟机,并一次性将寄宿主机上的虚拟机的内存数据(包括脏数据)拷贝到服务器上,在服务器上生成虚拟机的镜像。虚拟机的镜像为指在服务器上运行着与运行在寄宿主机上的虚拟机一样的虚拟机。当然,服务器还可以对虚拟机的镜像进行内存压缩,形成压缩镜像。
[0071]步骤S203:控制器接收启动虚拟机的启动通知;
[0072]寄宿主机能够感知寄宿在该寄宿主机的虚拟机的一切行为,并且将感知到的信息发送到控制器。其中,寄宿主机感知到虚拟机启动和宕机时,并虚拟机的启动状态和宕机状态作为虚拟机的特殊状态,并把向控制器发送特殊状态通知。需要说明的是:寄宿主机检测到虚拟机宕机后,除了发送特殊状态通知到控制器之外,寄宿主机还强行关闭已经宕机的虚拟机。步骤S203可具体为:控制器接收来自寄宿主机发送的虚拟机的特殊状态通知,特殊状态包括虚拟机启动状态和宕机状态。
[0073]其中,虚拟机要进行重启,但尚未重启时,客户端通过系统接口感知到虚拟机要进行重启。相比于寄宿主机,客户端更早一步的感知虚拟机的重启行为。若此时,马上进行虚拟机的快速启动过程,使得虚拟机的启动不再需要经历虚拟机的关机时间,进一步提高虚拟机的启动时间。客户端将感知的虚拟机重启行为的信息发送到服务器。服务器向控制器发送虚拟机重启通知。因此,步骤S203又可具体为:控制器接收来自服务器发送的虚拟机重启通知。
[0074]步骤S204:控制器查询服务器是否存在虚拟机的镜像,若服务器存在虚拟机的镜像,则进入步骤S205 ;
[0075]步骤S205:控制器分别向服务器及寄宿主机发送第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机;
[0076]服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机,寄宿主机上恢复虚拟机。其中,控制器还可向寄宿主机发送挂载指令,使寄宿主机为虚拟机挂载硬盘。寄宿主机为虚拟机挂载硬盘后,使虚拟机具备了完整的虚拟机功能。寄宿主机为虚拟机挂载的硬盘可为寄宿主机自身携带的硬盘,也可以为网络共享的硬盘。
[0077]在本发明实施方式中,通过控制器指示服务器将虚拟机的镜像的内存数据单次预拷贝到虚拟机所在的寄宿主机,在寄宿主机上恢复虚拟机。使得虚拟机的启动不需要经历在寄宿主机生成虚拟机的生成过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。而虚拟机的内存数据较小,从服务器预拷贝到寄宿主机的时间极短,不影响到虚拟机的启动时间。
[0078]请参阅图3,图3是本发明恢复虚拟机的方法的第三实施方式的流程图。如图所示,所述方法包括:
[0079]步骤S301:服务器接收来自控制器的第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机;
[0080]控制器和服务器均处于管理级别的节点。其中,控制器与集群下所有的寄宿主机相连接,服务器与集群下所有的虚拟机的客户端保持服务器客户端的关系。
[0081]虚拟机的镜像为运行在服务器上的虚拟机的一个副本。服务器还可压缩虚拟机的镜像的内存数据,形成压缩镜像。若服务器上的虚拟机的镜像为压缩镜像,将虚拟机的镜像的内存数据单次预拷贝到寄宿主机之前,还要解压该压缩镜像。
[0082]步骤S302:服务器根据第一迁移指令将虚拟机的镜像的内存数据单次预拷贝至寄宿主机,以在寄宿主机恢复虚拟机。
[0083]这里单次预拷贝为指直接挂起服务器上的虚拟机,并一次性将服务器上的虚拟机的内存数据(包括脏数据)拷贝到寄宿主机。将虚拟机的镜像的内存数据单次预拷贝至寄宿主机之后,寄宿主机上直接恢复出虚拟机。
[0084]在本发明实施方式中,通过将服务器上的虚拟机的镜像的内存数据单次预拷贝到寄宿主机,在寄宿主机上直接恢复出虚拟机,使得虚拟机的启动不再需要经历在寄宿主机生成虚拟机的生成过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。而虚拟机的内存数据较小,从服务器预拷贝到寄宿主机的时间极短,不影响到虚拟机的启动时间。
[0085]请参阅图4,图4是本发明恢复虚拟机的方法的第四实施方式的流程图。如图所示,所述方法包括:
[0086]步骤S401:服务器接收来自虚拟机的连接请求,建立与虚拟机的连接;[0087]服务器作为虚拟机的影子节点,可将虚拟机迁移到服务器上,在服务器上运行一个虚拟机的镜像。服务器与集群下所有的虚拟机保持连接。。
[0088]步骤S402:服务器获取虚拟机的IP地址和计算机名称;
[0089]IP地址和计算机名称构成虚拟机的唯一标识。通过IP地址和计算机名称可以识别出不同的虚拟机。
[0090]步骤S403:服务器根据IP地址和计算机名称,查询是否存在虚拟机的镜像,若没有,进入步骤S404 ;
[0091]虚拟机的镜像为与运行在寄宿主机上的虚拟机一样的虚拟机,只不过虚拟机的镜像运行在服务器上,作为运行在寄宿主机上的虚拟机的一个副本。
[0092]步骤S404:服务器向控制器发送备份虚拟机的第一备份指令;
[0093]控制器用于管理集群下所有虚拟机,并且控制器与集群下所有的寄宿主机相连接。控制器接收到第一备份指令后,分别向服务器和虚拟机所在的寄宿主机发送第二迁移指令。
[0094]步骤S405:服务器接收由控制器根据第一备份指令发送的第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到服务器;
[0095]寄宿主机接收到第二迁移指令后,将虚拟机的内存数据单次预拷贝到服务器。
[0096]可选的,可在控制器上设置触发模块,触发模块主要用于备份虚拟机。控制器监测到集群下的虚拟机的状态到达触发模块的触发点时,触发模块触发第二迁移指令,其中,触发点可以根据实情况进行设置,例如:重启或开机自动同步,手动同步,应用修改后同步,定时自动同步等。控制器感知到虚拟机的行为满足触发点时触发第二迁移指令。则步骤S406:服务器接收由控制器的触发模块触发的第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到服务器。
[0097]可选的,虚拟机向服务器发送备份虚拟机的第二备份指令。在本发明实施方式中,可在虚拟机上设置备份按钮,点击备份按钮,虚拟机向服务器发送第二备份指令,当然,还可以其他方式触发虚拟机向服务器发送第二备份指令,例如:语音命令等等。
[0098]则步骤S407:服务器接收来自虚拟机发送的备份虚拟机的第二备份指令;
[0099]步骤S408:服务器根据第二备份指令向寄宿主机发送第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到服务器;
[0100]步骤S409:服务器接收来自寄宿主机的虚拟机的内存数据,并生成虚拟机的镜像;
[0101]服务器接收来自寄宿主机的虚拟机的内存数据后,在服务器上生成虚拟机,该虚拟机作为运行在寄宿主机的虚拟机的镜像。并且,该虚拟机的镜像可以不挂载硬盘。
[0102]步骤S410:服务器接收来自控制器的第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机;
[0103]控制器可通过接收来自寄宿主机的信息,而获知虚拟机的启动行为。控制器查询服务器是否存在虚拟机的镜像,若存在虚拟机的镜像,则分别向寄宿主机和服务器发送第一迁移指令。
[0104]进一步的,若虚拟机是进行重启动作,相比于寄宿主机,虚拟机能够更早一步感知自身的行为。并且虚拟机发送虚拟机重启的消息到服务器,服务器再将虚拟机重启通知发送到控制器,控制器根据虚拟机重启通知分别向虚拟机的寄宿主机和服务器发送第一迁移指令,因此,步骤S410又可包括:
[0105]子步骤S4101:服务器接收来自虚拟机的第一消息,第一消息用于指示虚拟机重启;
[0106]子步骤S4102:服务器根据第一消息,向控制器发送虚拟机重启通知,并向虚拟机的寄宿主机发送摧毁虚拟机的摧毁指令;
[0107]寄宿主机接收摧毁虚拟机的摧毁指令后,马上摧毁虚拟机,相比于传统关闭虚拟机的方法,此方法关闭虚拟机的时间更短,能够进一步的缩短虚拟机的启动时间。并且,寄宿主机通过摧毁指令摧毁虚拟机,再通过接收来自服务器的虚拟机的内存数据,恢复虚拟机的过程,不属于虚拟机传统重启过程,因此,寄宿主机没有感知虚拟机的重启行为,寄宿主机不会向控制器发送虚拟机重启通知。
[0108]子步骤S4103:服务器接收由控制器根据虚拟机重启通知发送的第一迁移指令。
[0109]步骤S411:服务器根据第一迁移指令将虚拟机的镜像的内存数据单次预拷贝至寄宿主机,以在寄宿主机恢复虚拟机。
[0110]在本发明实施方式中,通过将服务器上的虚拟机的内存数据单次预拷贝到寄宿主机,在寄宿主机上直接恢复虚拟机,使得虚拟机不再需要经历在寄宿主机恢复虚拟机的恢复出过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。而虚拟机的内存数据较小,从服务器预拷贝到寄宿主机的时间极短,不影响到虚拟机的启动时间。
[0111]请参阅图6,图6是本发明恢复虚拟机的方法第五实施方式的流程图。如图所示,所述方法包括:
[0112]步骤S501:寄宿主机接收来自控制器的第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝到寄宿主机;
[0113]控制器为管理集群下所有虚拟机的节点。寄宿主机为物理意义上的主机,虚拟机必须运行在寄宿主机上。这里单次预拷贝为指一次性把服务器上上的虚拟机的所有内存数据拷贝到寄宿主机。
[0114]步骤S502:寄宿主机根据第一迁移指令接收虚拟机的镜像的内存数据,并恢复虚拟机;
[0115]进一步,寄宿主机还可接收来自控制器的挂载指令,并根据挂载指令为虚拟机挂载硬盘。此处的硬盘可为寄宿主机自身的硬盘,也可以为网络上的共享硬盘。
[0116]在本发明实施方式中,通过寄宿主机接收来自服务器的虚拟机的镜像的内存数据,直接在寄宿主机上恢复虚拟机,使得虚拟机的启动不再需要经历在寄宿主机生成虚拟机的生成过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。而虚拟机的内存数据较小,从服务器预拷贝到寄宿主机的时间极短,不影响虚拟机的启动时间。
[0117]请参阅图7,图7是本发明恢复虚拟机的方法的第六实施方式的流程图。如图所示,所述方法包括:
[0118]步骤S601:寄宿主机接收来自控制器的第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到服务器;
[0119]寄宿主机为用于生成虚拟机的物理主机,并且寄宿主机与控制器连接。可选的,第二迁移指令可由控制器发送的。控制器的触发模块触发第二迁移指令,或者,控制器接收来自服务器的第一备份指令而生成第二迁移指令。
[0120]服务器与控制器处于相同级别,与群集下所有虚拟机连接。可选的,服务器接收来自虚拟机的备份虚拟机的第二备份指令后,可直接向寄宿主机发送第三迁移指令。则步骤S601又可具体为:寄宿主机接收来自服务器的第三迁移指令,第三迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到所述服务器,在服务器上生成虚拟机的镜像。。
[0121]步骤S602:寄宿主机根据第二迁移指令挂起虚拟机,并将虚拟机的内存数据单次预拷贝到服务器,以使服务器生成虚拟机的镜像;
[0122]这里单次预拷为指将寄宿主机的虚拟机的内存数据(包括脏数据)一次性拷贝到服务器。虚拟机的内存数据单次预拷贝到服务器后,在服务器上生成一个虚拟机,该虚拟机为运行在寄宿主机的虚拟机的镜像。
[0123]步骤S603:寄宿主机接收来自控制器的第一迁移指令,第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝到寄宿主机;
[0124]虚拟机的镜像为运行在服务器上的虚拟机,并且该虚拟机与运行在寄宿主机的虚拟机相同,简而言之,镜像为运行在寄宿主机的虚拟机的一个副本。
[0125]步骤S604:寄宿主机检测虚拟机的特殊状态,特殊状态包括虚拟机的启动状态或者宕机状态;
[0126]虚拟机寄宿在寄宿主机上,寄宿主机能够感知虚拟机的一切行为。
[0127]步骤S605:寄宿主机在检测到虚拟机的特殊状态时,向控制器发送虚拟机的特殊状态通知;
[0128]进一步的,寄宿主机在检测到虚拟机宕机状态时,除了向控制器发送虚拟机虚拟机宕机通知之外,寄宿主机还直接关闭已经宕机的虚拟机。
[0129]步骤S606:寄宿主机接收由控制器根据虚拟机的特殊状态通知发送的第一迁移指令;
[0130]可选的,第一迁移指令也可以为控制器接收到服务器的信息而发送的指令。则步骤S604和步骤S605可以不存在,步骤S606可具体为:寄宿主机接收来自控制器的第一迁移指令。
[0131]步骤S607:寄宿主机根据第一迁移指令接收虚拟机的镜像的内存数据,并恢复虚拟机;
[0132]寄宿主机接收到虚拟机的镜像的内存数据后,马上在寄宿主机中生成一个虚拟机,并且该虚拟机带启动状态。不像传统方法那样,首先需要在寄宿主机上生成虚拟机,再启动虚拟机。
[0133]其中,寄宿主机还可接收来自控制器的挂载指令,并根据挂载指令为虚拟机挂载硬盘。此处的硬盘可为寄宿主机自身的硬盘,也可以为网络上的共享硬盘。
[0134]在本发明实施方式中,先将寄宿主机的虚拟机的内存数据单次预拷贝到服务器,在服务器上形成虚拟机的镜像。在虚拟机启动或重启时,从服务器上单次预拷贝到寄宿主机,快速在寄宿主机上恢复虚拟机。相比于传统方法,本发明实施方式中的虚拟机的启动不再需要经历在寄宿主机恢复出虚拟机的恢复出过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。而虚拟机的内存数据较小,从服务器预拷贝到寄宿主机的时间极短,不影响虚拟机的启动时间。[0135]本发明又提供控制器实施方式。如图8所示,控制器70包括第一接收模块701、查询模块702和第一发送模块703。第一接收块701接收启动虚拟机的启动通知。其中,虚拟机运行在寄宿主机72上,寄宿主机72能够感知虚拟机的一切行为。当虚拟机的要进行启动或者宕机时,寄宿主机72将虚拟机的启动状态和宕机状态作为特殊状态,并向控制器70发送特殊状态通知。因此,第一接收模块701又可以具体为:接收来自寄宿主机72发送的特殊状态通知,特殊状态包括虚拟机的启动状态和宕机状态。服务器71与虚拟机的连接。当虚拟机要进行重启时,虚拟机向服务器发送虚拟机重启消息,服务器接收到虚拟机重启消息后,向控制器发送虚拟机重通知。因此,第一接收模块701又可以具体为:接收来自服务器71发送的虚拟机重启通知。
[0136]查询模块702查询服务器上是否存在虚拟机的镜像。虚拟机的镜像为运行在服务器上的虚拟机的一个副本。第一发送模块703,在查询模块702查询到存在虚拟机的镜像后,分别向服务器71和寄宿主机72发送第一迁移指令,其中,第一迁移指令用于指示服务器71将虚拟机的镜像的内存数据单次预拷贝至寄宿主机72。其中,虚拟机的镜像的内存数据拷贝到寄宿主机72后,直接在寄宿主机72恢复虚拟机。单次预拷贝为指一次性将服务器上的虚拟机的所有内存数据拷贝到寄宿主机。控制器70还包括第二接收模块704、生成模块705、触发生成模块706和第二发送模块707。虚拟机启动时虚拟机与服务器71建立连接,并且服务器71获取到虚拟机的IP地址和计算机名称。服务器71查询本地是否存在该虚拟机的镜像,若没有,则在接收到来自虚拟机的启动完成的消息后,向集控制器71发送备份虚拟机的第一备份指令。第二接收模块704接收来自服务器的备份虚拟机的第一备份指令。生成模块705根据第一备份指令生成第二迁移指令。或者,触发生成模块706根据控制器70的触发点触发第二迁移指令。触发点可以设置为:重启或开机自动同步、手动同步、应用修改后同步、定时同步等。第二发送模块707分别向寄宿主机72和服务器71发送第二迁移指令,第二迁移指令用于指示寄宿主机72将虚拟机的内存数据单次预拷贝至服务器71,在服务器71生成虚拟机的镜像。其中,控制器70还可以包括第三发送模块708,用于向寄宿主机72发送挂载指令,使寄宿主机为虚拟机挂载硬盘。
[0137]在本发明实施方式中,在第一接收模块701接收虚拟机的启动通知和查询模块702查询到服务器71存在虚拟机的镜像后,第一发送模块703分别向服务器71和寄宿主机发送第一迁移指令,指示服务器71将虚拟机的镜像的内存数据单次预拷贝到虚拟机所在的寄宿主机,。使得虚拟机的启动不需要经历在寄宿主机生成虚拟机的生成过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。而虚拟机的内存数据较小,从服务器预拷贝到寄宿主机的时间极短,不影响到虚拟机的启动时间。
[0138]请参阅图9,图9是本发明控制器第二实施方式的结构示意图。如图所示,集控制器节点75包括处理器750和存储器751。
[0139]处理器750用于接收启动虚拟机的启动通知;查询服务器76是否存在虚拟机的镜像,若服务器76有虚拟机镜像,分别向服务器76及寄宿主机77发送第一迁移指令,第一迁移指令用于指示服务器76将虚拟机的镜像的内存数据单次预拷贝至寄宿主机77。
[0140]其中,处理器750执行的上述处理过程通常是由一段程序控制完成,程序存放于存储器751中,当需要进行上述动作时,将程序调入处理器750,由处理器750控制完成。当然,上述处理过程还可以是由硬件完成。处理器750还可以在完成发送第一迁移指令后,向寄宿主机77发送挂载指令,挂载指令用于指示寄宿主机77为虚拟机挂载硬盘。
[0141]本发明又提供了服务器实施方式。如图10所示,服务器80包括第一接收模块801和预拷贝模块802 ;
[0142]第一接收模块801接收来自控制器81的第一迁移指令,其中,第一迁移指令用于指示服务器80将虚拟机的镜像的内存数据单次预拷贝至寄宿主机82。其中,控制器81用于管理集群下所有的虚拟机。控制器81感知到虚拟机83启动,并查询到服务器80存在虚拟机83的镜像时,向服务器80发送第一迁移指令。若虚拟机83需要在运行途中进行重启,虚拟机83将虚拟机的重启消息发送到服务器80。因此,服务器80还包括:第二接收模块803、第一发送单元804。
[0143]第二接收模块803接收来自虚拟机83的第一消息,第一消息用于指示虚拟机83重启。第一发送模块803根据第一消息,向控制器81发送虚拟机重启通知,并向虚拟机83的寄宿主机82发送摧毁虚拟机83的摧毁指令。寄宿主机82通过摧毁指令的方式关闭虚拟机83比传统关闭虚拟机83的方式速度更快、时间更短。第一接收模块801具体为:接收由控制器81根据虚拟机重启通知而发送的第一迁移指令。预拷贝模块802根据第一迁移指令,将虚拟机83的镜像的内存数据单次预拷贝到寄宿主机82,以在寄宿主机恢复出虚拟机83。
[0144]服务器80还包括接收建立模块805、获取模块806、查询模块807、第二发送模块808、第三接收模块809、第一接收生成模块810、第四接收模块811、第三发送模块812和第二接收生成模块813。
[0145]接收建立模块805用于接收来自虚拟机83的连接请求,建立与虚拟机83的连接。获取模块804用于获取虚拟机83的IP地址和计算机名称。查询模块806根据IP地址和计算机名称,查询是否存在虚拟机83的镜像。若服务器80存在虚拟机83的镜像,第二发送模块808向控制器81发送备份虚拟机83的第一备份指令。第三接收模块809接收由控制器81根据第一备份指令而发送的第二迁移指令。其中,控制器81也可以设置触发模块,触发模块触发向服务器80发送第二迁移指令。则第三接收模块809又可以具体为:接收由控制器81的触发模块触发的第二迁移指令。第一接收生成模块810根据第二迁移指令接收来自寄宿主机82上的虚拟机83的内存数据,并生成虚拟机83的镜像。
[0146]可选的,虚拟机83也可向服务器80发送备份虚拟机83的备份消息。则第四接收模块811接收来自虚拟机83发送的备份虚拟机83的第二备份指令。第三发送模块812根据第二备份指令向虚拟机83的寄宿主机82发送第三迁移指令,第三迁移指令用于指示寄宿主机82将虚拟机的内存数据单次预拷贝到服务器80。第二接收生成模块813接收来由寄宿主机82根据第三迁移指令而传输的虚拟机83的内存数据,并生成虚拟机83的镜像。
[0147]在本发明实施方式中,第一接收模块801接收第一迁移指令后,预拷贝模块802根据第一迁移指令将服务器80上的虚拟机83的镜像的内存数据单次预拷贝到寄宿主机,直接在寄宿主机上恢复出虚拟机,使得虚拟机的启动不再需要经历在寄宿主机生成虚拟机的恢复出过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。而虚拟机的内存数据较小,从服务器预拷贝到寄宿主机的时间极短,不影响到虚拟机的启动时间。
[0148]请参阅图11,图11是本发明服务器第二实施方式的结构示意图。如图所示,服务器85包括处理器850和存储器851。[0149]处理器850用于接收来自控制器86的第一迁移指令,第一迁移指令用于指示服务器85将虚拟机的镜像的内存数据单次预拷贝至寄宿主机87 ;根据第一迁移指令将虚拟机的镜像的内存数据单次预拷贝至寄宿主机87,在寄宿主机恢复出虚拟机。
[0150]其中,处理器851执行的上述处理过程通常是由一段程序控制完成,程序存放于存储器852中,当需要进行上述动作时,将程序调入处理器851,由处理器851控制完成。当然,上述处理过程还可以是由硬件完成。
[0151 ] 需要说明的是:服务器与控制器可以合并在一起,形成一个控制服务节点。控制服务节点集成上述服务器和控制器的功能。控制服务节点先指示寄宿主机将虚拟机的内存数据单次预拷贝到控制服务节点,在控制服务节点生成虚拟机的镜像。在虚拟机启动或者重启时,控制服务节点将虚拟机的镜像的内存数据单次预拷贝到寄宿主机,直接在寄宿主机恢复出虚拟机,并进一步指示寄宿主机为虚拟机挂载硬盘,从而完成虚拟机的快速启动。
[0152]本发明又提供了寄宿主机实施方式。如图12所示,寄宿主机90包括第一接收模块901和接收恢复模块902。
[0153]第一接收模块901接收来自控制器91的第一迁移指令,第一迁移指令用于指示服务器92将虚拟机的镜像的内存数据单次预拷贝到寄宿主机90。接收恢复模块902根据第一迁移指令接收来自服务器92传输的虚拟机的镜像的内存数据,并在寄宿主机90恢复虚拟机。
[0154]寄宿主机90还包括检测模块903、发送模块904、第二接收模块905、第三接收模块906和预拷贝模块907。检测模块903检测虚拟机的特殊状态,特殊状态包括虚拟机启动状态和宕机状态。发送模块904在检测模块903检测到虚拟机的特殊状态时,向控制器91发送虚拟机的特殊状态通知。第一接收模块901又可具体为:接收由控制器91根据虚拟机的特殊状态发送的第一迁移指令。
[0155]第二接收模块905接收来自控制器的第二迁移指令,第二迁移指令用于指示寄宿主机将虚拟机的内存数据单次预拷贝到服务器。或者,虚拟机直接发送备份虚拟机的第二备份指令到服务器92,服务器92根据第二备份指令向寄宿主机发送第二迁移指令。则第三接收模块906接收服务器92的第三迁移指令,第三迁移指令用于指示寄宿主机90将虚拟机的内存数据单次预拷贝到服务器92。预拷贝模块907用于根据第二迁移指令或者第三迁移指令挂起虚拟机,并将虚拟机的内存数据单次预拷贝到服务器92。本发明实施例中的寄宿主机还可以包括第四接收模块908和挂载模块909,第四接收模块908在恢复出虚拟机后,接收来自控制器91的挂载指令,挂载模块909根据挂载指令为虚拟机挂载硬盘。
[0156]在本发明实施方式中,接收恢复模块902接收来自服务器92传输的虚拟机的镜像的内存数据,直接在寄宿主机90上恢复出虚拟机。使得虚拟机的启动不再需要经历在寄宿主机恢复出虚拟机的生成过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。而虚拟机的内存数据较小,从服务器预拷贝到寄宿主机的时间极短,同样的,寄宿主机为虚拟机挂载硬盘的时间也极短,不影响虚拟机的启动时间。
[0157]请参阅图13,图13是本发明寄宿主机第二实施方式的结构示意图。如图所示,寄宿主机95包括处理器950和存储器951。
[0158]处理器950用于接收来自控制器97的第一迁移指令,第一迁移指令用于指示服务器96将虚拟机的镜像的内存数据单次预拷贝到寄宿主机95 ;根据所述第一迁移指令接收虚拟机的镜像的内存数据,并在寄宿主机95上恢复出虚拟机;还可用于在恢复虚拟机后,接收来自控制器97的挂载指令;根据挂载指令为虚拟机挂载硬盘,完成虚拟机的启动。
[0159]其中,处理器950执行的上述处理过程通常是由一段程序控制完成,程序存放于存储器950中,当需要进行上述动作时,将程序调入处理器950,由处理器950控制完成。当然,上述处理过程还可以是由硬件完成。
[0160]为了让读者更好的理解本发明,下面又从系统角度阐述本发明的内容。请参图14,图14是本发明恢复虚拟机的系统实施方式的结构图。恢复虚拟机的系统I包括控制器2、服务器3和寄宿主机4。其中,控制器2为上述任一控制器,服务器3为上述任一服务器,寄宿主机4为上述任一寄宿主机。进一步的,寄宿主机4可以有多台。虚拟机运行在寄宿主机4上。
[0161]进一步,请参阅图15,图15是本发明恢复虚拟机的系统实施方式中,虚拟机初次启动的流程图。
[0162]步骤SlO:虚拟机初次启动,服务器上尚没有虚拟机的镜像;
[0163]步骤Sll:客户端广播数据包;
[0164]步骤S12:服务器监听到客户端的数据包,并建立与客户端的连接,取得虚拟机的IP、计算机名称等信息;
[0165]步骤S13:客户端上的钩子程序钩取键盘鼠标信息,形成队列保存在系统内存中;
[0166]步骤S14:客户端刷新虚拟机进程个数形成第一变量,延迟Is ;
[0167]步骤S15:客户端刷新虚拟机进程个数形成第二变量,对比第一变量和第二变量,如果第一变量不等于第二变,则继续延迟,如果相等,则结束;
[0168]步骤S16:当第一变量等于第二变量,说明虚拟机启动完成,客户端发送向服务器发送消息,所述消息用于指示虚拟机启动完成;
[0169]步骤S17:服务器向控制器申请备份虚拟机;
[0170]步骤S18:控制器向寄宿主机发送虚拟机的内存数据单次预拷贝命令;
[0171]步骤S19:控制器向服务器发送虚拟机的内存数据单次预拷贝命令;
[0172]步骤S20:寄宿主机将虚拟机内存数据单次预拷贝服务器;
[0173]步骤S21:服务器压缩虚拟机的内存数据,形成压缩镜像;
[0174]步骤S22:控制器更新虚拟机的镜像的状态信息,指示存在虚拟机的镜像;
[0175]步骤S23:服务器向客户端发送处理完成的消息;
[0176]步骤S24:客户端释放钩子消息,客户正常使用。
[0177]请参图16,图16是本发明系统实施方式中,虚拟机内部操作备份流程图;
[0178]步骤SI 10:点击备份虚拟机;
[0179]步骤S111:虚拟机向服务器申请备份虚拟机;
[0180]步骤SI 12:寄宿主机挂起虚拟机;
[0181]步骤S113:寄宿主机将虚拟机的内存数据单次预拷贝到服务器。
[0182]请参图17,图17是本发明恢复虚拟机的系统实施方式中,虚拟机发起内部重启的流程图;
[0183]步骤S120:虚拟机内部重启;
[0184]步骤S121:客户端调用系统接口感知该行为;[0185]步骤S122:客户端发消息到服务器;
[0186]步骤S123:服务器查询到存在虚拟机的镜像;
[0187]步骤S124:服务器发消息到寄宿主机,关闭虚拟机;
[0188]步骤S125:服务器调用虚拟机迁移接口 ;
[0189]步骤S126:服务器将虚拟机的内存数据单次预拷贝到到寄宿主机;
[0190]步骤S128:寄宿主机为虚拟机挂载硬盘。
[0191]请参图18,图18是本发明恢复虚拟机的系统实施方式中,虚拟机启动的流程图;
[0192]步骤S130:控制器感知到虚拟机启动;
[0193]步骤S131:控制器查询到服务器内存中存在虚拟机的镜像;
[0194]步骤S132:控制器服务器发送虚拟机的内存数据单次预拷贝命令;
[0195]步骤S133:控制器寄宿主机发送虚拟机的内存数据单次预拷贝命令;
[0196]步骤S134:服务器解压虚拟机的镜像;
[0197]步骤S135:服务器将解压后的虚拟机的内存数据单次预拷贝到到寄宿主机;
[0198]步骤S136:寄宿主机为虚拟机挂载硬盘。
[0199]通过将服务器上的虚拟机的镜像的内存数据单次预拷贝到寄宿主机,在寄宿主机上直接恢复虚拟机,使得虚拟机不再需要经历在寄宿主机生成虚拟机的生成过程和虚拟机的自身的启动过程,有效地提高虚拟机的启动时间。
[0200]以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的【技术领域】,均同理包括在本发明的专利保护范围内。
【权利要求】
1.一种恢复虚拟机的方法,其特征在于,包括: 控制器接收启动所述虚拟机的启动通知; 所述控制器查询服务器是否存在所述虚拟机的镜像,若所述服务器存在所述虚拟机的镜像,所述控制器分别向所述服务器及寄宿主机发送第一迁移指令,所述第一迁移指令用于指示所述服务器将所述虚拟机的镜像的内存数据单次预拷贝至所述寄宿主机。
2.根据权利要求1所述的方法,其特征在于,所述控制器接收启动所述虚拟机的启动通知,具体包括: 所述控制器接收来自所述服务器发送的所述虚拟机重启通知; 或者, 所述控制器接收来自所述寄宿主机发送的所述虚拟机的特殊状态通知,所述特殊状态包括所述虚拟机启动状态或者宕机状态。
3.根据权利要求1所述的方法,其特征在于,所述控制器接收启动虚拟机的启动通知之前,还包括: 所述控制器分别向所述服务器和所述寄宿主机发送第二迁移指令,所述第二迁移指令用于指示所述寄宿主机将所述虚拟机的内存数据单次预拷贝至所述服务器,以使所述服务器生成所述虚拟机的镜像。
4.根据权利要求3所 述的方法,其特征在于,所述控制器分别向所述服务器和所述寄宿主机发送第二迁移指令的步骤之前,还包括: 所述控制器接收来自所述服务器的备份虚拟机的第一备份指令,并根据所述第一备份指令生成所述第二迁移指令。
5.一种恢复虚拟机的方法,其特征在于,包括: 服务器接收来自控制器的第一迁移指令,所述第一迁移指令用于指示所述服务器将所述虚拟机的镜像的内存数据单次预拷贝至寄宿主机; 所述服务器根据第一迁移指令将所述虚拟机的镜像的内存数据单次预拷贝至所述寄宿主机,以使所述寄宿主机恢复所述虚拟机。
6.根据权利要求5所述的方法,其特征在于,所述服务器接收来自控制器的第一迁移指令,具体包括: 所述服务器接收来自所述虚拟机的第一消息,所述第一消息用于指示所述虚拟机重启; 所述服务器根据所述第一消息,向所述控制器发送所述虚拟机的重启通知,并向所述寄宿主机发送摧毁所述虚拟机的摧毁指令; 所述服务器接收由所述控制器根据所述虚拟机的重启通知而发送的第一迁移指令。
7.根据权利要求5所述的方法,其特征在于,所述服务器接收来自控制器的第一迁移指令的步骤之前,还包括: 所述服务器接收来自所述控制器的第二迁移指令,所述第二迁移指令用于指示所述寄宿主机将所述虚拟机的内存数据单次预拷贝到所述服务器; 所述服务器接收来自所述虚拟机的内存数据,并生成所述虚拟机的镜像。
8.根据权利要求7所述的方法,其特征在于,所述服务器接收来自控制器的第二迁移指令的步骤之前,还包括:所述服务器接收来自所述虚拟机的连接请求,建立与所述虚拟机的连接; 所述服务器获取所述虚拟机的IP地址和计算机名称; 所述服务器根据所述虚拟机的IP地址和计算机名称,查询是否存在所述虚拟机的镜像; 若所述服务器没有存在所述虚拟机的镜像,则所述服务器向所述控制器发送备份所述虚拟机的第一备份指令; 所述服务器接收来自所述控制器的第二迁移指令,具体包括: 所述服务器接收由所述控制器根据所述第一备份指令发送的所述第二迁移指令。
9.根据权利要求7所述的方法,其特征在于,所述服务器接收来自控制器的第二迁移指令,具体包括: 所述服务器接收由所述控制器的触发模块触发的所述第二迁移指令。
10.根据权利要求5所述的方法,其特征在于,所述服务器接收来自控制器的第一迁移指令的步骤之前,还包括: 所述服务器接收来自所述虚拟机发送的备份所述虚拟机的第二备份指令; 所述服务器根据所述第二备份指令向所述寄宿主机发送第三迁移指令; 所述服务器接收由所述寄宿主机根据第三迁移指令而传输的所述虚拟机的内存数据,并在所述服务器生成所述虚拟机的镜像。
11.一种恢复虚拟机的方法,其特征在于,所述方法包括: 寄宿主机接收来自控制器的第一迁移指令,所述第一迁移指令用于指示服务器将所述虚拟机的镜像的内存数据单次预拷贝到所述寄宿主机; 所述寄宿主机根据所述第一迁移指令接收所述虚拟机的镜像的内存数据,并在所述寄宿主机上恢复所述虚拟机。
12.根据权利要求11所述的方法,其特征在于,所述寄宿主机接收来自控制器的第一迁移指令之前,还包括: 所述寄宿主机检测所述虚拟机的特殊状态,所述特殊状态包括所述虚拟机启动状态或者宕机状态; 所述寄宿主机在检测到所述虚拟机的所述特殊状态时,向所述控制器发送所述虚拟机的特殊状态通知; 所述寄宿主机接收来自控制器的第一迁移指令,具体包括: 所述寄宿主机接收由所述控制器根据所述虚拟机的所述特殊状态通知发送的所述第一迁移指令。
13.根据权利要求11所述的方法,其特征在于,所述寄宿主机接收来自控制器的第一迁移指令之前,还包括: 所述寄宿主机接收来自所述控制器的第二迁移指令,所述第二迁移指令第三迁移指令用于指示所述寄宿主机将所述虚拟机的内存数据单次预拷贝到所述服务器,在所述服务器上生成所述虚拟机的镜像; 所述寄宿主机根据所述第二迁移指令挂起所述虚拟机,并将所述虚拟机的内存数据单次预拷贝到所述服务器,以使所述服务器生成所述虚拟机的镜像。
14.根据权利要求11所述的方法,其特征在于,所述寄宿主机接收来自控制器的第一迁移指令之前,还包括: 所述寄宿主机接收来自所述服务器的第三迁移指令,所述第三迁移指令用于指示所述寄宿主机将所述虚拟机的内存数据单次预拷贝到所述服务器,在所述服务器上生成所述虚拟机的镜像; 所述寄宿主机根据所述第三迁移指令挂起所述虚拟机,并将所述虚拟机的内存数据单次预拷贝到所述服务器,以使所述服务器生成所述虚拟机的镜像。
15.一种控制器,其特征在于,所述控制器包括: 第一接收模块,用于接收启动虚拟机的启动通知; 查询模块,用于查询服务器上是否存在所述虚拟机的镜像; 第一发送模块,用于在所述查询模块查询到所述虚拟机的镜像后,分别向所述服务器和寄宿主机发送第一迁移指令,所述第一迁移指令用于指示所述服务器将所述虚拟机的镜像的内存数据单次预拷贝至所述寄宿主机。
16.根据权利要求15所述控制器,其特征在于,所述第一接收模块具体用于: 接收来自所述服务器发送的所述虚拟机重启通知; 或者, 接收来自所述寄宿主 机发送的所述虚拟机的特殊状态通知,所述特殊状态包括所述虚拟机的启动状态或宕机状态。
17.根据权利要求15所述的控制器,其特征在于,还包括: 第二发送模块,用于分别向所述寄宿主机和所述服务器发送第二迁移指令,所述第二迁移指令用于指示所述寄宿主机将所述虚拟机的内存数据单次预拷贝至所述服务器,以使所述服务器生成所述虚拟机的镜像。
18.根据权利要求17所述的控制器,其特征在于,还包括: 第二接收模块,用于接收来自所述服务器的备份所述虚拟机的第一备份指令; 生成模块,用于根据所述第一备份指令生成所述第二迁移指令。
19.根据权利要求17所述的控制器,其特征在于,还包括: 触发生成模块,用于触发所述第二迁移指令。
20.一种服务器,其特征在于,所述服务器包括: 第一接收模块,用于接收来自控制器的第一迁移指令,其中,所述第一迁移指令用于指示所述服务器将虚拟机的镜像的内存数据单次预拷贝至寄宿主机; 预拷贝模块,用于根据所述第一迁移指令,将所述虚拟机的镜像的内存数据单次预拷贝到所述寄宿主机,以使所述寄宿主机恢复所述虚拟机。
21.根据权利要求20所述服务器,其特征在于,还包括: 第二接收模块,用于接收来自所述虚拟机的第一消息,所述第一消息用于指示所述虚拟机重启; 第一发送模块,用于根据所述第一消息,向所述控制器发送虚拟机重启通知,并向所述寄宿主机发送摧毁所述虚拟机的摧毁指令; 所述第一接收模块具体为:接收由所述控制器根据所述虚拟机重启通知发送的第一迁移指令。
22.根据权利要求20所述服务器,其特征在于,还包括:第三接收模块,用于接收来自所述控制器的第二迁移指令; 第一接收生成模块,根据所述第二迁移指令接收来自所述寄宿主机的虚拟机的内存数据,并生成所述虚拟机的镜像。
23.根据权利要求22所述服务器,其特征在于,还包括: 接收建立模块,用于接收来自所述虚拟机的连接请求,建立与所述虚拟机的连接; 获取模块,用于获取所述虚拟机的IP地址和计算机名称; 查询模块,用于根据所述IP地址和计算机名称,查询是否存在所述虚拟机的镜像;第二发送模块,用在于所述查询模块没有查询到所述虚拟机的镜像时,向所述控制器发送备份所述虚拟机的第一备份指令。 所述第三接收模块具体用于接收由所述控制器根据第一备份指令发送的第二迁移指令。
24.根据权利要求22所述服务器,其特征在于,所述第三接收模块具体用于:接收由所述控制器的触发模块触发的第二迁移指令。
25.根据权利要求20所述的服务器,其特征在于,还包括: 第四接收模块,用于接收来自所述虚拟机发送的备份所述虚拟机的第二备份指令; 第三发送模块,用于根据所述第二备份指令向所述虚拟机的寄宿主机发送第三迁移指令; 第二接收生成模块,用于接收来自所述寄宿主机根据所述第三迁移指令传输的所述虚拟机的内存数据,并生成所述虚拟机的镜像。
26.一种寄宿主机,其特征在于,包括: 第一接收模块,用于接收来自控制器的第一迁移指令,所述第一迁移指令用于指示服务器将虚拟机的镜像的内存数据单次预拷贝到所述寄宿主机; 接收恢复模块,用于根据所述第一迁移指令接收来自所述服务器传输的所述虚拟机的镜像的内存数据,并在所述寄宿主机上恢复所述虚拟机。
27.根据权利要求26所述的寄宿主机,其特征在于,还包括: 检测模块,用于检测所述虚拟机的特殊状态,所述特殊状态包括所述虚拟机启动状态或者宕机状态; 发送模块,用于在所述检测模块检测到所述虚拟机的所述特殊状态时,向所述控制器发送所述虚拟机的所述特殊状态通知; 所述第一接收模块具体用于接收由所述控制器根据所述虚拟机的所述特殊状态通知发送的所述第一迁移指令。
28.根据权利要求26所述的寄宿主机,其特征在于,所述寄宿主机还包括: 第二接收模块,用于接收第二迁移指令,所述第二迁移指令用于指示所述寄宿主机将所述虚拟机的内存数据单次预拷贝到所述服务器; 预拷贝模块,用于根据第二迁移指令挂起所述虚拟机,并将所述虚拟机的内存数据单次预拷贝到服务器。
29.根据权利要求26所述的寄宿主机,其特征在于,还包括: 第三接收模块,用于接收所述服务器的第三迁移指令,所述第三迁移指令用于指示所述寄宿主机将所述虚拟机的内存数据单次预拷贝到所述服务器;预拷贝模块,用于根据第三迁移指令挂起所述虚拟机,并将所述虚拟机的内存数据单次预拷贝到服务器。
30.一种恢复虚拟机的系统,其特征在于,包括:如权利要求15至19任一所述的控制器、如权利要求2 0至25任一所述的服务器和权利要求26至29任一所述的寄宿主机。
【文档编号】G06F9/455GK103838593SQ201210479165
【公开日】2014年6月4日 申请日期:2012年11月22日 优先权日:2012年11月22日
【发明者】吴燕青 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1