本发明涉及网络通信技术领域,具体涉及一种虚拟机分配方法和一种虚拟机分配装置。
背景技术:
云资源提供商需要将承载用户应用程序的多个虚拟机在互联网数据中心(IDC,Internet Data Center)内进行分配,其中,初次分配过程是,云资源提供商判断将这些待分配的承载了应用程序的虚拟机(VM)映射到哪些物理服务器(PM)上。因此,初次分配是一个很重要的过程,合理的分配可以大幅度减少数据交流量和物理服务器使用数量以达到节能优化的目的。
目前,面向节能的虚拟机分配方法主要采用资源能力归一化方法。具体为,在制定虚拟机到物理服务器的分配策略时,首先,将每台虚拟机和每个物理服务器的能力均简化为一维指标;然后,制定待迁移的虚拟机集合、目标物理服务器集合,逐个对待迁移的虚拟机进行判断,计算出每台虚拟机的最佳目标物理服务器;最后,输出目标物理服务器集合。
显然,资源能力归一化方法将虚拟机到物理服务器的资源放置抽象为单一数值,在进行虚拟机分配的过程中,该方法快速寻找到了目标物理服务器的位置。但是,在实际运行环境中,虚拟机和物理服务器仅使用单一的归一化指标并不能准确描述虚拟机所需的资源大小,从而大大降低了虚拟机分配的有效性。
技术实现要素:
本发明所要解决的技术问题是针对现有技术中所存在的上述缺陷,提供一种虚拟机分配方法和一种虚拟机分配装置,能够提高虚拟机分配的有效性。
解决本发明技术问题所采用的技术方案是:
本发明提供一种虚拟机分配方法,包括如下步骤:
根据承载各个应用程序的各组虚拟机分别所需的内存量、CPU资源量和I/O资源量,以及各个物理服务器的内存量、CPU资源量和I/O资源量,获取承载各个应用程序的各组虚拟机分别对应的物理服务器的位置,其中,每组虚拟机用于承载同一个应用程序;
分别将承载各个应用程序的各组虚拟机放入对应位置的物理服务器中。
本发明还提供一种虚拟机分配装置,包括:
获取模块,用于根据承载各个应用程序的各组虚拟机分别所需的内存量、CPU资源量和I/O资源量,以及各个物理服务器的内存量、CPU资源量和I/O资源量,获取承载各个应用程序的各组虚拟机分别对应的物理服务器的位置,其中,每组虚拟机用于承载同一个应用程序;
迁移模块,用于分别将承载各个应用程序的各组虚拟机放入对应位置的物理服务器中。
有益效果:
本发明所述的虚拟机分配方法及装置,将用于承载同一应用程序的若干个虚拟机划分为一组,从而按照应用程序的数量将虚拟机划分为多组,然后综合考虑了每组虚拟机所需的内存量、CPU资源量和I/O资源量,以及每个物理服务器的内存量、CPU资源量和I/O资源量,从整体上确定每组虚拟机对应的物理服务器的地址,与现有的资源能力归一化方法将虚拟机到物理服务器的资源放置抽象为单一数值,逐个计算出每台虚拟机的最佳目标物理服务器相比,在实际运行环境中,能够准确描述每组虚拟机所需资源大小,并极大地提高了虚拟机分配的有效性。
附图说明
图1为本发明实施例1提供的虚拟机分配方法的流程示意图;
图2为本发明实施例2提供的虚拟机分配方法的流程示意图;
图3为本发明实施例3提供的虚拟机分配装置的结构示意图;
以及
图4为本发明实施例4提供的虚拟机分配装置的结构示意图。
图中:100-获取模块;101-装箱子模块;102-构造子模块;103-处理子模块;200-迁移模块。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和实施例对本发明作进一步详细描述。
需要说明的是,本发明中,虚拟机(Virtual Machine,简称VM)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
实施例1:
图1为本发明实施例1提供的虚拟机分配方法的流程示意图,如图1所示,所述分配方法包括如下步骤:
步骤101.根据承载各个应用程序的各组虚拟机分别所需的内存量、CPU资源量和I/O资源量,以及各个物理服务器的内存量、CPU资源量和I/O资源量,获取承载各个应用程序的各组虚拟机分别对应的物理服务器的位置,其中,每组虚拟机用于承载同一个应用程序。
具体地,本步骤中,先将用于承载同一应用程序的若干个虚拟机划分为一组,从而按照应用程序的数量将待迁移的虚拟机划分为多组,其中,每组虚拟机包括至少一台虚拟机,每台虚拟机只能承载一种应用,这里,每组虚拟机包括的虚拟机数量可由本领域技术人员根据待承载的应用程序的复杂程度来确定,由于不同的应用程序的复杂程度不同,故承载不同应用程序的各组虚拟机的数量也不同;再综合考虑每组虚拟机所需的内存量、CPU资源量和I/O资源量,以及每个物理服务器的内存量、CPU资源量和I/O资源量,从整体上为每组虚拟机分配合适的物理服务器并获取该合适的物理服务器的地址,并使得每组虚拟机与该合适的物理服务器的地址相对应,从而确定每组虚拟机对应的物理服务器的地址。
步骤102.分别将承载各个应用程序的各组虚拟机放入对应位置的物理服务器中,从而完成虚拟机到物理服务器的资源分配。换言之,将承载用户应用程序的所有虚拟机在互联网数据中心(IDC,Internet Data Center)内进行分配。
对于互联网数据中心来说,其中包含多个物理服务器(PMx,x∈[1,n1])和多台交换机(Sβ,β∈[1,n2]),用以提供快速安全的网络,以及对服务器监管、流量监控等网络管理方面的服务。
一般地,每个PM(即物理服务器)可以运行若干台VM,而每台VM(即虚拟机)只能承载一种应用程序,每个应用程序可以由若干台VM同时处理、共同运行完成,因此,VM之间存在通信量,换言之,用于承载同一应用程序的不同虚拟机之间会有数据流量交换。
为了减少承载同一应用程序的VM之间的数据交换,可尽量将承载同一应用程序的VM放入同一个物理服务器中。假设表示一台运行在物理服务器上的虚拟机,其中,q表示该虚拟机的编号,p表示该虚拟机所属的物理服务器的编号,a表示该虚拟机所承载的应用程序,即,用于承载应用程序a的虚拟机q运行在物理服务器p上。则尽量将用于承载的应用程序a相同的所有都放入同一个物理服务器q中。
因此,优选地,本步骤还包括:将承载同一个应用程序的一组虚拟机放入一个物理服务器中,从而对虚拟机的放置位置进行了优化处理,减少了承载同一应用程序的虚拟机之间的数据交换。当然,本实施例不限于此,对于比较复杂的应用程序,用于承载其的虚拟机的数量太多导致一个物理服务器放不下时,可以放入多个物理服务器中,原则上是,在前一个物理服务器放满的情况下,才放入后一个物理服务器中。例如,假使一个物理服务器能够运行10个虚拟机,而应用程序X需要15个虚拟机来承载,则将这15个虚拟机中的10个放入一个物理服务器PM1中,并将另外5个放入另一个物理服务器PM2中,而另一个物理服务器PM2中剩余的位置还可放入用于承载其他应用程序(如应用程序Y)的虚拟机,这里,用于承载应用程序Y的虚拟机的数量应少于5个,以减少承载同一应用程序Y的虚拟机之间的数据交换。
本实施例所述虚拟机分配方法能够准确描述每组虚拟机所需资源大小,从而在初次分配虚拟机的过程中,能够快速、高效地完成虚拟机到物理服务器的资源分配,极大地提高了虚拟机分配的有效性。
实施例2:
图2为本发明实施例2提供的虚拟机分配方法的流程示意图,如图2所示,所述分配方法包括如下步骤:
步骤201.将承载同一个应用程序i的一组虚拟机装箱成为Vi。
其中,i=1,2,…,n,ki为承载同一个应用程序i的一组虚拟机的总数,n为应用程序的总数。ki的具体数值可由本领域技术人员根据应用程序i的复杂程度来确定。当然,不同的应用程序i对应ki不一定相同。
步骤202.将承载各个应用程序的各组虚拟机Vi分别所需的内存量、CPU资源量和I/O资源量构造为矩阵R,将各个物理服务器的内存量、CPU资源量和I/O资源量构造为矩阵K,以及根据承载各个应用程序的各组虚拟机Vi对应的物理服务器的位置定义矩阵X。
具体地,构造而成的矩阵R可以为:
其中,表示Vi所需的CPU资源量,表示Vi所需的内存量,表示Vi所需的I/O资源量,n为应用程序的总数;
构造而成的矩阵K可以为:
其中,表示第i个物理服务器所能提供的CPU资源量,表示第i个物理服务器所能提供的内存量,表示第i个物理服务器所能提供的I/O资源量,m为物理服务器的总数;
定义而成的矩阵X可以为:
其中,为m维单位坐标向量,具体为m维坐标平面的某一个单位基,且m为物理服务器的总数,n为应用程序的总数,用来表示Vi对应的物理服务器的位置,且一个Vi只对应一个物理服务器。例如,共包含m个元素,而元素“1”的位置就表示Vi在物理服务器上的对应位置,假使元素“1”位于该m维单位坐标向量中的第y个元素的位置处,则Vi所要放入的物理服务器的位置即为m个物理服务器中的第y个。
需要说明的是,本实施例不限制上述步骤201和步骤202的执行顺序,即步骤201和步骤202的顺序可以互换。
步骤203.对矩阵R、矩阵K和矩阵X进行线性规划处理,以获取所需物理服务器数量最少的矩阵X的解,从而得到承载各个应用程序的各组虚拟机Vi分别对应的物理服务器的位置。
具体地,对矩阵R、矩阵K和矩阵X进行线性规划处理可以为:令RX≤K,即:
计算出满足上述条件的矩阵X,再取其中rank(线性无关向量组的个数)最小的一组解,即为最优的虚拟机配置方案。而上述线性规划处理算法最多只需要计算n2次,是一个简单的线性规划问题,因此具有较好的时间复杂度。
步骤204.分别将承载各个应用程序的各组虚拟机Vi放入对应位置的物理服务器中,并将未放置虚拟机的物理服务器关闭,从而完成虚拟机到物理服务器的资源分配。
本实施例所述方法与实施例1所述方法中的相关特征可以相互参考。
本实施例所述虚拟机分配方法采用了一种面向节能的虚拟机优化分配方案,具体采用了基于线性规划的高效、节能的资源分配优化算法,该算法是一种在考虑全局流量上进行的虚拟机初次分配的算法,能够实现全局流量近似最优、需求物理服务器数量最少,大幅度降低数据中心的流量以及降低能耗成本;该算法通过建立线性规划模型,能够在云资源提供商初次分配虚拟机到物理服务器的过程中快速地求解出满足需求的物理服务器数量,从而实现了虚拟机到物理服务器的资源合理分配,极大地降低了网络吞吐量,并减少了运行的物理服务器的数量;同时,本实施例所述分配方法还具有较好的时间复杂度。
实施例3:
图3为本发明实施例3提供的虚拟机分配装置的结构示意图,如图3所示,所述分配装置包括获取模块100和迁移模块200。
获取模块100用于根据承载各个应用程序的各组虚拟机分别所需的内存量、CPU资源量和I/O资源量,以及各个物理服务器的内存量、CPU资源量和I/O资源量,获取承载各个应用程序的各组虚拟机分别对应的物理服务器的位置。其中,每组虚拟机用于承载同一个应用程序。
具体地,获取模块100先将用于承载同一应用程序的若干个虚拟机划分为一组,从而按照应用程序的数量将待迁移的虚拟机划分为多组,其中,每组虚拟机包括至少一台虚拟机,每台虚拟机只能承载一种应用,这里,每组虚拟机包括的虚拟机数量可由本领域技术人员根据待承载的应用程序的复杂程度来确定,由于不同的应用程序的复杂程度不同,故承载不同应用程序的各组虚拟机的数量也不同;再综合考虑每组虚拟机所需的内存量、CPU资源量和I/O资源量,以及每个物理服务器的内存量、CPU资源量和I/O资源量,从整体上为每组虚拟机分配合适的物理服务器并获取该合适的物理服务器的地址,并使得每组虚拟机与该合适的物理服务器的地址相对应,从而确定每组虚拟机对应的物理服务器的地址。
迁移模块200用于分别将承载各个应用程序的各组虚拟机放入对应位置的物理服务器中,从而完成虚拟机到物理服务器的资源分配。换言之,将承载用户应用程序的所有虚拟机在互联网数据中心(IDC,Internet Data Center)内进行分配。
一般地,每个PM可以运行若干台VM,而每台PM只能承载一种应用程序,每个应用程序可以由若干台VM同时处理、共同运行完成,因此,VM之间存在通信量,换言之,用于承载同一应用程序的不同虚拟机之间会有数据流量交换。
因此,优选地,迁移模块200还用于将承载同一个应用程序的一组虚拟机放入一个物理服务器中,从而对虚拟机的放置位置进行了优化处理,减少了承载同一应用程序的虚拟机之间的数据交换。当然,本实施例不限于此,对于比较复杂的应用程序,用于承载其的虚拟机的数量太多导致一个物理服务器放不下时,可以放入多个物理服务器中,原则上是,在前一个物理服务器放满的情况下,才放入后一个物理服务器中。
本实施例所述虚拟机分配装置能够准确描述每组虚拟机所需资源大小,从而在初次分配虚拟机的过程中,能够快速、高效地完成虚拟机到物理服务器的资源分配,极大地提高了虚拟机分配的有效性。
实施例4:
图4为本发明实施例4提供的虚拟机分配装置的结构示意图,如图4所示,所述分配装置包括获取模块100和迁移模块200,其中获取模块包括装箱子模块101、构造子模块102和处理子模块103。
装箱子模块101用于将承载同一个应用程序i的一组虚拟机装箱成为Vi。
其中,i=1,2,…,n,ki为承载同一个应用程序i的一组虚拟机的总数,n为应用程序的总数。ki的具体数值可由本领域技术人员根据应用程序i的复杂程度来确定。当然,不同的应用程序i对应ki不一定相同。
构造子模块102用于将承载各个应用程序的各组虚拟机Vi分别所需的内存量、CPU资源量和I/O资源量构造为矩阵R,将各个物理服务器的内存量、CPU资源量和I/O资源量构造为矩阵K,以及根据承载各个应用程序的各组虚拟机Vi对应的物理服务器的位置定义矩阵X。
具体地,构造子模块102构造而成的矩阵R可以为:
其中,表示Vi所需的CPU资源量,表示Vi所需的内存量,表示Vi所需的I/O资源量,n为应用程序的总数;
构造子模块102构造而成的矩阵K可以为:
其中,表示第i个物理服务器所能提供的CPU资源量,表示第i个物理服务器所能提供的内存量,表示第i个物理服务器所能提供的I/O资源量,m为物理服务器的总数;
构造子模块102定义而成的矩阵X可以为:
其中,为m维单位坐标向量,具体为m维坐标平面的某一个单位基,且m为物理服务器的总数,n为应用程序的总数,用来表示Vi对应的物理服务器的位置,且一个Vi只对应一个物理服务器。
处理子模块103用于对矩阵R、矩阵K和矩阵X进行线性规划处理,以获取所需物理服务器数量最少的矩阵X的解,从而得到承载各个应用程序的各组虚拟机Vi分别对应的物理服务器的位置。
具体地,处理子模块103对矩阵R、矩阵K和矩阵X进行线性规划处理可以为:令RX≤K,即:
处理子模块计算出满足上述条件的矩阵X,再取其中rank(线性无关向量组的个数)最小的一组解,即得到最优的虚拟机配置方案。而上述线性规划处理的算法最多只需要计算n2次,是一个简单的线性规划问题,因此具有较好的时间复杂度。
迁移模块200用于分别将承载各个应用程序的各组虚拟机Vi放入对应位置的物理服务器中,并将未放置虚拟机的物理服务器关闭,从而完成虚拟机到物理服务器的资源分配。
本实施例所述设备与实施例3所述设备中的相关特征可以相互参考。
本实施例所述虚拟机分配装置采用了一种基于线性规划的高效、节能的资源分配优化算法,该算法是一种在考虑全局流量上进行的虚拟机初次分配的算法,能够实现全局流量近似最优、需求物理服务器数量最少,大幅度降低数据中心的流量以及降低能耗成本;该算法通过建立线性规划模型,能够在云资源提供商初次分配虚拟机到物理服务器的过程中快速地求解出满足需求的物理服务器数量,从而实现了虚拟机到物理服务器的资源合理分配,极大地降低了网络吞吐量,并减少了运行的物理服务器的数量;同时,本实施例所述分配装置还具有较好的时间复杂度。
可以理解的是,上述方法及装置中的相关特征也可以相互参考。而且,上述实施例的编号(即实施例1、实施例2、实施例3和实施例4)是用于区分各实施例的,并不代表各实施例的优劣。
此外,本领域普通技术人员可以理解的是,实现上述方法实施例的全部或者部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤,而前述的存储介质包括ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应当说明的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。