计算机系统应用  2018, Vol. 27 Issue (6): 111-117   PDF    
异构环境下的虚拟资源建模及分配方法
姚栋杰1,2, 丁维龙1,2, 徐扬3     
1. 北方工业大学 数据工程研究院, 北京 100144;
2. 大规模流数据集成与分析技术北京市重点实验室, 北京 100144;
3. 北京易华录信息技术股份有限公司, 北京 100043
摘要:多虚拟化平台结合使用可以充分利用各平台的优点, 减少单平台故障造成的业务影响. 异构环境下难于对虚拟资源进行统一有效的管理, 特别是用户需求不能合理的在平台中实例化, 会导致严重的资源浪费, 并且由于迁移的代价较大, 难于整合与调整全局资源. 针对上述问题, 提出一体化模型统一管理跨平台的虚拟机资源, 并在此基础上提出基于粒子群算法的二级平衡度分配策略, 在实例化虚拟机时合理的选择虚拟化平台, 最大化的利用各平台虚拟资源. 实际环境下的实验说明, 本方法平衡了资源利用率和提高了虚拟机跨平台的管理效率.
关键词: 云计算    异构平台    资源分配    资源虚拟化    一体化资源模型    
Modeling and Assignment Method of Virtual Resources in Heterogeneous Environment
YAO Dong-Jie1,2, DING Wei-Long1,2, XU Yang3     
1. Institute of Data Engineering, North China University of Technology, Beijing 100144, China;
2. Beijing Key Laboratory on Integration and Analysis of Large-scale Stream Data, Beijing 100144, China;
3. Beijing E-hualu Information Technology Co. Ltd., Beijing 100043, China
Abstract: The combination of multiple virtualization technologies can exploit the advantages of each platform and reduce the failure risks by the single one. In the heterogeneous environment, it is difficult to manage the virtual resources effectively, especially it might lead to serious waste because user’s needs cannot be reasonable instantiated, and would suffer large cost and be difficult to integrate resources during machine migration. To solve the above problems, we propose an integrated model to manage the virtual machine resources across the heterogeneous platform, and bring a two level equilibrium allocation strategy based on Particle Swarm Optimization (PSO) to maximize the resources utilities for each platform. Under the extensive experiments in practical environment, the proposed method can improve the resource utilization and management efficiency.
Key words: cloud computing     heterogeneous platform     resource allocation     resource virtualization     integrated model    

1 引言

虚拟化技术是构建云平台的关键. 现在国内外的主流云平台都是采用虚拟化技术搭建. 虚拟化技术的广泛应用, 节约了成本, 提高了物理资源整体运行的效率. 虚拟化技术越来越多的应用于生产环境, 使得虚拟机的快速高效部署、有效的使用和管理虚拟资源, 成为现在人们普遍关注的焦点. 随着虚拟化技术的发展、应用的创新和市场需求的变化, 单一虚拟化平台难以满足全时全域的优质服务需求和灵活多样的个性化定制需求[1], 因此虚拟环境向多元化集成化发展. 人们利用多虚拟化平台的意义在于能够充分利用各平台的优点, 减少单平台故障造成的业务影响, 同时也可以更好地适应不同服务的负载[2].

多虚拟化平台的使用给人们带来了方便, 同时也带来了更多的挑战: (1)各虚拟化平台之间的核心技术不能互相兼容, 对异构虚拟化平台下的虚拟机资源难于进行统一管理. 因此, 在管理及监控虚拟化平台时, 没有统一接口进行访问, 导致数据显示时无法统一. (2)异构虚拟化平台下, 迁移虚拟机或者调整虚拟资源时的操作, 需要转换为实际平台的操作, 很难完成即时在线调整. 因此, 在实例化虚拟机时, 如果不能合理的选择一个虚拟化平台进行资源分配, 那么就会造成资源的严重浪费.

针对虚拟机资源的统一管理, 本文提出一体化模型, 首先将虚拟机资源进行抽象处理并定义实体, 然后利用这些实体进行建模, 通过模型来管理虚拟机; 针对虚拟资源的分配, 本文提出一种基于粒子群算法的二级平衡度分配策略, 在实例化虚拟机时, 根据虚拟化平台下虚拟资源的使用情况选择合理的宿主平台, 从而使资源被最大化利用.

本文组织结构如下: 第2节介绍相关工作; 第3节主要介绍一体化模型及二级平衡度分配策略; 第4节通过实际环境验证模型的可行性及二级平衡度分配策略的高效性; 最后给出总结和展望.

2 背景 2.1 研究动机

本文的研究动机来源于某市局公安的云平台管理系统, 该系统主要是基于KVM和VMWare两类虚拟化平台, 并且平台由物理服务器和不同的存储服务器组成. 基于遗留原因, 存在现有上述两类平台单独运行, 各自管理自己的虚拟机问题. 从系统管理员的视角, 用户无法对平台整体进行统一管理, 并且在创建虚拟机操作时, 需要考虑各虚拟化平台的选择. 基于上面的原因, 本文主要工作是在异构虚拟化资源管理平台基础上, 实现对虚拟机进行一体化管理, 并且在资源管理平台上实现虚拟机合理的选择宿主平台, 系统逻辑框架图如图1所示.

图 1 系统逻辑框架图

2.2 相关工作

目前, 在虚拟化操作系统方面, 各厂家的Hypervisor之间是不能互相兼容的. 在虚拟资源管理方面, 尚无高效统一的模型进行管理. 谢浩安等[3]提出异构虚拟化平台的统一资源管理的解决办法及统一云管理平台和云服务引擎的设计, 但是对虚拟资源的分配和使用情况没有进一步的探讨. 虚拟机调度是提高云基础设施资源利用率的重要途径, 对于虚拟机的资源调用和分配, 已经做过很多的相关工作, 目前虚拟机调度的研究主要集中于资源利用率[4], 负载均衡[5], 以及QoS[6]等, 很多研究都没有充分考虑资源开销, 特别是应考虑异构环境下的资源利用. 袁文成等[7]提出一种面向虚拟资源的云计算资源管理机制, 通过对虚拟资源的划分、预留及调到策略, 为用户提供有效的IaaS服务, 但是他们并没有涉及到异构环境下的多维虚拟资源. 李晨晖等[8]提出一种基于多Agent的异构云计算环境下资源管理模型, 能较好地实现异构云计算平台之间的数据和应用的互操作和可移植问题, 但是他们主要研究异构云下的应用, 对资源的调度和分配没有给出充分的验证. 朱亚会等[9]提出一种基于资源利用率均衡的虚拟机调度模型VMSM-RB, 将虚拟机调度问题抽象为不定维向量装箱问题, 但是对于异构虚拟化平台下虚拟资源的分配问题没有进一步的涉及. 朱泽民等[10]从QoS(服务质量)方面出发, 提出一种基于改进蚁群算法用于实现虚拟资源的调度算法, 但是文中主要是从服务质量出发, 对于虚拟资源的分配考虑的较少. 周东清等[11]提出一个多维资源的利用率模型来解决异构云平台下能源最小化的虚拟机部署问题, 但是他们对平台的虚拟资源只限于内存和CPU. Ren等人提出一种云计算环境下的动态均衡负载算法[12], 通过预测决定何时迁移虚拟机, 可以避免因瞬时负载过高而触发的迁移, 然而并无在异构虚拟化平台下进行验证.

本文综合相关工作, 在异构虚拟化平台的前提下, 基于一体化资源管理平台, 对虚拟机资源统一管理和分配, 旨在最大化虚拟资源利用率.

3 一体化虚拟资源模型及分配方法 3.1 一体化虚拟资源模型

本模块中主要提出一体化虚拟资源模型, 该模型用于异构环境下统一描述和管理虚拟机资源. 本节是从虚拟机视角, 管理虚拟资源.

虚拟机一般是由网络、镜像、虚拟机的规格及支持的Hypervisor构成, 因此虚拟机模型的逻辑组成如图2. 故对虚拟机进行四元组定义: VM=<Profile, ImageEnterty, VMFormat, Network>.

图 2 虚拟机模型逻辑图

其中, 元组是有不同的实体组成的, 实体定义如下:

