CN103870314A - 一种单节点同时运行不同类型虚拟机的方法及系统 - Google Patents
一种单节点同时运行不同类型虚拟机的方法及系统 Download PDFInfo
- Publication number
- CN103870314A CN103870314A CN201410080648.4A CN201410080648A CN103870314A CN 103870314 A CN103870314 A CN 103870314A CN 201410080648 A CN201410080648 A CN 201410080648A CN 103870314 A CN103870314 A CN 103870314A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- cpu
- parameter
- framework
- resource requirement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Small-Scale Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种单节点同时运行不同类型虚拟机的方法及系统,实现方法为,解析任务请求中包含的对运行虚拟机的资源需求;将CPU参数转换成cgroup框架可识别的参数,判断待创建的虚拟机类型,如果是轻量级虚拟机,直接将资源需求传递给底层cgroup框架,建立并启动轻量级虚拟机;如果是全虚拟机,接将资源需求传递给底层cgroup框架,cgroup框架创建一个容器,在容器中建立所需的全虚拟机;利用网桥技术和TBF令牌桶过滤器技术将建立的轻量级虚拟机或全虚拟机接入局域网并进行网络I/O控制;本发明使得不同类型的虚拟机可以共享一台物理机的资源,提供给用户一种简单、透明、统一使用虚拟机的接口,提高了资源利用率。
Description
技术领域
本发明涉及计算机虚拟化领域,尤其涉及一种单节点上同时运行不同类型虚拟机的方法及系统。
背景技术
近年来,随着计算资源种类日益增加、规模不断扩大、计算能力不断加大以及应用需求日渐多样化的背景下,新型的计算模式迫在眉睫。面对这些场景以及需求,虚拟化技术渐渐复兴。虚拟化是一个相对广义的术语,在本文指的虚拟化技术更多涉及的是服务器虚拟化,其本质是将一个物理机资源虚拟出不同的资源组合,即将物理机的资源划分成虚拟机提供给用户使用的技术。这些虚拟机上面可以安装其他客户操作系统。
虚拟化可以帮助提高系统资源的利用率,实现动态、弹性的运行系统架构。目前,云计算大行其道,而云计算平台的基石即为虚拟化技术。正是由于虚拟化技术的重要性,目前涌现出了多种比较成熟的虚拟化技术。目前主流的虚拟化技术主要可以分为三类:全虚化技术KVM,半虚拟化技术Xen以及轻量级虚拟化技术LXC。
在目前的云计算中心中,半虚拟化技术Xen由于其要求修改运行于其上的操作系统,因此,其流行和使用程度在大幅下降。现在使用最多虚拟化技术是全虚拟化KVM和轻量级虚拟化技术LXC,而且它们是目前唯一进入Linux内核主线的虚拟化技术,但是它们使用不同的“语言”描述与控制资源,这个也就造成了它们机制的不兼容。当它们在同一个服务器上运行的时候,并不能在整体上为这两种虚拟化技术分配并限制合适的资源。在有不同虚拟化技术需求的时候,通常会要求在一个物理机上运行一种虚拟化技术,并使用另外的服务器使用其他的虚拟化技术,但是在这种情况下,不同种虚拟化技 术不能同时运行在单个物理节点上,造成了极大的资源浪费,资源利用率比较低。
另外,目前很多云平台的应用对于I/O带宽资源管理也提出了需求。比如现在的很多编程模型应用,对于网络I/O带宽的无管制的竞争会影响其任务执行的速度,也影响了云平台整体的可用性,这就对网络I/O资源的隔离性和独占性提出了实际的需求,但现有技术中没有关于I/O宽带资源控制的技术。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种单节点上同时运行不同类型虚拟机的方法及系统,实现但节点上不同类型虚拟机的共存及合理分配资源,同时可实现多维度、细粒度的资源管理及控制。
本发明解决上述技术问题的技术方案如下:一种单节点同时运行不同类型虚拟机的方法,包括如下步骤:
步骤101:单个物理节点接收任务请求,并解析任务请求中包含的对运行虚拟机的资源需求;
步骤102:判断任务请求中要求的虚拟机类型,如果是轻量级虚拟机,则直接执行步骤103;如果是全虚拟机,则执行步骤104;
步骤103:将资源需求中的第一类资源需求传递给底层cgroup框架,cgroup框架根据第一类资源需求直接建立并启动轻量级虚拟机,执行步骤105;
步骤104:将资源需求中的第一类资源需求传递给底层cgroup框架,cgroup框架根据第一类资源需求创建一个容器,在容器中建立所需的全虚拟机;
步骤105:利用网桥技术框架将建立的轻量级虚拟机或全虚拟机接入局域网;
步骤106:将资源需求中的第二类资源需求传递给网桥技术框架,根据第二类资源需求及TBF令牌桶过滤器技术进行网络I/O控制。
本发明的有益效果是:多种虚拟机可以同时运行在同一物理机上;所有虚拟机的CPU资源、内存资源和I/O磁盘资源可以正确的被分配使用;可以同时满足用户对于不同操作系统运行环境的要求以及对于性能的要求;可以限制不同种虚拟机的网络I/O资源;对于底层不同虚拟化技术透明,即虚拟化技术不用作任何的修改;操作系统性能开销小,资源利用率高;本发明使得不同种虚拟机可以共享一台物理机的资源,并提供给用户一种简单、透明、统一使用虚拟机的接口,提高了资源利用率。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述资源需求信息包括第一类资源需求和第二类资源需求,所述第一类资源需求包括CPU参数、内存参数、磁盘I/O参数,所述第二类资源需求包括网络I/O参数。
进一步,将第一类资源需求中的CPU参数传递给底层cgroup框架之前,需将CPU参数转换成cgroup框架可识别的参数类型。
进一步,将资源需求中的CPU参数转换成cgroup框架可识别的参数类型的具体实现为:
步骤201:预先为每个物理节点设定CPU比例因子k,其用于表示CPU映射比例份额;
步骤202:获取物理节点的CPU核数m,计算CPU核数m与CPU比例因子k的乘积,将计算结果为CPU总可用份数M;
步骤203:获取用户任务请求中对CPU个数n的需求;
步骤204:计算CPU比例因子k与用户请求中的CPU个数n的乘积,计算结果为该任务请求需要的CPU比例份数N;
步骤205:比较该任务请求需要的CPU比例份数N与CPU总可用份数M 的大小,若N>M,则认为资源不足,虚拟机请求失败,结束;否则转至步骤206;
步骤206:比较该任务请求需要的CPU比例份数N与CPU剩余份数P的大小,若N>P,则认为资源不足,虚拟机请求失败,结束;否则执行步骤207;
步骤207:将该任务请求需要的CPU比例份数N赋值给参数cpu.shares,并将该cpu.shares参数传递给底层cgroup框架。
进一步,将资源需求中的内存参数和磁盘I/O参数传递给底层cgroup框架前要进行如下判断:
步骤301:预先设定所有虚拟机能使用的内存上限值及磁盘I/O上限值;
步骤302:将任务请求中的内存参数、磁盘I/O参数分别与内存上限值及磁盘I/O上限值比较,如果小于内存上限值及磁盘I/O上限值,则执行步骤303;否则认为资源不足,虚拟机请求失败,结束;
步骤303:将任务请求中的内存参数、磁盘I/O参数分别与内存剩余量及磁盘I/O剩余量比较,如果小于则执行步骤304;否则认为资源不足,虚拟机请求失败,结束;
步骤304:将资源需求中的内存参数和磁盘I/O参数传递给cgroup框架。
进一步,步骤105中利用网桥技术将建立的轻量级虚拟机或全虚拟机接入局域网前要进行如下判断:
步骤401:预先设定所有虚拟机能使用的网络I/O上限值;
步骤402:将任务请求中的网络I/O参数与网络I/O上限值比较,如果小于网络I/O上限值,则执行步骤403;否则认为资源不足,虚拟机请求失败,结束;
步骤403:将任务请求中的网络I/O参数与网络I/O剩余量比较,如果小于则执行步骤404;否则认为资源不足,虚拟机请求失败,结束;
步骤404:将资源需求中的网络I/O参数传递给网桥技术框架。
进一步,步骤105中利用网桥技术将建立的轻量级虚拟机或全虚拟机接入局域网的具体实现为:
步骤501:建立一个虚拟网桥,为每个虚拟机分配相应的tap设备;
步骤502:将单节点上所有不同类型的虚拟机通过其内的虚拟网卡与虚拟网桥中对应的tap设备连接;
步骤503:虚拟网桥中的所有tap设备通过物理机的真实网卡接入局域网;
步骤504:利用流量控制机制,根据资源需求中网络I/O参数对接入局域网的轻量级虚拟机或全虚拟机进行网络I/O资源控制。
本发明解决上述技术问题的另一技术方案如下:一种单节点同时运行不同类型虚拟机的系统,包括任务接收模块、任务分析模块、虚拟机创建模块、接入网模块;
所述任务接收模块,其用于接收发送给物理节点的任务,并传送给任务分析模块;
所述任务分析模块,其用于判断待创建的虚拟机类型,解析任务中包含的资源需求信息,将待创建虚拟机类型及资源需求信息发送给虚拟机创建模块;
所述虚拟机创建模块,其用于根据待创建的虚拟机类型决定是否通过cgroup框架创建容器,如果待创建虚拟机是轻量级虚拟机则不创建容器,直接建立轻量级虚拟机,如果待创建虚拟机是全虚拟则创建容器,并在容器中创建全虚拟机;
所述接入网模块,其用于利用网桥技术和TBF令牌桶过滤器技术将创建的轻量级虚拟机或全虚拟机接入局域网。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,上述技术方案还包括参数类型转换模块,其用于将资源需求中 的CPU参数转换成底层cgroup框架可识别的的参数类型。
附图说明
图1为本发明所述一种单节点同时运行不同类型虚拟机的方法流程图;
图2为本发明中将资源需求中的CPU参数转换成cgroup框架可识别的参数类型的具体实现流程图;
图3为本发明中根据资源需求中的内存参数和磁盘I/O参数传递给底层cgroup框架前进行判断的流程图;
图4为本发明中利用网桥技术将建立的轻量级虚拟机或全虚拟机接入局域网前进行判断的流程图;
图5为本发明中利用网桥技术将建立的轻量级虚拟机或全虚拟机接入局域网的具体实现流程图;
图6为本发明所述一种单节点同时运行不同类型虚拟机的系统框图;
图7为本发明所述实施例中物理机中运行环境示意图;
图8为本发明所述虚拟机接入接入局域网的结构示意图。
附图中,各标号所代表的部件列表如下:
1、任务接收模块,2、任务分析模块,3、虚拟机创建模块,4、接入网模块,5、参数转换模块。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
本发明还
如图1所示,一种单节点同时运行不同类型虚拟机的方法,包括如下步骤:
步骤101:单个物理节点接收任务请求,并解析任务请求中包含的对运行虚拟机的资源需求;
步骤102:判断任务请求中要求的虚拟机类型,如果是轻量级虚拟机,则直接执行步骤103;如果是全虚拟机,则执行步骤104;
步骤103:将资源需求中的第一类资源需求传递给底层cgroup框架,cgroup框架根据第一类资源需求直接建立并启动轻量级虚拟机,执行步骤105;
步骤104:将资源需求中的第一类资源需求传递给底层cgroup框架,cgroup框架根据第一类资源需求创建一个容器,在容器中建立所需的全虚拟机;
步骤105:利用网桥技术框架将建立的轻量级虚拟机或全虚拟机接入局域网;
步骤106:将资源需求中的第二类资源需求传递给网桥技术框架,根据第二类资源需求及TBF令牌桶过滤器技术进行网络I/O控制。
如图2所示,将资源需求中的CPU参数转换成cgroup框架可识别的参数类型的具体实现为:
其中,所述资源需求信息包括第一类资源需求和第二类资源需求,所述第一类资源需求包括CPU参数、内存参数、磁盘I/O参数,所述第二类资源需求包括网络I/O参数。
将第一类资源需求中的CPU参数传递给底层cgroup框架之前,需将CPU参数转换成cgroup框架可识别的参数类型。将资源需求中的CPU参数转换成cgroup框架可识别的参数类型的具体实现为:
步骤201:预先为每个物理节点设定CPU比例因子k,其用于表示CPU映射比例份额;
步骤202:获取物理节点的CPU核数m,计算CPU核数m与CPU比例因子k的乘积,将计算结果为CPU总可用份数M;
步骤203:获取用户任务请求中对CPU个数n的需求;
步骤204:计算CPU比例因子k与用户请求中的CPU个数n的乘积,计算结果为该任务请求需要的CPU比例份数N;
步骤205:比较该任务请求需要的CPU比例份数N与CPU总可用份数M的大小,若N>M,则认为资源不足,虚拟机请求失败,结束;否则转至步骤206;
步骤206:比较该任务请求需要的CPU比例份数N与CPU剩余份数P的大小,若N>P,则认为资源不足,虚拟机请求失败,结束;否则执行步骤207;
步骤207:将该任务请求需要的CPU比例份数N赋值给参数cpu.shares,并将该cpu.shares参数传递给底层cgroup框架。
本发明在KVM虚拟机自身的资源管理机制之外,包裹一层cgroup资源管理框架。这样就使得LXC虚拟机和KVM虚拟机同时接受cgroup资源框架的管理,故可以统一分配CPU资源,统一了不同虚拟化技术对于CPU资源的描述和分配,屏蔽了不同虚拟化技术的底层技术细节,将不同虚拟化技术都看成在操作系统中运行的普通进程,然后使用内核提供的可以限制、记录、隔离进程组物理机资源的机制去管理分配CPU资源,可以将CPU资源按比例分配给不同种类的虚拟化技术,使得它们可以共存在单个物理节点上,并且能正确的限制分配给它们的CPU资源。
如图3所示,根据资源需求中的内存参数和磁盘I/O参数传递给底层cgroup框架前要进行如下判断:
步骤301:预先设定所有虚拟机能使用的内存上限值及磁盘I/O上限值;
步骤302:将任务请求中的内存参数、磁盘I/O参数分别与内存上限值及磁盘I/O上限值比较,如果小于内存上限值及磁盘I/O上限值,则执行步骤303;否则认为资源不足,虚拟机请求失败,结束;
步骤303:将任务请求中的内存参数、磁盘I/O参数分别与内存剩余量及磁盘I/O剩余量比较,如果小于则执行步骤304;否则认为资源不足,虚 拟机请求失败,结束;
步骤304:将资源需求中的内存参数和磁盘I/O参数传递给cgroup框架。
本发明基于cgroup的多虚拟化技术统一框架将多种虚拟化技术的内存资源统一分配,统一管理。其架构与CPU资源的统一管理类似,不同的是使用cgroup框架限制每个虚拟机使用内存资源的上限,磁盘I/O资源与内存资源管理方式相同。
如图4所示,利用网桥技术将建立的轻量级虚拟机或全虚拟机接入局域网前要进行如下判断:
步骤401:预先设定所有虚拟机能使用的网络I/O上限值;
步骤402:将任务请求中的网络I/O参数与网络I/O上限值比较,如果小于网络I/O上限值,则执行步骤403;否则认为资源不足,虚拟机请求失败,结束;
步骤403:将任务请求中的网络I/O参数与网络I/O剩余量比较,如果小于则执行步骤404;否则认为资源不足,虚拟机请求失败,结束;
步骤404:将资源需求中的网络I/O参数传递给网桥技术框架。
如图5所示,利用网桥技术将建立的轻量级虚拟机或全虚拟机接入局域网的具体实现为:
步骤501:建立一个虚拟网桥,为每个虚拟机分配相应的tap设备;
步骤502:将单节点上所有不同类型的虚拟机通过其内的虚拟网卡与虚拟网桥中对应的tap设备连接;
步骤503:虚拟网桥中的所有tap设备通过物理机的真实网卡接入局域网;
步骤504:利用流量控制机制,根据资源需求中网络I/O参数对接入局域网的轻量级虚拟机或全虚拟机进行网络I/O资源控制。
本发明所述基于网桥技术框架将轻量级虚拟机或全虚拟机接入局域网, 并通过TBF令牌桶过滤器对多虚拟化技术网络I/O带宽资源进行管理,以一个绝对上限值将网络I/O带宽资源给不同虚拟化技术,并且能够正确的限制分配给它们的网络I/O带宽资源。本框架在单节点上建立一个虚拟网桥结构,并将不同种的虚拟化技术通过网桥共享单节点上的网络I/O带宽资源。本框架通过对于虚拟机在网桥中的tap设备上做网络I/O带宽的流量限制。本框架使用Linux内核支持的TBF(令牌桶过滤器),这种队列按照事先设定的速率来处理数据包的通过,达到网络流量控制的目的。
如图6所示,一种单节点同时运行不同类型虚拟机的系统,包括任务接收模块1、任务分析模块2、虚拟机创建模块3、接入网模块4;
所述任务接收模块1,其用于接收发送给物理节点的任务,并传送给任务分析模块;
所述任务分析模块2,其用于判断待创建的虚拟机类型,解析任务中包含的资源需求信息,将待创建虚拟机类型及资源需求信息发送给虚拟机创建模块;
所述虚拟机创建模块3,其用于根据待创建的虚拟机类型决定是否通过cgroup框架创建容器,如果待创建虚拟机是轻量级虚拟机则不创建容器,直接建立轻量级虚拟机,如果待创建虚拟机是全虚拟则创建容器,并在容器中创建全虚拟机;
所述接入网模块4,其用于利用网桥技术和TBF令牌桶过滤器技术将创建的轻量级虚拟机或全虚拟机接入局域网。
其中,上述技术方案还包括参数类型转换模块5,其用于将资源需求中的CPU参数转换成底层cgroup框架可识别的的参数类型。
由于在实际的数据中心中,使用的最多的是全虚拟化技术KVM以及轻量级虚拟化技术LXC,本实例就以这两种进入Linux内核的虚拟化技术的共存的实施例来解释本发明。
图7为此实例中物理机中运行环境示意图。在图中,该单节点接到两个任务请求,任务请求1和任务请求2,其中任务请求1中包含的资源需求为<LXC,1个CPU,(2GB softlimit,4GB hardlimt)内存,5MB/s磁盘I/O带宽,1Gb/s网络I/O带宽>,任务请求2中包含的资源需求为<KVM,2CPU,(3GB softlimit,6GB hardlimt)内存,10MB/s磁盘I/O带宽,1Gb/s网络I/O带宽>,有两个任务请求中包含的资源需求可知,两个任务需要分别运行在全虚拟机KVM和轻量级虚拟机LXC上,因此要在改节点上建立并同时运行了1个KVM虚拟机和1个LXC虚拟机。
其中,底层cgroup框架不能按照CPU个数为虚拟机分配CPU资源,需要将任务请求中的CPU个数转换为CPU比例份数。
具体为实现为,
1.预先为每个物理节点设定用于表示CPU映射比例份额的CPU比例因子k,本实施例中k=1024;
2.获取物理节点的CPU核数m(本实施例m=4),计算CPU核数m与CPU比例因子k的乘积,将计算结果为CPU总可用份数M,M=m*k=4*1024=4096;
3.获取用户任务请求1中对CPU个数n1的需求,n1=1;
4.计算CPU比例因子k与用户请求中的CPU个数n1的乘积,计算结果为该任务请求需要的CPU比例份数N1=n1*k=1*1024=1024;
5.比较N1与M的大小,若N1>M,则认为资源不足,虚拟机请求失败,结束;否则转至步骤6;
6.比较N1与CPU剩余份数P的大小,若N1>P,则认为资源不足,虚拟机请求失败,结束;否则执行步骤7;此时P=M=4096;
7.将该任务请求需要的CPU比例份数N(1024)赋值给参数cpu.shares,并将该cpu.shares参数传递给底层cgroup框架。
按照上述方法,当任务请求2到来时,用户任务请求2中对CPU个数n2 的需求,n2=3;该任务请求需要的CPU比例份数N2=n2*k=2*1024=2048;此时CPU剩余份数P=M-N1=4096-1024=3072;此时N2<4096,且N2<3072,所以剩余的CPU足够任务请求2使用,此时剩余的CPU份数P=1024。因此,任务请求1使用量、任务请求2使用量和剩余量三者的比例关系为1:2:1,cgroup框架按此比例分配CPU资源。
另外,关于内存、磁盘I/O带宽及网络I/O带宽,首先要设定每个虚拟机使用的上限值,在申请资源的时候不超过该上限值。其中,内存判断时根据内存需求量的最大值hardlimt判断可用内存是否足够该任务请求使用。
本发明的核心就是以统一的方式分配和控制分配给不同虚拟化技术的资源,对于不同种类的主流虚拟化技术(比如KVM虚拟机和LXC虚拟机),使用统一的cgroup作为统一的底层资源限制管理框架。本机制能够让多个虚拟化技术同时运行在单节点物理机上,并能正确的从整体上控制分配给不同虚拟化技术的资源。
下面分别叙述不同资源的控制管理办法:
1.CPU资源统一分配和管理
KVM虚拟机和LXC虚拟机的CPU控制策略完全不一样,KVM虚拟机使用了硬件虚拟化,LXC虚拟机使用了内核提供的特性。对于KVM虚拟机来说,配置其CPU的方式主要是配置其VCPU的个数来实现。而对于LXC来说,配置的是每个进程组的cpu shares参数,是一个比例参数,通过内核的调度,保证不同进程组之间的资源是按照一个比例使用。KVM虚拟机本质上也是一个进程。本发明把LXC使用cgroup的机制引入到KVM虚拟机,即把KVM虚拟机抽象为一个能被cgroup技术控制资源使用的进程,也就是将KVM虚拟机进程启动在经过cgroup资源限制的容器中。这样处理具有以下几个优点:
统一的资源控制策略可以使得KVM和LXC共享CPU资源,并可以保证它们获得相应的份数。即,通过预先设定的cgroup的shares份数使CPU 资源,而不管是什么虚拟化技术,都要受到内核cgroup资源框架的统一调度。资源消耗少,cgroup是目前可知的系统开销最小的资源管理框架。
2.内存资源的统一管理和分配
KVM在内核态使用的技术主要是影子页表技术来维护和控制虚拟机的内存数量。LXC管理内存的机制是与管理CPU相同的,也是通过cgroup的内存子系统并使用Linux内核提供的特性进行限定资源。通过cgroup对不同的虚拟化技术进程实现内存资源的统一分配和管理。本机制通过cgroups的memory子系统的hardlimit和softlimit两个参数来设置虚拟机的内存资源分配,hardlimit是一个资源上限,即系统内存资源丰富的时候,虚拟机能使用的最大内存量,softlimit是一个资源保证,即系统内存资源紧张的时候,系统能保证虚拟机的最少内存分配额。
3.磁盘I/O资源的统一管理和分配
目前KVM虚拟化技术只提供对磁盘大小的设置,并不支持磁盘带宽的控制,而LXC通过cgroup的blkio子系统能实现对磁盘I/O带宽的控制。本专利通过对KVM虚拟机进程进行抽象,推出其本质是一个系统进程,这样通过cgroup的blkio子系统实现虚拟机磁盘I/O带宽控制。这样就能通过cgroup技术实现对KVM和LXC两种虚拟化技术的磁盘I/O带宽统一的控制和管理。具体实现是通过cgroup的blkio子系统中throttle参数设置磁盘I/O的绝对带宽。虚拟机在启动时,通过以上设置能实现对其磁盘I/O带宽的分配和管理。
对于不同种类的主流虚拟化技术(比如KVM虚拟机和LXC虚拟机),使用统一的cgroup作为统一的底层资源限制管理框架。具体的方式是配置cgroup容器的是每个虚拟化技术进程的磁盘I/O throttle参数限制使用磁盘I/O的绝对带宽。
4.网络I/O资源的统一管理和分配
目前来说,无论是KVM或者是LXC都没有直接提供对于网络I/O资源的控制能力。本专利将考虑这部分的问题,并设计了一套在单个物理机上面同时运行这不同种虚拟机时候网络I/O资源分配方法。
虚拟机要接入网络,需要以一定的方式接入物理机网络进行网络虚拟化,本专利通过建立一个统一的虚拟网桥,并在网桥中分别创建对于不同虚拟化技术的网络接口tap,并将这些网络接口tap同真实的物理机网络接口桥接起来。
如图8中创建的虚拟网桥br0,不同种类的Linux内核是通过一个虚拟的网桥设备来实现桥接,这个设备可以绑定若干个以太网接口设备,从而将它们桥接起来。所述网桥br0,它连接了物理机的真实eth0网口,也连接了虚拟机的虚拟eth0网口,这个虚拟机的eth0网口对于操作宿主操作系统而言,看到的就是tap设备,也是一个虚拟的网络接口。虚拟机所有的流量都是通过虚拟的eth0到物理机上面的tap设备,最后经过物理机的eth0与外界进行通信。所以,要控制虚拟机的网络流量,可以在物理机上的tap设备上做限制。
本发明设计的策略使用Linux内核提供的网络流量控制。每个网络接口(如eth0和tap)都有一个队列,通过设置这个队列的类型和参数可以改变数据包发送的速率和优先级。本发明将队列类型设置为TBF(令牌桶过滤器),TBF是一种队列,其可以设置一个值,这个值可以限制该TBF队列的速率,这种队列按照事先设定的速率来处理数据包的通过,达到流量控制的目的。这里的网络I/O资源管理机制类似于cgroup的磁盘I/O资源管理机制,均是基于一个绝对的速度上限来限制和管理相应资源的。
本发明提出的机制能够让多个虚拟化技术同时运行在单节点物理机上,并能正确的从整体上控制分配给不同虚拟化技术的资源。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明 的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种单节点同时运行不同类型虚拟机的方法,其特征在于,包括如下步骤:
步骤101:单个物理节点接收任务请求,并解析任务请求中包含的对运行虚拟机的资源需求;
步骤102:判断任务请求中要求的虚拟机类型,如果是轻量级虚拟机,则直接执行步骤103;如果是全虚拟机,则执行步骤104;
步骤103:将资源需求中的第一类资源需求传递给底层cgroup框架,cgroup框架根据第一类资源需求直接建立并启动轻量级虚拟机,执行步骤105;
步骤104:将资源需求中的第一类资源需求传递给底层cgroup框架,cgroup框架根据第一类资源需求创建一个容器,在容器中建立所需的全虚拟机;
步骤105:利用网桥技术框架将建立的轻量级虚拟机或全虚拟机接入局域网;
步骤106:将资源需求中的第二类资源需求传递给网桥技术框架,根据第二类资源需求及TBF令牌桶过滤器技术进行网络I/O控制。
2.根据权利要求1所述一种单节点同时运行不同类型虚拟机的方法,其特征在于,所述资源需求信息包括第一类资源需求和第二类资源需求,所述第一类资源需求包括CPU参数、内存参数、磁盘I/O参数,所述第二类资源需求包括网络I/O参数。
3.根据权利要求2所述一种单节点同时运行不同类型虚拟机的方法,其特征在于,将第一类资源需求中的CPU参数传递给底层cgroup框架之前,需将CPU参数转换成cgroup框架可识别的参数类型。
4.根据权利要求3所述一种单节点同时运行不同类型虚拟机的方法,其特征在于,将资源需求中的CPU参数转换成cgroup框架可识别的参数类型的具体实现为:
步骤201:预先为每个物理节点设定CPU比例因子k,其用于表示CPU映射比例份额;
步骤202:获取物理节点的CPU核数m,计算CPU核数m与CPU比例因子k的乘积,将计算结果为CPU总可用份数M;
步骤203:获取用户任务请求中对CPU个数n的需求;
步骤204:计算CPU比例因子k与用户请求中的CPU个数n的乘积,计算结果为该任务请求需要的CPU比例份数N;
步骤205:比较该任务请求需要的CPU比例份数N与CPU总可用份数M的大小,若N>M,则认为资源不足,虚拟机请求失败,结束;否则转至步骤206;
步骤206:比较该任务请求需要的CPU比例份数N与CPU剩余份数P的大小,若N>P,则认为资源不足,虚拟机请求失败,结束;否则执行步骤207;
步骤207:将该任务请求需要的CPU比例份数N赋值给参数cpu.shares,并将该cpu.shares参数传递给底层cgroup框架。
5.根据权利要求2所述一种单节点同时运行不同类型虚拟机的方法,其特征在于,将资源需求中的内存参数和磁盘I/O参数传递给底层cgroup框架前要进行如下判断:
步骤301:预先设定所有虚拟机能使用的内存上限值及磁盘I/O上限值;
步骤302:将任务请求中的内存参数、磁盘I/O参数分别与内存上限值及磁盘I/O上限值比较,如果小于内存上限值及磁盘I/O上限值,则执行步骤303;否则认为资源不足,虚拟机请求失败,结束;
步骤303:将任务请求中的内存参数、磁盘I/O参数分别与内存剩余量 及磁盘I/O剩余量比较,如果小于则执行步骤304;否则认为资源不足,虚拟机请求失败,结束;
步骤304:将资源需求中的内存参数和磁盘I/O参数传递给cgroup框架。
6.根据权利要求2所述一种单节点同时运行不同类型虚拟机的方法,其特征在于,步骤105中利用网桥技术将建立的轻量级虚拟机或全虚拟机接入局域网前要进行如下判断:
步骤401:预先设定所有虚拟机能使用的网络I/O上限值;
步骤402:将任务请求中的网络I/O参数与网络I/O上限值比较,如果小于网络I/O上限值,则执行步骤403;否则认为资源不足,虚拟机请求失败,结束;
步骤403:将任务请求中的网络I/O参数与网络I/O剩余量比较,如果小于则执行步骤404;否则认为资源不足,虚拟机请求失败,结束;
步骤404:将资源需求中的网络I/O参数传递给网桥技术框架。
7.根据权利要求1所述一种单节点同时运行不同类型虚拟机的方法,其特征在于,步骤105中利用网桥技术将建立的轻量级虚拟机或全虚拟机接入局域网的具体实现为:
步骤501:建立一个虚拟网桥,为每个虚拟机分配相应的tap设备;
步骤502:将单节点上所有不同类型的虚拟机通过其内的虚拟网卡与虚拟网桥中对应的tap设备连接;
步骤503:虚拟网桥中的所有tap设备通过物理机的真实网卡接入局域网;
步骤504:利用流量控制机制,根据资源需求中网络I/O参数对接入局域网的轻量级虚拟机或全虚拟机进行网络I/O资源控制。
8.一种实现权利要求1-7中任一项所述单节点同时运行不同类型虚拟机方法的系统,其特征在于,包括任务接收模块、任务分析模块、虚拟机创 建模块、接入网模块;
所述任务接收模块,其用于接收发送给物理节点的任务,并传送给任务分析模块;
所述任务分析模块,其用于判断待创建的虚拟机类型,解析任务中包含的资源需求信息,将待创建虚拟机类型及资源需求信息发送给虚拟机创建模块;
所述虚拟机创建模块,其用于根据待创建的虚拟机类型决定是否通过cgroup框架创建容器,如果待创建虚拟机是轻量级虚拟机则不创建容器,直接建立轻量级虚拟机,如果待创建虚拟机是全虚拟则创建容器,并在容器中创建全虚拟机;
所述接入网模块,其用于利用网桥技术和TBF令牌桶过滤器技术将创建的轻量级虚拟机或全虚拟机接入局域网。
9.根据权利要求8所述一种单节点同时运行不同类型虚拟机的系统,其特征在于,还包括参数类型转换模块,其用于将资源需求中的CPU参数转换成底层cgroup框架可识别的的参数类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410080648.4A CN103870314B (zh) | 2014-03-06 | 2014-03-06 | 一种单节点同时运行不同类型虚拟机的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410080648.4A CN103870314B (zh) | 2014-03-06 | 2014-03-06 | 一种单节点同时运行不同类型虚拟机的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103870314A true CN103870314A (zh) | 2014-06-18 |
CN103870314B CN103870314B (zh) | 2017-01-25 |
Family
ID=50908881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410080648.4A Active CN103870314B (zh) | 2014-03-06 | 2014-03-06 | 一种单节点同时运行不同类型虚拟机的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103870314B (zh) |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468307A (zh) * | 2014-10-27 | 2015-03-25 | 中国运载火箭技术研究院 | 一种基于虚拟机的实时通信系统 |
CN104796673A (zh) * | 2015-05-19 | 2015-07-22 | 中国地质大学(武汉) | 一种面向能耗优化的云视频监控系统任务接入方法 |
CN105407140A (zh) * | 2015-10-23 | 2016-03-16 | 上海比林电子科技有限公司 | 一种网络化测试系统的计算资源虚拟化系统及方法 |
WO2016041421A1 (zh) * | 2014-09-19 | 2016-03-24 | 北京奇虎科技有限公司 | 网络通信方法及客户端 |
CN105681087A (zh) * | 2016-01-22 | 2016-06-15 | 中国人民解放军国防科学技术大学 | 基于轻量级虚拟机的虚拟控制平面资源管理方法 |
CN106170769A (zh) * | 2014-12-11 | 2016-11-30 | 华为技术有限公司 | 确定虚拟机资源的方法、装置及程序产品 |
US9667725B1 (en) | 2015-08-06 | 2017-05-30 | EMC IP Holding Company LLC | Provisioning isolated storage resource portions for respective containers in multi-tenant environments |
CN107133099A (zh) * | 2017-04-25 | 2017-09-05 | 深圳大数点科技有限公司 | 一种云计算方法 |
US9772792B1 (en) | 2015-06-26 | 2017-09-26 | EMC IP Holding Company LLC | Coordinated resource allocation between container groups and storage groups |
CN107346264A (zh) * | 2016-05-05 | 2017-11-14 | 北京金山云网络技术有限公司 | 一种虚拟机负载均衡调度的方法、装置和服务器设备 |
CN107819802A (zh) * | 2016-09-13 | 2018-03-20 | 华为软件技术有限公司 | 一种在节点集群中的镜像获取方法、节点设备及服务器 |
CN107918555A (zh) * | 2017-11-23 | 2018-04-17 | 北京百度网讯科技有限公司 | 基于物理主机的用于处理数据的方法和装置 |
CN108052385A (zh) * | 2017-12-29 | 2018-05-18 | 亿企赢网络科技有限公司 | 一种容器管理方法、系统、设备及计算机存储介质 |
US9983909B1 (en) | 2016-03-15 | 2018-05-29 | EMC IP Holding Company LLC | Converged infrastructure platform comprising middleware preconfigured to support containerized workloads |
CN108121605A (zh) * | 2017-12-31 | 2018-06-05 | 武汉烽火云创软件技术有限公司 | 一种基于yarn的cgroup内存控制优化方法及系统 |
CN108205461A (zh) * | 2016-12-19 | 2018-06-26 | 华耀(中国)科技有限公司 | 一种混合部署的虚拟化平台及部署方法 |
US10013213B2 (en) | 2016-04-22 | 2018-07-03 | EMC IP Holding Company LLC | Container migration utilizing state storage of partitioned storage volume |
CN108255598A (zh) * | 2016-12-28 | 2018-07-06 | 华耀(中国)科技有限公司 | 性能保证的虚拟化管理平台资源分配系统及方法 |
CN108279979A (zh) * | 2018-01-19 | 2018-07-13 | 聚好看科技股份有限公司 | 一种为应用程序容器绑定cpu的方法及装置 |
CN108780410A (zh) * | 2016-03-17 | 2018-11-09 | 微软技术许可有限责任公司 | 计算系统中的容器的网络虚拟化 |
US10146936B1 (en) | 2015-11-12 | 2018-12-04 | EMC IP Holding Company LLC | Intrusion detection for storage resources provisioned to containers in multi-tenant environments |
US10284557B1 (en) | 2016-11-17 | 2019-05-07 | EMC IP Holding Company LLC | Secure data proxy for cloud computing environments |
US10326744B1 (en) | 2016-03-21 | 2019-06-18 | EMC IP Holding Company LLC | Security layer for containers in multi-tenant environments |
CN111290858A (zh) * | 2020-05-11 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 输入输出资源管理方法、装置、计算机设备和存储介质 |
CN112148489A (zh) * | 2020-09-22 | 2020-12-29 | 网易(杭州)网络有限公司 | 游戏资源调度方法、装置、设备及存储介质 |
CN112667401A (zh) * | 2020-12-29 | 2021-04-16 | 深圳大普微电子科技有限公司 | 一种资源分配方法、系统及设备 |
US11063745B1 (en) | 2018-02-13 | 2021-07-13 | EMC IP Holding Company LLC | Distributed ledger for multi-cloud service automation |
US11128437B1 (en) | 2017-03-30 | 2021-09-21 | EMC IP Holding Company LLC | Distributed ledger for peer-to-peer cloud resource sharing |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436966A (zh) * | 2008-12-23 | 2009-05-20 | 北京航空航天大学 | 虚拟机环境下的网络监控与分析系统 |
CN102170428A (zh) * | 2011-03-22 | 2011-08-31 | 曙光信息产业(北京)有限公司 | 一种异构虚拟机平台动态扩展管理方法 |
US20110239215A1 (en) * | 2010-03-24 | 2011-09-29 | Fujitsu Limited | Virtual machine management apparatus |
CN102546379A (zh) * | 2010-12-27 | 2012-07-04 | 中国移动通信集团公司 | 一种虚拟化资源调度的方法及虚拟化资源调度系统 |
CN103001823A (zh) * | 2012-11-13 | 2013-03-27 | 中国科学院信息工程研究所 | 一种基于多粒度抽象理论的虚拟网络构建方法和系统 |
-
2014
- 2014-03-06 CN CN201410080648.4A patent/CN103870314B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436966A (zh) * | 2008-12-23 | 2009-05-20 | 北京航空航天大学 | 虚拟机环境下的网络监控与分析系统 |
US20110239215A1 (en) * | 2010-03-24 | 2011-09-29 | Fujitsu Limited | Virtual machine management apparatus |
CN102546379A (zh) * | 2010-12-27 | 2012-07-04 | 中国移动通信集团公司 | 一种虚拟化资源调度的方法及虚拟化资源调度系统 |
CN102170428A (zh) * | 2011-03-22 | 2011-08-31 | 曙光信息产业(北京)有限公司 | 一种异构虚拟机平台动态扩展管理方法 |
CN103001823A (zh) * | 2012-11-13 | 2013-03-27 | 中国科学院信息工程研究所 | 一种基于多粒度抽象理论的虚拟网络构建方法和系统 |
Non-Patent Citations (1)
Title |
---|
陈非: ""多进程软件生存性保障关键技术研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105490910B (zh) * | 2014-09-19 | 2020-02-07 | 北京奇虎科技有限公司 | 网络通信方法及客户端 |
WO2016041421A1 (zh) * | 2014-09-19 | 2016-03-24 | 北京奇虎科技有限公司 | 网络通信方法及客户端 |
CN105490910A (zh) * | 2014-09-19 | 2016-04-13 | 北京奇虎科技有限公司 | 网络通信方法及客户端 |
CN104468307B (zh) * | 2014-10-27 | 2017-08-29 | 中国运载火箭技术研究院 | 一种基于虚拟机的实时通信系统 |
CN104468307A (zh) * | 2014-10-27 | 2015-03-25 | 中国运载火箭技术研究院 | 一种基于虚拟机的实时通信系统 |
CN106170769B (zh) * | 2014-12-11 | 2020-01-21 | 华为技术有限公司 | 确定虚拟机资源的方法、装置及程序产品 |
CN106170769A (zh) * | 2014-12-11 | 2016-11-30 | 华为技术有限公司 | 确定虚拟机资源的方法、装置及程序产品 |
CN104796673B (zh) * | 2015-05-19 | 2017-08-25 | 中国地质大学(武汉) | 一种面向能耗优化的云视频监控系统任务接入方法 |
CN104796673A (zh) * | 2015-05-19 | 2015-07-22 | 中国地质大学(武汉) | 一种面向能耗优化的云视频监控系统任务接入方法 |
US9772792B1 (en) | 2015-06-26 | 2017-09-26 | EMC IP Holding Company LLC | Coordinated resource allocation between container groups and storage groups |
US9667725B1 (en) | 2015-08-06 | 2017-05-30 | EMC IP Holding Company LLC | Provisioning isolated storage resource portions for respective containers in multi-tenant environments |
CN105407140A (zh) * | 2015-10-23 | 2016-03-16 | 上海比林电子科技有限公司 | 一种网络化测试系统的计算资源虚拟化系统及方法 |
US10146936B1 (en) | 2015-11-12 | 2018-12-04 | EMC IP Holding Company LLC | Intrusion detection for storage resources provisioned to containers in multi-tenant environments |
CN105681087A (zh) * | 2016-01-22 | 2016-06-15 | 中国人民解放军国防科学技术大学 | 基于轻量级虚拟机的虚拟控制平面资源管理方法 |
CN105681087B (zh) * | 2016-01-22 | 2019-06-11 | 中国人民解放军国防科学技术大学 | 基于轻量级虚拟机的虚拟控制平面资源管理方法 |
US9983909B1 (en) | 2016-03-15 | 2018-05-29 | EMC IP Holding Company LLC | Converged infrastructure platform comprising middleware preconfigured to support containerized workloads |
CN108780410A (zh) * | 2016-03-17 | 2018-11-09 | 微软技术许可有限责任公司 | 计算系统中的容器的网络虚拟化 |
US10326744B1 (en) | 2016-03-21 | 2019-06-18 | EMC IP Holding Company LLC | Security layer for containers in multi-tenant environments |
US10013213B2 (en) | 2016-04-22 | 2018-07-03 | EMC IP Holding Company LLC | Container migration utilizing state storage of partitioned storage volume |
CN107346264A (zh) * | 2016-05-05 | 2017-11-14 | 北京金山云网络技术有限公司 | 一种虚拟机负载均衡调度的方法、装置和服务器设备 |
CN107819802A (zh) * | 2016-09-13 | 2018-03-20 | 华为软件技术有限公司 | 一种在节点集群中的镜像获取方法、节点设备及服务器 |
US10284557B1 (en) | 2016-11-17 | 2019-05-07 | EMC IP Holding Company LLC | Secure data proxy for cloud computing environments |
CN108205461A (zh) * | 2016-12-19 | 2018-06-26 | 华耀(中国)科技有限公司 | 一种混合部署的虚拟化平台及部署方法 |
CN108255598A (zh) * | 2016-12-28 | 2018-07-06 | 华耀(中国)科技有限公司 | 性能保证的虚拟化管理平台资源分配系统及方法 |
US11128437B1 (en) | 2017-03-30 | 2021-09-21 | EMC IP Holding Company LLC | Distributed ledger for peer-to-peer cloud resource sharing |
CN107133099B (zh) * | 2017-04-25 | 2018-08-03 | 深圳大数点科技有限公司 | 一种云计算方法 |
CN107133099A (zh) * | 2017-04-25 | 2017-09-05 | 深圳大数点科技有限公司 | 一种云计算方法 |
CN107918555A (zh) * | 2017-11-23 | 2018-04-17 | 北京百度网讯科技有限公司 | 基于物理主机的用于处理数据的方法和装置 |
CN107918555B (zh) * | 2017-11-23 | 2021-07-23 | 北京百度网讯科技有限公司 | 基于物理主机的用于处理数据的方法和装置 |
CN108052385A (zh) * | 2017-12-29 | 2018-05-18 | 亿企赢网络科技有限公司 | 一种容器管理方法、系统、设备及计算机存储介质 |
CN108121605A (zh) * | 2017-12-31 | 2018-06-05 | 武汉烽火云创软件技术有限公司 | 一种基于yarn的cgroup内存控制优化方法及系统 |
CN108279979B (zh) * | 2018-01-19 | 2021-02-19 | 聚好看科技股份有限公司 | 一种为应用程序容器绑定cpu的方法及装置 |
CN108279979A (zh) * | 2018-01-19 | 2018-07-13 | 聚好看科技股份有限公司 | 一种为应用程序容器绑定cpu的方法及装置 |
US11063745B1 (en) | 2018-02-13 | 2021-07-13 | EMC IP Holding Company LLC | Distributed ledger for multi-cloud service automation |
CN111290858A (zh) * | 2020-05-11 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 输入输出资源管理方法、装置、计算机设备和存储介质 |
CN112148489A (zh) * | 2020-09-22 | 2020-12-29 | 网易(杭州)网络有限公司 | 游戏资源调度方法、装置、设备及存储介质 |
CN112667401A (zh) * | 2020-12-29 | 2021-04-16 | 深圳大普微电子科技有限公司 | 一种资源分配方法、系统及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103870314B (zh) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103870314A (zh) | 一种单节点同时运行不同类型虚拟机的方法及系统 | |
Kaur et al. | Container-as-a-service at the edge: Trade-off between energy efficiency and service availability at fog nano data centers | |
CN104991830B (zh) | 基于服务等级协议的yarn资源分配和节能调度方法及系统 | |
CN103810023B (zh) | 一种云平台中分布式应用的智能部署方法及系统 | |
CN102082692B (zh) | 基于网络数据流向的虚拟机迁移方法、设备和集群系统 | |
KR101823505B1 (ko) | 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법 | |
CN105610715B (zh) | 一种基于sdn的云数据中心多虚拟机迁移调度计划方法 | |
CN104714846A (zh) | 资源处理方法、操作系统及设备 | |
CN103377091A (zh) | 用于资源共享池中的作业的高效执行的方法和系统 | |
CN104050043A (zh) | 基于共享缓存感知的虚拟机调度方法和装置 | |
CN103731372A (zh) | 一种混合云环境下服务提供者的资源供应方法 | |
Sun et al. | Research and simulation of task scheduling algorithm in cloud computing | |
CN103297499A (zh) | 一种基于云平台的调度方法及系统 | |
CN102708003A (zh) | 一种云平台下的资源分配方法 | |
Lai et al. | Sol: Fast distributed computation over slow networks | |
CN103414767A (zh) | 将应用软件部署在云计算平台上的方法和装置 | |
CN114996018A (zh) | 面向异构计算的资源调度方法、节点、系统、设备及介质 | |
CN105573907B (zh) | 用于在解聚的硬件组件上安装软件的方法和系统 | |
CN106909462A (zh) | 一种云资源调度方法及装置 | |
Wang et al. | Dependency-aware network adaptive scheduling of data-intensive parallel jobs | |
Acharya et al. | Docker container orchestration management: A review | |
Lu et al. | Morpho: a decoupled MapReduce framework for elastic cloud computing | |
CN105389196A (zh) | 利用虚拟化技术进行地震资料处理的方法 | |
Shen et al. | Facilitating application-aware bandwidth allocation in the cloud with one-step-ahead traffic information | |
CN103299277A (zh) | Gpu系统及其处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |