本发明涉及集群领域,特别是涉及一种异构cpu服务器集群中虚拟机的热迁移方法及装置。
背景技术:
随着计算机的飞速发展,数据中心中不断增加升级换代的服务器,而各服务器的cpu型号千差万别,各自支持的操作指令集也是不同的,具有不同型号cpu的多个服务器组成了异构cpu服务器集群。虚拟机在异构cpu服务器集群中的应用非常广泛,其应用过程中,会遇到虚拟机进行热迁移的情况。由于cpu型号不同,其操作指令集也不相同,导致虚拟机在热迁移过程中,往往会因为操作指令集的不同造成迁移失败,影响用户设置的集群资源调度策略,降低了集群的稳定性。
由此可见,如何保证虚拟机在热迁移过程中不受异构cpu的影响而自由迁移是本领域技术人员亟待解决的问题。
技术实现要素:
本发明的目的是提供一种异构cpu服务器集群中虚拟机的热迁移方法及装置,用于保证虚拟机在热迁移过程中不受异构cpu的影响而自由迁移。
为解决上述技术问题,本发明提供一种异构cpu服务器集群中虚拟机的热迁移方法,包括:
获取当前集群中全部cpu的操作指令集;
计算出全部所述操作指令集的最大交集以作为当前集群的cpu指令集基线;
在所述cpu指令集基线范围内选取一个目标虚拟机操作指令集,指定给各所述虚拟机以启动当前集群中的各虚拟机;
当接收到热迁移指令时,控制目标虚拟机迁移至目标服务器中。
优选地,当有新的虚拟机加入当前集群时,还包括:
判断所述新的虚拟机的操作指令集是否在所述cpu指令集基线范围内;
如果是,则允许所述新的虚拟机迁入当前集群中,否则,禁止所述新的虚拟机迁入当前集群中。
优选地,还包括:将所述目标虚拟机操作指令集指定给所述新的虚拟机。
优选地,当有新的服务器加入当前集群时,还包括:
获取所述新的服务器的cpu的操作指令集;
重新计算全部所述操作指令集的最大交集以得到新的最大交集;
判断所述新的最大交集是否大于或等于所述目标虚拟机操作指令集;
如果是,则允许所述新的服务器迁入当前集群中,否则,禁止所述新的服务器迁入当前集群中。
优选地,还包括:
判断所述目标虚拟机是否迁移至所述目标服务器;
如果否,则输出迁移失败信息。
为解决上述技术问题,本发明提供一种异构cpu服务器集群中虚拟机的热迁移装置,包括:
获取单元,用于获取当前集群中全部cpu的操作指令集;
计算单元,用于计算出全部所述操作指令集的最大交集以作为当前集群的cpu指令集基线;
启动单元,用于在所述cpu指令集基线范围内选取一个目标虚拟机操作指令集,指定给各所述虚拟机以启动当前集群中的各虚拟机;
控制单元,用于当接收到热迁移指令时,控制目标虚拟机迁移至目标服务器中。
优选地,当有新的虚拟机加入当前集群时,还包括:
第一判断单元,用于判断所述新的虚拟机的操作指令集是否在所述cpu指令集基线范围内,如果是,则允许所述新的虚拟机迁入当前集群中,否则,禁止所述新的虚拟机迁入当前集群中。
优选地,所述启动单元还用于将所述目标虚拟机操作指令集指定给所述新的虚拟机。
优选地,当有新的服务器加入当前集群时,还包括:第二判断单元;
所述获取单元,还用于获取所述新的服务器的cpu的操作指令集;
所述计算单元,还用于重新计算全部所述操作指令集的最大交集以得到新的最大交集;
所述第二判断单元,用于判断所述新的最大交集是否大于或等于所述目标虚拟机操作指令集,如果是,则允许所述新的服务器迁入当前集群中,否则,禁止所述新的服务器迁入当前集群中。
优选地,还包括:
第三判断单元,用于判断所述目标虚拟机是否迁移至所述目标服务器,如果否,则输出迁移失败信息。
本发明所提供的异构cpu服务器集群中虚拟机的热迁移方法,包括:获取当前集群中全部cpu的操作指令集;计算出全部所述操作指令集的最大交集以作为当前集群的cpu指令集基线;在所述cpu指令集基线范围内选取一个目标虚拟机操作指令集,指定给各所述虚拟机以启动当前集群中的各虚拟机;当接收到热迁移指令时,控制目标虚拟机迁移至目标服务器中。由此可见,当虚拟机在热迁移时,不需要考虑目标迁移服务器对应的cpu操作指令集,可以直接进行热迁移,避免了由于异构cpu而造成的迁移失败的问题,从而提高集群的稳定性。此外,本发明还公开一种异构cpu服务器集群中虚拟机的热迁移装置,效果如上所述。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种异构cpu服务器集群中虚拟机的热迁移方法的流程图;
图2为本发明实施例提供的一种cpu指令集基线的设置示意图;
图3为本发明实施例提供的另一种异构cpu服务器集群中虚拟机的热迁移方法的流程图;
图4为本发明实施例提供的另一种异构cpu服务器集群中虚拟机的热迁移方法的流程图;
图5为本发明实施例提供的一种异构cpu服务器集群中虚拟机的热迁移装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的核心是提供一种异构cpu服务器集群中虚拟机的热迁移方法及装置,用于保证虚拟机在热迁移过程中不受异构cpu的影响而自由迁移。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本发明实施例提供的一种异构cpu服务器集群中虚拟机的热迁移方法的流程图。如图1所示,该方法包括:
s10:获取当前集群中全部cpu的操作指令集。
在具体实施中,当前集群包含有多个服务器,每个服务器均有自己的cpu,通常情况下,cpu的类型并不是完全相同,因此当前集群中cpu的操作指令集就会有多种类型。图2为本发明实施例提供的一种cpu指令集基线的设置示意图。如图2所示,当前集群有3个服务器,分别为服务器a,服务器b和服务器c,各自的cpu的型号均不相同,对应的cpu的操作指令集也不相同。每个服务器上均设置有虚拟机,分别为虚拟机a,虚拟机b和虚拟机c,每个服务器的cpu的操作指令集如图2所示。
s11:计算出全部操作指令集的最大交集以作为当前集群的cpu指令集基线。
本步骤中,计算出3个操作指令集的最大交集,这个最大交集就是当前集群的cpu指令集基线。
s12:在cpu指令集基线范围内选取一个目标虚拟机操作指令集,指定给各虚拟机以启动当前集群中的各虚拟机。
可以理解的是,目标虚拟机操作指令集小于或等于cpu指令集基线范围,将目标虚拟机操作指令集指定给各集群中各虚拟机,从而实现每个虚拟机的启动。需要说明的是,各虚拟机不使用交集外的指令集,从而保证虚拟机可以在集群内部任意迁移,且当前集群中的全部虚拟机都是统一到cpu指令集基线。
s13:当接收到热迁移指令时,控制目标虚拟机迁移至目标服务器中。
当接收到迁移指令时,需要解析迁移指令的内容,即得到目标虚拟机和目标服务器,例如,目标虚拟机为虚拟机a,目标服务器为服务器b,就是将虚拟机a由服务器a迁移到服务器b上。
由于集群内部不同服务器上运行的虚拟机,均拥有统一的目标虚拟机操作指令集,因此,虚拟机就可以进行集群内部异构cpu服务器之间的热迁移,同时,基于热迁移的动态资源调度等工作,也可以顺利执行。
本实施例提供的异构cpu服务器集群中虚拟机的热迁移方法,通过计算得到集群中全部cpu的操作指令集的最大交集,并作为当前集群的cpu指令集基线,然后在该基线范围内选取一个目标虚拟机操作指令集作为当前集群中每个虚拟机的统一指令集。由此可见,当虚拟机在热迁移时,不需要考虑目标迁移服务器对应的cpu操作指令集,可以直接进行热迁移,避免了由于异构cpu而造成的迁移失败的问题,从而提高集群的稳定性。
图3为本发明实施例提供的另一种异构cpu服务器集群中虚拟机的热迁移方法的流程图。如图3所示,在上述实施例的基础上,当有新的虚拟机加入当前集群时,还包括:
s30:判断新的虚拟机的操作指令集是否在cpu指令集基线范围内,如果是,则进入s31,否则进入s32。
s31:允许新的虚拟机迁入当前集群中。
s32:禁止新的虚拟机迁入当前集群中。
可以理解的是,在正常运行中,当前集群有可能有虚拟机退出,也有可能有新的虚拟机迁入,而新的虚拟机需要与集群中的其他虚拟机具有同样的目标虚拟机操作指令集,否则该虚拟机在进行热迁移操作时,可能出现迁移失败的问题。因此,只有新的虚拟机的操作指令集在cpu指令集基线范围内,才能保证为新的虚拟机设定目标虚拟机操作指令集不与其自身的操作指令集相矛盾。
作为优选地实施方式,还包括:
s33:将目标虚拟机操作指令集指定给新的虚拟机。
当运行新的虚拟机加入当前集群后,为了保证在相应的服务器上的正常运行,需要将目标虚拟机操作指令集指定给新的虚拟机,从而使新的虚拟机启动,以及进行后续的热迁移操作。
图4为本发明实施例提供的另一种异构cpu服务器集群中虚拟机的热迁移方法的流程图。如图4所示,在上述实施例的基础上,当有新的服务器加入当前集群时,还包括:
s40:获取新的服务器的cpu的操作指令集。
s41:重新计算全部操作指令集的最大交集以得到新的最大交集。
s32:判断新的最大交集是否大于或等于目标虚拟机操作指令集,如果是,则进入s43,否则进入s44。
s43:允许新的服务器迁入当前集群中。
s44:禁止新的服务器迁入当前集群中。
可以理解的是,在正常运行中,当前集群有可能有服务器退出,也有可能有新的服务器迁入,而新的服务器的cpu有可能与当前集群中的其它cpu的型号不同,导致对应的操作指令集也不相同。因此,需要重新计算当前集群的新的最大交集,如果这个新的最大交集大于或等于目标虚拟机操作指令集,说明将当前集群中的虚拟机运行在这个新的服务器上能够实现正常的热迁移,且当前集群中的各虚拟机不需要变动统一的操作指令集;否则,说明目标虚拟机操作指令集不再适合当前集群中的各虚拟机,为了保证集群的稳定性,则禁止新的服务器迁入。
在上述实施例的基础上,还包括:
判断目标虚拟机是否迁移至目标服务器。
如果否,则输出迁移失败信息。
在集群运行过程中,不定时的有热迁移操作,为了能够实时掌握热迁移操作的过程,本实施例中,当目标虚拟机未成功迁移至目标服务器时,输出迁移失败信息,从而提醒用户再次迁移。可以理解的是,如何将目标虚拟机迁移至目标服务器,为本领域技术人员所熟知的技术,本发明不再赘述。
在上文中,对异构cpu服务器集群中虚拟机的热迁移方法的实施例进行了详细说明,本发明还提供一种与该方法对应的异构cpu服务器集群中虚拟机的热迁移装置。由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
图5为本发明实施例提供的一种异构cpu服务器集群中虚拟机的热迁移装置的结构图。如图5所示,该装置包括:
获取单元10,用于获取当前集群中全部cpu的操作指令集;
计算单元11,用于计算出全部操作指令集的最大交集以作为当前集群的cpu指令集基线;
启动单元12,用于在cpu指令集基线范围内选取一个目标虚拟机操作指令集,指定给各虚拟机以启动当前集群中的各虚拟机;
控制单元13,用于当接收到热迁移指令时,控制目标虚拟机迁移至目标服务器中。
本实施例提供的异构cpu服务器集群中虚拟机的热迁移装置,通过计算得到集群中全部cpu的操作指令集的最大交集,并作为当前集群的cpu指令集基线,然后在该基线范围内选取一个目标虚拟机操作指令集作为当前集群中每个虚拟机的统一指令集。由此可见,当虚拟机在热迁移时,不需要考虑目标迁移服务器对应的cpu操作指令集,可以直接进行热迁移,避免了由于异构cpu而造成的迁移失败的问题,从而提高集群的稳定性。
作为优选地实施方式,当有新的虚拟机加入当前集群时,还包括:
第一判断单元,用于判断新的虚拟机的操作指令集是否在cpu指令集基线范围内,如果是,则允许新的虚拟机迁入当前集群中,否则,禁止新的虚拟机迁入当前集群中。
作为优选地实施方式,启动单元还用于将目标虚拟机操作指令集指定给新的虚拟机。
作为优选地实施方式,当有新的服务器加入当前集群时,还包括:第二判断单元;
获取单元10,还用于获取新的服务器的cpu的操作指令集;
计算单元11,还用于重新计算全部操作指令集的最大交集以得到新的最大交集;
第二判断单元,用于判断新的最大交集是否大于或等于目标虚拟机操作指令集,如果是,则允许新的服务器迁入当前集群中,否则,禁止新的服务器迁入当前集群中。
作为优选地实施方式,还包括:
第三判断单元,用于判断目标虚拟机是否迁移至目标服务器,如果否,则输出迁移失败信息。
以上对本发明所提供的异构cpu服务器集群中虚拟机的热迁移方法及装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。