1)属性实体: Profile=<Id, Description, PlantEntity>,Id是对实体唯一的标识; Description代表的是对虚拟机的描述; PlantEntity是平台实体, 该实体是用来区分异构虚拟化平台的, 平台实体设计如下: PlantEntity=<Id, VirtPlant, Description, CPU, CPURation, Memory, MemoryRatio, STModel>, 其中:Id是对平台的唯一标记; VirtPlant代表的是虚拟化平台; Description是对平台的描述; CPU表示物理CPU的大小; CPURation表示物理CPU利用率; Memory表示内存的大小; MemoryRatio表示物理机内存利用率; STModel代表存储实体, 该实体定义如下: STModel=<Id, StorageName, VirtPlant, DiskSize, DiskRation>, 其中Id是存储平台的唯一标记; StorageName代表存储服务器名称; VirtPlant代表连接的虚拟化平台; DiskSize表示磁盘的大小; DiskRatio表示磁盘利用率.

2)镜像实体: ImageEnterty=<Id, ImageName, Descirption, Size, Format, Framework, Plant>, 其中:Id是对实体唯一的标识; ImageName是镜像的名称; Description是对镜像的描述; Size表示镜像的大小; Format表示镜像的格式; Framework表示镜像的系统架构; Plant表示支持的虚拟化平台.

3)虚拟机规格实体: VMFormat=<Id, VName, VCPU, VMemory, VDisk>, 其中:Id是虚拟机规格的唯一标识; VName代表虚拟机规格名称; VCPU代表虚拟机的虚拟CPU数量; VMemory代表虚拟机的内存; VDisk代表虚拟机的磁盘空间.

4)网络实体: Network=<Id, IPName, IP, GateWay>, 其中Id是对网络的唯一标识; IPName表示网络的名称; IP表示网络地址; GateWay表示网关.

通过该模型, 可以在异构虚拟化平台下的虚拟机进行增、删、改、查等操作, 并且可以查看虚拟机在不同平台下的运行状况, 以及不同平台下虚拟资源利用率, 对操作及运维管理人员非常的简洁方便.

3.2 基于PSO的虚拟机二级分配方法

异构虚拟化平台下, 如果在实例化虚拟机时只是单纯的考虑内存、CPU等单一虚拟资源的利用率, 就会导致该虚拟资源使用过高, 其他虚拟资源没有充分利用, 从而造成虚拟资源的严重浪费, 如图3所示. 因此, 在实例化虚拟机的时候, 如何才能在充分利用异构虚拟化平台下虚拟资源的同时, 又使得平台下单台物理机的资源最大化利用?PSO[13]具有算法运行速度快和实现简单以及对内存和CPU速度要求都较低等优点, 故本文基于PSO算法, 主要通过2个层面来阐述资源利用率问题, 首先从单一平台下的物理机资源出发, 考虑每台物理机多维虚拟资源均衡利用; 然后再从虚拟化平台层面考虑虚拟资源, 使得虚拟化平台的多维虚拟资源均衡利用. 最终达到不仅使得单一平台下每台物理机的资源最大化利用, 更使得不同平台下总的虚拟资源最大化利用.

图 3 平台下的资源占用率

实例化虚拟机时, 对于虚拟资源分配问题, 可以理解为二层的多维装箱问题: 首先选择虚拟化平台, 然后选择平台下的物理机. 本文是在VMSM-RB[9]模型的基础上进一步改进, 将平台选择加入模型中, 模型定义如下:

定义1. 虚拟资源占用量. 是对异构虚拟化平台下已用虚拟资源的统计, 包括平台资源占用量和物理机资源占用量.

假设 $P_{ij}^m$ 表示平台i上第j台物理服务器上面的第m维资源总量, $V_z^m$ 表示虚拟机z需要分配的第m维资源的量, 此处的m主要考虑3种资源, 即m={vcpu, vmemory, vdisk}. 虚拟资源总量:

$R^m_{ij}= \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {a_i*b_j*P^m_{ij}} } $ (1)

其中i表示第i个平台, j表示平台下的第j台物理服务器, ij的取值为{1,2,3,…}, aibj都是布尔函数值, ai={0,1}, 如果ai值为1, 则表示第i个平台被选中, 值为0, 表示平台i未被选中, 同理可知bj. 比如, 若要获取平台1下面的虚拟资源总量时, 则由:

$a_i = \left\{ {\begin{array}{*{20}{l}}{1,\;\;\; \text{平台}{{i}}\text{被选中}}\\{0,\;\;\; \text{平台}{{i}}\text{未被选中}}\end{array}} \right.$

可得a1=1, bj=1, 虚拟资源总量表达式如下:

$R^m_{1j}=a_1*b_j*\sum\limits_{j = 1}^n{P_{1j}^m}$

物理机资源占用量为 $C_{ij}^m$ ,则平台资源总的占用量为:

$T^m_{ij}=a_i*\sum\limits_{j=1}^n{C^m_{ij}}$ (2)

虚拟机z部署到物理机j上时的资源占用量为:

$S_z^m = {a_i}*{b_j}*\left( {C_{ij}^m + V_z^m} \right)$ (3)

其中ai表示布尔值函数值, ai定义如上.

比如: 当z分配到平台2下的第3台物理机, 则:

$a_i = \left\{ {\begin{array}{*{20}{l}}{1,\;\;i = 2}\\{0,\;\;i\text{为其他}}\end{array}} \right.,\;\;{{b}}_i = \left\{ {\begin{array}{*{20}{l}}{1,\;\;i = 3}\\{0,\;\;i\text{为其他}}\end{array}} \right.$

$S_z^m = {a_2}*{b_3}*\left( {C_{23}^m + V_z^m} \right)$ .

定义2. 资源利用率. 虚拟资源占用量与虚拟资源总量的比值, 分为物理机资源利用率和平台资源利用率. 将一台虚拟机实例化后, 物理机资源利用率会变化, 平台的资源利用率也会变化, 因此首先定义物理机资源利用率:

$\begin{aligned}RH^m_{ij} & =S^m_z / R^m_{ij}\\& = [a_i*b_j*(C^m_{ij}+V^m_z)]/\sum\limits_{i=1}^n\sum\limits_{j=1}^n{a_i*b_j*P^m_{ij}}\end{aligned}$ (4)

平台资源利用率:

$\begin{aligned}RP^m_i & = (T^m_{ij}+V^m_{z})/R^m_{ij}\\& = (a_i*\sum\limits^m_{j=1}{C^m_{ij}}+V^m_z)/\sum\limits^n_{i=1}\sum\limits^n_{j=1}{a_i*b_j*P^m_{ij}}\end{aligned}$ (5)

物理机资源利用率平均值:

$AH = \frac{1}{M}\sum\limits_{m = 1}^M {RH^m_{ij}} $ (6)

平台资源利用率平均值:

$AP = \frac{1}{M}\sum\limits_{m = 1}^M {RP^m_i} $ (7)

定义3. 资源平衡度. 由两部分表示, 一部分表示物理机资源平衡度, 另一部分是表示物理机所在的平台资源平衡度.

物理机资源平衡度由式(4)和式(6)可得:

$BH = \sqrt {\frac{1}{{{M}}}\sum\limits_{m = 1}^M {{{(RH^m_{ij} - AH)}^2}} } $ (8)

平台资源平衡度由式(5)和式(7)可得:

$BP = \sqrt {\frac{1}{M}\sum\limits_{m = 1}^M {{{(RP^m_i - AP)}^2}} } $ (9)

当平衡度越小时, 表示资源分配越均衡, 资源利用率越高. 由于本文是从异构虚拟化平台和平台下物理机两个层次来分析资源利用率, 因此将两个资源平衡度作为衡量总体资源利用率的参考点, 本文首先将BH作为一个粒子, 基于粒子群算法, 求出每个平台下最合适的解, 然后由求的得解与平台资源平衡度作为一个二维的数组, 再结合平衡度的思想, 找出最优解. 引入PSO公式如下:

$\left\{{\begin{aligned}V_{id}^{t + 1} =& m*V_{id}^t + {c_1}*rand\left( {} \right)*\left( {P_{id}^t - X_{id}^t} \right) \\ & +{c_2}*rand\left( {} \right)*\left( {P_{gd}^t - X_{id}^t} \right)\\X_{id}^{t + 1} =& X_{id}^t + V_{id}^{t + 1}\end{aligned}}\right.$

$V_{id}^t$ 是粒子的速度, $X_{id}^t$ 是当前粒子的位置, $P_{id}^t$ 表示当前粒子目前搜索到的最好位置, $P_{{{g}}d}^t$ 表示整个粒子群搜索到的最好位置. m是惯性权重, rand()介于(0,1)之间的随机数. c1, c2是学习因子.

基于上述给出的定义, 本文给出资源分配方法, 其主要思想如下: 首先将BH作为粒子群中的粒子, 找出该平台下最优的调度策略; 然后将BH与该平台下的BP作为一个二元组; 再利用平衡度的思想进行计算, 再次求出一个二级平衡度, 此时二级平衡度最小的, 就是最优的虚拟机分配策略. 具体的算法实现如算法1所示.


3.3 方法的实施流程

本模型是基于虚拟资源进行建立的, 并且在资源管理平台上对其进行实现, 资源管理平台逻辑框架参考图1. 用户在分配虚拟机时, 资源管理平台首先会获取用户所分配虚拟机的VMFormat数据, 同时将各个异构化平台的虚拟资源进行更新一下, 放入平台资源池中; 其次取出单个平台资源池中每个平台资源数据, 并根据虚拟机的VMFormat数据进行计算, 获取物理机资源平衡度最小的物理机和平台资源平衡度, 再将该二元组数据重新计算一个平衡度, 将数据返回给平台资源池; 然后循环判断平台资源池, 并返回计算数据; 最后将平台资源池中二级平衡度最小的平台, 作为虚拟机分配的宿主平台, 并且进行创建虚拟机.

4 方法的验证 4.1 实验配置

实验环境是异构虚拟化平台KVM和VMware, 对可用虚拟资源统计, 主要是计算节点上的CPU和Memory以及存储服务器的磁盘大小, 对控制节点的CPU和物理机上面的磁盘大小, 将不包括在内. 搭建后对两平台的资源统计列表如表1表3.

图 4 一体化模型实现的流程图

表 1 KVM虚拟化平台配置

表 2 VMware虚拟化平台配置

表 3 平台资源统计

表4是对虚拟机规格的定义, 利用这些规格进行分配虚拟机.

表 4 虚拟机规格

4.2 方法评估

实验1是与随机分配环境下进行对比, 数据是在多次实验结果后将平台和物理机的资源利用率进行求平均值获得. 实验2是与VMSM-RB模型进行平台资源的对比. 实验中主要进行衡量的数据有: 平台的资源利用率、平台下物理机的资源利用率及采用二级平衡度分配策略后它们的资源利用率.

实验1按上述的实验配置, 实验步骤设计如下: 首先选择M3和M5这2种虚拟机规格来进行实验; 每次分配10台虚拟机, 其中, 这两种规格下虚拟机各分配5台; 其次借助zabbix监控软件, 获取不同平台下每台物理机的CPU、内存及存储服务器的使用状况, 计算出平台资源利用率及平台下物理机的资源利用率; 然后按照每次保持10台的增长速度进行分配, 直到虚拟机增长到40台, 最后会将多次监控获取的数据求平均值, 将统计结果放入表5表6中.

表5是在随机分配的情况下进行试验的结果. 表6是在调用本文所述的二级平衡度分配策略之后获取的试验结果.

表 5 随机分配下的资源利用率

表 6 采用二级平衡度策略下的资源利用率

图5是在表56的基础上, 将上述数据整合在一个图中进行更直观的对比.

图 5 资源利用率对比图

表5表6可知, 虚拟机分配数量较少时, 资源的利用率也比较少, 随着虚拟机数量的增长, 资源利用率也随之增长. 图5给出了两种情况下的对比图. 对于平台虚拟资源, 在分配相同数量虚拟机的情况下, 采用二级平衡度分配策略使得平台虚拟资源利用率大约提高了3%; 对于平台下物理机的虚拟资源, 当分配相同数量的虚拟机时, 采用二级平衡度分配策略, 使得物理机虚拟资源利用率大约提高了5%.

虚拟资源的平衡度是衡量资源利用率的重要因素, 平衡度越小, 说明资源利用率越高, 虚拟机分配越合理. 为了合理的表达平衡度有效值的降低的, 本次采用平衡度与平均利用率的比值进行描述, 称为综合平衡度. 平台和物理机的平衡度在使用二级平衡度分配策略后, 与随机分配下的平衡度相比较, 两者都降低了约0.25, 如图6所示, 因此, 在平衡度方面也证明了虚拟资源利用率有了明显的提高.

图 6 资源平衡度性比图

实验2实验步骤设计如下: 首先选择M2和M4这2种虚拟机规格来进行实验;每次分配10台虚拟机, 其中, 这两种规格下虚拟机各分配5台; 然后借助zabbix监控软件, 获取相应的参数, 并计算出平台资源利用率及平台下物理机的资源利用率; 然后按照每次保持10台的增长速度进行分配, 直到虚拟机增长到40台, 最后, 将多次监控获取的结果进行求平均值, 根据平均值进行数据的可视化, 如图7所示.

图 7 平台综合平衡度

VMSM-RB模型主要考虑物理机多维资源的利用率, 它的局限在于单台物理机资源利用率很高, 而平台总资源利用率较低. 本次实验首先是按照VMSM-RB模型来分配虚拟机, 然后在分配相同类型虚拟机时, 按照二级平衡度分配策略进行分配虚拟机, 对比平台资源利用率. 由图7可知, 二级平衡度分配策略的综合平衡度比VMSM-RB减小, 因此, 二级平衡度策略能够更好的充分利用异构平台下的虚拟资源.

5 结论

本文给出一体化模型来管理异构平台下的虚拟机, 并在此基础上提出基于粒子群算法的二级平衡度分配策略. 实验表明, 该分配策略与随机分配策略相比较, 能够使得平台下物理机资源得到了均衡分配, 又使得异构虚拟化平台下虚拟资源利用率有了明显的提高.

参考文献
[1]
徐爱萍, 吴笛, 徐武平, 等. 实时多任务异构云计算平台负载均衡算法. 中国科学技术大学学报, 2016, 46(3): 215-221.
[2]
陈海波, 夏虞斌, 糜泽羽. 跨云计算的机遇、挑战与研究展望. 中国计算机学会通讯, 2017, 3.
[3]
谢浩安, 张国强, 白龙东. 一种支持异构虚拟资源的统一管理模型设计与实现. 硅谷, 2014(16): 45-46, 43. DOI:10.3969/j.issn.1671-7597.2014.16.041
[4]
Barros A, Brito A, Brasileiro F, et al. Optimizing resource utilization in private clouds with an opportunistic approach. Proceedings of the 2nd IEEE Latin American Conference on Cloud Computing and Communications. Maceio, Brazil. 2013. 21–22.
[5]
Soni G, Kalra M. A novel approach for load balancing in cloud data center. Proceedings of 2014 IEEE International Advance Computing Conference. Gurgaon, India. 2014. 807–812.
[6]
Li H F, Ge S Y, Zhang L. A QoS-based scheduling algorithm for instance-intensive workflows in cloud environment. Proceedings of the 26th Chinese Control and Decision Conference. Changsha, China. 2014. 4094–4099.
[7]
袁文成, 朱怡安, 陆伟. 面向虚拟资源的云计算资源管理机制. 西北工业大学学报, 2010, 28(5): 704-708.
[8]
李晨晖, 张兴旺, 崔建明, 等. 一种基于异构云计算平台的资源管理模型. 情报理论与实践, 2013, 36(1): 104-108.
[9]
朱亚会, 陈丹, 庄毅. 云数据中心资源利用率均衡的虚拟机调度算法. 小型微型计算机系统, 2017, 38(2): 232-237.
[10]
朱泽民, 张青. 基于多维QoS和云计算的资源负载均衡调度研究. 计算机测量与控制, 2013, 21(1): 263-265, 281.
[11]
周东清, 佀庆乾. 异构云平台中能源有效的虚拟机部署研究. 计算机科学, 2015, 42(3): 81-84, 116. DOI:10.11896/j.issn.1002-137X.2015.03.017
[12]
Ren HZ, Lan YH, Yin C. The load balancing algorithm in cloud computing environment. Proceedings of the 2nd International Conference on Computer Science and Network Technology. Changchun, China. 2012. 925–928.
[13]
Kumar D, Raza Z. A PSO based VM resource scheduling model for cloud computing. Proceedings of 2015 IEEE International Conference on Computational Intelligence & Communication Technology. Ghaziabad, India. 2015. 213–219.