虚拟机资源的动态调配方法及装置与流程

文档序号:12271077阅读:459来源:国知局
虚拟机资源的动态调配方法及装置与流程

本发明涉及虚拟机技术领域,尤其涉及一种虚拟机资源的动态调配方法及装置。



背景技术:

在虚拟化技术领域,一个服务器上面可以运行多个虚拟机,为了能够充分利用服务器的硬件资源,对虚拟机的硬件资源配置通常都会进行超配,即所有的配置在一台服务器上的所有虚拟机的硬件资源的综合大于所在的服务器的硬件资源,比如,所有虚拟机的CPU总数可以超过服务器的物理CPU数量;虚拟机的总内存可以大于服务器的物理内存,通过这种超配特性,使得在单个服务器机上能够运行更多的虚拟机,帮助用户减少硬件投入成本。

上述超配特性能够正常工作的前提是:假定在同一时刻,不是所有的虚拟机都满负荷运行。因为,如果每个虚拟机都很忙,虚拟机之间会不断的进行硬件资源的争抢,导致每个虚拟机都很慢,都无法正常工作,反而会影响整体性能。

对于超配后虚拟机都满负荷运行而导致所有虚拟机都运行慢的情况,目前的解决方法是对虚拟机划分优先级,比如将一部分虚拟机设为高优先级,当服务器剩余硬件资源不足时,优先保证这类高优先级虚拟机的硬件资源使用,但是,这种方案只能够解决特定场景下的问题,对虚拟机优先级划分是固定的,不能根据虚拟机的具体使用情况对其优先级进行动态调整,缺乏灵活性,无法满足更复杂的用户场景。



技术实现要素:

本发明提供一种虚拟机资源的动态调配方法及装置,其主要目的在于解决现有技术中,无法根据虚拟机的实际运行情况确定虚拟机的优先级,进而根据确定的优先级对资源进行动态调配的技术问题。

为实现上述目的,本发明提供一种虚拟机资源的动态调配方法,该虚拟机资源的动态调配方法包括:

服务器获取当前运行的虚拟机的运行状态信息,并根据获取到的运行状态信息,以及预置的优先级规则确定所述虚拟机当前的优先级;

所述服务器根据确定的所述虚拟机当前的优先级对所述虚拟机的资源进行调配。

可选地,所述服务器获取当前运行的虚拟机的运行状态信息的步骤包括:

所述服务器在检测到剩余资源量低于预设阈值时,向所述服务器上运行的所述虚拟机发送信息获取指令,以供所述虚拟机基于接收到的信息获取指令获取所述运行状态信息;

接收所述虚拟机根据所述信息获取指令发送的运行状态信息。

可选地,所述服务器获取当前运行的虚拟机的运行状态信息的步骤之前,所述虚拟机资源的动态调配方法还包括步骤:

所述服务器接收并存储所述虚拟机发送的运行状态信息;

当所述服务器在检测到剩余资源量低于预设阈值时,执行获取所述服务器上运行的虚拟机当前的运行状态信息的步骤;

所述获取所述服务器上运行的虚拟机当前的运行状态信息的步骤包括:

获取最近一次存储的所述虚拟机的发送的运行状态信息。

可选地,所述预置的优先级规则包括权重分配规则和优先级权值算法;所述服务器根据获取到的运行状态信息,以及预置的优先级规则确定所述虚拟机当前的优先级的步骤包括:

所述服务器根据获取到所述虚拟机的运行状态信息,以及预置的权重分配规则和优先级权值算法,分别计算所述虚拟机的优先级权值,根据计算得到的所述优先级权值确定所述虚拟机的优先级。

可选地,所述虚拟机资源的动态调配方法还包括步骤:

所述服务器在接收到基于所述预置的优先级规则发送的规则修改信息时,根据接收到的所述规则修改信息对所述优先级规则进行修改。

可选地,所述服务器根据确定的所述虚拟机当前的优先级对所述虚拟机的资源进行调配的步骤包括:

