一种基于虚拟机的资源调度方法与流程

文档序号:11250723阅读:770来源:国知局

本发明涉及云计算领域,具体涉及一种基于虚拟机的资源调度方法。



背景技术:

云计算是当前的一个热门的技术名词,被看作是继个人计算机变革、互联网变革之后的第三次it浪潮,在短短几年间就产生了巨大的影响。google、微软和ibm等巨头都前赴后继以前所未有的速度和规模推进云计算技术的研究、发展和普及,越来越多的学术活动将云计算提上议程,人们对电脑和网络的认识也发生了改变。可以预见,我们将来的生活和工作方式也会因此而发生深刻的变化。

传统模式下,个人或企业用户需要购买成套的软硬件以及带宽等基础设施才能构建一套具备完整功能的it系统。但对用户而言,cpu、硬盘等计算和储存设备及其它软件本身并不是必需的。就像自来水一样,用户需要的只是水而不必家家都打一口井。随着网络的普及和带宽的增长,通过网络访问非本地的计算资源的条件日趋成熟,这就为云计算技术的产生和发展打下了基础。云计算是一种通过网络以服务的方式提供动态可伸缩的虚拟化资源的计算模式。因为云计算的计算能力和基础设施分布在网络端,就像飘浮在天空端的云一样。用户在接受云计算服务的时候,不必去关心向其提供云服务的云设施身处何处,更不必关心云平台如何搭建,云程序如何运行,所以,称之为“云”。

云计算的服务设施不受用户端的局限,意味着其规模和能力可以无限增长以满足更大的需求。从2003年google公开发布的核心文件到2006年amazonec2(弹性计算云)的商业化应用,再到美国电信巨头at&t推出的synaptichosting服务,云计算已经从节约成本的工具演变为盈利的推动器。如今,google云计算己经拥有100多万台服务器,amazon等公司也拥有几十万台服务器。正是看中了云计算所拥有的资源利用率高的特点,各it公司不断扩充云计算规模,使得云计算的性价比以数量级的形式不断提升。随着规模效应的扩散以及众多新型技术的开发并应用,其性价比甚至能达到传统模式的数十倍。

云计算的快速发展是以虚拟化技术为支撑的。作为云计算的基础性技术,虚拟化技术在微观架构上为云计算提供了更有效的资源分配和调度方式。对于单个物理主机而言,资源太多会造成浪费。而利用虚拟机定义出最小的量化单位,当资源不够时,以虚拟机为单位来添加计算能力,当资源超过时可以减少主机数量。因此,我们利用虚拟机来创建主机的基本运算单元,再将这些单元以不同的方式排列组合来满足不同的服务需求,可以让资源获得最大化的应用。对于云计算环境下的服务器维护、负载失衡等问题,虚拟机的动态迁移技术是一种高效稳定的解决方法,能够保证服务质量,满足用户需求。虚拟机的动态迁移是将一台服务器上的虚拟机实时地迁移至另一台服务器上。迁移过程中,除了时间极短的暂停阶段,虚拟机全程不中断为用户提供服务。因此,虚拟机的动态迁移成为了云计算中解决负载均衡、服务器维护及工作环境迁移等问题的有效方法。但是在现阶段,虚拟机的迁移调度是手动或半自动化实现的,调度效率不高,影响虚拟机的迁移性能。此外,虚拟机的动态迁移只进行cpu、内存、网络设各及i/o等状态的迁移,而在主机间通过san(storageareanetwork)、nas(net-work-attachedstorage)等方式共享存储设备不进行磁盘数据的迁移。随着网络技术和应用需求的发展,需要在无法实现共享存储或广域网环境下实现包括磁盘数据的虚拟机全系统实时迁移。这样,由于虚拟机的磁盘数据量大,磁盘数据迁移就成了虚拟机迁移的难点和重点。

综上所述,虚拟机对于云计算环境下的资源调度起到关键作用。现有技术中存在资源调度效率不高的问题。



技术实现要素:

至少部分的解决现有技术中存在的问题,本发明提出一种基于虚拟机的资源调度方法,所述方法用于在云计算环境下对资源进行调度,所述方法包括:

(1)调度处理器接收用户的虚拟机任务请求,调度处理器根据当前各个数据中心的负载状态,将虚拟机任务请求转发给某一个数据中心;云计算环境中包含若干个数据中心,每个数据中心由若干个物理机组成;每个物理机中包括若干个虚拟机;

(2)数据中心在接到虚拟机任务请求之后,为该虚拟机任务请求找到一台物理机,将分配结果返回给调度处理器;

