虚拟机的资源分配方法和装置的制造方法

文档序号:9887473阅读:300来源:国知局
虚拟机的资源分配方法和装置的制造方法
【技术领域】
[0001]本发明涉及云计算领域,具体来说,涉及一种虚拟机的资源分配方法和装置。
【背景技术】
[0002]资源调度是云计算中的关键技术之一,资源调度可分为静态调度和动态调度,其中,静态调度指在虚拟机启动时,按照一定的调度策略选择目标云主机,只执行一次;而动态调度则指调度任务在后台定时查看资源负载情况,并根据调度策略执行迀移虚拟机、关闭或者启动云主机操作。
[0003]资源调度实现的好坏从很大程度上能够决定一个云计算系统的成败。创建、启动虚拟机的过程就是资源分配的过程;在系统运行过程中,资源调度不断动态地根据系统负载情况调整资源,以达到系统的负载均衡和节能等需求。
[0004]而在批量启动虚拟机时,由于启动一台虚拟机需要一个时间过程,在下一台虚拟机启动时,前面的虚拟机可能正在启动前的校验中,因此在统计云主机上正在运行的虚拟机个数时,只能得到已经启动的虚拟机个数,而正在启动的虚拟机个数获取不到,这就容易造成启动结果混乱,比如原本不能在云主机上启动的虚拟机在云主机上启动了,导致云主机上启动的虚拟机个数超出用户的设置;或者原本希望批量启动的虚拟机在各个云主机上是负载均衡的,但实际上可能所有虚拟机都启动在一台云主机上,根本没有达到负载均衡的效果等。
[0005]具体的,如图1所示,在现有技术中,在应用负载均衡资源调度批量启动虚拟机时,在资源池I中有3个云主机,要启动3台虚拟机vm7、vm8、vm9,在启动过程中可能出现3台虚拟机均启动在云主机I上的情况,因为在启动vm8、vm9的时候,vm7还没有进入启动状态,导致后面调度执行判断的时候,始终认为云主机I上运行虚拟机个数最少,最终结果是所有虚拟机都启动在同一个云主机上,显然并没有达到负载均衡的目标。
[0006]由此可见,在现有技术中,资源调度无法很好地处理批量启动虚拟机的并发事件。批量启动虚拟机一般会同时创建多个异步任务,这就导致批量启动多台虚拟机时可能都选择了相同的目标云主机,造成云主机瞬间负载过大,可能会有一些虚拟机因为资源不足无法启动,同时也无法更好的分配使用云主机资源。
[0007]针对相关技术中的上述问题,目前尚未提出有效的解决方案。

【发明内容】