所述服务器根据计算得到的所述虚拟机的优先级权值,回收优先级权值小于预设权值的虚拟机的资源,将回收的资源分配至优先级权值大于所述预设权值的虚拟机。

此外,为实现上述目的,本发明还提供一种虚拟机资源的动态调配装置,该虚拟机资源的动态调配装置包括:

所述虚拟机资源的动态调配装置包括:

信息获取模块,用于服务器获取当前运行的虚拟机的运行状态信息;

优先级确定模块,用于根据获取到的运行状态信息,以及预置的优先级规则确定所述虚拟机当前的优先级;

资源调配模块,用于根据确定的所述虚拟机当前的优先级对所述虚拟机的资源进行调配。

可选地,所述信息获取模块包括:

指令发送单元,用于在检测到剩余资源量低于预设阈值时,向所述服务器上运行的所述虚拟机发送信息获取指令,以供所述虚拟机基于接收到的信息获取指令获取所述运行状态信息;

信息接收单元,用于接收所述虚拟机根据所述信息获取指令发送的运行状态信息。

可选地,所述虚拟机资源的动态调配装置还包括:

信息存储模块,用于服务器接收并存储所述虚拟机发送的运行状态信息;

所述信息获取还模块用于:在检测到剩余资源量低于预设阈值时,获取最近一次存储的所述虚拟机的发送的运行状态信息。

可选地,所述优先级规则包括权重分配规则和优先级权重算法,所述优先级确定模块还用于:根据获取到所述虚拟机的运行状态信息,以及预置的权重分配规则和优先级权值算法,分别计算所述虚拟机的优先级权值,根据计算得到的所述优先级权值确定所述虚拟机的优先级。

本发明提出的虚拟机资源的动态调配方法及装置,服务器获取当前运行的虚拟机的运行状态信息,并根据获取到的运行状态信息,以及预置的优先级规则确定虚拟机当前的优先级,根据确定的优先级对虚拟机的资源进行动态调配,也就是说,即使在虚拟机开启时,服务器为虚拟机配置的初始资源量超出了服务器本身的总硬件资源量,在虚拟机的运行过程中,仍然可以根据虚拟机的运行状态信息确定虚拟机当前的优先级,并根据确定的优先级对虚拟机的资源进行动态的配置,根据服务器上配置的调整规则,通过减少优先级低的虚拟机的资源配额,来优先保证优先级高的虚拟机的正常运行。

附图说明

图1为本发明虚拟机资源的动态调配方法第一实施例的流程图;

图2为本发明虚拟机资源的动态调配方法第一实施例中的进程列表的示意图;

图3为本发明虚拟机资源的动态调配方法第一实施例中获取运行状态信息步骤的喜欢流程示意图;

图4为本发明虚拟机资源的动态调配装置第一实施例的功能模块示意图;

图5为本发明虚拟机资源的动态调配装置第一实施例中的一实施方式的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种虚拟机资源的动态调配方法。参照图1所示,为本发明虚拟机资源的动态调配方法第一实施例的流程图。

在本实施例中,该虚拟机资源的动态调配方法包括:

步骤S10,服务器获取当前运行的虚拟机的运行状态信息,并根据获取到的运行状态信息,以及预置的优先级规则确定所述虚拟机当前的优先级;

需要说明的是,本发明实施例中,一台服务器上可以同时运行一台或者多台虚拟机,服务器将硬件资源合理的配置给一台或者多台虚拟机,在虚拟机开启时,服务器会根据当前的剩余资源为该虚拟机分配合适的资源,服务器分配给所有虚拟机的资源之和可能为大于服务器本身的硬件资源,对于虚拟机来说,当大部分虚拟机都满负荷运行时,由于资源超配,会发生硬件资源的争抢,导致每个虚拟机都很慢,影响用户的使用;或者是一些虚拟机在运行的程序或者应用需要的资源较多,而实际分配的资源不足够其使用,此时可能有一些虚拟机处于停止使用状态或者该虚拟机当前执行的应用需要的资源较少,但是为其分配的资源量较大,就会造成资源闲置。因此,对于服务器来说,需要获取运行的虚拟机的运行状态信息,并根据获取到的运行状态信息确定出虚拟机的优先级,进而对其资源进行动态的调配。