(3)调度处理器接收数据中心发来的虚拟机任务请求分配结果,并发送给用户。

优选的,调度处理器还用于接收数据中心发来的资源更新信息,并更新资源信息库;当某个数据中心的信息发生改变时,数据中心会给调度处理器发来更新后的信息,调度处理器收到之后,更新自身的数据库,保持与数据中心数据库的一致性,以便在分配虚拟机任务请求时使用。

优选的,调度处理器还用于管理数据中心,包括数据中心的注册和删除;当有新的数据中心需要加入到该云计算环境时,需要在调度处理器注册,将该数据中心的信息加入到调度处理器的数据库;当有数据中心需要删除时,在调度处理器的数据库将该数据中心的相应信息删除。

优选的,用户提交的虚拟机任务请求包括虚拟机使用的开始时间、结束时间、虚拟机的类型。

优选的,步骤(1)中所述调度处理器根据当前各个数据中心的负载状态,将虚拟机任务请求转发给某一个数据中心,具体包括:

调度处理器计算每个数据中心的资源负载值(xd1,…,xdi…,xdn),按照该值由小到大的顺序为数据中心排队;其中,xdi表示第i个数据中心的资源负载值,n表示所述云资源环境下的数据中心个数;

选择数据中心队列中的第一个数据中心,将虚拟机任务请求转发到所述第一个数据中心。

优选的,所述第一个数据中心根据虚拟机任务请求,为用户分配物理机;若分配物理机失败,则将所述虚拟机任务请求转发到所述数据中心队列中的下一个数据中心,在下一个数据中心中为用户分配物理机,直至分配物理机成功或者所有数据中心分配物理机失败;

更新分配到虚拟机任务的物理机的剩余资源。

优选的,所述调度处理器计算每个数据中心的资源负载值(xd1,…,xdi…,xdn),具体包括:

vcpuj、vmemj、vstorj分别表示数据中心di中虚拟机j所需要的cpu大小、内存大小、存储大小,m表示数据中心di所包含的所有虚拟机的数量。

本发明提出的基于虚拟机的资源调度方法,提高了资源利用效率、减少任务处理时间。

附图说明

图1为本发明一种基于虚拟机的资源调度方法的流程图;

具体实施方式

下面将结合本发明的附图,对本发明的技术方案进行清楚、完整地描述。这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

参见图1,本发明提出了一种基于虚拟机的资源调度方法,所述方法用于在云计算环境下对资源进行调度,所述方法包括:

(1)调度处理器接收用户的虚拟机任务请求,调度处理器根据当前各个数据中心的负载状态,将虚拟机任务请求转发给某一个数据中心;云计算环境中包含若干个数据中心,每个数据中心由若干个物理机组成;每个物理机中包括若干个虚拟机;

(2)数据中心在接到虚拟机任务请求之后,为该虚拟机任务请求找到一台物理机,将分配结果返回给调度处理器;

(3)调度处理器接收数据中心发来的虚拟机任务请求分配结果,并发送给用户。

调度处理器还用于接收数据中心发来的资源更新信息,并更新资源信息库;当某个数据中心的信息发生改变时,数据中心会给调度处理器发来更新后的信息,调度处理器收到之后,更新自身的数据库,保持与数据中心数据库的一致性,以便在分配虚拟机任务请求时使用。

调度处理器还用于管理数据中心,包括数据中心的注册和删除;当有新的数据中心需要加入到该云计算环境时,需要在调度处理器注册,将该数据中心的信息加入到调度处理器的数据库;当有数据中心需要删除时,在调度处理器的数据库将该数据中心的相应信息删除。

用户提交的虚拟机任务请求包括虚拟机使用的开始时间、结束时间、虚拟机的类型。

步骤(1)中所述调度处理器根据当前各个数据中心的负载状态,将虚拟机任务请求转发给某一个数据中心,具体包括:

调度处理器计算每个数据中心的资源负载值(xd1,…,xdi…,xdn),按照该值由小到大的顺序为数据中心排队;其中,xdi表示第i个数据中心的资源负载值,n表示所述云资源环境下的数据中心个数;

选择数据中心队列中的第一个数据中心,将虚拟机任务请求转发到所述第一个数据中心;

所述第一个数据中心根据虚拟机任务请求,为用户分配物理机;若分配物理机失败,则将所述虚拟机任务请求转发到所述数据中心队列中的下一个数据中心,在下一个数据中心中为用户分配物理机,直至分配物理机成功或者所有数据中心分配物理机失败;

更新分配到虚拟机任务的物理机的剩余资源。

所述调度处理器计算每个数据中心的资源负载值(xd1,…,xdi…,xdn),具体包括:

vcpuj、vmemj、vstorj分别表示数据中心di中虚拟机j所需要的cpu大小、内存大小、存储大小,m表示数据中心di所包含的所有虚拟机的数量。

所述第一个数据中心根据虚拟机任务请求,为用户分配物理机,其一实施例包括:

首先根据用户请求的虚拟机类型将物理机按该类型的利用率升序排列,所述虚拟机类型包括cpu类型、内存类型、存储类型;

根据该类型的利用率将物理机划分成多个区间,每个区间的大小可以动态设置,然后找出利用率最低的物理机所在的区间的所有物理机,将虚拟机任务试分配在该区间的所有物理机上,分别计算该区间物理机分配虚拟机任务后每个物理机的cpu利用率,内存利用率,存储利用率三者的方差,得到每个物理机的负载均衡值;

选取负载均衡值最低的物理机开始分配虚拟机,只要分配该虚拟机任务后该物理机的容量没有超过阈值,则成功分配,否则取下一个负载均衡值次小的物理机进行分配,如果该区间所有物理机都不能分配,则取出下一个区间的物理机进行分配,直到分配成功为止。

把物理机划分成多个区间,每个区间的大小可以动态设置,每次都从利用率最小的物理机所在区间进行分配,这样能保证先将任务分配给利用率小的物理机,保证整个数据中心比较均衡。同时每次只从一个区间中寻找物理机大大的减少了算法的运行时间。

所述计算该区间物理机分配虚拟机任务后每个物理机的cpu利用率,内存利用率,存储利用率三者的方差,得到每个物理机的负载均衡值,具体包括:

cb=(avg-cpu_u)2+(avg-mem_u)2+(avg-stor_u)2

avg=(cpu_u+mem_u+stor_u)/3

其中,cb表示物理机的负载均衡值,cpu_u、mem_u、stor_u分别表示物理机的cpu利用率、内存利用率、存储利用率,avg表示物理机的cpu利用率、内存利用率、存储利用率的平均值。

所述第一个数据中心根据虚拟机任务请求,为用户分配物理机,其又一实施例包括:

计算一个时间窗口t内所述第一个数据中心所接收到的所有虚拟机任务和该数据中心中所有物理机之间的资源负载矩阵;

根据所述资源负载矩阵为所述一个时间窗口t内所述第一个数据中心所接收到的所有虚拟机任务分配物理机。

所述计算一个时间窗口t内所述第一个数据中心所接收到的所有虚拟机任务和该数据中心中所有物理机之间的资源负载矩阵,具备包括:

计算一个时间窗口t内所述第一个数据中心所接收到的所有虚拟机任务中的每个虚拟机任务相对该数据中心中所有物理机中每个物理机的资源负载vij,

其中,vij表示一个时间窗口t内所述第一个数据中心所接收到的所有虚拟机任务中的第i个虚拟机任务相对该数据中心中对j个物理机的资源负载,

表示一个时间窗口t内所述第一个数据中心所接收到的所有虚拟机任务中的第i个虚拟机任务相对该数据中心中对j个物理机的cpu资源负载;tcpui表示第i个虚拟机任务所需要的cpu资源,pcpuj表示第j个物理机剩余的可用cpu资源;

表示一个时间窗口t内所述第一个数据中心所接收到的所有虚拟机任务中的第i个虚拟机任务相对该数据中心中对j个物理机的内存资源负载;tmemi表示第i个虚拟机任务所需要的内存资源,pmemj表示第j个物理机剩余的可用内存资源;

表示一个时间窗口t内所述第一个数据中心所接收到的所有虚拟机任务中的第i个虚拟机任务相对该数据中心中对j个物理机的存储资源负载;tstori表示第i个虚拟机任务所需要的存储资源,pstorj表示第j个物理机剩余的可用存储资源;

α、β、γ分别cpu资源负载权值、内存资源负载权值、存储资源负载权值,在一实施例中,α、β、γ分别取值0.5、0.3、0.2;

所述资源负载矩阵表示为:

所述矩阵表示在一个时间窗口t内有m个可用的物理机,有n个需要被调度的虚拟机任务请求,vij代表第i个任务在第j个物理机上的负载值v。

所述根据所述资源负载矩阵为所述一个时间窗口t内所述第一个数据中心所接收到的所有虚拟机任务分配物理机,具体包括:

找出每个虚拟机任务的最小v值vi,即针对矩阵的每一行,找出每一行的最小值;

vi=min{vi1,vi2,…,vim};

然后,找出这些最小值中的最大值vmax,

vmax=max{v1,v2,…,vn};

