具体实施方式
如图1所示,是本发明控制服务器的网络架构图。在本实施例中,所述控制服务器2通过网络与多个用户端1(图中仅示出一个)、多个数据库服务器3(图中仅示出一个)、多个虚拟机服务器(图1中为虚拟机服务器4和5)相连。所述网络可以是企业内部网(Intranet),也可以是互联网(Internet)或其它类型的通讯网络,如GPRS、Wi-Fi/WLAN、3G/WCDMA、3.5G/HSDPA等。
其中,每台虚拟机服务器中都安装有虚拟机监控程序,用于每隔预定时间,监控用户端1虚拟机的特定资源的使用率,并将监控得到的虚拟机特定资源的使用率发送至控制服务器2。例如,虚拟机服务器4监控虚拟机41和42的资源使用率,虚拟机服务器5监控虚拟机51和52的资源使用率。在本实施例中,所述特定资源使用率包括三种类型,CPU使用率(CPU%)、内存使用率(Memory%)和硬盘使用率(Disk%)。在其他实施例中,也可以增加或减少资源使用率的类型。
控制服务器2作为虚拟机服务器中心,根据虚拟机的名称将每个虚拟机的资源使用率存到对应的数据表中。例如,虚拟机41的资源使用率存储到数据表Table41,虚拟机42的资源使用率存储到数据表Table42。其中,每个数据表包括以下栏位,虚拟机名称、ID、CPU使用率、内存使用率、硬盘使用率与存储时间等。
在本实施例中,所述多个数据库服务器3提供分布式平行运算功能。参阅图5所示,所述多个数据库服务器3的架构为主从式架构(Master/Slave),由一台主服务器(Master Server)负责分割数据并分配到不同的从服务器(Slave Server),从服务器负责运算分配到的数据,并将结果回传给主服务器,主服务器再将汇总的数据传给控制服务器2,以进一步进行运算。
如图2所示,是本发明虚拟机资源配置***的运行环境示意图。该虚拟机资源配置***运行于控制服务器2中。该控制服务器2还包括通过数据总线相连的显示设备20、输入设备22、存储器23和处理器25。
所述存储器23用于存储所述虚拟机资源配置***24的程序代码和虚拟机资源使用率的数据表等资料。所述显示设备20用于显示虚拟机的资源使用率等资料。所述输入设备22用于输入用户设置的各种数据,如虚拟机的名称等。
所述虚拟机资源配置***24用于根据用户端1虚拟机使用过程中特定资源使用率的变化,提供给用户推荐的资源规格,并根据该推荐的资源规格重新为该虚拟机分配资源,具体过程以下描述。
在本实施例中,所述虚拟机资源配置***24可以被分割成一个或多个模块,所述一个或多个模块被存储在所述存储器23中并被配置成由一个或多个处理器(本实施例为一个处理器25)执行,以完成本发明。例如,参阅图3所示,所述虚拟机资源配置***24被分割成资料获取模块240、计算模块241、推荐模块242和配置模块243。本发明所称的模块是完成一特定功能的程序段,比程序更适合于描述软件在控制服务器2中的执行过程。以下将结合图4说明各模块的具体功能。
如图4所示,是本发明虚拟机资源配置方法的较佳实施例的流程图。
步骤S10,用户通过用户端1登录到虚拟机管理界面,启动一台虚拟机(如虚拟机41)。其中包含选择该虚拟机的资源规格、价格与安全机制等。假设用户初始选择的资源规格为(CPU,内存,硬盘)=(2.5GB,4GB,200GB)。
步骤S11,资料获取模块240获取虚拟机服务器侦测到的该虚拟机特定资源的使用率,并将该虚拟机特定资源的使用率存储于一个数据表。例如,资料获取模块240每隔1分钟,获取虚拟机服务器侦测到的该虚拟机特定资源的使用率,如CPU使用率、内存使用率和硬盘使用率。
步骤S12,计算模块241每隔一个分析周期,计算该虚拟机特定资源的平均使用率,并根据该虚拟机特定资源的平均使用率确定该虚拟机的资源层级。其中,该虚拟机的资源层级包括每种特定资源的平均使用率层级。
其中,所述计算模块241运用分布式平行运算(分割与合并),计算该虚拟机特定资源的平均使用率。当需要对一个虚拟机的特定资源使用率进行分析时,计算模块241依据该虚拟机特定资源使用率的获取时间顺序,将该虚拟机特定资源使用率分割成不同区块(Split),并将各区块分派给不同的数据库服务器3进行平行加法运算。
例如,参阅图6所示,计算模块241将每10笔资料分割成一个区块,得到区块split1、split2、…、splitm,其中,区块split1包括时间点为time1至time10的CPU使用率、内存使用率、硬盘使用率,区块split2包括时间点为time11至time20的CPU使用率、内存使用率、硬盘使用率。然后,计算模块241将区块split1分派给从服务器1进行加法运算,将区块split2分派给从服务器2进行加法运算等等,并将运算结果传回至控制服务器2。
计算模块241对每台从服务器算出的总和进行分组,同一组的数据再进行加总获得分组总和。接着,计算模块241再将所有分组总和加总得出最终加总值。最后,计算模块241再将最终加总值除以记录数获得特定资源的平均使用率,如CPU平均使用率、内存平均使用率、硬盘平均使用率。
例如,参阅图6所示,n代表周期(即记录数),i代表时间点,Ci代表时间点i的CPU使用率,Mi代表时间点i的内存使用率,Di代表时间点i的硬盘使用率,C′代表CPU平均使用率,M′代表内存平均使用率,D′代表硬盘平均使用率。
在本实施例中,以三种资源类型为例进行说明,每种资源的平均使用率被两个阀值分成三个层级。根据该虚拟机特定资源的平均使用率确定该虚拟机的资源层级的方法为:
如果第一类型资源的平均使用率(如CPU平均使用率)小于或等于第一阀值(如20%),则确定该第一类型资源的平均使用率为层级一,记为I;
如果第一类型资源的平均使用率大于第一阀值,且小于或等于第二阀值(70%),则确定该第一类型资源的平均使用率为层级二,记为II;
如果第一类型资源的平均使用率大于第二阀值,则确定该第一类型资源的平均使用率为层级三,记为III。
同理,如果第二类型资源的平均使用率(如内存平均使用率)小于或等于第三阀值(如40%),则确定该第二类型资源的平均使用率为层级一,记为A;
如果第二类型资源的平均使用率大于第三阀值,且小于或等于第四阀值(80%),则确定该第二类型资源的平均使用率为层级二,记为B;
如果第二类型资源的平均使用率大于第四阀值,则确定该第二类型资源的平均使用率为层级三,记为C。
同理,如果第三类型资源的平均使用率(如硬盘平均使用率)小于或等于第五阀值(如30%),则确定该第三类型资源的平均使用率为层级一,记为i;
如果第三类型资源的平均使用率大于第五阀值,且小于或等于第六阀值(60%),则确定该第三类型资源的平均使用率为层级二,记为ii;
如果第三类型资源的平均使用率大于第六阀值,则确定该第三类型资源的平均使用率为层级三,记为iii。
举例而言,假设SpecCPU代表CPU平均使用率的层级,SpecMEM代表内存平均使用率的层级,SpecDisk代表硬盘平均使用率的层级,Spec(SpecCPU,SpecMEM,SpecDisk)代表该虚拟机的资源层级,则确定该虚拟机资源层级的算法如下。
If(C’≤Threshold1)SpecCPU=I;
Else if(Threshold1<C’≤Threshold2)SpecCPU=II;
Else if(Threshold2<C’)SpecCPU=III;
If(M’≤Threshold3)SpecMEM=A;
Else if(Threshold3<M’≤Threshold4)SpecMEM=B;
Else if(Threshold4<M’)SpecMEM=C;
If(D’≤Threshold5)SpecDisk=i;
Else if(Threshold5<D’≤Threshold6)SpecDisk=ii;
Else if(Threshold6<D’)SpecDisk=iii。
其中,Threshold1至Threshold6分别代表第一阀值至第六阀值。
在本实施例中,每种特定资源的平均使用率被两个阀值分成三个层级,其中,CPU平均使用率被分为I、II、III三个层级,内存平均使用率被分为A、B、C三个层级,硬盘平均使用率被分为i、ii、iii三个层级。因此,根据排列组合可以得到27种不同的虚拟机资源层级,每种资源层级都预设有推荐的资源规格,层级越低分配的资源越少,层级越高分配的资源越多。例如,Spec(I,A,i)代表三项资源的平均使用率都较低,则推荐使用低资源规格。Spec(III,C,iii)代表三项资源的平均使用率都较高,则推荐使用高资源规格。
在其他实施例中,也可以通过增加或减少阀值,组合得到其他不同的虚拟机资源层级,方法类似,在此不再赘述。
步骤S13,推荐模块242根据该虚拟机的资源层级获取推荐的资源规格,并将该推荐的资源规格发送至用户端1。例如,假设计算出的CPU平均使用率C′=60%,内存平均使用率M′=85,硬盘平均使用率D′=20%,则可得知:
Threshold1<60%<Threshold2,SpecCPU=I;
Threshold4<85%,SpecMEM=C;
20%<Threshold5,SpecDisk=i;
则该虚拟机的资源层级Spec(SpecCPU,SpecMEM,SpecDisk)=Spec(I,C,i),假设资源层级(I,C,i)推荐的资源规格为:
CPU={500MB,…,1.75GB},
内存={3.2GB,…,4GB},
硬盘={最低容量,…,60GB}。
用户可自行选择上述范围内的资源项目,或自行输入上述范围内的值或由推荐模块242推荐固定的资源项目给用户。其中,上述修改可以在虚拟机运行时完成(Hot Plug),也可以暂停虚拟机运行后再修改完成。
步骤S14,配置模块243判断用户端1是否接受推荐的资源规格。例如,如果用户选择特定的资源规格(500MB,3.2GB,20GB)或选择由推荐模块242推荐固定的资源项目,则判定用户端1接受推荐的资源规格,执行步骤S15。如果用户端1没有接受推荐的资源规格,则流程结束。
步骤S15,配置模块243根据该推荐的资源规格重新为该虚拟机分配资源。例如,如果用户在该推荐的资源规格中选择(500MB,3.2GB,20GB),则配置模块243根据该用户选择的资源规则重新为该虚拟机分配资源。如果用户选择由控制服务器2推荐固定的资源项目,则配置模块243从该推荐的资源规格中随机或按照预定的顺序(如资源从小到大的顺序)选取特定的资源。
其中,用户初始选择的资源规格,即(CPU,内存,硬盘)=(2.5GB,4GB,200GB),不会被该推荐的资源规格覆盖,将保存于存储器23中。
在其他实施例中,所述数据库服务器3也可以为一台,甚至可以将控制服务器2和数据库服务器3合并为一台服务器。进一步地,虚拟机服务器4也可以为一台,甚至可以将控制服务器2和虚拟机服务器4合并为一台服务器。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。