可选地,作为一种实施方式,服务器可以定时的获取虚拟机的运行状态信息以确定其优先级,在其他实施方式中,也可以在检测到服务器的剩余硬件资源不足的时候,获取虚拟机的运行状态信息,可以理解的是,当虚拟机有多台时,需要获取每一台虚拟机的运行状态信息。

需要说明的是,上述运行状态信息包括但不限于以下各个信息项:虚拟机分组、当前运行的应用的类型、当前时段、CPU占用率、内存占用率、磁盘IO占用率、用户接入方式以及虚拟机的是否处于使用状态等。其中,虚拟机分组由用户根据需要设置,该信息项可以记录在虚拟机中,也可以记录在服务器中,若记录在服务器中,则可以直接读取服务器中记录的分组信息;当前时段包括上班时段、下班时段两个值,当前运行的应用的类型为当前虚拟机上CPU占用率最高的进程对应的应用,在判断虚拟机当前的应用的类型时,获取虚拟机系统的进程列表,参照图2所示,按照CPU占用率由高到低的顺序排列各个进程,将CPU占用率最高的进程的类型作为该虚拟机当前的应用的类型,由于此时虚拟机上可能开启了多个进程,但是用户主要使用的可能只有一个,因此根据CPU占用率来判断当前主要使用的进程的类型,例如,如果CPU占用率最高的进程为游戏进程,则判定其应用类型为娱乐类型,如果CPU占用率最高的进程为办公应用的进程,则判定其应用类型为办公类型;上述接入方式可能是远程桌面、VNC(Virtual NetworkComputer,虚拟网络计算机)客户端、SSH(secure shell,安全外壳协议)客户端、云桌面客户端等。

关于服务器获取运行状态信息,可以有多种实施方式,以下列举其中的两种进行说明。

作为一种实施方式,参照图3所示,步骤S10包括以下细化步骤:

步骤S11,所述服务器在检测到剩余资源量低于预设阈值时,向所述服务器上运行的所述虚拟机发送信息获取指令,以供所述虚拟机基于接收到的信息获取指令获取所述运行状态信息;

步骤S12,接收所述虚拟机根据所述信息获取指令发送的运行状态信息。

服务器实时监测剩余资源量,在剩余资源量低于预设阈值时,向服务器上运行的各个虚拟机发送信息获取指令,在虚拟机上设置一个插件,该插件在接收到该信息获取指令后,获取该虚拟机的运行状态信息,即上述各个信息项。将这些信息发送至服务器,服务器接收这些信息后可以依据这些信息确定虚拟机的优先级。

作为另一种实施方式,步骤S10之前,该虚拟机资源的动态调配方法还包括步骤:

服务器接收并存储所述虚拟机发送的运行状态信息;

当所述服务器在检测到剩余资源量低于预设阈值时,执行步骤S10;

步骤S10包括:获取最近一次存储的所述虚拟机的发送的运行状态信息。

在该实施方式中,在虚拟机中安装一插件,该插件定时获取运行状态信息,并将获取到的运行状态信息发送给服务器,例如,每间隔一分钟发送一次。

服务器在接收到这些信息后将这些运行状态信息存储起来,然后在检测到剩余资源量低于预设阈值时,从存储的信息中获取最近一次接收到的运行状态信息,根据这些信息确定虚拟机的优先级。虚拟机的优先级高就意味着需要更多的资源,而优先级低就意味着不需要为其分配较多资源。

上述预设阈值可以由用户根据需要设置,例如,该预设阈值可以设置为服务器总资源量的10%~20%。

步骤S20,所述服务器根据确定的所述虚拟机当前的优先级对所述虚拟机的资源进行调配。

