本发明涉及云计算领域,具体来说,涉及一种虚拟机启动的方法及系统。
背景技术:
随着企业硬件成本的持续增长,虚拟化技术由于其降成本和安全性等特点得到了长足发展,但嵌入式虚拟化技术目前还处于初始阶段。传统嵌入式虚拟化主要用在系统仿真方面,启动完全模拟真机,启动时间长。
如果将嵌入式虚拟化拓展到应用服务上,用户更多地关心应用,而不关心启动过程是否与真机完全一致,用户需要快速响应及无缝使用(即用户重新上线后,应用能恢复到上次使用结束时状态)。为了实现该功能,可采用嵌入式虚拟机一直在线,当用户下线后,虚拟机继续运行。这种处理方式虽然能满足用户需求,但是由于虚拟机一直运行,会造成资源的浪费。
技术实现要素:
技术问题:本发明所要解决的技术问题在于:提供一种虚拟机启动的方法及系统,能够快速响应用户需求,实现用户虚拟机的秒级部署,且节省资源。
技术方案:为解决上述技术问题,本发明实施例采用如下方案:
第一方面,本实施例提供一种虚拟机启动的方法,该方法包括:
S10建立虚拟机资源池,并在虚拟机资源池中创建虚拟机;
S20判断用户待建虚拟机配置是否与虚拟机资源池中的虚拟机配置相同,如果是,则进入步骤S30,如果否,则按照待建虚拟机的配置条件创建虚拟机;
S30从虚拟机资源池中调用与待建虚拟机配置相同的虚拟机,并启动虚拟机,对用户界面同步更新。
结合第一方面,作为第一种可能实现方式,所述的S10进一步包括:
S101根据用户申请虚拟机的历史信息,测算虚拟机各种操作系统配置的比重;
S102在资源池中划分出部分资源,形成一个虚拟机资源池;
S103在虚拟机资源池中,按照各种虚拟机操作系统配置的比重,创建虚拟机,且配置完成后,虚拟机进入关机状态。
结合第一方面的第一种可能实现方式,作为第二种可能实现方式,所述的S101中,依据式(1)测算各种操作系统类型虚拟机的比重T:
T={S(i)/Y*100%}*{P(Ci,Mi)/S(i)*100%} 式(1)
式中,S(i)表示第i种操作系统类型的虚拟机总数,Y表示虚拟机的总数,P(Ci,Mi)表示第i种操作系统类型的虚拟机中,具有相同cpu和相同内存的虚拟机数量。
结合第一方面的第一种可能实现方式,作为第三种可能实现方式,所述的S103中,依据式(2)确定虚拟机资源池中创建的虚拟机数量N:
N=min{(C*T*D/Cm),(M*T*D/Mm)} 式(2)
式中,C表示资源池中未分配的物理cpu核数,Cm表示虚拟机cpu的最大核数,M表示资源池中未分配的内存容量,T表示虚拟机的比重,Mm表示虚拟机的最大内存容量,D表示分配给虚拟机资源池的资源占资源池资源的比重。
结合第一方面,作为第四种可能实现方式,所述的方法还包括步骤S40:在虚拟机资源池中重新配置虚拟机,该虚拟机与S30中被调用虚拟机具有相同配置。
第二方面,本实施例提供一种虚拟机启动的系统,该系统包括:
建立模块:用于建立虚拟机资源池,并在虚拟机资源池中创建虚拟机;
判断模块:用于判断用户待建虚拟机配置是否与虚拟机资源池中的虚拟机配置相同;如果是,则进入步骤S30,如果否,则按照待建虚拟机的配置条件创建虚拟机;
调用模块:用于从虚拟机资源池中调用与待建虚拟机配置相同的虚拟机,并启动虚拟机,对用户界面同步更新。
结合第二方面,作为第一种可能实现方式,所述的建立模块进一步包括:
测算子模块:用于根据用户申请虚拟机的历史信息,测算虚拟机各种操作系统配置的比重;
划分子模块:用于在资源池中划分出部分资源,形成一个虚拟机资源池;
创建子模块:用于在虚拟机资源池中,按照各种虚拟机操作系统配置的比重,创建虚拟机,且配置完成后,虚拟机进入关机状态。
结合第二方面的第一种可能实现方式,作为第二种可能实现方式,所述的测算子模块依据式(1)测算虚拟机各种操作系统类型的比重T:
T={S(i)/Y*100%}*{P(Ci,Mi)/S(i)*100%}
式中,S(i)表示第i种操作系统类型的虚拟机总数,Y表示虚拟机的总数,P(Ci,Mi)表示第i种操作系统类型的虚拟机中,具有相同cpu和相同内存的虚拟机数量。
结合第二方面的第一种可能实现方式,作为第三种可能实现方式,所述的创建子模块依据式(2)确定虚拟机资源池中创建的虚拟机数量N:
N=min{(C*T*D/Cm),(M*T*D/Mm)} 式(2)
式中,C表示资源池中未分配的物理cpu核数,Cm表示虚拟机cpu的最大核数,M表示资源池中未分配的内存容量,T表示虚拟机的比重,Mm表示虚拟机的最大内存容量,D表示分配给虚拟机资源池的资源占资源池资源的比重。
结合第二方面,作为第四种可能实现方式,所述的虚拟机启动的系统,还包括重置模块:用于在虚拟机资源池中重新配置虚拟机,该虚拟机与调用模块中被调用虚拟机具有相同配置。
有益效果:现有技术中,为了实现快速响应及无缝使用,采用嵌入式虚拟机一直在线,当用户下线后,虚拟机继续运行的方式。这种方式非常浪费资源。与现有技术相比,本发明实施例的虚拟机启动的方法及系统,通过在虚拟机资源池中创建虚拟机,当用户需要创建虚拟机时,通过调用虚拟机资源池中与待建虚拟机配置相同的虚拟机即可。这种方法能够快速响应用户需求,实现用户虚拟机的秒级部署,且节省资源。
附图说明
图1是本发明实施例方法的流程框图;
图2是本发明实施例方法中步骤S10的流程框图;
图3是本发明实施例系统的一种结构框图;
图4是本发明实施例系统的另一种结构框图;
图5是本发明实施例系统的架构图。
具体实施方式
下面结合附图与实施例,对本发明的技术方案作进一步详细描述。
如图1所示,本发明实施例提供的一种虚拟机启动的方法,该方法包括:
S10建立虚拟机资源池,并在虚拟机资源池中创建虚拟机;
S20判断用户待建虚拟机配置是否与虚拟机资源池中的虚拟机配置相同,如果是,则进入步骤S30,如果否,则按照待建虚拟机的配置条件创建虚拟机;
S30从虚拟机资源池中调用与待建虚拟机配置相同的虚拟机,并启动虚拟机,对用户界面同步更新。
本实施例的虚拟机启动的方法,通过预先创建虚拟机资源池,并在虚拟机资源池中创建虚拟机,使得用户在创建虚拟机时,可以直接从虚拟机资源池中调用。这样就不需要用户按照传统方式创建虚拟机。本实施例的虚拟机启动的方法能够快速响应用户需求,实现用户虚拟机的秒级部署,且节省资源。
作为优选方案,如图2所示,S10进一步包括:
S101根据用户申请虚拟机的历史信息,测算虚拟机各种操作系统配置的比重。例如,可以依据式(1)测算虚拟机各种操作系统配置的比重T:
T={S(i)/Y*100%}*{P(Ci,Mi)/S(i)*100%} 式(1)
式中,S(i)表示第i种镜像类型的虚拟机总数,Y表示虚拟机的总数,P(Ci,Mi)表示第i种镜像类型的虚拟机中,具有相同cpu和相同内存的虚拟机数量。
以CentOS操作系统为例:虚拟机总数为200台,CentOS操作系统的虚拟机有100台。CentOS操作系统的虚拟机中,cpu为双核、内存为4G的虚拟机有50台,其它配置有50台。依据式(1),cpu为双核、内存为4G的CentOS系统虚拟机的比重T={100/200}*{50/100}=25%。
用户申请虚拟机的历史信息包括每台虚拟机的cpu核数、内存大小和操作系统类型。由于各用户的需求不同,申请创建的虚拟机的历史信息也不同。根据用户申请虚拟机的历史信息,来测算虚拟机各种操作系统配置的比重,使得测算的比重因用户不同而不同。这样,测算的比重具有个性化,针对不同的用户有不同的比重。
S102在资源池中划分出部分资源,形成一个虚拟机资源池。在云平台后端资源中划分出部分资源,形成一个虚拟机资源池。根据云平台后端物理服务器的使用情况,可以将未使用的资源的10%分配给虚拟机资源池。
S103在虚拟机资源池中,按照各种虚拟机操作系统配置的比重,创建虚拟机,配置完成后,虚拟机进入关机状态。
在S103中,依据式(2)确定虚拟机资源池中创建的虚拟机数量N:
N=min{(C*T*D/Cm),(M*T*D/Mm)} 式(2)
式中,C表示资源池中未使用的物理cpu核数,Cm表示虚拟机cpu的最大核数,M表示资源池中未分配的内存容量,T表示虚拟机操作类型的比重,Mm表示虚拟机的最大内存。C为可以提供给待创建的虚拟机资源池的物理cpu核数。D表示分配给虚拟机资源池的资源占资源池资源的比重。作为优选,D为10%——20%。
以CentOS操作系统类型为例:资源池中有10000C可分配的CPU核数、20000G的可分配内存。设定虚拟机CentOS操作类型的比重T为25%,分配给虚拟机资源池的资源占资源池资源的比重D为10%。CentOS操作系统的虚拟机的CPU最大为8C、内存最大为32G。依据式(2)有:C*T*D/Cm=1000*25%*10%/8=3;M*T*D/Mm=20000*25%*10%/32=16。可创建CentOS操作系统的虚拟机数量N为3台。
上述实施例中,根据根据用户申请虚拟机的历史信息,在虚拟机资源池中配置虚拟机。这样,各用户创建的虚拟机操作类型的比重T不同,使得各用户在资源池中创建的虚拟机数量不同。用户使用频率较高的虚拟机将较多的配置在虚拟机资源池中,而使用频率较低的虚拟机将较少的配置在虚拟机资源池中。这避免了将不经常配置的虚拟机较多的设置在虚拟机资源池中,浪费资源;同时也避免了将各种操作系统类型的虚拟机以相同数量设置在虚拟机资源池中,浪费资源。
由于各用户申请虚拟机的历史信息不同,因此,在虚拟机资源池中配置的虚拟机也不同。在虚拟机资源池中创建虚拟机具有个性化,根据用户不同而配置了不同的虚拟机。
为使得虚拟机资源池中的虚拟机可以长期有效的被调用,所述的虚拟机启动的方法,还包括步骤S40:在虚拟机资源池中重新配置一虚拟机,该虚拟机与S30 中被调用虚拟机具有相同配置。这样,无论S30调用了多少台虚拟机,虚拟机资源池中始终有相同配置的虚拟机等待被调用。
上述实施例,能够快速响应用户需求,实现用户虚拟机的秒级部署,所有用户历史申请过的各操作系统类型的虚拟机都会被创建,不会影响用户使用。对于低比重的操作系统虚拟机也会创建。传统方式创建启动一台虚拟机,需要两分钟左右的时间。而本实施例的启动方法,启动虚拟机需要5s。另外,虚拟机在物理机中存放,最大化使用物理机,提高物理机的使用效率。
如图3所示,本实施例的一种虚拟机启动的系统,该系统包括:
建立模块:用于建立虚拟机资源池,并在虚拟机资源池中创建虚拟机;
判断模块:用于判断用户待建虚拟机配置是否与虚拟机资源池中的虚拟机配置相同;如果是,则进入步骤S30,如果否,则按照待建虚拟机的配置条件创建虚拟机;
调用模块:用于从虚拟机资源池中调用与待建虚拟机配置相同的虚拟机,并启动虚拟机,对用户界面同步更新。
本实施例的虚拟机启动的系统,通过建立模块预先创建虚拟机资源池,并在虚拟机资源池中创建虚拟机,使得用户在创建虚拟机时,通过判断模块判断用户待建虚拟机配置是否与虚拟机资源池中的虚拟机配置相同。如果有,则通过调用模块从虚拟机资源池中调用与待建虚拟机配置相同的虚拟机,并启动虚拟机;如果没有,则按照待建虚拟机的配置条件创建虚拟机。如果虚拟机资源池中有与待建虚拟机配置相同的虚拟机,则通过调用模块直接调用,而不需要用户按照传统方式创建虚拟机。本实施例的虚拟机启动系统能够快速响应用户需求,实现用户虚拟机的秒级部署,且节省资源。
作为优选方案,如图3所示,所述的建立模块进一步包括:
测算子模块:用于根据用户申请虚拟机的历史信息,测算虚拟机各种操作系统配置的比重。
划分子模块:用于在资源池中划分出部分资源,形成一个虚拟机资源池。在云平台后端资源中划分出部分资源,形成一个虚拟机资源池。根据云平台后端物理服务器的使用情况,可以将未使用的资源的10%分配给虚拟机资源池。
创建子模块:用于在虚拟机资源池中,按照各种虚拟机操作系统配置的比重,创建虚拟机,且配置完成后,虚拟机进入关机状态。
作为优选方案,测算子模块可以依据式(1)测算虚拟机各种操作系统类型的比重T:
T={S(i)/Y*100%}*{P(Ci,Mi)/S(i)*100%} 式(1)
式中,S(i)表示第i种操作系统类型的虚拟机总数,Y表示虚拟机的总数,P(Ci,Mi)表示第i种操作系统类型的虚拟机中,具有相同cpu和相同内存的虚拟机数量。
用户申请虚拟机的历史信息包括每台虚拟机的cpu核数、内存大小和操作系统类型。由于各用户的需求不同,申请创建的虚拟机的历史信息也不同。根据用户申请虚拟机的历史信息,来测算虚拟机各种操作系统配置的比重,使得测算的比重因用户不同而不同。这样,测算的比重具有个性化,针对不同的用户有不同的比重。
作为优选方案,创建子模块依据式(2)确定虚拟机资源池中创建的虚拟机数量N:
N=min{(C*T*D/Cm),(M*T*D/Mm)} 式(2)
式中,C表示资源池中未分配的物理cpu核数,Cm表示虚拟机cpu的最大核数,M表示资源池中未分配的内存容量,T表示虚拟机操作类型的比重,Mm表示虚拟机的最大内存容量。C为可以提供给待创建的虚拟机资源池的物理cpu核数。D表示分配给虚拟机资源池的资源占资源池资源的比重。作为优选,D为10%——20%,例如10%、13%、17%、20%。当然D的取值可以超过20%,也可以小于10%。
上述实施例中,根据根据用户申请虚拟机的历史信息,在虚拟机资源池中配置虚拟机。这样,各用户创建的虚拟机操作类型的比重T不同,使得各用户在资源池中创建的虚拟机数量不同。用户使用频率较高的虚拟机将较多的配置在虚拟机资源池中,而使用频率较低的虚拟机将较少的配置在虚拟机资源池中。这避免了将不经常配置的虚拟机较多的设置在虚拟机资源池中,浪费资源;同时也避免了将各种操作系统类型的虚拟机以相同数量设置在虚拟机资源池中,浪费资源。
由于各用户申请虚拟机的历史信息不同,因此,在虚拟机资源池中配置的虚拟机也不同。在虚拟机资源池中创建虚拟机具有个性化,根据用户不同而配置了不同数量的各操作系统的虚拟机。
如图4所示,所述的虚拟机启动的系统,还包括重置模块:用于在虚拟机资源池中重新配置虚拟机,该虚拟机与调用模块中被调用虚拟机具有相同配置。这样,无论调用米快调用了多少台虚拟机,虚拟机资源池中始终有相同配置的虚拟机等待被调用。
上述实施例,能够快速响应用户需求,实现用户虚拟机的秒级部署。传统方式创建启动一台虚拟机,需要两分钟左右的时间。而本实施例的启动方法,启动虚拟机需要5s。本实施例中,所有用户历史申请过的各操作系统类型的虚拟机都会被创建,不会影响用户使用。对于低比重的操作系统虚拟机也会创建。如果用户待创建的虚拟机数量大于资源池中具有相同配置的虚拟机数量时,则调用模块先调用虚拟机资源池中已有的相同配置的虚拟机供用户使用。缺少的相同配置的虚拟机由重置模块在虚拟机资源池中重新配置相同配置的虚拟机,再由调用模块调用该虚拟机给用户,直至满足用户需要的数量。
如图5所示,为本实施例的系统架构图。系统包括前台、中台和后台。前台通过界面展示给用户。界面中有资源创建模块、用户管理模块、消费充值模块以及其他功能模块。用户通过资源创建模块输入待创建的虚拟机的配置情况,例如内存大小、cpu大小和操作系统类型。中台包括中间调用层。中间调用层包括预资源池管理模块、正常资源调用模块和数据库。预资源池管理模块根据对用户申请虚拟机历史信息的分析结果以及资源池资源,创建虚拟机资源池,并根据虚拟机各种操作系统配置的比重,在虚拟机资源池中创建虚拟机。如果用户待创建的虚拟机与虚拟机资源池中已有的虚拟机配置相同,则通过调用模块,从虚拟机资源池中调用该虚拟机;如果用户待创建的虚拟机与虚拟机资源池中虚拟机配置都不相同,则通过正常资源调用模块创建虚拟机。在用户通过调用模块或者正常资源调用模块配置虚拟机后,中间调用层中的数据库都进行同步更新。中间调用层与后台IAAS层的API接口连接。后台包括调度管理模块以及计算、存储和网络配置等功能模块。对用户申请虚拟机历史信息的分析过程是在后台的计算模块中完成的。计算模块的计算结果会保存在存储模块中,供中间调用层调用。网络模 块起到网络配置和用户账户信息的设置作用。网络模块配置的信息保存在中间调用层的数据库中。
在虚拟机资源池中创建虚拟机之前,预先通过后台的网络模块配置建立网络和用户账户,虚拟机资源池中的虚拟机都在此账户和网络下。当用户在界面点击创建虚拟机时,根据用户选择的虚拟机cpu核数,内存大小及操作系统类型,判断虚拟机资源池中是否有相同配置的虚拟机。如果有,则随机调取虚拟机资源池中的一个相同配置的虚拟机,修改网卡及账户信息后启动虚拟机。在启动虚拟机同时,用户界面进行数据同步。前台会读取位于中间调用层的数据库中虚拟机的网络信息及定义的虚机名称和密码等信息,将这些定义的信息同步给正在启动的虚拟机。
本领域技术人员应该知晓,实现上述实施例的方法或者系统,可以通过计算机程序指令来实现。该计算机程序指令装载到可编程数据处理设备上,例如计算机,从而在可编程数据处理设备上执行相应的指令,用于实现上述实施例的方法或者系统实现的功能。
本领域技术人员依据上述实施例,可以对本申请进行非创造性的技术改进,而不脱离本发明的精神实质。这些改进仍应视为在本申请权利要求的保护范围之内。