找出vmax所在的任务i,该任务就是第一个将要被分配的任务,它将被调度到该任务所在行的vij是

vmax的下j所代表的第j个物理机上;随后删除任务i在矩阵中的那一行,并更新矩阵中的其它任务在第j个节点上的l值,即都加上vmax(这是因为其它任务如果要在第j个物理机上执行需要等待任务i执行,故它们的l值要加上vmax);矩阵更新完毕后进行下一个任务调度的计算,重复以上过程,并最终确定了所有任务的调度顺序和调度去向。

本发明提出的一种基于虚拟机的资源调度方法,还进一步包括:

对数据中心物理机当前时刻t的下一时刻t+1的资源负载情况进行预估;

根据物理机物理机当前时刻t的资源负载和下一时刻t+1的资源负载,选择需要迁出虚拟机的物理机以及所迁出虚拟机待迁入的物理机。

所述对数据中心物理机当前时刻t的下一时刻t+1的资源负载情况进行预估,具体包括:

w(t+1)=μw(t)+δw(t-1)+ωw(t-2),其中w(t+1)、w(t)、w(t-1)、w(t-2)分别表示时刻t+1、t、t-1、t-2时物理机的资源负载,μ、δ、ω为权值,在一实施例中分别取值0.5、0.3、0.2。

所述选择需要迁出虚拟机的物理机,具体包括:

当物理机发生过载情况时和低载情况时,根据当前状态将该物理机上的部分或全部虚拟机迁移到其它物理机上运行。

当物理机处于过载状态时,将虚拟机按时刻t+1预估资源负载量进行降序排列,选择未来资源负载排名前列的虚拟机进行迁出,同时,使得当前物理机能够满足剩下的虚拟机的时刻t+1时的资源需求;

当物理机处于低载状态时,将所有虚拟机都迁移出当前物理机。

所述物理机过载情况包括cpu利用率大于80%,所述物理机低载情况包括cpu利用率小于20%

所述选择所迁出虚拟机待迁入的物理机,具体包括:

根据需要迁入的虚拟机的资源需求与数据中心中所有物理机的资源信息,从中选取用于安置迁移虚拟机的物理机。

选择策略是对所有满足虚拟机资源分配要求的物理机预估其时刻t+1工作负载,根据预估情况划分资源需求缩减队列和资源需求扩大队列,通过进一步筛选确定目的物理机,具体步骤包括:

(a)计算各物理机上的资源需求伸缩量,其值为当前物理机上所有虚拟机时刻t+1的工作负载预估总量减去当前时刻工作负载总量,它反应了虚拟机资源需求的变化趋势;

(b)通过物理机资源总量减去当前时刻资源负载总量来计算未分配资源量,筛选出未分配资源量与资源需求伸缩量之间的差值即预计剩余资源量大于零的物理机列表,形成候选物理机列表;

(c)如果资源需求伸缩量为负值,则加入资源需求缩小队列,并计算剩余资源量与资源伸缩量的差值以降序排列。若为正值,则加入资源需求扩大队列,计算资源需求伸缩量与剩余资源量的比值作为安全调度因子,并依据该因子数值将队列按升序排列,如果一方队列为空,则直接选择另一方排位第一的物理机机做为待迁入的物理机,若都不为空,则进一步比较两个队列的首位物理机,选择其中一个作为待迁入的物理机。

基于资源负载预估的主动控制是一种前馈控制,通过预估系统的未来工作负载情况来预先分析物理机发生过载或低载的可能性,并根据算法进行虚拟机整合,保证系统处于最优状态。基于实际系统状态信息的被动控制是一种反馈控制,通过监测单元等系统组件收集各虚拟机运行过程中使用资源的实时信息以及数据中心、物理机的状态信息作为反馈,重新调整虚拟机在物理机上的部署。

通过预估技术提前获知资源负载的波动情况,可以让调度器部分更加从容地实施虚拟机迁移策略,起到有针对性地提前预防作用;又可以通过反馈技术获知调度策略的实际执行情况,对处于过载或低载状态的物理主机实施虚拟机迁移操作,起到实时地纠正控制作用。

所述对数据中心物理机当前时刻t的下一时刻t+1的资源负载情况进行预估,进一步包括:

统计当前物理机上用户信息;

使用启发式方法或k-邻近算法对用户在下一时刻t+1的所需资源u(t+1)进行预估,取u(t+1)和w(t+1)中值较大的作为下一时刻t+1当前物理机的资源负载值。

本发明提出了基于虚拟机的资源调度方法,提高了资源利用效率、减少任务处理时间。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1