关于优先级,作为一种实施方式,可以根据预设的优先级算法,例如加权算法,计算虚拟机的优先级权值,根据计算的优先级权值确定虚拟机的优先级,权值高的则优先级高,权值低的则优先级低,将优先权值较低的虚拟机的资源回收,分配给优先级权值较高的虚拟机,其中,回收的资源量根据被回收的虚拟机的运行状态信息确定,具体地,服务器根据计算得到的所述虚拟机的优先级权值,回收优先级权值小于预设权值的虚拟机的资源,将回收的资源分配至优先级权值大于所述预设权值的虚拟机。在其他的实施方式中,可以综合评价运行状态信息中各个信息项的值,以确定出优先级的级别,例如,应用类型为办公,当前时间属于上班时间,CPU占用率、内存占用率高于60%,该虚拟机当前处于使用状态,则级别为高。可以理解的是,用户预先设置级别评测的标准,服务器根据获取到的信息确定每一个信息项的级别,然后综合评价出虚拟机的优先级的级别。将低优先级的虚拟机的资源回收,分配至高优先级的虚拟机。

本实施例提出的虚拟机资源的动态调配方法,服务器获取当前运行的虚拟机的运行状态信息,并根据获取到的运行状态信息,以及预置的优先级规则确定所述虚拟机当前的优先级,根据确定的优先级对虚拟机的资源进行动态调配,也就是说,即使在虚拟机开启时,服务器为多个虚拟机配置的初始资源量超出了服务器本身的总硬件资源量,在虚拟机的运行过程中,仍然可以根据虚拟机的运行状态信息确定虚拟机当前的优先级,并根据确定的优先级对虚拟机的资源进行动态的配置,根据服务器上配置的调整规则,通过减少优先级低的虚拟机的资源配额,来优先保证优先级高的虚拟机的正常运行。

可以理解的是,虚拟机的运行状态信息是根据用户的使用情况在动态变化的,因此,当前优先级高的虚拟机在使用一段时间后,可能优先级会降低,而当前优先级低。当前优先级低的虚拟机在使用一段时间后,可能优先级会升高,也就是说,随着虚拟机的运行状态的动态变化,其优先级的高低也是在动态变化的,随着优先级的动态变化,动态的调整虚拟机的资源量。

基于第一实施例提出本发明虚拟机资源的动态调配方法的第二实施例。参照图2所示,在本实施例中,优先级规则包括权重分配规则和优先级权重算法,步骤S20包括以下细化步骤:

根据获取到所述虚拟机的运行状态信息,以及预置的权重分配规则和优先级权值算法,分别计算所述虚拟机的优先级权值,根据计算得到的所述优先级权值确定所述虚拟机的优先级。

在本实施例中,采用加权算法,为运行状态信息中的各个信息项设置权重,所有信息项的权重之和为1,然后根据获取的各个信息项的值以及优先级规则计算每一个信息项的分数,根据加权算法计算出所有信息项的加权平均值,即为该虚拟机的优先级权值。例如,采用百分制,每一项信息项的总分为一百分,用户预先设置每一个信息项下不同的参数对应的分数,以应用类型为例,办公应用为100分,视频应用为60分,游戏应用为20分。这样在获取到每一个信息项后,可以获取该信息项的分数,再结合权重,计算出所有信息项的加权平均值。

本发明还提出一种虚拟机资源的动态调配装置。

参照图4所示,为本发明虚拟机资源的动态调配装置第一实施例的功能模块示意图。

在该实施例中,该虚拟机资源的动态调配装置包括:

信息获取模块10,用于获取当前运行的虚拟机的运行状态信息;

优先级确定模块20,用于根据获取到的运行状态信息,以及预置的优先级规则确定所述虚拟机当前的优先级;

资源调配模块30,用于根据确定的所述虚拟机当前的优先级对所述虚拟机的资源进行调配。