[0008]针对相关技术中的上述问题,本发明提出一种虚拟机的资源分配方法和装置,能够使云主机资源得到均衡分配。
[0009]本发明的技术方案是这样实现的:
[0010]根据本发明的一个方面,提供了一种虚拟机的资源分配方法。
[0011]该资源分配方法包括:
[0012]获取云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y,其中,锁定虚拟机为正在启动的虚拟机;
[0013]根据云主机的预定分配需求对云主机列表中的每个云主机按照正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y进行排序;
[0014]从排序后的云主机列表中选择最优云主机并分配虚拟机至最优云主机。
[0015]其中,在获取云主机列表中每个云主机的锁定虚拟机个数Y时,可通过查询预定的资源缓冲区中是否包含该云主机,在包含该云主机的情况下,获取该云主机的锁定虚拟机个数Y,其中,预定的资源缓冲区用于存储云主机与该云主机锁定虚拟机的个数的对应关系O
[0016]此外,该资源分配方法进一步包括:在根据云主机的预定分配需求对云主机列表中的每个云主机按照正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y进行排序后,将云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y与该云主机能够运行虚拟机的最大个数进行比较;
[0017]将云主机列表中的正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y小于该云主机能够运行虚拟机的最大个数的云主机的锁定虚拟机的个数Y+1。
[0018]其中,在将云主机列表中的正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y小于该云主机能够运行虚拟机的最大个数的云主机的锁定虚拟机的个数Y+1时,可将资源缓冲区中该云主机的锁定虚拟机的个数Y+1。
[0019]另外,该资源分配方法进一步包括:在将云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y与该云主机能够运行虚拟机的最大个数进行比较之前,查询预定的资源缓冲区中是否包含该云主机,在不包含该云主机的情况下,将该云主机添加至预定的资源缓冲区。
[0020]此外,该资源分配方法进一步包括:
[0021 ]将云主机列表中的正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y小于该云主机能够运行虚拟机的最大个数的云主机构成新的云主机列表;
[0022]从排序后的云主机列表中选择最优云主机并分配虚拟机至最优云主机包括:从新的云主机列表中选择最优云主机并分配虚拟机至最优云主机。
[0023]可选的,在从排序后的云主机列表中选择最优云主机时,可从云主机列表中查询是否存在预定最优Ζ5Γ主机;
[0024]在存在预定最优云主机的情况下,将云主机列表中该预定最优云主机作为最优云主机;
[0025]在不存在预定最优云主机的情况下,将排序后的云主机列表中排序第一的云主机作为最优云主机。
[0026]另外,该资源分配方法进一步包括:
[0027]将云主机列表中未被选择的云主机在资源缓冲区中该云主机的锁定虚拟机的个数 Y-1。
[0028]此外,云主机的预定分配需求包括以下至少之一:
[0029]用户需求优先;
[0030]负载均衡优先;
[0031]绿色节能优先。
[0032]根据本发明的另一方面,提供了一种虚拟机的资源分配装置。
[0033]该资源分配装置包括:
[0034]获取模块,用于获取云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y,其中,锁定虚拟机为正在启动的虚拟机;
[0035]排序模块,用于根据云主机的预定分配需求对云主机列表中的每个云主机按照正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y进行排序;
[0036]选择模块,用于从排序后的云主机列表中选择最优云主机并分配虚拟机至最优云主机。
[0037]本发明通过将云主机的运行虚拟机个数和锁定虚拟机个数相加并作出排序处理,从而使得云主机上的虚拟机的启动情况完全与真实的情况一致,能够实现真正的负载均衡。
【附图说明】
[0038]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0039]图1是根据现有技术的批量启动虚拟机的结果示意图;
[0040]图2是根据本发明实施例的虚拟机的资源分配方法的流程图;
[0041]图3是根据本发明实施例的资源总缓冲区的查询设置流程图;
[0042]图4是根据本发明实施例的获取最优云主机的流程图;
[0043]图5是根据本发明实施例的批量启动虚拟机的结果示意图;
[0044]图6是根据本发明实施例的虚拟机的资源分配装置的框图。
【具体实施方式】
[0045]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0046]根据本发明的实施例,提供了一种虚拟机的资源分配方法。
[0047]如图2所示,根据本发明实施例的资源分配方法包括:
[0048]步骤S201,获取云主机列表中每个云主机的正在运行虚拟机的个数X和锁定虚拟机的个数Y,其中,锁定虚拟机为正在启动的虚拟机;
[0049]步骤S203,根据云主机的预定分配需求对云主机列表中的每个云主机按照正在运行虚拟机的个数X和锁定虚拟机的个数Y之和X+Y进行排序;
[0050]步骤S205,从排序后的云主机列表中选择最优云主机并分配虚拟机至最优云主机。
[0051 ]下面结合具体实例来对本发明的上述技术方案进行详细阐述。
[0052]在本发明的资源分配方法中,调度的资源调是有范围的,调度范围称为资源池,资源池是一组云主机的集合。调度的资源有一些显式的参数要求,包括CPU使用率、内存使用率、运行的虚拟机个数,同时,调度的资源还有一些隐式的需求,如CPU兼容性、存储、网络的要求等。本发明中的上述云主机列表是已经根据显式调度参数中CPU使用率、内存使用率,以及隐式的CPU兼容性、存储、网络等需求对资源池中的云主机进行了筛选,得到的满足条件的云主机列表,本发明的主要方案是对筛选之后的云主机进行二次处理,得到满足运行的虚拟机个数要求,且真正实现了负载均衡的最优云主机。筛选过程与本发明无关,这里不再赘述。下面描述本发明的上述技术方案。
[0053]首先,为了实现上述技术方案,需要开辟一块内存缓冲区(即上述资源缓冲区),用于存放云主机与锁定虚拟机的对应关系,称之为资源总缓冲区。对资源总缓冲区可以进行查询设置、清除操作。
[0054]查询设置函数为:getAndSet(hyperId ,maxVmNum, runningVmNum):其中,参数hyperID为云主机ID,参数maxVmNum为该云主机能够运行虚拟机的最大个数,参数runn ingVmNum为该云主机正在运行的虚拟机的个数。该函数的工作流程如图3所示,如果资源总缓冲区中包含指定云主机(ID为hyperID的云主机),则获取该云主机锁定虚拟机个数Y,否则将该云主机添加到资源总缓冲区(即X = O);然后将锁定虚拟机个数Y和正在运行的虚拟机个数X (即参数runn ingVmNum)相加并与该云主机最大可运行虚拟机个数(S卩参数maxVmNum)比较,如果云主机锁定虚拟机个数和运行虚拟机个数之和X+Y小于最大可运行虚拟机个数maxVmNum,则将该云主机在该资源总缓冲区的锁定虚拟机个数Y加I,并返回true,否则返回false。
[0055]清除函数:clear(hyperld):用于如果资源总缓冲区中有指定云主机(ID为hyperID的云主机),则获取该云主机的锁定虚拟机个数,如果锁定虚拟机个数大于I,则将锁定虚拟机个数减I,否则,从资源总缓冲区中移除该云主机。
[0056]在开辟了上述资源总缓冲区(和下文的资源缓冲区相同)后
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1