一种基于缓存的虚拟机启动方法转让专利

申请号 : CN201710159705.1

文献号 : CN106933654B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李喆超张一帆吴维刚

申请人 : 中山大学

摘要 :

本发明提供的方法的物理节点在收到申请虚拟机的请求时,首先通过查找自身或兄弟节点中是否缓存有目标镜像,若缓存有目标镜像且自身或兄弟节点能够满足资源要求的话则直接在自身或兄弟节点中启动虚拟机。因此本发明提供的方法能够最大程度上减少镜像传输的发生。而后,步骤S5和S6从各个源点选取和中间交换机的选择来规划传输路径,这优化了整个网络上的带宽利用率。因此,本发明提供的方法能够有效地提高传输速度。再者,步骤S8在启动虚拟机后,还包括有判断是否需要缓存目标镜像的内容。这使得目标物理所在簇包括的物理节点中肯定缓存有目标镜像。为后续的虚拟机启动减少镜像传输的发生。因此本发明提供的方法能够有效地加快虚拟机的启动速度。

权利要求 :

1.一种基于缓存的虚拟机启动方法,其特征在于:包括以下步骤:

S1.物理节点A收到申请虚拟机的请求,如果物理节点A缓存有目标镜像并且物理节点A的资源满足申请的需求,则直接利用目标镜像在物理节点A的本地启动虚拟机;否则执行步骤S2;

S2.查找物理节点A的父节点,然后将父节点的儿子节点中与物理节点A处于同一个簇并且缓存有目标镜像的节点加入到列表PM_list中;

S3.a)PM_list不为空,且PM_list中存在物理节点B的资源满足申请的需求,则利用物理节点B缓存的目标镜像在物理节点B启动虚拟机;

b)PM_list为空,则从物理节点A父节点的儿子节点中选择资源能够满足申请需求的物理节点C作为虚拟机放置的节点,然后执行步骤S4;

c)若a)、b)两种情况均无法找到资源能够满足申请需要的物理节点,则将这个请求转发给其他簇的物理节点进行处理;

S4.从物理节点C出发,递归地搜索物理节点C的父节点的儿子节点缓存的镜像信息,得到所有缓存有目标镜像的物理节点的簇;

S5.遍历步骤S4得到的簇,根据簇中数据传输的拥挤程度从相应的簇中选择相应的物理节点作为数据源;

S6.循环胖树中的所有层,在每一层的所有同等地位的交换机中选择工作负载最小的交换机构建从数据源到物理节点C的传输路径,然后将目标镜像通过传输路径从数据源传输至物理节点C;

S7.物理节点C利用目标镜像在本地启动虚拟机;然后判断其自身是否还具有足够的空间来存放目标镜像,若是则直接缓存目标镜像,否则执行步骤S8;

S8.计算物理节点C所在簇包括的物理节点缓存有的各种镜像的出现频率,若目标镜像的出现频率高于其余镜像的出现频率,则不缓存目标镜像,否则将出现频率最高的镜像进行删除,然后将目标镜像缓存进物理节点C所在簇包括的物理节点中。

2.根据权利要求1所述的基于缓存的虚拟机启动方法,其特征在于:所述物理节点的资源能够满足申请的需求,是指物理节点能够满足以下条件:物理节点所剩余的计算资源的量大于或等于满足目标镜像所需要的计算资源的量。

说明书 :

一种基于缓存的虚拟机启动方法

技术领域

[0001] 本发明涉及云计算领域,更具体地,涉及一种基于缓存的虚拟机启动方法。

背景技术