需要说明的是,所述服务器可以作为所述虚拟机资源的动态调配方法。本发明实施例中,一台服务器上可以同时运行一台或者多台虚拟机,服务器将硬件资源合理的配置给多台虚拟机,在虚拟机开启时,服务器会根据当前的剩余资源为该虚拟机分配合适的资源,服务器分配给所有虚拟机的资源之和可能为大于服务器本身的硬件资源,对于虚拟机来说,当大部分虚拟机都满负荷运行时,由于资源超配,会发生硬件资源的争抢,导致每个虚拟机都很慢,影响用户的使用;或者是一些虚拟机在运行的程序或者应用需要的资源较多,而实际分配的资源不足够其使用,此时可能有一些虚拟机处于停止使用状态或者该虚拟机当前执行的应用需要的资源较少,但是为其分配的资源量较大,就会造成资源闲置。因此,对于服务器来说,需要获取运行的各个虚拟机的运行状态信息,并根据获取到的运行状态信息确定出虚拟机的优先级,进而对其资源进行动态的调配。

可选地,作为一种实施方式,服务器的信息获取模块10可以定时的获取虚拟机的运行状态信息以确定其优先级,在其他实施方式中,也可以在检测到服务器的剩余硬件资源不足的时候,获取虚拟机的运行状态信息。

需要说明的是,上述运行状态信息包括但不限于以下各个信息项:虚拟机分组、当前运行的应用的类型、当前时段、CPU占用率、内存占用率、磁盘IO占用率、用户接入方式以及虚拟机的是否处于使用状态等。其中,虚拟机分组由用户根据需要设置,该信息项可以记录在虚拟机中,也可以记录在服务器中,若记录在服务器中,则可以直接读取服务器中记录的分组信息;当前时段包括上班时段、下班时段两个值,当前运行的应用的类型为当前虚拟机上CPU占用率最高的进程对应的应用,在判断虚拟机当前的应用的类型时,获取虚拟机系统的进程列表,参照图2所示,按照CPU占用率由高到低的顺序排列各个进程,将CPU占用率最高的进程的类型作为该虚拟机当前的应用的类型,由于此时虚拟机上可能开启了多个进程,但是用户主要使用的可能只有一个,因此根据CPU占用率来判断当前主要使用的进程的类型,例如,如果CPU占用率最高的进程为游戏进程,则判定其应用类型为娱乐类型,如果CPU占用率最高的进程为办公应用的进程,则判定其应用类型为办公类型;上述接入方式可能是远程桌面、VNC(Virtual NetworkComputer,虚拟网络计算机)客户端、SSH(secure shell,安全外壳协议)客户端、云桌面客户端等。

关于服务器获取运行状态信息,可以有多种实施方式,以下列举其中的两种进行说明。

作为一种实施方式,信息获取模块10包括:

指令发送单元,用于在检测到剩余资源量低于预设阈值时,向所述服务器上运行的所述虚拟机发送信息获取指令,以供所述虚拟机基于接收到的信息获取指令获取所述运行状态信息;

信息接收单元,用于接收所述虚拟机根据所述信息获取指令发送的运行状态信息。

服务器实时监测剩余资源量,在剩余资源量低于预设阈值时,指令发送单元向服务器上运行的虚拟机发送信息获取指令,在虚拟机上设置一个插件,该插件在接收到该信息获取指令后,获取该虚拟机的运行状态信息,即上述各个信息项。将这些信息发送至服务器,信息接收单元接收这些信息后,优先级确定模块20可以依据这些信息确定虚拟机的优先级。

作为另一种实施方式,参照图5所示,该虚拟机资源的动态调配装置还包括:

信息存储模块40,用于服务器接收并存储所述虚拟机发送的运行状态信息;

信息获取模块10还用于:在检测到剩余资源量低于预设阈值时,获取最近一次存储的所述虚拟机的发送的运行状态信息。

在该实施方式中,在虚拟机中安装一插件,该插件定时获取运行状态信息,并将获取到的运行状态信息发送给服务器,例如,每间隔一分钟发送一次。

