,本发明提供了对外获取最优云主机接口,用于选择最优云主机以对其分配虚拟机,该接口为:
[0057]getHyper(hyperIds ,maxVmNum,func, sort ,optHyperld):其中,参数 hyper Ids 为经过筛选得到的满足虚拟机运行条件(已筛选CPU、内存、存储和网络等)的云主机列表;maxVmNum为云主机列表中每个云主机的最大可运行虚拟机个数,只有一个值;func为获取每个云主机的正在运行的虚拟机个数的接口;sort用于区分是负载均衡优先还是绿色节能优先;:PotHyperID为用户设置指定的优先运行的虚拟机的预定最优云主机的ID,可以设置也可以不设置。本发明借助于该获取最优云主机接口能够对经过筛选得到的满足虚拟机运行条件的云主机列表,进行运行的虚拟机个数的参数校验并按照运行虚拟机个数对其进行排序,以达到负载均衡或者绿色节能的效果。
[0058]具体的获取最优云主机流程如图4所示:
[0059]将上述接口的hyperIds ,maxVmNum ,func, sort ,optHyperld 各个参数分别输入,并对云主机列表进行遍历,通过func获取当前云主机的正在运行虚拟机个数X,并通过资源总缓冲区获取该云主机的锁定虚拟机个数Y。
[0060]其中,在一个实施例中,在获取云主机列表中每个云主机的锁定虚拟机个数Y时,可调用资源总缓冲区的getLockedNumO来查询资源总缓冲区中是否包含该云主机,在包含该云主机的情况下,获取该云主机的锁定虚拟机个数Y,如果不包含则,Y为O。
[0061]然后,回到图4,将该云主机运行的虚拟机个数设置为实际正在运行虚拟机个数X和锁定虚拟机个数Y之和,并将云主机和X+Y放置到云主机性能结构列表中,其中。云主机性能结构列表中存放云主机标识、运行的虚拟机个数(X+Y)、内存剩余量、内存使用率、CPU使用率等信息。
[0062]接着,使用性能比较器对云主机性能结构列表中的云主机进行排序,在本例中,当前性能比较器仅根据用户需求优先和/或负载均衡优先和/或绿色节能优先对云主机的运行虚拟机个数X+Y(而非上述内存剩余量、内存使用率、CPU使用率等信息)进行比较,得到根据用户需求优先或者负载均衡优先或者绿色节能优先的排序结果。
[0063]然后,对排序结果列表中的云主机(例如排序后为A、B、C)进行查询设置资源总缓冲区的操作,具体则回到图3,如果资源总缓冲区中已经有云主机A,则表示该云主机A有锁定虚拟机,并按照图3所示的流程,获取该云主机A的X和Y,并将X+Y与该云主机能够运行虚拟机的最大个数maxVmNum进行比较;如果X+Y小于maxVmNum,则将云主机A在资源总缓冲区的锁定虚拟机的个数Y+1;
[0064]如果资源总缓冲区中没有云主机A,则在资源总缓冲区中新增云主机A,并执行图3所示的X+Y与maxVmNum的比较等流程,最后将其在资源总缓冲区中的锁定虚拟机个数Y+1。
[0065]再回到图4,对于结果返回true的云主机均是X+Y小于max VmNum的云主机,它们满足启动虚拟机的条件从而构成新的云主机列表retHyperlds;
[0066]然后,参照图4,在一个实施例中,由于输入的参数中包含预定优先运行虚拟机的云主机optHyperlD,所以,在从排序后的云主机列表中选择最优云主机时,可从云主机列表retHyperlds中查询是否存在预定最优云主机optHyperID ;
[0067]在存在预定最优云主机optHyperID的情况下,将云主机列表retHyperlds中该预定最优云主机optHyperID作为最优云主机retHyper ID;
[0068]在retHyperlds中不存在预定最优云主机optHyperID的情况下,则将排序后的云主机列表:retHyper Ids中排序第一的云主机作为最优云主机retHyper ID。
[0069]然后,就可将最新云主机列表retHyper Ids中选为最优云主机retHyper ID的云主机删除,并将最新云主机列表retHyperIds中最优云主机retHyperID之外的其他云主机进行资源总缓冲区的清除操作,即前文所述的cleaHhyperld):用于如果资源总缓冲区中有指定云主机(ID为hyperID的云主机),则获取该云主机的锁定虚拟机个数,如果锁定虚拟机个数大于I,则将锁定虚拟机个数减I,否则,从资源总缓冲区中移除该云主机。
[0070]其中,在一个实施例中,在最优云主机启动虚拟机完成后,再进行上述清理资源总缓冲区的操作。
[0071 ]图5是借助于本发明的上述技术方案的批量启动虚拟机的结果示意图。由此可见,在应用本发明的上述技术方案之后,增加了一个资源总缓冲区,在资源总缓冲区中增加了锁定虚拟机,云主机上虚拟机的启动情况完全与真实的情况一致,最终能够实现真正的负载均衡,并且是选择到最优的云主机作为启动虚拟机的目标云主机。
[0072]根据本发明的实施例,还提供了一种虚拟机的资源分配装置。
[0073 ]如图6所示,根据本发明实施例的资源分配装置包括:
[0074]获取模块61,用于获取云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y,其中,锁定虚拟机为正在启动的虚拟机;
[0075]排序模块62,用于根据云主机的预定分配需求对云主机列表中的每个云主机按照正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y进行排序;
[0076]选择模块63,用于从排序后的云主机列表中选择最优云主机并分配虚拟机至最优云主机。
[0077]综上所述,借助于本发明的上述技术方案,通过提出资源总缓冲区的概念,对云主机与虚拟机关系进行真正映射,然后根据调度参数要求从多个适合的目标云主机中选择最优的云主机,这样多台虚拟机会对应的启动在多台目标云主机上,达到更好利用资源的效果,实现资源分配调度的最终目标。
[0078]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种虚拟机的资源分配方法,其特征在于,包括: 获取云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y,其中,所述锁定虚拟机为正在启动的虚拟机; 根据云主机的预定分配需求对所述云主机列表中的每个云主机按照正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y进行排序; 从排序后的所述云主机列表中选择最优云主机并分配虚拟机至所述最优云主机。2.根据权利要求1所述的资源分配方法,其特征在于,获取所述云主机列表中每个云主机的锁定虚拟机个数Y包括: 查询预定的资源缓冲区中是否包含该云主机,在包含该云主机的情况下,获取该云主机的锁定虚拟机个数Y,其中,所述预定的资源缓冲区用于存储云主机与该云主机锁定虚拟机的个数的对应关系。3.根据权利要求1或2所述的资源分配方法,其特征在于,在根据云主机的预定分配需求对所述云主机列表中的每个云主机按照正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y进彳丁排序后,进一步包括: 将所述云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y与该云主机能够运行虚拟机的最大个数进行比较; 将所述云主机列表中的正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y小于该云主机能够运行虚拟机的最大个数的云主机的锁定虚拟机的个数Y+1。4.根据权利要求3所述的资源分配方法,其特征在于,将所述云主机列表中的正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y小于该云主机能够运行虚拟机的最大个数的云主机的锁定虚拟机的个数Y+1包括:将所述资源缓冲区中该云主机的锁定虚拟机的个数Y+ 1 O5.根据权利要求3所述的资源分配方法,其特征在于,在将所述云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y与该云主机能够运行虚拟机的最大个数进行比较之前,进一步包括: 查询所述预定的资源缓冲区中是否包含该云主机,在不包含该云主机的情况下,将该云主机添加至所述预定的资源缓冲区。6.根据权利要求3所述的资源分配方法,其特征在于,进一步包括: 将所述云主机列表中的正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y小于该云主机能够运行虚拟机的最大个数的云主机构成新的云主机列表; 从排序后的所述云主机列表中选择最优云主机并分配虚拟机至所述最优云主机包括:从新的云主机列表中选择最优云主机并分配虚拟机至所述最优云主机。7.根据权利要求1所述的资源分配方法,其特征在于,从排序后的所述云主机列表中选择最优云主机包括: 从所述云主机列表中查询是否存在预定最优云主机; 在存在所述预定最优云主机的情况下,将所述云主机列表中该预定最优云主机作为所述最优云主机; 在不存在所述预定最优云主机的情况下,将排序后的所述云主机列表中排序第一的云主机作为所述最优云主机。8.根据权利要求3所述的资源分配方法,其特征在于,进一步包括: 将所述云主机列表中未被选择的云主机在所述资源缓冲区中该云主机的锁定虚拟机的个数Y-1。9.根据权利要求1所述的资源分配方法,其特征在于,所述云主机的预定分配需求包括以下至少之一: 用户需求优先; 负载均衡优先; 绿色节能优先。10.一种虚拟机的资源分配装置,其特征在于,包括: 获取模块,用于获取云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y,其中,所述锁定虚拟机为正在启动的虚拟机; 排序模块,用于根据云主机的预定分配需求对所述云主机列表中的每个云主机按照正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y进行排序; 选择模块,用于从排序后的所述云主机列表中选择最优云主机并分配虚拟机至所述最优云主机。
【专利摘要】本发明公开了一种虚拟机的资源分配方法和装置,该方法包括:获取云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y,其中,锁定虚拟机为正在启动的虚拟机;根据云主机的预定分配需求对云主机列表中的每个云主机按照正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y进行排序;从排序后的云主机列表中选择最优云主机并分配虚拟机至最优云主机。本发明通过将云主机的运行虚拟机个数和锁定虚拟机个数相加并作出排序处理,从而使得云主机上的虚拟机的启动情况完全与真实的情况一致,能够实现真正的负载均衡。
【IPC分类】G06F9/50
【公开号】CN105653369
【申请号】
【发明人】李绍辉, 郝秋影, 范霄, 王慧谦, 刘润峰
【申请人】曙光信息产业(北京)有限公司
【公开日】2016年6月8日
【申请日】2015年12月29日