[0002] 近年来,随着云计算的技术的发展,许多传统的公司和个人用户已经将他们的计算任务从传统的服务器移到到了云计算中心里面。通过云计算的虚拟技术,大大提高了许多it资源(包括cpu,内存,硬盘,网络资源)的利用率,减少了成本。
[0003] 而虚拟机技术作为云计算中的一种重要的技术,已经作为一种常用计算资源的载体广泛地应用在各种云计算平台中。比如Azure,Amazon EC2,RackSpace 等著名的云计算平台,都采取了虚拟机技术来为用户提供高效率、高扩展性的计算服务,用户也普遍适应认同了这种模式。
[0004] 尽管虚拟机技术已经被人们所接受,这项技术本身还是有一些技术上的难点:
[0005] 1)用户的并发性使用:在云计算使用者中,主要分为个人用户和企业级用户,其中企业用户通常会因为业务量大,一次性申请开通多台虚拟机,从而导致同一时段内,数据中心中有大量的镜像需要被传送,瞬间加大了网络带宽的负载。而这段时间内的虚拟机启动时间将会被大大提高,降低了用户体验。
[0006] 2)镜像的多样性:在云计算中,用户通常会使用各种各样的系统,比如:windows,linux,ioS等,并且对于同样的windows操作系统也分为winXP,win7,win8,winServer等版本,而对于linux这样的开源的操作系统来说,种类就更加多了(Centos、Fedora、Ubuntu...)。这要求数据中心网络必须存有这些多种多样的镜像。
[0007] 3)数据中心的特殊架构:在数据中心中,一般使用的是以胖树为代表的特殊架构,而不是传统的多叉树的结构。对应这样的特殊的结构,传统缓存的解决方案,并不能很好的利用拓扑架构的特点。
[0008] 集中式的处理方式:在传统的数据中心中,处理数据信息的方式通常是集中式的,即是在网络中必定会有一个中央的控制节点,这个节点掌握全局的信息(包括请求的分发,网络的情况,资源的情况,等等)。而在数据中心收到一个请求的时候,也会交给这个集中式的控制节点来处理,决定这个请求的虚拟机实例化在哪里,所需的资源要从哪里取得。集中式的处理方案的好处是可以掌握全局的信息,从而做出一个最优的决策。但是坏处也是显而易见的,因为数据中心要实时地掌握网络中全局的信息情况,所以网络中任何的调度和资源的改变都必须请求和通知这个控制节点。这导致了以下问题:
[0009] 1)这些请求和通知信息本身就额外地增加了网络中带宽的负载,在多并发请求的时候,使得原本拥挤的网络更加堵塞了。
[0010] 2)现在数据中心的规模越来越大,维护这些网络信息的时候,对控制节点本身的计算能力的要求也会变大,如果在请求过多的情况下,很可能会出现,因为这个控制节点处理不及时导致的实例化延时的情况。
[0011] 3)因为所有的请求都要经由这个唯一的控制节点来处理,所以“单点故障”就必然是一个不得不考虑的问题了。
[0012] 虚拟机的实例化过程中通常需要从一个特定的地方(资源池)来取得目标的虚拟机镜像,然后把目标镜像通过网络传送到目标节点进行实例化操作,而一般的系统镜像的大小从几百M到好几个G不等,同时进行多个镜像的传输必定会影响到整个网络的带宽资源,导致虚拟机实例化的时间变长,从而导致十分不友好的用户体验。

发明内容

[0013] 本发明为解决以上现有技术提供的虚拟机启动方法需要在数据源、目标物理节点之间传输虚拟机镜像导致的消耗网络带宽资源、拖长虚拟机实例化时间的缺陷,提供了一种基于缓存的虚拟机启动方法。
[0014] 为实现以上发明目的,采用的技术方案是:
[0015] 一种基于缓存的虚拟机启动方法,包括以下步骤:
[0016] S1.物理节点A收到申请虚拟机的请求,如果物理节点A缓存有目标镜像并且物理节点A的资源满足申请的需求,则直接利用目标镜像在物理节点A的本地启动虚拟机;否则执行步骤S2;
[0017] S2.查找物理节点A的父节点,然后将父节点的儿子节点中与物理节点A处于同一个簇并且缓存有目标镜像的节点加入到列表PM_list中;
[0018] S3.a)PM_list不为空,且PM_list中存在物理节点B的资源满足申请的需求,则利用物理节点B缓存的目标镜像在物理节点B启动虚拟机;
[0019] b)PM_list为空,则从物理节点A父节点的儿子节点中选择资源能够满足申请需求的物理节点C作为虚拟机放置的节点,然后执行步骤S4;
[0020] c)若a)、b)两种情况均无法找到资源能够满足申请需要的物理节点,则将这个请求转发给其他簇的物理节点进行处理;
[0021] S4.从物理节点C出发,递归地搜索父节点的儿子节点缓存的镜像信息,得到所有缓存有目标镜像的物理节点的簇;
[0022] S5.遍历步骤S4得到的簇,根据簇中数据传输的拥挤程度从相应的簇中选择相应的物理节点作为数据源;
[0023] S6.循环胖树中的所有层,在每一层的所有同等地位的交换机中选择工作负载最小的交换机构建从数据源到物理节点C的传输路径,然后将目标镜像通过传输路径从数据源传输至物理节点C;
[0024] S7.物理节点C利用目标镜像在本地启动虚拟机;然后判断其自身是否还具有足够的空间来存放目标镜像,若是则直接缓存目标镜像,否则执行步骤S8;
[0025] S8.计算物理节点C所在簇包括的物理节点缓存有的各种镜像的出现频率,若目标镜像的出现频率高于其余镜像的出现频率,则不缓存目标镜像,否则将出现频率最高的镜像进行删除,然后将目标镜像缓存进物理节点C所在簇包括的物理节点中。
[0026] 上述方案中,物理节点在收到申请虚拟机的请求时,首先通过查找自身或兄弟节点中是否缓存有目标镜像,若缓存有目标镜像且自身或兄弟节点能够满足资源要求的话则直接在自身或兄弟节点中启动虚拟机。因此本发明提供的方法能够最大程度上减少镜像传输的发生。而后,步骤S5和S6从各个源点选取和中间交换机的选择来规划传输路径,这优化了整个网络上的带宽利用率。因此,本发明提供的方法能够有效地提高传输速度。再者,步骤S8在启动虚拟机后,还包括有判断是否需要缓存目标镜像的内容。这使得目标物理所在簇包括的物理节点中肯定缓存有目标镜像。为后续的虚拟机启动减少镜像传输的发生。因此本发明提供的方法能够有效地加快虚拟机的启动速度。
[0027] 优选地,所述物理节点的资源能够满足申请的需求,是指物理节点能够满足以下条件:物理节点所剩余的计算资源的量大于或等于满足目标镜像所需要的计算资源的量。
[0028] 与现有技术相比,本发明的有益效果是:
[0029] 本发明提供的方法的物理节点在收到申请虚拟机的请求时,首先通过查找自身或兄弟节点中是否缓存有目标镜像,若缓存有目标镜像且自身或兄弟节点能够满足资源要求的话则直接在自身或兄弟节点中启动虚拟机。因此本发明提供的方法能够最大程度上减少镜像传输的发生。再者,步骤S8在启动虚拟机后,还包括有判断是否需要缓存目标镜像的内容。这使得目标物理所在簇包括的物理节点中肯定缓存有目标镜像。为后续的虚拟机启动减少镜像传输的发生。因此本发明提供的方法能够有效地加快虚拟机的启动速度。