服务器在接收到这些信息后,信息存储模块40将这些运行状态信息存储起来,然后在检测到剩余资源量低于预设阈值时,从存储的信息中获取最近一次接收到的运行状态信息,根据这些信息确定虚拟机的优先级。虚拟机的优先级高就意味着需要更多的资源,而优先级低就意味着不需要为其分配较多资源。

上述预设阈值可以由用户根据需要设置,例如,该预设阈值可以设置为服务器总资源量的10%~20%。

关于优先级,作为一种实施方式,可以根据预设的优先级算法,例如加权算法,计算虚拟机的优先级权值,优先级确定模块20根据计算的优先级权值确定虚拟机的优先级,权值高的则优先级高,权值低的则优先级低,资源调配模块30将优先权值较低的虚拟机的资源回收,分配给优先级权值较高的虚拟机,其中,回收的资源量根据被回收的虚拟机的运行状态信息确定,具体地,资源调配模块30根据计算得到的所述虚拟机的优先级权值,回收优先级权值小于预设权值的虚拟机的资源,将回收的资源分配至优先级权值大于所述预设权值的虚拟机。在其他的实施方式中,优先级确定模块20可以综合评价运行状态信息中各个信息项的值,以确定出优先级的级别,例如,应用类型为办公,当前时间属于上班时间,CPU占用率、内存占用率高于60%,该虚拟机当前处于使用状态,则级别为高。可以理解的是,用户预先设置级别评测的标准,服务器根据获取到的信息确定每一个信息项的级别,然后综合评价出虚拟机的优先级的级别。资源调配模块30将低优先级的虚拟机的资源回收,分配至高优先级的虚拟机。

本实施例提出的虚拟机资源的动态调配装置,服务器获取当前运行的虚拟机的运行状态信息,并根据获取到的运行状态信息,以及预置的优先级规则确定所述虚拟机当前的优先级,根据确定的优先级对虚拟机的资源进行动态调配,也就是说,即使在虚拟机开启时,服务器为虚拟机配置的初始资源量超出了服务器本身的总硬件资源量,在虚拟机的运行过程中,仍然可以根据虚拟机的运行状态信息确定虚拟机当前的优先级,并根据确定的优先级对虚拟机的资源进行动态的配置,根据服务器上配置的调整规则,通过减少优先级低的虚拟机的资源配额,来优先保证优先级高的虚拟机的正常运行。

可以理解的是,虚拟机的运行状态信息是根据用户的使用情况在动态变化的,因此,当前优先级高的虚拟机在使用一段时间后,可能优先级会降低,而当前优先级低。虚拟机在使用一段时间后,可能优先级会升高,也就是说,随着虚拟机的运行状态的动态变化,其优先级的高低也是在动态变化的,随着优先级的动态变化,资源调配模块30动态的调整虚拟机的资源量。

基于第一实施例提出本发明虚拟机资源的动态调配装置的第二实施例。在本实施例中,优先级规则包括权重分配规则和优先级权重算法,优先级确定模块20还用于:根据获取到所述虚拟机的运行状态信息,以及预置的权重分配规则和优先级权值算法,分别计算所述虚拟机的优先级权值,根据计算得到的所述优先级权值确定所述虚拟机的优先级。

在本实施例中,采用加权算法,为运行状态信息中的各个信息项设置权重,所有信息项的权重之和为1,然后根据获取的各个信息项的值以及优先级规则计算每一个信息项的分数,优先级确定模块20根据加权算法计算出所有信息项的加权平均值,即为该虚拟机的优先级权值。例如,采用百分制,每一项信息项的总分为一百分,用户预先设置每一个信息项下不同的参数对应的分数,以应用类型为例,办公应用为100分,视频应用为60分,游戏应用为20分。这样在获取到每一个信息项后,可以获取该信息项的分数,再结合权重,优先级确定模块20计算出所有信息项的加权平均值。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

另外,在发明中涉及“第一”、“第二”等等的描述仅描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当人认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1