附图说明

[0030] 图1为步骤S1 S3的示意图。~
[0031] 图2为步骤S4 S6的示意图。~
[0032] 图3为步骤S7 S8的示意图。~

具体实施方式

[0033] 附图仅用于示例性说明,不能理解为对本专利的限制;
[0034] 以下结合附图和实施例对本发明做进一步的阐述。
[0035] 实施例1
[0036] 如图1、2、3所示,本发明提供的方法包括以下步骤:
[0037] S1.物理节点A收到申请虚拟机的请求,如果物理节点A缓存有目标镜像并且物理节点A的资源满足申请的需求,则直接利用目标镜像在物理节点A的本地启动虚拟机;否则执行步骤S2;
[0038] S2.查找物理节点A的父节点,然后将父节点的儿子节点中与物理节点A处于同一个簇并且缓存有目标镜像的节点加入到列表PM_list中;
[0039] S3.a)PM_list不为空,且PM_list中存在物理节点B的资源满足申请的需求,则利用物理节点B缓存的目标镜像在物理节点B启动虚拟机;
[0040] b)PM_list为空,则从物理节点A父节点的儿子节点中选择资源能够满足申请需求的物理节点C作为虚拟机放置的节点,然后执行步骤S4;
[0041] c)若a)、b)两种情况均无法找到资源能够满足申请需要的物理节点,则将这个请求转发给其他簇的物理节点进行处理;
[0042] S4.从物理节点C出发,递归地搜索父节点的儿子节点缓存的镜像信息,得到所有缓存有目标镜像的物理节点的簇;
[0043] S5.遍历步骤S4得到的簇,根据簇中数据传输的拥挤程度从相应的簇中选择相应的物理节点作为数据源;
[0044] S6.循环胖树中的所有层,在每一层的所有同等地位的交换机中选择工作负载最小的交换机构建从数据源到物理节点C的传输路径,然后将目标镜像通过传输路径从数据源传输至物理节点C;
[0045] S7.物理节点C利用目标镜像在本地启动虚拟机;然后判断其自身是否还具有足够的空间来存放目标镜像,若是则直接缓存目标镜像,否则执行步骤S8;
[0046] S8.计算物理节点C所在簇包括的物理节点缓存有的各种镜像的出现频率,若目标镜像的出现频率高于其余镜像的出现频率,则不缓存目标镜像,否则将出现频率最高的镜像进行删除,然后将目标镜像缓存进物理节点C所在簇包括的物理节点中。
[0047] 上述方案中,物理节点在收到申请虚拟机的请求时,首先通过查找自身或兄弟节点中是否缓存有目标镜像,若缓存有目标镜像且自身或兄弟节点能够满足资源要求的话则直接在自身或兄弟节点中启动虚拟机。因此本发明提供的方法能够最大程度上减少镜像传输的发生。而后,步骤S5和S6从各个源点选取和中间交换机的选择来规划传输路径,这优化了整个网络上的带宽利用率。因此,本发明提供的方法能够有效地提高传输速度。再者,步骤S8在启动虚拟机后,还包括有判断是否需要缓存目标镜像的内容。这使得目标物理所在簇包括的物理节点中肯定缓存有目标镜像。为后续的虚拟机启动减少镜像传输的发生。因此本发明提供的方法能够有效地加快虚拟机的启动速度。
[0048] 在具体的实施过程中,所述物理节点的资源能够满足申请的需求,是指物理节点能够满足以下条件:物理节点所剩余的计算资源的量大于或等于满足目标镜像所需要的计算资源的量。
[0049] 显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。