云计算资源虚拟化技术实现原理

说到云计算,我们通常会看到这样的描述,“通过虚拟化技术实现”,不难看出,在云计算的概念中,虚拟化是非常基础,但又相当重要的一环,也是实现云计算的隔离性、扩展性、安全性等诸多问题的关键。

云计算的基础是虚拟化,但虚拟化只是云计算的一部分,云计算是在虚拟化出若干资源池以后的应用。很多人就此认为,虚拟化不过是云计算身后的一个小小助力,其实不然。关于虚拟化本身,在IT领域中早已获得广泛应用,并且针对不同的资源,有着截然不同的虚拟技术。

目前现有虚拟化类型大致可以分为四种:服务器虚拟化、存储虚拟化、内存虚拟化和网络虚拟化。

服务器虚拟化在行业的应用很多。利用服务器虚拟化,我们可以将服务器的CPU、内存、磁盘等硬件集中管理,通过集中式的动态按需分配,提升资源的利用效率。

存储虚拟化,是将存储资源的逻辑视图和物理存储分离,从而为系统提供无缝的资源管理。但因为存储标准化程度低,如果采用的存储虚拟化技术来自不同的厂商,那么兼容性则是必须考虑的问题。

内存虚拟化指利用虚拟化技术实现计算机内存系统对内存的管理。内存虚拟化系统使上层应用具有连续可用的内存,并在物理层上分割多个碎片,以满足对内存的分配以及必要的数据交换。

网络虚拟化即利用软件从物理网络元素中分离网络力量,与其他形式的虚拟化有共同之处。但如果网络设备和服务器不同,通常也面临技术挑战,比如需要执行高I/O任务,对数据处理也要求专有硬件模块。

目前,云计算更多使用的是服务器的虚拟化技术,但就虚拟化技术本身,则不仅仅只服务于云计算了。

一、 信息资源与云资源虚拟化

1、信息资源

1. 信息资源(Information Resources)简介

信息资源可以定义为可供利用并产生效益,以及与社会生产和生活有关的各种文字、数字、音像、图表和语言等一切信息的总称。其中包括结构化、半结构化和非机构化的数据,如数据库、文档文件、图像、音视频和 html 等,是人们从事生产和管理过程中所涉及的一切文件、资料、图表和数据等信息的总称。管理大师约翰·奈斯比特认为失去控制和无组织的信息不再是一种资源,相反它成为信息工作者的敌人。

2. 信息资源的特点

扫描二维码关注公众号,回复: 14565253 查看本文章

在网络环境中信息资源在容量、载体、结构、分布、传播方式和传播范围等方面与传统的本地信息有较大差异,其新的特点包括以下几方面。

1)信息容量大且变化较快

整个互联网中分布有难以计数的信息,单靠人工无法全面并及时地获取所需要的资料,面对信息的汪洋大海往往难以着手。或者想看上次查看的信息资源,但是却不知道在何处。网络有较快的更新速度,管理人员可随意修改或删除本已存在的访问入口,使信息的获取更加令人难以控制。

2)信息分布广泛且结构复杂

在互联网环境下信息被存储在不同的服务器中,并且采用不同的数据描述方式;同时配置各服务器的操作系统、数据库和字符集等都各不相同,这些都使网络信息资源变得复杂多样,处于无序状态中。

3)信息高度整合缺乏统一的标准

每个信息网站的信息都是由信息管理员收集整理而成,具有跨行业和跨时空等特点,覆盖范围相当广。而每一个信息管理网站都有自己的信息表示及组织方式,如一张图片可以直接由文件传输协议(File Transport Protocol,FTP)读取方式存储在硬盘或以某一字符编码存储在数据库中。

4)存储及传播方式多样

信息的存储载体大多以磁盘和磁带为主,还可以采用网络存储。通过互联网人们可以用多种方式获取信息,如电子邮件、网络下载、移动终端、在线聊天和视频等,用户足不出户即可漫游世界。

5)信息交流实时性较强

二进制信息在网络上高速传播,通过浏览互联网人们可以获取实时的消息,以及身边最新发生的变化,电子邮件更是降低了人们通信的时间消耗。

3. 信息资源的组织方式

信息资源的组织方式可以概括地描述为如下几种。

1)文件方式

通过文件系统组织并管理本地和网络信息的简单方式,它采用主题组织法的思想。每一个文件赋予一个名称,用于标识不用信息并通过网络共享信息。

FTP通过这种方式组织网络信息,基于 FTP 和 HTTP 的文件服务器存储的是一些非结构化的信息,如图片、视频、音频和程序等各种以文件信息存储的内容,用户通过文件夹窗口可以实现信息浏览及下载等操作。随着对网络信息需求的普遍和信息量的增加,以文件作为载体传播信息已经显得力不从心。当信息结构较为复杂并要求实现更多的逻辑功能时,文件管理方式的效率太低,因此这种方式可以作为信息管理系统的底层文件服务为其他功能提供辅助。

2)数据库方式

数据库是按照数据结构来组织、存储和管理数据的仓库,可以进行海量的数据存储管理。它保持了数据的完整性,并实现数据共享。用户灵活地设置关键词及组合查询条件,最终返回匹配的网络信息,有效的查询减小了网络负载。

基于数据库技术已经建立了大量信息系统,形成了完备的信息管理模式,极大地提高了用户查询效率和网络服务能力。数据库方式的不足之处在于很难处理非结构化的信息,信息之间关联性不直观。并且对于复杂的信息单元的处理缺乏效率,人机交换性较差。

3)主页方式

主页方式的信息组织指将有关部门及个人的详细信息有机地组织在一起,并在某个特定的界面中予以展示,它是对该组织及人物的较全面介绍。组织和个人可随意地在网络上创建主页,具体内容由自己决定。

4. 虚拟化对信息资源云的意义

信息资源云是采用云计算理念而构筑的信息资源管理平台和服务模式,它不需要改变现有互联网资源的分布,而是采用虚拟化与信息资源集成的相关技术将信息资源加以虚拟化与集成。并进行知识层面的组织和构建,加以服务质量的保证达到为用户提供安全可靠且按需知识服务的目的。

可以说用户的存储环境越复杂,虚拟化带来的好处就越明显。具体来说虚拟化对信息资源云的意义如下。

  1. 虚拟化可以简化对资源的表示、访问和管理,并为这些资源提供标准的接口使用户透明访问且按需获得。
  2. 虚拟化优化面向用户的应用,可以减轻与存储有关的管理负担,并为数据中心的迁移、备份、灾难恢复及负载平衡提供更好的模式。
  3. 虚拟化可以通过虚拟若干台机器来实现不同应用的实现,以此来形成隔离。通过隔离可以解决各类冲突,并且提高资源处理效率。
  4. 虚拟化降低了用户与资源之间的耦合程度,使用户并不依赖于资源的特定实现也能增强资源的动态可扩展性。
  5. 虚拟化可以在集成整合很多低成本设施后在云端统一提供良好的服务,大大节省了提供商的开发费用和用户的使用成本。
  6. 虚拟化有助于建立弹性伸缩的应用架构,用户可按需使用,随时满足不同业务需求。用户申请的主机服务可实现快速供应和部署(实时在线开通),并且在数分钟内即可快速实现云服务器配置的按需扩容或减配。

5. 信息资源查询的障碍

网络信息纷繁复杂,并非任何获得的信息都是可用的。网络信息结构和表示方式的多样性,以及网络用户搜索网络的熟练程度都对网络信息资源的查询造成的诸多障碍,主要因素分析如下。

1)对显示终端软硬件配置要求多样

信息资源的特点直接决定了本地和网络中的信息资源的访问界面的多样性,本地文件可以使用文件管理器或者用户终端浏览和查看;数据库资源可以通过数据库客户端或第三方的数据库展示视图来浏览和操作;网络中的文件信息或者网页可以使用浏览器来浏览,包括使用FTP协议和HTTP协议,这些都导致了用户体验的低下及管理上的烦冗。

2)信息组织不规范且泛滥

信息多以网页方式展示,每个信息发布的网站都有自己的一套规则。网站搜索引擎优化(Search Engine Optimization,SEO)并不是都能合理实现,使得关键词检索存在一些困难。信息纷乱无序且缺乏必要约束,以及信息被转载外链会使搜索结果有大量重复。虽然给用户大量选择余地,但精华与糟粕同在,很难加以区分。

3)信息污染严重

互联网是一个自由王国,各种各样的信息充斥其中,使我们深陷信息的海洋之中。而且其中包含大量失去控制、虚假、过时,甚至违法的信息,从而降低了信息资源的质量,因此信息的研究、分析、清洗和审核越来越重要。

2、资源虚拟化

1. 云计算资源的3种类型

云计算可将资源分为3种类型,即物理资源、虚拟化资源及服务资源。

1)物理资源(Physical Resource)

指云计算平台的基础设施,包括服务器、存储、网络和路由器等设备。物理资源的管理方式直观,而且结构相对固定。但是由于相对固定的规模与结构,因此难以支持多变的服务需求。

2)虚拟化资源(Virtual Resource)

指在基础设施之上通过虚拟化技术产生的物理资源逻辑映射,其特点在于灵活可变。基于虚拟化技术的支持管理员可以调整资源的规模和数量,通过增加物理资源来扩充整个平台的虚拟化资源总量。

3)服务资源(Service Resource)

指具有特定功能的应用服务单元,通过调用服务接口用户可获得服务所支持的特定功能,而不必关心服务的内部实现。服务实例可以被其他服务调用,而多个相同的服务实例可以组合成负载均衡的资源池,因此可将服务实例看做一种资源提供形式。

实际上资源由一种能够提供一定功能的服务实现,它能够实现标准化的输入和输出。这里的资源可以是硬件,如磁盘、CPU、内存、服务器、网络和特殊设备等。也可以是软件,如邮件服务和Web 服务等。

2. 资源虚拟化

资源虚拟化指创建一个抽象层,在物理硬件提供的资源(如电源、磁盘空间、CPU计算周期、内存和网络等)上进行抽象并提供给逻辑应用(如 Web Service、电子邮件、视频和语音等),以便使用这些资源。

资源的抽象往往具有多个层次,如目前业界提出的资源模型中出现了虚拟机、集群、虚拟数据中心和云等若干层次分明的资源抽象。资源抽象为上层资源管理逻辑定义了操作的对象和粒度,是构建基础设施层的基础。这种资源抽象的优势在于能够提供更好的冗余性、灵活性及服务隔离,从而为用户提供更可靠和更强大的服务。如何抽象不同品牌和型号的物理资源,以一个全局统一资源池的方式进行管理并呈现给客户是基础设施层必须解决的一个核心问题。

从另一个角度来说,资源虚拟化指将现实资源的内部属性、结构及其功能实现机制进行封装,将其功能以某种特定的形式表现在虚拟空间中。在虚拟空间中虚拟化的资源为用户或应用提供了通用的调用接口,这种机制就使得资源的使用无须紧密地绑定到物理资源,可根据资源的状态和能力等信息动态实时地绑定物理资源。

资源虚拟化技术的难点往往在于平衡资源的利用率和服务的可靠性和效率上,海量的服务请求需要大量和多种的资源,使用有限的资源服务更多的用户请求需要尽可能提高资源利用效率。例如,服务的 QoS和服务级别协议(Service Level Agreement,SLA)等要求。并且必须提供高效、稳定和可靠的服务,同时要降低服务响应时延、服务获取代价等。

此外,多种不同资源间交叉虚拟化和同一种资源虚拟化技术跨平台的可移植性等也是资源虚拟化需要面对的问题。

3. 虚拟化资源与物理资源之间的映射

将虚拟化分为向上虚拟化(Virtualizing Up)及向下虚拟化(Virtualizing Down),前者指基于多个物理资源提供一个性能高于单个物理资源的虚拟化资源;后者指将一个物理资源拆分后同时提供多个性能低于此物理资源的虚拟化资源。

按资源用途可将平台资源分为计算资源、存储资源及网络带宽资源3种。

下表所示为3种资源在不同形式下的虚拟化可能性的比较:

需要说明的是计算资源提供数据处理功能,如CPU和内存资源。其中不包含数据存储功能,计算资源是无状态的。存储资源用于保存数据,不包含复杂逻辑计算处理功能。数据库应用需要同时使用存储资源记录数据,以及计算资源进行程序语句的解析和执行等工作。 

3、虚拟资源特征

网络虚拟化环境下的虚拟资源具有以下特点。

1. 异构性

网络虚拟化环境中的虚拟资源种类繁多且功能各异,访问配置方式、本地管理系统操作和共享规则之间的区别很大;节点资源包括计算机、路由器、交换机、基站和移动手持设备等。

链路资源包括光纤、光波长、微波、双绞线和时隙等;网络资源存在的形态不同带来了虚拟资源的差异性,而虚拟资源的异构性必然导致虚拟资源管理和控制等方面的异构性,其管理需要屏蔽这些物理资源的异构性并协调物理资源共享使用。

2. 分布性

虚拟资源分布在地理位置上的不同地方,并隶属于多个基础设施提供商。在这种分布环境下虚拟资源管理并不是简单地将分布式的异构虚拟资源组合在一起,更重要的是要解决针对虚拟网请求的资源分配和调度问题,实现多个虚拟网间对物理资源的协调共享。

在分布式异构的虚拟资源环境中资源管理还需要实现资源维护和资源配置等操作,为云用户提供有Qos保证的云服务。

3. 自治性

虚拟资源的异构性和分布式特点也带来了资源管理上的自治性,虚拟资源首先属于某个基础设施提供商,基础设施提供商作为虚拟资源的拥有者对资源具有最高级别的管理权限。即具有自主的管理能力,因此具有自治性。

一方面,为了使系统中的资源能够为其他虚拟网用户所用,虚拟资源之间必须按照一定的策略和约定接受虚拟网用户的统一管理与配置。因此虚拟资源管理必须实现各个基础设施提供商之间的资源共享和调度,解决资源自治环境下的权限、安全和计费管理等问题。

另一方面,虚拟资源的迁移性为基础设施提供商优化资源使用提供了更大的灵活性。基础设施提供商可以借助虚节点迁移、虚链路迁移、虚路径分裂和虚路径聚合等机制透明地实现资源迁移,如基础设施提供商通过在自己管理区域内的不同物理节点间迁移虚拟节点来优化虚拟网的服务性能并保证虚拟网拓扑的连通性。

出于安全及易于管理的原因,虚拟资源迁移的发生应该在基础设施提供商管理域内,无须将事件的发生通知其他基础设施提供商或者全局网络范围。

4. 可扩展性

未来网络是全球性的大网,基础设施将由不同的提供商提供,因此设计网络虚拟化资源管理架构必须考虑底层由多个相互竞争的基础设施提供商构成的问题。

在网络虚拟化环境中可扩展性是一个重要的需求,一方面,由于设施建设的需要,已有基础设施提供商会增加新的网络设备资源以扩大网络规模。另一方面,由于业务拓展的需求,所以虚拟网可能会跨越新的基础设施提供商,需要将新的基础设施提供商包括到管理架构中。资源的扩增及业务的扩展引发了备选资源集合的扩展,因此资源管理系统需要具有可扩展性。及时更新资源信息,进而完成虚拟网的扩建与维护。

5. 动态性

在网络虚拟化环境中虚拟资源可以动态地加入或离开系统,尤其是在无线网络环境下资源的所处位置、服务提供能力和负载等随着时间的推移而动态变化,也有可能出现设备物理故障导致资源不可访问的情况。在资源动态变化的情况下,如何维持虚拟网对资源的持续使用和维护虚拟网拓扑的持续连接关系,以保证虚拟网业务不发生中断都是虚拟资源管理需要解决的问题。

综上所述,虚拟资源的特点决定了虚拟资源管理机制应该具备的功能和特点。既要具有可扩展性并隐藏物理网络资源的异构性,为虚拟网用户提供统一的访问接口来屏蔽物理网络资源的动态性,又要尊重物理网络资源的本地管理机制和策略,使虚拟资源更好地为虚拟网用户服务。

4、资源的性能指标

1. 虚拟化资源的性能指标

虚拟化资源不同于云服务,其运行流程根据资源种类不同有较大区别,因此无法建立统一的指标体系。从管理系统使用性能指标的角度,应当根据虚拟化资源的实际运行情况选取相应指标,如存储资源有每秒读写次数、读写速率和可靠性(备份及恢复机制等)等。

1)虚拟化计算资源

计算资源主要通过虚拟机形式提供,因此计算资源的性能指标与物理机指标类似。在管理层为简化管理,虚拟机一般以预设的标准配置分派。

例如,在EC2的实现方式中将虚拟机分为tiny、Small、middle和large等不同级别,其主要性能指标包括CPU主频、CPU个数、内存大小、CPU占用率、内存占用率和数据传输速率等。

2)虚拟化存储资源

管理系统主要关注的是可调整的性能指标,存储资源的主要可控制项包括通过增加存储资源提高磁盘空间总量、增加并行资源提高 I/O 性能,以及通过资源之间冗余备份提高数据可靠性,因此虚拟化存储资源的性能指标有磁盘空间总量、已用磁盘空间、每秒读写次数(Input/Output Per Second,IOPS)、I/O速率、最大连接数和数据冗余率(可恢复备份数)等。

3)虚拟化网络带宽资源

虚拟化层的网络带宽资源是一个逻辑概念,主要表示虚拟化资源之间的网络通信需求及网络拓扑结构,其性能指标包括网络带宽总量、网络带宽占用率、封包延迟和最大用户数等。在计算网络带宽资源的性能需求时需要与相关的虚拟化资源性能指标关联,如存储资源磁盘I/O 和计算资源数据传输速率等。网络带宽资源的性能应至少不低于这些指标,否则将成为性能瓶颈。

下表所示为部分重要的性能指标:

可见虚拟化资源性能指标并不完全覆盖云服务SLA域,这是由于某些SLA指标并不完全决定资源的性能。例如,计算服务的可用性指标主要关系计算资源的个数,以及是否采取了HA等容错措施。

另一方面,网络带宽资源的特殊性在于其表示了资源之间关联这一抽象概念。并不能直接映射到现实世界资源实体,因此部分常用于物理网络资源的指标并不适用于虚拟化网络带宽资源。 

2. 物理资源性能指标

虚拟化资源的性能指标是物理资源性能指标的逻辑汇总和拆分组合,逻辑汇总指的是物理资源包括节点功能、硬件配置、机器名和主板接口属性等信息。管理层无须在虚拟化资源层关注这些内容,因此对其进行逻辑汇总排除不必要的信息;拆分组合是指虚拟化资源对物理资源占用的多种拓扑关系。

管理系统关注的物理资源的重要性能指标如下。

  1. 计算资源:CPU性能(Hz)、CPU个数、CPU使用率、内存总量、内存占用率、运行时间、不可用时间和网络I/O速率等。
  2. 存储资源:存储总容量、可用空间、读写速率、可用连接总数、当前连接数和网络I/O速率等。
  3. 网络资源:网络带宽速率和缓存大小等。

可见虚拟化资源的性能指标除了部分存在复杂逻辑外,其余则易于映射到物理层性能指标。

如下两类性能指标的映射存在复杂逻辑:

  1. 可靠性和可用性等指标一般无法直接通过拆分组合方式从物理资源性能指标直接计算得出,有两个因素决定虚拟化资源的可靠性,一是物理资源本身的可靠性,可以通过物理资源节点环境情况(如主板温度等)、服务失败记录,以及非正常运行时间与正常运行时间比例进行计算;二是虚拟化层的运行稳定程度。在虚拟化存储资源的例子中提供两个以上物理资源的支持,则这个存储资源的可靠性还关系到物理资源之间的逻辑关系。若物理资源互为备份,将提高虚拟化资源的可靠性。
  2. 虚拟化网络资源的性能指标并不仅仅基于物理网络资源,该指标决定与所有关联物理网络资源的性能指标。当多个虚拟化网络资源占用同一个物理网络资源时会造成资源争用的情况,这种情况下需要将物理资源服务能力拆分考虑。

5、云服务与虚拟化资源的关系

虚拟化层为云计算平台应用层提供满足其运行性能需求的虚拟化资源,然而与提供具有SLA保证的云服务尚有一定距离。云服务应具备的条件是满足云服务生命周期、提供云服务使用接口、具备服务SLA的保证机制,以及在提供服务的同时合理利用虚拟化资源。

通过虚拟化资源支持云服务的一般思路是基于虚拟机在其系统中安装服务应用程序,然后通过虚拟机网络接口提供各种服务,但不同类型的云服务都通过虚拟机提供并不是最优解决方案。例如,若使用虚拟机提供存储服务,虚拟化技术对于物理资源的额外开销将过高。并且存储服务的提供方式相对稳定,采用虚拟机而获得的灵活性并未实际提升服务质量。

在亚马逊Web服务(Amazon Web Service,AWS)中存储服务采用S3,而非EC2,说明在云服务架构中不同服务的提供方式应充分考虑其需求特点;另一方面,要良好地管理结构复杂的组合云服务需要设计精巧的层次化资源模型。即维护云服务本身的关联性,并且能充分简化管理操作。

参考现有云计算平台系统说明云服务与虚拟化资源的关联关系,以及相关管理需求。

1. 提供不同类型云服务

根据使用云服务可分为计算服务、存储服务及其他辅助型服务。在此基础分类之外的各种不同类型服务可以看做这3种类型服务的衍生或者组合。

例如,Web应用服务一般由后台数据库存储服务、Web应用(计算服务)及Web展示(计算服务)组合而成,其中的数据库存储服务由数据库应用服务及存储服务组成。如果需要实现对此Web服务的监控和认证,则需要监控服务和认证服务的辅助。

根据虚拟化资源特点,计算服务由计算资源加上网络资源提供,而存储服务由存储资源加上网络资源提供。因此计算服务一般基于虚拟化层的虚拟机提供,通过定制虚拟机模板提供特定计算服务功能;存储服务则一般基于虚拟化层的网络存储提供;平台的辅助型云服务则由云计算平台中特定的服务器直接提供系统服务接口。

从系统实现角度考虑,若一台虚拟机支持多种计算服务,其变更重用成本及开发成本都会增加,因此在描述的平台内限定单台虚拟机仅支持一种计算服务。

2. 云服务结构与虚拟化资源结构

云计算平台管理层要保证云服务SLA就要首先保证相关虚拟化资源的性能指标,因此对于管理层了解云服务与虚拟化资源之间的关联非常重要。

在平台中一个云服务可能基于多个基础服务,这意味着该云服务关联多个虚拟化资源。此外,云服务还可能涉及存储服务等。以一个功能单一的Web服务为例,它所涉及的云服务与虚拟化资源有可能相当复杂,如下图所示。

为提供此Web服务,平台需要将一组虚拟化资源根据服务需求进行组合配置。由上图中所示的可见组合中包含多层次结构,由基础计算服务附加基础存储服务及其他辅助型服务组成。

该云服务结构具有一定的普遍性,在大多数云服务与虚拟化资源结构中计算资源的提供是造成平台能源消耗的主要负载,因此计算资源的管理是虚拟化层的重点管理需求。与此相比,存储服务及其他辅助型服务(如计费和认证等)的管理相对简单。

1)云服务结构

云服务的组合关系可以参照简单对象访问协议(Simple Object Access Protocol,SOAP)架构,借由类似组合服务模型表达方式体现一组云服务之间的不同调用流程。在云服务层次关系中存在服务的顺序调用、并列调用和循环调用等关系。

2)虚拟化资源结构

虚拟化资源结构有如下两层含义。

  • 虚拟化资源在虚拟化层根据虚拟网络拓扑组成资源网络结构,管理系统可以根据虚拟网络对资源进行分区并且控制访问权限和负载均衡等管理操作。
  • 虚拟化资源根据其支持云服务应用相互调用关系产生的关联。以虚拟化计算资源为例,一个应用可能采用多台虚拟机作为其计算服务支持。根据此应用对这些计算服务的组合使用方式,这些虚拟机之间产生相应的逻辑结构,在服务运行过程中处于同一逻辑结构中的虚拟化资源之间的网络通信会明显高于独立的虚拟化节点。

统一两个层次的资源结构可使平台的通信效能得到最大化,因此管理层同时获得两个层次的结构描述,并且执行有效的调整管理是优化平台应用性能的必要条件。

设想一个应用场景,即云计算平台接收发布云服务应用A的请求,与请求消息一同发出的是关于A的SLA需求描述。平台管理层首先根据服务结构及SLA描述分析出A所需的基础服务及其最低性能指标,然后根据这个分析结果搜索平台服务资源池中的可用原子服务并通过管理操作调配这些服务所使用的虚拟化资源,如虚拟机和网络存储等。在虚拟化层发布虚拟化资源,以及优化资源分布及结构关系,最后平台返回发布完成的云服务应用A的使用接口。

如下图所示,A结构包含云服务A1~A5共5个基础服务。 

平台在调配资源时需要根据基础服务的性能需求分派虚拟化资源,在本例中为虚拟化资源 A~E,每个虚拟化资源支持一个云服务的运行。同时,平台还要根据基础云服务之间的调用关系配置虚拟化资源之间的虚拟网络,以降低有数据传输需求的虚拟化资源之间的传输成本。 

二、虚拟化资源平台

1、虚拟化资源平台的功能

虚拟化资源平台管理是以某种用户和应用程序都可以很容易从中获益的方式来表示计算机资源的过程,而不是根据这些资源的实现、地理位置或物理包装的专有方式来表示。换句话说,它为数据、计算能力、存储资源及其他资源提供了一个逻辑视图,而不是物理视图。

资源提供一定功能,它可以基于标准的接口接收输入和提供输出。资源也可以是硬件,如服务器、磁盘、网络和仪器。或者是软件,如Web服务。

消费者通过虚拟资源支持的标准接口访问资源,使用标准接口,可以在IT基础设施发生变化时将消费者的损失降到最低。云计算的基础设施使经过虚拟化后的计算资源、存储资源和网络资源能够以基础设施,即服务的方式通过网络被用户使用和管理。

虽然不同云提供商的基础设施在其所提供的服务上有所差异,但是作为提供底层基础资源的服务,该层一般都具有以下基本功能。

1. 资源抽象

要搭建基础设施时首先面对的是大规模的硬件资源,如通过网络互相连接的服务器和存储设备等。为了能够实现高层次的资源管理逻辑,必须对资源进行抽象,即对硬件资源进行虚拟化。

虚拟化的过程一方面需要屏蔽硬件产品的差异,另一方面需要为每一种硬件资源提供统一的管理逻辑和接口。

值得注意的是根据基础设施实现的逻辑不同,同一类型资源的不同虚拟化方法可能存在非常大的差异;另外,根据业务逻辑和基础设施服务接口的需要,基础设施资源的抽象往往具有多个层次,资源抽象是构建基础设施的基础。

2. 资源监控

资源监控是保证云计算基础设施高效率工作的一个关键任务,是负载管理的前提。如果不能有效地监控资源,则无法进行负载管理。基础设施监控不同类型资源的方法不同,对于CPU,通常监控其使用率;对于内存和存储,除了监控使用率,还会根据需要监控读写操作;对于网络,则需要监控其实时的输入、输出,以及路由状态。

基础设施首先需要根据资源的抽象模型建立一个资源监控模型,用来描述资源监控的内容及其属性;同时,资源监控还具有不同的粒度和抽象层次,一个典型的场景是对某个具体的解决方案整体进行资源监控。一个解决方案往往由多个虚拟资源组成,整体监控结果是对解决方案各个部分监控结果的整合。

通过分析结果用户可以更加直观地监控到资源的使用情况及其对性能的影响,从而采取必要的操作调整解决方案。

3. 负载管理

在云计算基础设施这样大规模的资源集群环境中,任何时刻所有节点的负载都不是均匀的。如果节点的资源利用率合理,即使其负载在一定程度上不均匀也不会导致严重的问题。

可是当太多节点资源利用率过低或者节点之间负载差异过大时会造成一系列突出的问题,一方面,如果过多节点负载较低,会造成资源上的浪费。需要基础设施提供自动化的负载平衡机制合并负载,提高资源使用率并且关闭负载整合后闲置的资源。另一方面,如果资源利用率差异过大,则会造成有些节点的负载过高,上层服务的性能受到影响。而另外一些节点的负载太低,资源未充分利用。这时需要基础设施的自动化负载平衡机制转移负载,即从负载过高节点转移到负载过低节点,从而使得所有的资源在整体负载和整体利用率方面趋于平衡。

4. 数据管理

在云计算环境中数据的完整性、可靠性和可管理性是对基础设施数据管理的基本要求。由于基础设施由数据中心中大规模的服务器集群所组成,甚至由若干不同数据中心的服务器集群组成,因此数据的完整性、可靠性和可管理性都是极富挑战的。

完整性要求关系到数据的状态在任何时间都是确定的,并且可以通过操作使得数据在正常和异常的情况下都能够恢复到一致的状态,因此完整性要求在任何时候数据都能够被正确地读取并且在写操作上进行适当的同步。

可靠性要求将数据的损坏和丢失的几率降到最低,为此通常需要对数据进行冗余备份。可管理性要求数据能够被管理员及上层服务提供者以一种粗粒度和逻辑简单的方式管理,为此通常要求基础设施层内部在数据管理上有充分和可靠的自动化管理流程。对于具体云的基础设施层,还有其他一些数据管理方面的要求,如在数据读取性能或者数据处理规模方面的要求,以及如何存储云计算环境中海量的数据等。

5. 资源部署

资源部署指通过自动化部署流程将资源交付给上层应用的过程,即基础设施服务变得可用的过程。在应用程序环境构建初期,当所有虚拟化的硬件资源环境都己经准备就绪时需要进行初始化过程的资源部署;另外,在应用运行过程中往往会进行两次,甚至多次资源部署。从而满足上层服务对于基础设施中资源的需求,即运行过程中的动态部署。

动态部署有多种应用场景,一个典型的场景是实现基础设施的动态可伸缩性,即云的应用可以在极端的时间内根据具体用户需求和服务状况的变化而调整。当用户服务的工作负载过高时用户可以非常容易地将自己的服务实例从数个扩展到数千个,并自动获得所需要的资源。

通常这种伸缩操作不但要在极短的时间内完成,而且要保证操作复杂度不会随着规模的增加而增大;另外一个典型场景是故障恢复和硬件维护,在云计算这样由成千上万台服务器组成的大规模分布式系统中硬件出现故障在所难免。在硬件维护时也需要将应用暂时移走,基础设施需要能够复制该服务器的数据和运行环境并通过动态资源部署在另外一个节点上建立相同的环境,从而保证服务从故障中快速恢复。

6. 安全管理

安全管理的目标是保证基础设施资源被合法地访问和使用,云计算需要提供可靠的安全防护机制来保证云中的数据安全,并提供安全审查机制保证对云数据的操作都是经过授权和可被追踪的。

云是一个更加开放的环境,用户的程序可以被更容易地放在其中执行。这就意味着恶意代码,甚至病毒程序都可以从云内部破坏其他正常的程序。由于程序在运行和使用资源的方式上都和传统的程序有较大区别,因此如何在云计算环境中更好地控制代码的行为或者识别恶意代码和病毒代码成为管理员面临的新挑战;同时,在云计算环境中数据都存储在云中,如何通过安全策略防止云计算的管理人员泄露数据也是一个需要着重考虑的问题。

7. 计费管理

云计算也是一种按量计费的计费模式,通过监控上层的使用情况可以计算出在某个时间段内应用所消耗的存储、网络和内存等资源,并根据这些计算结果向用户收费。在具体实施时云计算提供商可以采用一些适当的替代方式来保证用户业务的顺利完成,并且降低用户需要支付的费用。

虚拟化资源平台的首要功能是整合大量且多种类的计算机资源,如存储和网络资源等。并且需要对这些资源进行有效监控,以达到负载平衡。为此需要虚拟化资源平台具备良好的异构性,能够对不同的硬件软件资源进行有效整合;此外,虚拟化资源平台具有动态资源部署的功能。即在应用运行过程中可进行两次,甚至多次资源部署。从而实现资源的按需使用,提供物理设施透明的资源管理和支撑工具。

2、虚拟化资源平台

为了突破计算资源虚拟化、软件服务化和资源灵活调度的关键技术,需要搭建一个虚拟化资源平台层为用户提供计算资源、虚拟机资源、虚拟存储、服务与数据资源空间等服务,完成支持“软件服务化、位置透明化和交互普适化”的面向新型网络应用模式的网络化操作系统虚拟化平台。

1. 总体框架

虚拟化资源平台(基础设施层)可以聚合和管理来自一个或多个集群的资源,一个集群指连接到相同 LAN 的一组机器。在一个集群中可以有一个或多台虚拟机管理节点实例,每个实例管理虚拟实例的启动、终止和重启。根据集群的数目,虚拟化平台层可分为单集群和多集群两种体系结构。

单集群体系结构如下图所示:

其中至少包含两台机器,一台机器运行云平台控制器(CLoud Controller,CLC)、集群控制器(Cluster Controller,CC)、存储访问控制器(Walrus)和存储控制器(Storage Controller,SC)等4个前端组件;另一台运行节点控制器(Node Controller,NC),这种配置主要适合试验及快速配置的目的。通过将前端组件都组合到一台机器内可简化安装过程,但是这台机器的性能需要非常健壮。

多集群体系结构如下图所示:

其中可以将各个组件(CLC、SC、Walrus、CC和NC)放置在单独的机器中。如果需要用它来执行重大任务,那么这是一种配置平台层的理想方式。多集群安装还能通过选择与其中运行的控制器类型相适应的机器来显著提高性能,如可以选择一台具有超快CPU的机器来运行CLC或选择存储空间大的机器安装Walrus,多集群的结果是可用性的提高,以及负载和资源的跨集群分布。集群的概念类似Amazon EC2内的可用性区域的概念,其中的资源可以跨多个可用性区域分配,这样一个区域内的故障不会影响整个应用程序。

2. 组件

具体地说,虚拟化平台层包含5个主要组件。即CLC、CC、Walrus、SC和NC,它们相互协作共同提供所需的虚拟化服务,并且使用具有工作站(Work Station,WS)-Security的SOAP消息传递安全地相互通信。 

1)CLC

CLC是虚拟化资源平台主要的控制器组件,负责管理整个系统,是所有用户和管理员进入虚拟化资源平台的主要入口。所有客户机通过基于 SOAP 或代表性状态传输(REpresentational State Transfer,REST)的API只与CLC通信,由CLC负责将请求传递给正确组件并将来自这些组件的响应发送回至该客户机,这是虚拟资源平台的对外窗口。

每个虚拟化资源平台的安装都包括单一的 CLC,相当于系统的中枢神经,是用户的可见入口点和做出全局决定的组件。它负责处理由用户发起的请求或系统管理员发出的管理请求,做出高层的虚拟机实例调度决定,并且处理服务等级协议和维护系统与用户相关的元数据。CLC由一组服务组成,这些服务用于处理用户请求、验证和维护系统,以及用户元数据(虚拟机映像和密钥对等),并可管理和监视虚拟机实例的运行。这些服务由企业服务总线(Enterprise Service Bus,ESB)来配置和管理,通过ESB可以执行服务发布等操作。虚拟化资源平台的设计强调透明度和简单,以促进平台的实验和扩展。

为了达到这一粒度级别的扩展,CLC的组件包括虚拟机调度器、SLA引擎、用户接口和管理接口等。它们是模块化且彼此独立的组件,对外提供定义良好的接口,ESB负责控制和管理它们之间的交互及有机配合。通过使用Web服务和Amazon的EC2查询接口与EC2的客户端工具互操作,CLC可以如Amazon的EC2一样工作。

2)CC

虚拟化资源平台的CC负责管理整个虚拟实例网络,请求通过基于SOAP或REST的接口被送至CC。CC维护有关运行在系统内的NC的全部信息,负责控制这些实例的生命周期,并将开启虚拟实例的请求路由到具有可用资源的NC。

典型的CC运行在集群的头节点或服务器中,它们都可以访问私有或公共网络。一个CC可以管理多个节点控制器,并负责从其所属的节点控制器收集节点的状态信息。

根据这些节点的资源状态信息调度进入的虚拟机实例在各个节点控制器上执行的请求,并负责管理公共和私有实例网络的配置。和 NC 一样,CC 接口也通过 Web 服务描述语言(Web Services Description Language,WSDL)文档描述,这些操作包括 runInstances、describeInstances、terminateInatances和describeResources。描述和终止实例的操作会直接传给相关节点控制器。

当 CC 接收到一个 runInstances 请求后执行一个简单的调度任务,该任务通过调用describeResource来查询每一台节点控制器,并选择第1个具有足够空闲资源的NC来执行实例运行请求。CC还实现了describeResources操作,即将一个实例需要占据的资源作为输入,并返回可以同时在其所属NC中执行的实例个数。

3)NC

NC 控制主机操作系统及相应的虚拟化平台 hypervisor(Xen 或 KVM)必须在托管实际虚拟实例(根据来自CC的请求实例化)的每台机器中运行NC的一个实例。

NC负责管理一个物理节点,是运行在虚拟机寄宿的物理资源上的一个组件,负责启动、检查、关闭和清除虚拟机实例等。一个典型的虚拟化平台安装有多个 NC,但一台机器中只需运行一个NC,因为一个NC可以管理该节点上运行的多台虚拟机实例。

NC接口由WSDL文档来描述,该文档定义了 NC 所支持的实例数据结构和实例控制操作,这些操作包括runInstance、describeInstance、terminateInatance、describeResource和startNetwork。实例的运行、描述和终止操作执行系统的最小配置,并调用当前的管理程序来控制和监测运行的实例。

describeRescource 操作为调用者返回当前物理资源的特性,包括处理器资源、内存和磁盘容量等信息;StartNetwork操作用于设置和配置虚拟以太网,

4)Walrus

这个控制器组件管理用户对虚拟化资源平台内的存储服务的访问,请求通过基于 SOAP或REST的接口传递至存储访问控制器。

5)SC

SC实现 Amazon 的 S3 接口,并且与 Walrus 联合用于存储和访问虚拟机映像、内核映像、RAM磁盘映像和用户数据。其中VM映像可以是公共或私有的并最初以压缩和加密的格式存储,这些映像只有在某个节点需要启动一个新的实例并请求访问该映像时才会被解密。

3、信息资源云的虚拟逻辑架构

在结合云环境下扩充信息资源特有属性后将虚拟化技术引入到资源虚拟化的抽象层次模型中得到一个实现信息资源云虚拟化的逻辑架构,如下图所示。

它从用户利用的角度实现了虚拟化,可以动态、透明和低成本地使用信息资源。

1. 网络层

网络层是实现信息资源虚拟化的最基础的一层,物理主机不仅是信息资源的重要载体,也是信息资源云的重要组成部分,目前主要通过Vmware vSphere 中的vNetwork 网络元素实现。

该层在指定物理服务器中的虚拟机之间利用分布式交换机将其集成作为单台虚拟交换机使用,使得虚拟机在跨主机迁移时可确保其网络配置保持一致。

交换机的一端与端口组相联,一端是上行链路,与虚拟机所在服务器中的物理以太网适配器相联。虚拟交换机可将其上行链路链接到多个物理以太网适配器以启用网卡绑定。通过网卡绑定,两台或多台物理适配器可分摊流量负载,或在物理适配器硬件或网络出现故障时提供被动故障切换。与同一端口组相联的所有虚拟机既属于不同的物理服务器,也在虚拟环境内的同一网络中。

从虚拟机的角度看,客户操作系统中的通信过程与真实物理设备通信相同;从虚拟机外部看,vNIC(虚拟网络接口卡)拥有独立的 MAC 地址及一个或多个 IP 地址遵守标准的以太网协议。它可以将离散的硬件资源统一起来创建共享动态平台,并且实现应用程序的内置可用性、安全性和可扩展性。

网络虚拟化可以使部署在数据中心物理主机中的虚拟机如同物理环境一样进行网络互联,而不用关心其具体属于哪个网络。从而消除了不同网络之间的界限,满足透明化的要求。

2. 资源层

网络虚拟化使主机可以不分地域和属性等限制性因素按需使用,在此基础上需要实现存储和服务器的虚拟化,以使存储其中的数据实现虚拟化。

1)虚拟存储资源

虚拟存储资源可使传统环境下的存储介质转变为云环境下所需要的模式,目前云存储系统通常将虚拟化存储分为如下3层。

  • 物理设备层:主要用来分配和管理数据块级别的资源,利用底层物理设备创建一个连续的逻辑地址空间,即存储池。根据物理设备的属性和用户的需求,存储池可以有多个不同的数据属性,如读写特征、性能权重和可靠性等级。
  • 存储节点层:分配和管理存储节点内部多个存储池之间的资源,将一个或者多个按需分配的存储池整合为在存储节点范围内的统一虚拟存储池。该层由存储节点虚拟模块在存储节点内部实现,对下管理按需分配的存储设备;对上支持存储区域网络虚拟化层。
  • 存储区域网络层:分配和管理存储节点之间的资源,集中管理所有存储设备上的存储池,以组成一个统一的虚拟存储池。该层由虚拟存储管理模块在虚拟存储管理服务器实现,并以带外虚拟化方式管理虚拟存储系统的资源分配,为虚拟磁盘管理提供地址映射和查询等服务。

虚拟化存储中引入双层地址空间映射机制来构建两个逻辑部分和一个映射组件,其中全局扩展地址空间用于管理所有映射到本地扩展地址空间的远程空闲内存,辑扩展地址空间则用于扩展本地物理地址空间。

最终由映射组件根据一定的规则完成从全局扩展地址空间到逻辑扩展地址空间的映射,以此构建跨越物理服务器资源边界的内存资源抽象。此外,利用气球驱动、页面交换、基于内容的页面共享和页面补丁技术等,通过释放空闲内存和使用远程内存的方式来达到动态调解虚拟机内存分配大小,把远程内存作为附加的存储层次的方式来调解内存分配可以达到最大优化内存资源配置。

云存储的每一块数据都有若干备份存储在不同的节点中,当云中的某个节点发生失效时由监控器传递信号进行虚拟机快速迁移。节点可以动态添加和移除,较原始的存储方式具有更高的可扩展性。

实现信息资源虚拟化的关键是存储的虚拟化,Hadoop分布式文件系统、vSphere 的高性能集群文件系统和谷歌文件系统都是云环境可应用的分布式文件系统,具有高容错性并且可以部署在低价的硬件设备之上。

2)虚拟服务器

服务器虚拟化有两种方式,即软件和硬件虚拟化。适当地配置运行服务器可使同一台物理服务器中运行多台虚拟机、服务器或桌面,每一台虚拟机都不需要自己的电源并产生自己的热量,也都不需要空间。但这些虚拟机中都可以贡献相同的服务并同时在一台物理机器中运行,这样每个数据中心的利用率大大提高并节省大量空间。

信息资源的使用依托于服务器,服务器虚拟化能够通过区分资源的优先次序随时随地将服务器资源分配给最需要它们的工作负载来简化管理和提高效率。从而减少为单个工作负载峰值而储备的资源,在资源调度中起到重要作用。

3)虚拟数据中心

信息资源虚拟化的结果如同一个巨大的数据中心,它可以源源不断地按需输出内容,也可以狭义地称为“数据虚拟化”。

在存储和服务器虚拟化的基础上云计算注重把封装好的通用服务及资源提供给用户,对异构资源的处理不依靠中间件,而是针对不同资源做不同处理。当响应程序时为其分配一种CPU、内存及软件,而不会是异构的资源。这样便于管理,也节约了成本。所以虚拟数据中心中的资源可以按照同构类型资源将属性相近的集中在一起,然后通过物理到逻辑的映射进行整合。

虚拟数据中心能够将来自不同数据源的数据汇入到抽象的服务层,这有助于减小对物理存储系统的需要,又为使用数据的所有应用程序(尤其是商业智能系统、分析系统和事务系统)提供了统一接口。

4)虚拟资源管理层

要实现按需、动态和有效的供给,必须合理组织各种虚拟化方式,管理层负责存储管理、调度监控、桌面实例化、QoS 评价和安全等。

服务器等虚拟化后规模增加,并且所具有的迁移特性使虚拟服务器在网络中的物理位置变得难以可视化。管理层可引入资源视图和虚拟拓扑来管理资源,通过虚拟资源视图可查看物理服务器、虚拟交换机、VM 的资源从属关系信息,以及网络配置能力;虚拟的拓扑数据使所有节点都聚合到物理服务器节点,又能体现物理服务器内部的虚拟世界。

监控器负责在接收请求后查看虚拟机的可用性和资源使用权并监控资源存储运行状况,当发现存储节点已经失效时控制节点能够将工作负载交给运行正常的存储节点来完成。

桌面实例化即虚拟桌面,它可以融合所有软件实例的显示窗口,真正为用户呈现一种虚拟化的体验。它可以通过请求、验证信息、连接、启用列表、应用和取消连接这一流程实现本地桌面和虚拟桌面的融合。终端用户设备成为轻量级计算机,只处理键盘、鼠标、显示器,以及本地相联的扫描仪和打印机任务,可以真正实现随地随用。相对于传统的“胖桌面”,其优势一是成本降低,以及可管理性、安全性、灵活性和可重置性提高;二是只将所需要的应用窗口推送给客户;三是动态分配资源,高性能和负载平衡;四是拥有控制客户与服务器之间交互的协议。

安全管理执行第三方认证、授权和验证用户身份的任务,还可以通过用户文件信息动态探测其忠实度变化情况,以保护敏感数据。

5)虚拟资源执行层

该层的核心功能是支持虚拟资源任务的执行。

资源调度是提高云环境下资源利用效率的重要环节,对于每项服务,基于负载模型、历史数据分析及外部事件迹象等预测实时的请求量以满足给定时间点的资源需求。资源调度一般包括4个步骤,即资源请求、资源探测、资源选择和资源监控。

首先探测用户需求和资源,并且根据探测到的资源指标和预先定义的资源调度策略评估资源。即从候选资源列表中根据选择最优资源,并根据策略和评估结果执行相应的行为。然后将虚拟机启动到合适的机器,使得资源池中的资源得到合理利用。调度迁移策略能根据用户需求,合理关闭闲置服务器或启动多台虚拟机完成负载比较大的任务时平衡负载。

在虚拟执行环境中资源不会意识到虚拟层的存在,而会像在传统计算环境中一样运行,为虚拟资源提供一个独立的环境。对于软件资源来说,只要部分,甚至不用安装在系统中虚拟软件就可以动态部署。

3. 物理服务层

物理服务层主要解决资源统一标准和统一调用接口的问题,资源服务化封装是虚拟化的一种方法。

其步骤一是描述资源,即选择相应的资源描述模板。并按要求填写相应的资源属性信息,形成 XML 格式的资源属性文档;二是按需打包形成资源实现类;三是部署资源,即调用资源适配器的加入接口加入到资源适配器中。资源适配器会自动生成资源,并获得资源实现类的相关信息。从而完成资源的服务化封装,对外呈现统一的调用接口。

资源到服务的映射分为3种,一是一对一,资源能完成的功能比较单一,直接封装为服务的形式;二是多对一,多个组合资源表示为提供单一接口的单个逻辑表示形式;三是一对多,针对功能比较强大资源。各功能之间又相互独立,可以按照功能分别封装成能完成不同功能的服务。

4. 逻辑服务层

逻辑服务层将服务功能从具体的服务中抽象出来以逻辑服务的形式描述,从而形成逻辑服务层,满足动态变化的需求或者特定业务的需要。

物理服务和逻辑服务的描述主要从功能和非功能属性两个方面来刻画,其中功能属性描述是服务的内在处理逻辑,描述服务能够做什么;非功能属性也称为“服务质量”(Qos),描述服务在使用时的外部表现,如性能、价格、可靠性、可用性和安全性等。

物理服务到逻辑层的映射有两种,一是功能相同和非功能属性取值不同的多个物理资源,这些物理服务能完成同样的业务功能,是同类服务。

将其虚拟化为一个逻辑服务,在实际运行时根据具体的非功能属性要求选择合适的物理资源使用。二是功能相同和非功能属性也相同的多个物理资源。为了增加容错能力或解决负载平衡等问题,一个物理服务复制多份部署在多台机器上,具体调用物理服务时可以根据当时服务运行情况等动态选择一个。

上述模型基本覆盖了硬件、软件及数据的虚拟化实现方式,从上到下各层并不是界限分明且独立作用的,而是相辅相成和互相渗透的。

三、资源虚拟化设计与实现

1、云计算如何实现资源的虚拟化

根据基础设施即服务(IaaS)的服务模式定义,服务提供商需要为租户提供按需付费的标准化弹性资源服务,其中包括弹性计算、弹性存储、弹性宽带和虚拟机等。

云计算将VDC 提供商的物理机房中的所有硬件资源通过虚拟化和标准化转换成为一个巨大的资源池,其中的所有虚拟设施都是提供商可提供服务的产品,并以规范化的 IaaS 方式打包成标准模板向用户出租。租户则可以在线按需申请所需的资源,并在短时间内获得所申请资源的访问和使用权限。

下图所示为云计算实现资源虚拟化的层次架构:

管理员和普通用户通过统一门户登录云计算管理平台,各用户根据授权级别不同能够使用的云计算管理平台提供的服务也不同。VDC租户关心的是如何在云管理平台上申请所需资源,以及查看资源使用状况、账单和历史记录。

在资源层云管理平台通过虚拟机监视器(VMM)实现硬件资源的虚拟化,其中包括 CPU、内存、输入/输出(I/O)和网络虚拟化。虚拟化的硬件资源由不同的虚拟监督程序(Hypervisor)搜集,根据业务层的指令打包成虚拟机(VM)。 

2、虚拟资源的静态与动态分配算法

云计算平台中的虚拟化运行环境采用创新的计算模式使用户通过互联网随时获得近乎无限的计算能力,使用户对计算和服务的取用自由和按量收费。虚拟化技术的伸缩性和灵活性极大地帮助虚拟化运行环境提高资源利用率,并且简化了资源和服务的管理与维护难度。

通过整合成千上万服务器的物理资源构建资源池,最终以服务的形式按需提供给用户。并且提供Linux和Windows系列常用主流操作系统虚拟运行环境,使用户使用虚拟和运行环境中的虚拟机如同使用本地物理机器一样。针对多样的拓扑及接入控制机制,虚拟网的动态资源分配要求持久的虚拟网监视及物理节点与链路容量的动态更新。

下图所示为动态与静态资源分配算法:

1. 静态算法

静态的虚拟网映射算法可以分为如下两大类。

1)两阶段虚拟网映射算法

两阶段虚拟网映射算法将节点映射和链路映射分开且顺序执行,离线的虚拟网映射问题即使是可以转化为多路分离器问题求解仍然是NP-hard问题。在已完成节点映射的情况下,不可分离流情况下的虚链路映射也是NP-hard问题。

因此已有的虚拟网映射算法均采用贪婪式的节点映射结合基于启发式方法的链路映射方案映射虚拟网,将节点和链路分开映射可以简化问题的处理。

2)一步求解的虚拟网映射算法

一步求解的虚拟网映射算法将虚拟网节点与链路同时映射,以获取最优的映射效果,常见的几种一步求解虚拟网映射算法如下。

  • 分布式协作分割算法

为了降低虚拟网映射算法的复杂度及时延,分布协作式的虚拟网映射算法将虚拟网划分为若干星形拓扑,即hub-and-spoke拓扑。该算法使用基于多代理的方案同时映射星形拓扑的节点和链路,其中节点映射方案也采用贪婪式方法将具有最大可用资源的物理节点分配成hub 节点,采用基于最短路径算法选择连接 hub 节点和 spoke 节点的物理路径。分布式的映射方法可以获得无单点失效和并行处理虚拟网请求等优势,但是相比于集中式映射算法,在响应时间和全局最优资源分配方面的性能较差。

如果致力于将节点和链路同时映射的算法在网络条件发生变化时需要重新计算代价,则会陷入多个局部最优解。

  • 基于业务约束的映射算法

为了缩小搜索空间,将 VN 拓扑结构约束为 back-bone Star 结构。其中一些节点是back-bone 节点,其他是接入节点。back-bone 节点是星形拓扑的中心,接入节点连接到back-bone节点上。

为了进一步减小问题的复杂度,限定back-bone节点间是全互联结构,即整个虚拟网拓扑是由星形和环形组成的完全图。这种以最小化虚拟网映射成本为优化目标的虚拟网映射算法仅针对一个虚拟网请求求解,并且该算法产生的拓扑不是最优的,但是缩小了搜索空间。

该方法通过限定虚拟网的拓扑结构将 back-bone 节点的映射转化为混合整数二次规划模型求解,利用节点间的流量约束条件通过迭代方法寻找映射成本最小的虚拟网映射方案。但算法计算复杂,针对特定结构的虚拟网拓扑设计的通用性差。

  • 仅考虑嵌入虚链路的算法

关于虚拟专网(VPN)的资源分配可看成是最早且较为简单的虚拟网映射问题,这些关于虚拟专网的映射算法仅仅考虑虚链路的带宽约束条件来简化虚拟网的映射问题。

由于虚节点的约束条件被忽略,因此会简化路径选择阶段的处理。也可采用模拟退火方法来映射虚节点,关于节点映射的唯一限制是假设不同的虚拟节点映射到不同的物理节点。该算法是一种排他式的节点资源分配方式,资源利用率较低。 

2. 动态算法

在静态算法中虚拟网映射不随时间变化,而动态算法指在虚拟网络运行过程中对已经映射的资源进行重新分配,以优化底层物理网络资源的使用。静态算法典型地导致物理资源利用率低,为了解决这个问题,可设计动态的映射算法。即将零散的资源整理为整块易管理的资源,以释放网络中某些瓶颈节点或瓶颈链路的资源,保证网络的连通性。

1)选择性虚拟网重映射算法

鉴于电路交换网络的重路由机制,周期性和有选择性地重新配置虚拟网映射来优化物理网络的过载部分。但是虚拟网资源重分配问题较流的重路由问题更显复杂化,虚拟网资源重配置导致物理网络发生明显的节点/链路映射变化。

为了量化虚拟网重映射的代价,定义虚拟网重映射成本为虚拟网、节点和链路重映射速率的加权和。重配置的虚拟网数量将影响网络的稳定性及计算开销,因此采用有选择性的重配置过程选择具有较高负载的虚拟网进行重配置。

具有选择性的虚拟资源重配置算法取决于两个步骤,一是周期性标识出瓶颈物理节点或链路;二是逐个虚拟网络的重配置及性能监测。

2)拓扑感知的虚拟网重映射算法

资源重新分配的映射算法与周期性重映射方法有两个区别,一是量化重映射的成本;二是触发重映射的机制。量化重映射成本的方法是计算虚拟网重映射前后的映射成本之差。周期性的重映射机制可以保持所有虚拟网请求在所有时间里都处于最优状态,但是会导致更多的虚节点和虚链路进行重新映射。

加重了网络开销及计算开销,故该算法只在发生了虚拟网请求不能被映射的情况下才做出虚拟网重映射的调整。此外,并不是重映射所有的瓶颈节点和瓶颈链路,而只是重新映射瓶颈节点和瓶颈链路上的优先级较低的虚拟网请求来降低资源的使用压力。该算法设计了节点和链路的重映射机制,提高了虚拟网映射接受比。但是在迁移虚节点的同时还需要迁移与虚节点相联的虚链路,因此其总体的计算花销较大。

3)DaVinei算法

DaVinei 算法是针对定制化的互联网提出的一种动态自适应虚拟网映射算法,该算法在多虚拟网间执行周期性地重新分配共享同一条物理链路的虚链路间的带宽。

此外,每个虚拟网还运行自己的分布式协议并最大化各自的目标函数。该架构支持多径,即允许经多条物理路径到达其他节点,因此产生分组重排序问题。该架构的另一缺陷是物理网络中的链路需要事先知道所有虚拟网的性能目标函数,而在现实中很难实现,并且这种算法也没有考虑虚拟网节点的分配问题。

4)QoSMap机制

QoSMap机制在建立虚拟网时严格考虑虚拟网的QoS要求与拓扑弹性问题,通过选择高质量保证的物理链路满足虚拟网的QoS需求。

此外,该机制还通过中间节点构建备份一跳路由提供虚拟网链路映射的弹性保障。在考虑为一个需要严格保证消息传输时延及丢包率的虚拟网分配资源时,其实验验证的结果是该算法较仅考虑Qos的虚拟网建立方案获得更优的服务质量及更好的弹性保证。但是该算法由于预先为虚链路保护进行链路带宽资源预留,因此物理网络资源利用率较低。

3、虚拟化环境下云计算体系结构核心模块设计

1.  云计算的技术体系结构

众所周知,按需部署是云计算的核心。要解决这个问题,必须解决资源的动态可重构、监控和自动化部署等,而这些又需要以虚拟化、高性能存储、处理器和高速互联网等技术为基础。

为了有效支持云计算,云计算的体系结构必须支持多个关键特征,一是系统必须是自治的,即需要内嵌有自动化技术减轻或消除人工部署和管理任务,并允许平台智能地响应应用的要求;二是云计算的结构必须是敏捷的,能够对需求信号或变化做出迅速的反应,内嵌的虚拟化技术和集群化技术能应付增长或服务级要求的快速变化。

通用云计算平台的体系结构如下图所示:

  1. 用户界面:提供云用户请求服务的交互界面,也是用户使用云的入口。用户通过Web浏览器可以注册、登录及定制服务,以及配置和管理用户,打开应用实例与本地操作桌面系统一样。
  2. 服务目录:云用户在取得相应权限(付费或其他限制)后可以选择或定制服务列表,也可以对已有服务进行退订操作,并且在云用户端界面生成相应的图标或列表来展示相关的服务。
  3. 管理系统:用于管理可用计算资源和服务,能管理云用户,即管理用户的授权、认证和登录,并管理可用计算资源和服务;同时接收用户发送的请求并根据用户请求转发到相应的应用程序。 
  4. 部署工具:是自治的,根据用户请求智能地动态部署资源和应用,以及配置和回收资源。
  5. 监控:监控和计量云系统资源的使用情况,以便做出迅速反应。完成节点同步配置、负载均衡和资源监控,确保资源能顺利分配给合适的用户。
  6. 服务器集群:虚拟或物理的服务器由管理系统管理,负责高并发量的用户请求处理、大运算量计算处理和用户Web应用服务。云数据存储时采用相应数据切割算法,并以并行方式上传和下载大容量数据。

云计算技术体系结构和云计算体系结构不是一个概念。后者从服务的角度来划分云,主要突出了云服务能给用户带来什么;前者主要从系统属性和设计思想角度来说明云,是对软硬件资源在云计算技术中所充当角色的说明。

云计算蕴含多项功能,如下图所示为构建云计算基础设施的技术体系结构。

这种体系结构可分为4层,即物理资源层、资源虚拟化层、管理中间件层和服务提供层的架构(Service-Oriented Architecture,SOA)构建层。

在物理资源层物理设施被虚拟化,提供一个灵活的资源池体提高资源利用率;管理层负责物理资源和虚拟资源池的管理、部署、监控、报警和安全等;服务提供层组合管理层的功能提供多种形式的服务。

  1. 物理资源:主要指能支持计算机正常运行的一些硬件设备及技术,可以是价格低廉的PC,也可以是价格昂贵的服务器及磁盘阵列等设备,可以通过现有网络、并行和分布式技术将分散的计算机组成一个能提供超强功能的集群用于计算和存储等云计算操作。在云计算时代本地计算机可能不再像传统计算机那样需要空间足够的硬盘、大功率的处理器和大容量的内存,而只需要一些必要的硬件设备,如网络设备和基本的输入输出设备等。
  2. 资源虚拟化:指一些可以实现一定操作并具有一定功能将大量相同类型的资源构成同构或接近同构的资源池,如计算资源池和数据资源池等,构建资源池更多是物理资源的集成和管理工作。云管理员将需求反馈给服务器,并通过服务器虚拟化软件直接看到闲置资源。几分钟就可以把这些资源建立为资源池,然后呈现给用户,用户根据云服务商的收费标准付费之后即可使用。使用过程中管理员可以基于用户的需求增加或者减少资源,这是一种变更管理。如果开始租用的资源不够,管理员可以将闲置的资源添加到用户的资源池;如果用户的资源减少且管理员看到其还有很多资源闲置,并且用户想要降低成本,则可以随时随地释放一部分闲置资源或者释放到 IaaS 服务商的大资源池中为其他用户提供服务。这样减少了使用方和服务方的成本,也提供了服务的便利性。
  3. 管理中间件:在云计算技术中中间件位于服务和服务器集群之间,负责资源管理、任务管理、用户管理和安全管理等工作。对标识、认证、授权、目录和安全性等服务进行标准化操作,为应用提供统一的标准化程序接口和协议。并且隐藏底层硬件、操作系统和网络的异构性,统一管理网络资源。其资源管理负责均衡地使用云资源节点、检测节点的故障并试图恢复或屏蔽,并对资源的使用情况进行监视统计;任务管理负责执行用户提交的任务,包括完成用户任务的部署和管理、任务调度、任务执行,以及任务生命期管理等。用户管理是实现云计算商业模式的一个必不可少的环节,包括提供用户交换接口、管理和识别用户身份、创建用户程序的执行环境,以及对用户的使用进行计费等;安全管理保障云计算设施的整体安全,包括身份认证、访问授权、综合防护和安全审计等。
  4. SOA构建:统一规定了在云计算时代使用计算机的各种规范和云计算服务的各种标准等,用户端与云端交互操作的入口可以完成用户或服务注册、定制和使用服务等。

管理员通过登录界面登录可以在远程提供虚拟机的存储、网络、账号、事件、系统和配置等功能,用户可以通过用户界面看到自己使用的虚拟机和资源池。同时,用户面对的是可以使用和管理的数据资源,以及资源可用性。在云计算平台上用户和管理员都可以执行添加操作,操作结果可以影响权限范围内的使用者。

不同的是用户只能看到和自己相关的事件,而管理员可以看到所有用户的事件和告警;此外,用户可以在系统中看到完整的操作系统信息,也可以登录虚拟机执行相关操作。而管理员可以维护和管理系统资源,也可以完成资源的增加和修改。管理员在云环境下可以对用户信息进行综合管理,系统中很多具体参数和配置可以在管理员配置界面中设定。 

2. 虚拟化角度下的云计算架构 

虚拟化技术是一项非常综合的技术,对于计算机科学来说大部分工作都是在做虚拟化。网络的7层协议是对物理通信的虚拟化,传统的操作系统是对单种计算机物理硬件的虚拟化,计算机高级语言是对机器语言的虚拟化,人工智能则是更高级的虚拟化技术。

下图所示为计算机科学的虚拟化层次:

节点和网络物理硬件通过多层虚拟化的逻辑简化过程形成弹性化的计算、存储和网络带宽三者整合的虚拟资源池,也就是所讲的云计算模式。

可见云计算的概念是对最底层的物理硬件经过多次虚拟化抽象而形成的,这也说明了为什么云计算是未来几年的技术发展方向。因为技术的发展就是一个不断抽象简化的过程,所以越上层的技术逻辑是越高级的逻辑。这个逻辑站在了很多“巨人”肩上,这些“巨人”就是下层的虚拟化技术。

1)从虚拟化角度看云计算资源池包括的资源

一般情况下,云计算所构成的资源池只包括计算和存储,不过从图中可以看到云计算的资源池除了计算和存储外还有网络带宽。由于云计算系统的节点是分布化的,因此云中心可以不只是一个地方。云计算系统可以实现带宽资源的有效协调,从而将带宽这一资源纳入到资源池。当然一个开放的通用云计算系统的资源池还包括系统平台所接入的服务,云计算平台作为一个应用接入平台可以实现大量应用的接入和整合,也许服务也应该成为资源被虚拟化技术放入资源池中。

2)从虚拟化角度看云计算的产业链

最大的虚拟化产品是现有的操作系统软件 Window 和 Linux,更严格地说,90%以上的IT 企业都在做虚拟化。例如,思科在做网络层的虚拟化,Intel 在做硬件层的虚拟化,大量软件企业在做应用层的虚拟化。

上图中的每一个虚拟化层还可以进行更为细致的划分,每一个虚拟化层代表云计算产业链中的一个环节。芯片生产商、硬件生产商、网络设备生产商、云计算平台提供商、云应用平台提供商、存储技术提供商、操作系统和带宽提供商等都必然会进入云计算的产业链,并且在不同的虚拟化逻辑层进行不同的工作,以支撑最高层的云计算应用。

云计算标准要建立一个虚拟化的逻辑协议栈,使产业链中的不同企业能有效地在同一个逻辑递推关系下工作。

下图所示为云计算简化协议栈,其中的每一层还会包括许多子层,云计算概念是下层多个逻辑协议层递推出的一个上层概念。

3)从虚拟化角度看云计算平台

虚拟化是云计算的基石,如下图所示为是一个典型的云计算平台。 

在此平台中由数台虚拟机所构成的虚拟化的硬件平台共同托起了全部软件层所提供的服务。
在虚拟化与云计算共同构成的这样一个整体架构中,虚拟化有效地分离了硬件与软件,而云计算则让人们将精力更加集中在软件所提供的服务上。

云计算必定是虚拟化的,虚拟化为云计算提供了坚实的基础。但是虚拟化的用处并不仅限于云计算,这只是其强大功能中的一部分。

到目前为止,大部分的云计算基础构架由通过数据中心传送且可信赖的服务和建立在服务器上不同层次的虚拟化技术组成。虚拟化为云计算提供了很好的底层技术平台,而云计算则是最终产品。 

3. 云计算平台中的虚拟化运行环境的核心模块设计

云计算平台中的虚拟化运行环境系统包含资源管理、节点调度、虚拟机生命周期管理和虚拟机监控4个模块。

资源管理模块实现管理和虚拟化异构及分布的物理资源(CPU、内存和硬盘等),并实现这些物理资源的按需使用;节点调度模块实现根据调度策略选择最优节点控制器;虚拟机生命周期管理模块实现虚拟机生命周期内对虚拟机的管理;虚拟机监控模块实现对云计算平台内所有节点控制器中虚拟机的实时监控。4 个模块相互配合使得系统可以充分并合理地使用和共享系统内的资源,使之得到最大化利用。

1)运行环境的体系结构

云计算平台中的虚拟化运行环境由一台集群控制器和多台节点控制器组成,其体系结构如下图所示。

集群控制器主要负责节点调度,监控系统内的虚拟机状态,以及所有节点控制器的CPU、内存和存储资源占用情况;节点控制器通过虚拟机管理器将物理资源虚拟化成虚拟机资源后分配给虚拟机,并在虚拟机生命周期内管理和监控虚拟机。每台节点控制器又分为3层结构,分别是硬件资源(CPU、内存和硬盘)、虚拟机管理器(KVM+Qemu、Xen或virtualBox)和虚拟机。

其中虚拟机管理器完成物理资源到虚拟资源的虚拟,处理虚拟机的I/O请求;节点控制器的适配器模块负责接收来自集群控制器的请求,适配不同的虚拟机管理器和管理虚拟机等。在本系统中节点控制器利用 Axis2/C,即阿帕奇可扩展交互系统(Apache EXtensible Interaction System,AXIS)发布服务;集群控制器通过Axis2/C客户端向节点控制器发送请求并获取响应。

2)资源管理

(1)资源虚拟化

云计算平台中虚拟化运行环境的资源虚拟化主要在节点控制器中由虚拟机管理器来实现,它将节点控制器上的CPU、内存和硬盘资源虚拟成虚拟资源供虚拟机使用。本系统支持3种虚拟机管理器,分别是KVM+Qemu、Xen和VirtualBox。

KVM是一台完全虚拟化的虚拟机监控器(VMM),它由KVM驱动和Qemu(一种广泛使用的开源计算机仿真器和虚拟机,也是一套虚拟机管理系统)两部分组成。其中KVM驱动己经作为Linux的一个内核模块嵌入到其内核中,主要职责是创建虚拟机、分配虚拟机内存、读写虚拟CPU寄存器,以及运行虚拟CPU等;Qemu为虚拟机提供I/O设备模拟机访问外设的途径。

下图所示为KVM的基本架构(Libkvm是KVM提供给Qemu的应用程序接口):

KVM驱动加入到标准的Linux内核中,被组织成Linux中的标准字符设备(/dev/kvm)。当需要创建和运行虚拟机时处于用户模式的Qemu可通过系统调用访问/dev/kvm。KVM驱动的加入使得整个 Linux 内核成为一个 VMM,并且在原有 Linux 两种执行模式(用户和内核模式)的基础上增加了一种客户模式(拥有自己的内核和用户模式)。

(2)资源监控

虚拟化运行环境实现了包括CPU、内存和硬盘在内的资源的统一抽象和逻辑表示,抽象出的虚拟机资源组成为一台或多台虚拟机,最终平台以虚拟机的形式呈现给用户。因此对资源进行有效的实时监控,保证资源的合理分配是虚拟化运行环境的一个重要职责。

集群控制器每隔60秒就会获取平台最新的资源信息,具体过程为首先检查配置文件是否修改,并根据最新的配置文件信息向每台节点控制器发送描述资源信息的请求。

当节点控制器收到请求后会将其包括CPU、内存和硬盘在内的资源占用及剩余情况回执提供给集群控制器,然后集群控制器会统计收到的所有响应,从而了解平台上资源的占用及剩余情况。此外,当用户申请虚拟机时虚拟化运行环境会根据当前资源剩余情况为虚拟机分配资源,当用户关闭虚拟机时系统也会及时将资源回收。 

3)节点调度

云计算平台中的虚拟化运行环境由一台集群控制器和多台节点控制器组成,每台节点控制器都安装有虚拟机管理器,在此之上可以运行一台或多台虚拟机。当用户申请虚拟机时集群控制器遵循某种调度策略选择节点控制器,从而在资源充足的前提下保证资源的合理分配和负载均衡。

云计算平台中的虚拟化运行环境提供3种调度方式选择节点控制器,即GREEDY(每次选择第1个资源能够满足需求的可用节点)、ROUNDROBIN(将节点排队,按照轮询的方式按序选择一个可用节点)和POWERSAVE(当节点上没有虚拟机运行时处于睡眠状态,每次选择资源满足需求的可用非睡眠的节点。如果没有满足要求的非睡眠节点,则唤醒可用的睡眠节点)。

当节点调度器接收到申请虚拟机请求时就会根据其中一种调度策略选择节点控制器,同时向该节点控制器发送申请虚拟机的请求。

此外当用户请求关闭虚拟机或重启虚拟机和系统实时监控虚拟机时都需要系统能够调度节点,以确定虚拟机所在的节点控制器,从而向该节点控制器发送请求执行后续操作。

(1)启动虚拟机时的节点调度

当系统收到启动虚拟机的请求后集群控制器会调用节点调度策略为虚拟机寻找资源中满足申请需求的节点控制器,找到后会向节点控制器发送启动虚拟机的请求,其流程如下图所示。

集群控制器的每个节点控制器有 4 种状态,即 RESASLEEP、RESDOWN、RESUP 和RESWAKING。睡眠的节点控制器处于 RESASLEEP 状态,正在被唤醒的节点控制器处于RESWAKING 状态,已经被唤醒的节点控制器处于 RESUP 状态,某种原因导致暂时不能访问的节点控制器处于RESDOWN状态。

当节点控制器中没有虚拟机运行时节点控制器将休眠,当集群控制接收到启动虚拟机申请时首先从处于非睡眠状态的节点控制器中选择剩余资源满足申请需求的节点控制器。如果没有,则从处于睡眠状态中选择一个满足需求的节点控制器,并将此节点控制器唤醒。

(2)关闭虚拟机时的节点调度

集群控制器收到关闭虚拟机的请求后根据所要关闭的虚拟机列表查找对应的虚拟机,如果找到并且这台虚拟机是可终止的,则获取其所在节点控制器的服务地址,并向该节点控制器发送关闭虚拟机的服务请求。否则向所有节点控制器发送关闭这台虚拟机的服务请求,关闭虚拟机时的节点调度流程如下图所示。

(3)重启虚拟机时的节点调度

集群控制器收到重启虚拟机的请求后会根据重启虚拟机的列表查找对应的虚拟机,如果找到,获取这台虚拟机所在节点控制器的服务地址并向该节点控制器发送重启虚拟机的服务请求;否则向所有的节点控制器发送重启这台虚拟机的服务请求。

重启虚拟机时的节点调度流程图如下图所示。

(4)迁移虚拟机时的节点调度

集群控制器收到迁移虚拟机的请求后会根据迁移虚拟机的列表查找对应的虚拟机,如果找到,获取这台虚拟机所在节点控制器的服务地址并向该节点控制器发送迁移虚拟机的服务请求;否则向所有的节点控制器发送迁移这台虚拟机的服务请求。

迁移虚拟机时的节点调度流程如下图所示。

4)虚拟机生命周期管理

虚拟机生命周期指从用户申请虚拟机开始到用户关闭虚拟机结束的整个时间段,在这个时间段内虚拟化运行环境可以根据用户请求,启动、重启、关闭及迁移虚拟机。在虚拟机的整个生命周期内虚拟机归申请者所有,包括平台管理员在内的任何人不能对该虚拟机执行任何操作。

(1)启动虚拟机

节点控制器接收到申请虚拟机请求后适配器查询资源管理器是否有足够的硬件资源分配给虚拟机,如果有,则为虚拟机准备镜像资源并启动虚拟机的XML文件等。镜像资源指启动虚拟机所需的镜像文件,其中已经按用户要求安装了用户需要的操作系统和常用软件等。然后调用 Libvirt 虚拟化库的 API 启动虚拟机,并将服务响应发送给集群控制器。虚拟机启动时会通过DHCP或集群控制器已经配置好的地址池获得IP地址,成功启动后用户可以访问虚拟机。 

(2)关闭虚拟机

节点控制器收到集群控制器关闭虚拟机的请求后首先从虚拟机列表中查找相应的虚拟机,如果找到,则检测是否连接到虚拟机管理程序;否则使用Libvirt虚拟化库API连接到虚拟机管理程序。然后通过虚拟机名查找相应的虚拟机并调用Libvirt虚拟化库API关闭虚拟机,之后将服务响应发给集群控制器。

(3)重启虚拟机

节点控制器收到集群控制器发来的重启虚拟机请求后首先从虚拟机列表查找相应的虚拟机,如果找到,检测是否连接到虚拟机监控程序。如果没有连接,则使用 Libvirt 虚拟化库API连接到虚拟机监控程序查找相应的虚拟机。然后调用Libvirt虚拟化库API重启虚拟机,把服务响应返回给集群控制器。

(4)迁移虚拟机

节点控制器收到集群控制器发来的迁移虚拟机请求后首先从虚拟机列表查找相应的虚拟机,如果找到,检测是否连接到虚拟机监控程序。如果没有连接,则使用 Libvirt 虚拟化库API连接到虚拟机监控程序查找相应的虚拟机。然后调用Libvirt虚拟化库API迁移虚拟机,把服务响应返回给集群控制器。

5)虚拟机监控

虚拟化运行环境通过虚拟化技术将物理资源虚拟成虚拟资源,最终呈现给用户的是一台台的虚拟机。因此监控虚拟机,以实时掌握虚拟机的状态并判断其是否在正常运行是云计算平台中虚拟化运行环境的一个重要功能。

本系统的虚拟监控分为两个部分,一是节点控制器监控运行在其上的虚拟机,了解其最新状态;二是集群控制器监控平台上的所有虚拟机,通过向每个节点控制器发送描述虚拟机状态请求获得所有虚拟机的最新状态信息。

与资源监控相似,集群控制器每隔60秒就会获取平台最新的虚拟机状态信息。虚拟机监控的主要过程为获取所有的节点控制器信息,然后向所有节点控制器发送虚拟机状态请求。收到响应后会更新相关数据结构,以保存关于虚拟机的最新信息。节点控制器每隔5秒更新运行在该节点控制器的虚拟机的状态信息,从而保证送达给集群控制器的响应是虚拟机的最新状态信息。

虚拟机的监控流程如图所示。

4、资源虚拟化实现案例

虚拟化技术可以将运算、网络与存储资源集中构成可以动态分配的资源池(Resource Pool),从而能够应对大量运算单元的同时高速存取,以及动态扩充容量而不影响系统效能,并且具备高可靠度与复原能力。

通过建设统一的数据业务虚拟化平台的模型可以实现资源的有效利用,在安全可靠和海量计算存储的基础上在动态资源池中将运算、网络与存储资源集中形成高效的应用软件开发和运行平台。

1. 系统架构设计

虚拟化平台以云计算为依托,能够支持丰富的基于云计算的典型应用类型。整个系统架构分为资源池管理平台、资源池统一调度、主机资源池、存储资源池和网络资源池,如下图所示。

  1. 资源池管理平台:也称为“资源运营管理平台”,它作为统一虚拟化平台中的核心模块负责整个资源池资源的统一管理和调度,即负责整个平台运行监控、运维及整个资源的商业运营流程支撑。
  2. 资源池统一调度模块:统一平台中所有资源呈现和管理实体,接收资源池运营管理平台的指令。
  3. 主机资源池:负责资源池中所有计算资源的管理和调度,资源池管理包括虚拟机资源和物理机资源部分。VMware vSphere Hypervisor(ESXi)是VMware的嵌入式管理程序,是直接安装在服务器硬件上的裸机虚拟化管理程序体系结构。从 VMware vSphere 5 开始,ESXi是唯一可用于部署 vSphere 的虚拟化管理程序。由于VMware ESXi不依赖于通用操作系统,并且其代码库较小,因此选择它更可靠且更安全。该程序能嵌入在主流物理服务器中简化并加快部署,它具有菜单提示启动和自动配置功能,使其成为着手VMware虚拟化的最简单方式。 
  4. 存储资源池:负责资源池中所有存储资源的管理和调度,其中包括块存储和文件存储。块存储资源虚拟化支持不同厂商SAN设备的异构化,屏蔽各种设备硬件差异;文件存储通过业界成熟和流行的云存储技术,屏蔽存储位置的差异,为业务平台提供按需分配和弹性扩展的存储服务。
  5. 网络资源池:负责资源池中所有网络资源的管理和调度,为业务平台提供外部接入、设备访问、业务管理和网络隔离等所需要的网络连接服务。

统一的应用系统必须保障系统对用户的响应速度和服务质量,因此系统需要较高的可靠性。在系统发生故障或因事故造成中断后能确保数据的准确性、完整性和一致性,并具备迅速恢复的能力。

在进行本系统架构设计、应用设计、数据库设计和系统部署等时都必须充分考虑性能问题。同时系统需要具有良好的开放性,保证系统具有较长的生命力,满足将来系统发展的要求。

2. 实现技术

平台模型采用微内核设计技术,在微内核结构中操作系统的内核只需要提供最基本和最核心的一部分操作。而其他管理程序被最大程度地置于内核之外,使得操作系统内部结构简单清晰,程序代码的维护非常方便。外部程序可以独立运行,只有当程序需要内核的协助时才通过相关接口对内核发出请求调用,从而便于扩展和增加其他插上电源组件。

规则配置采用python语言实现,该语言语法简洁清晰并且具有功能强大的类库,能够方便地把用其他语言编写的各种模块结合在一起。然后对其中有特别需要的部分采用更适合的语言改写,清晰而又一致的风格保证了产品的高扩展性和可定制性。

平台采用的开放服务网关发起组织(Open Service Gateway Initiative,OSGI)插件框架区别于目前大多数基于多元计算器(Multiple Variate Counter,MVC)的分层设计,具有高可复用性和高效性,可以动态改变系统行为。具有热插拔的插件体系结构可以方便地插入第三方插件,为特定的软件开发特定的插件进行监控管理。

数据业务虚拟化平台采用Java管理扩展(Java Management Extensions,JMX)监控和配置,可以跨越一系列异构的操作系统平台、系统体系结构和网络传输协议。并且灵活地开发无缝集成的系统、网络和服务管理的应用,提高了系统的可管理性。

3. 开发和实施思路

通过统一数据业务虚拟化平台能够提供资源的各种视图,供各类人员查看,并且可提供各种功能管理和使用资源池。数据业务虚拟化平台分为管理门户和服务门户,管理门户供统一平台的各类管理员使用;服务门户主要面向统一平台的各种用户。

设备管理用来接入和管理统一平台资源池中的各种物理设备,包括主机、存储和网络设备,资源池中的每一台物理设备在管理门户进行基本配置后纳入管理平台统一管理。

为了满足用户对资源的各种不同需求,达到资源共享和软硬件解耦的目的,资源池中的各种设备进行虚拟化后纳入资源池中供用户使用。管理平台能够管理现有主流的虚拟化产品,通过这些虚拟化产品对外提供各种规格的虚拟机。

根据属性不同,资源池中的各种物理资源和虚拟资源可组成不同的资源池。管理平台对资源池统一管理、监控和调度等,满足用户的资源使用要求。该平台可以对系统中各项资源的运行情况和操作进行监控记录,为系统的日常维护提供依据,包括资源池拓扑展示、资源监控、告警管理、日志管理和备份恢复等。

至此通过建设统一的数据业务虚拟化平台的模型来实现对资源的有效利用,整合现网资源,从而实现对所有资源的统一化、集中化、智能化调度和管理提供可行方案。同时,考虑系统安全、负载均衡和数据备份等需求,全面支撑业务平台的平滑割接和弹性扩展,从而达到设备利旧盘活的目的。

四、虚拟资源管理

云数据中心包含大量计算机,运行成本很高。有效整合虚拟资源建成动态的虚拟资源池,以提高资源利用率、节约能源并降低运行成本是云数据中心关注的热点。

实现云计算虚拟资源自动部署、动态扩展和按需分配,使用户能够采用按需和即付即用的方式获取虚拟资源是虚拟资源管理的重要任务。

1、虚拟资源管理的功能

虚拟化资源管理不是根据资源的地理位置、实现或者封装方式来表示的,它是为数据、计算能力、存储和网络等资源提供的一个逻辑视图,而非物理视图。每个管理模型提供一种虚拟资源管理服务,包括虚拟化存储服务、虚拟化服务器服务、虚拟化文件系统服务、虚拟化集群系统服务和虚拟化用户系统服务等系统级的资源服务。

虚拟化资源管理的消费者可以是一位最终用户、一个应用程序、一个访问资源或者与资源进行交互的服务。用户通过虚拟化资源管理可以简化资源使用的过程,无须关注物理资源实现和分布的细节。服务提供者通过资源虚拟化管理有效地统一管理分布式存在的资源,高效完成用户请求,简化服务过程并提高服务效率。

资源管理需要管理云计算网络虚拟化环境中的各种分布式异构虚拟资源,为用户提供简单的资源访问接口。并且应协调虚拟资源的共享和使用,尽可能高效地利用网络虚拟化环境中的各种虚拟资源实现虚拟资源之间的广泛共享。虚拟资源管理是控制虚拟资源如何向用户或应用等其他实体提供可用能力的一组操作,它侧重于控制虚拟网络资源的服务提供能力。即并不关心资源的具体功能,而是关心该功能的执行方式。

虚拟资源管理的核心功能是对虚拟资源进行维护和调度、发现和识别虚拟资源、查找和分配虚拟资源、提供和部署虚拟资源、监测虚拟资源和物理资源的运行情况,以及实现虚拟资源生命周期的管理和虚拟资源使用周期的管理等。

虚拟资源管理不仅需要管理虚拟资源的使用过程,还需要管理虚拟资源的整个生命周期。虚拟资源的整个生命周期包括虚拟资源注册、虚拟资源发现、虚拟资源调度、虚拟资源预留和虚拟资源回收等过程,如下图所示。

1. 虚拟资源注册

基础设施提供商负责铺设和组建基础物理网络,通过抽象和隔离的机制划分物理网络资源形成切片式的虚拟网络资源,是资源的拥有者。作为资源提供者,应该为管理系统注册本地虚拟资源,使本地虚拟资源成为系统可管理的对象。

虚拟资源的注册信息包括资源的属性信息,如节点的操作系统类型、虚拟机使用环境、所用网络协议栈等静态信息,以及节点的剩余CPU资源和连接链路的剩余带宽等动态信息,这些资源信息将保存在资源信息数据库中。

2. 虚拟资源发现

虚拟资源发现是根据虚拟网用户请求提交的所需资源描述信息,从虚拟资源信息集合中查找满足虚拟网用户请求的可用资源的过程。它是为虚拟资源调度处理提供候选资源集合的操作,用于及时发现适合用户应用的虚拟资源并自动发现和应用虚拟资源与物理资源之间的关联。资源信息存储及资源匹配操作的典型实现方式以一种分布式系统形式存在。 

3. 虚拟资源调度

虚拟资源调度是为虚拟网请求指派合适资源的过程,即实现多虚拟网用户共享物理资源的过程。它采用不同策略把所需资源分配到相应的用户任务,要解决的问题是依据虚拟网用户提出的资源需求约束条件从资源发现步骤提供的候选资源集合中找出最匹配的虚拟资源。

在网络虚拟化环境中存在各种不同类型的异构虚拟资源,也存在种类繁多的需求虚拟资源的虚拟网应用。作为提供虚拟资源的基础设施提供者和使用虚拟资源的虚拟网用户有各自使用资源的策略和接口,资源调度需要既能满足用户的需求,又能最大化底层物理网络资源的利用率。

4. 虚拟资源预留

当资源管理系统为虚拟网用户找到合适的资源后需要通知基础设施提供商执行相应的预留操作,即要求基础设施提供商在未来的某段时间内(即使用资源的虚拟网生存周期)把资源留给该虚拟网用户使用;同时要求基础设施提供商授权给该虚拟网用户一定的访问配置资源的权利。资源预留策略能够为用户的复杂应用需求在特定的时间内提供所需的资源,以保证用户对SLA和QoS的需求。

每一个预留申请会有8种不同的状态,状态间的转换过程如下图所示。

  • 预留申请提交后进入资源查询验证阶段,如果用户申请满足要求,则同意该预留请求;否则拒绝申请。
  • 在验证过程中如果用户发现预留申请不能满足需求,可以取消此次资源预留申请。但是如果云端管理员认为取消不合适,并且剩余资源能够满足用户需求时,则此次申请仍然会进入同意状态;否则被取消。
  • 如果提交的资源预留申请被同意后用户未将其取消,则进入生效状态且所需资源将被预留;否则进入取消状态。
  • 当提交的资源预留申请被同意或在生效状态,由于用户预留的时间将到,因此此次资源预留将转入即将过期状态。
  • 当用户发现其预留资源进入即将过期状态,可以选择重新预留资源或结束其所使用的资源。
  • 当到达资源预留结束的时间时进入过期状态,回收预留资源。

5. 虚拟资源回收

当虚拟网生存周期结束后需要释放所使用的资源,基础设施提供商重新获得对该资源的管理权利,等待为下一个虚拟网提供虚拟资源。虚拟网实时到达与离开,以及虚拟资源被占用或释放。虚拟资源管理需要针对这种资源的动态变化实施合理的调度策略,整合零散的资源,以优化底层物理网络资源的使用。

上述虚拟网资源管理的一些基本操作在虚拟网资源管理系统监视下完成,但是所有的虚拟化资源管理往往还包含资源抽象、资源监控、负载管理、数据管理和资源动态部署。

2、虚拟资源提供与自动部署

云数据中心虚拟资源管理的特点是虚拟的灵活提供、自动部署、集中管理、分布使用、集中监控、动态优化和节能低耗等,其中虚拟资源提供与自动部署是云计算资源管理的基础和重要内容。

1. 资源提供策略

典型的云计算资源提供策略包括基于租借理论和动态多级资源池的策略、基于经济学原理的资源提供策略、基于一般优化算法的资源提供策略,以及基于随机整数规划的最优资源提供策略。

  1. 基于租借理论和多级资源池的提供策略:这是一种采用租借理论和动态多级资源池相结合的资源调度策略,它将资源虚拟化成多个槽(slot)。根据资源的某个共同的特性将资源归类形成资源池并建立多级资源池,其中有一个资源池充当服务器提供与云外面的交互、维护资源池负载平衡及分配任务等服务;同时结合共享、私有、借还和重声明策略完成对资源的调度。它通过资源划分和资源预留策略来实现虚拟资源的分配,确保用户对虚拟资源使用的有效性,并利用一种借入/借出调度策略来实现虚拟资源利用率的最大化。
  2. 基于经济学的云计算资源提供策略:依据经济学的理念,云计算环境被视为一个云市场。即资源被视为商品,多个计算云和存储云抽象为资源提供者,云计算用户被视为资源的消费者。该策略为云消费者和供应商提供有关经济激励的反馈,提高资源利用率,有助于实现云计算环境下资源的高效管理和优化配置;同时最大限度地满足用户服务质量需求。但是此策略是从经济学角度出发并没有为节省客户花费提供相关的策略,也没有考虑资源和价格的动态性。
  3. 基于随机整数规划的最优资源提供策略:这是一种使用随机整数规划优化资源提供的方法。在云计算中云提供商可以有两种方式为用户提供资源,即预订方式和即付即用方式。前者可以有效减少用户的花费,但是因为用户需求和资源价格的不确定性,因此完全通过预订方式获取资源是很难达到用户的要求,使用启发式方法或K-邻近算法可以预测用户所需资源。该策略提供一个动态的资源提供方案来满足客户的需求,考虑了资源提供各个阶段的资源花费,能达到用户资源花费最小化的目的。

2. 虚拟资源自动化部署

虚拟资源自动化部署指通过自动安装和部署将虚拟资源从原始状态变为可用状态,这是数据中心的一项重要功能需求。云计算数据中心采用虚拟化技术后资源管理的一个重要功能就是构建虚拟的资源池,将虚拟机部署在不同的物理机上实现对大规模基础资源的有效和统一的管理。

在云计算中体现为将虚拟资源池中的资源进行划分、安装和部署成可以为用户提供各种服务和应用的过程,其中包括硬件(服务器)、软件(用户需要的软件和配置),以及网络和存储。系统资源部署有多个步骤,自动化部署通过调用脚本实现不同厂商设备管理工具的自动配置,以及应用软件的部署和配置。确保这些调用过程可以以默认的方式实现,免除了大量的人机交互,使得部署过程不再依赖人工操作。

整个部署过程基于工作流来实现,如下图所示。

其中工作流引擎和数据模型是在自动化部署管理工具中涉及的功能模块,通过将具体的软硬件,甚至逻辑概念定义在数据模型中,管理工具可以标识并在工作流中调度这些资源并实现分类管理。工作流引擎是调用和触发工作流实现部署自动化的核心机制,它自动将不同种类的脚本流程整合在一个集中且可重复使用的工作流数据库中,这些工作流可以自动完成原来需要手工完成的服务器、操作系统、中间件、应用程序、存储器和网络设备的配置任务。

虚拟机部署是一个复杂的问题,一方面在云环境中资源和应用不仅变化范围大,而且动态性高,用户所需服务主要采用按需部署方式;另一方面不同云数据中心和不同层次云计算环境中服务的部署模式不同,部署过程所支持的软件系统形式多样且系统结构各不相同,部署策略具有多样性。

资源部署一般从计算资源部署入手,资源部署者在能够保证虚拟化解决方案所需要的计算资源的前提下考虑为存储和网络资源池分配相适应的资源。如果单台物理服务器的计算资源无法满足解决方案服务的需求,则需要用到多台服务器资源。这时虚拟机的负载均衡就成为很重要的因素,即可以保证部署阶段分配的资源能够得到充分利用,当然还需要考虑存储资源的I/O负载均衡和网络资源的带宽均衡等。 

3. 部署虚拟器件

部署虚拟器件是将虚拟器件支持的解决方案交付给用户过程中最重要的一个环节,即虚拟机实例化的阶段。而部署阶段所要做的工作就是使虚拟器件适应新的虚拟化环境,并将其承载的解决方案交付给用户。

部署虚拟器件的流程如下图所示:

1)选择虚拟器件并定制化

在部署虚拟器件之前用户首先要选择需要部署的虚拟器件并输入配置参数,用户可以配置的参数信息包括虚拟机的虚拟硬件信息(CPU 和内存等),以及少量的软件信息。

软件信息指与虚拟机内部软件栈(操作系统、中间件和应用程序)相关的配置,其中与网络和账户相关的参数必不可少。网络参数是连接各个虚拟器件从而构成整体解决方案的重要信息,包括IP地址、子网掩码、DNS服务器、主机名、域名和端口等。它们既可以由用户手动分配,也可以由部署工具自动分配;账户参数主要包括虚拟机的用户名和密码、某个软件的用户名和密码或者某个数据源的用户名和密码等。出于安全方面的考虑,这些参数一般情况下需要用户指定,而不采用默认值。

2)保存定制化参数文件

一般来说定制化信息被保存为两个文件,一个文件保存虚拟机的硬件配置信息,用于被虚拟化平台调用来启动虚拟机;另一个文件保存虚拟器件内的软件定制的信息。虚拟机配置文件与虚拟机的平台相关,因此需要遵循厂商指定的文件格式规范。对于虚拟器件的软件定制化信息,由于在虚拟化技术产生的初期各个厂商独自开发自己的部署工具,因此使得保存定制化参数的方式各不相同。例如,有些厂商使用文本配置文件,有些厂商使用XML文件。目前各大厂商都会按照OVF 环境文件的格式来保存定制化信息。

OVF环境文件定义虚拟机中的软件和部署平台的交互方式,允许这些软件获取部署平台相关的信息。例如,用户指定的属性值,而这些属性本身在OVF文件中定义。OVF 环境规范分为两个部分。即协议和传输部分,协议部分定义了能够被虚拟机上软件获取的 XML 文档的格式和语义;传输部分定义了信息如何在虚拟机软件和部署平台上通信。综合来说,虚拟器件的模板描述信息,以及能够被用户配置的属性项信息和属性的默认值等信息在 OVF文件中描述。而客户在第 1 步填写的定制化信息在 OVF 环境文件中描述,两个文件通过将属性的名称作为关键字匹配。

3)选择部署的目标物理机服务器

目标机至少需要满足多个条件,如网络畅通、有足够的磁盘空间放置虚拟镜像文件、物理资源满足虚拟机的硬件资源需求(CPU 和内存数量足够),以及虚拟化平台与虚拟器件的格式兼容(如Xen平台支持Xen虚拟器件和VMware平台支持VMware虚拟器),目前的部署工具都能够自动检查上述条件。

具体来说,部署工具会通过网络连接目标服务器。连接成功后通过执行系统命令检查服务器中的CPU、内存、磁盘空间和虚拟化平台,通过后返回给用户可以部署的信息;另外,有些部署工具可以提供更高级和更智能的部署能力,让用户事先输入一组服务器的列表组成一个服务器池。

当用户选择要部署一个虚拟器件时,部署系统根据上述条件自动从服务器池中选择出满足条件的一台服务器作为部署的目标机。部署工具还可以考虑用户的定制化需求将虚拟器件部署到网络较好的服务器,或者部署到硬件性能比较好的服务器,或者部署到没有运行其他虚拟机的服务器,或者考虑一个解决方案中的多个虚拟器件的关系,将它们部署到同一台服务器或者多台不同的服务器中。

4)复制虚拟器件的相关文件 

在用户完成参数定制化并选择目标物理机以后部署工具可以从虚拟器件库中提取出用户选择的虚拟器件的OVF包,再将它们与第2步生成的OVF 环境文件和虚拟机配置文件一起复制到目标物理机。

镜像流传输类似在线视频播放的流媒体,即通过流媒体技术用户可以边下载影音文件,边播放已下载的部分。这样的好处是用户不需要等待整个文件下载后播放,节省了时间,优化了用户体验。典型的虚拟器件包括操作系统、中间件、应用软件,以及用户需要使用的剩余空间。用户在启动虚拟器件时主要是启动其操作系统、中间件和应用软件,这些部分仅占整个虚拟器件文件中的一小部分,通过镜像流技术可以无须下载整个虚拟器件而即时启动虚拟机。

简单来说,在虚拟器件启动时虚拟器件通过流传输方式从镜像存储服务器传输到虚拟化平台上,虚拟器件在接收其中一部分后即可开始启动过程。虚拟器件余下的部分可以按需从镜像存储服务器中获取,从而减少了虚拟器件的部署时间,使得部署的总时间只需要几十秒钟到几分钟,通过省去虚拟器件文件片组装打包的过程还可进一步缩短整个部署的时间。

5)在目标机上启动部署后的虚拟器件

部署工具会通过远程连接的方式在目标机中执行一组命令来完成虚拟器件的启动,启动过程中的一个关键是将第2步生成的软件配置参数文件传送到虚拟器件中。

目前采用虚拟磁盘的方法传送,即将 OVF 环境文件打包为一个 ISO 镜像文件并在虚拟器件的配置文件中添加一个虚拟磁盘的配置项,将其指向打包的ISO镜像文件。这样当虚拟器件启动后在虚拟器件内部就可以看到一种磁盘设备,其中存放了OVF环境文件。总体来说,这一步需要执行的操作依次为将 OVF 环境文件打包为 ISO 文件、修改虚拟器件配置文件创建虚拟磁盘项、在虚拟机管理平台上注册虚拟器件信息,以及启动虚拟器件。

6)激活虚拟器件

在虚拟器件内部读取OVF环境文件中的信息,根据这些信息对虚拟器件内的软件进行定制,这个过程被称为“虚拟器件的激活”(Activation)。根据激活的自动化程度及功能可以分为完全手动的激活、基于脚本的手动激活、单个虚拟器件的自动激活和组成解决方案的多个虚拟器件的协同激活。

完全手动的激活适用于所有的虚拟器件,用户在虚拟器件内部读取 OVF 环境文件的内容判断其中的配置项属于哪个软件,并根据自己的知识对该软件进行配置。显然这种场景对用户的要求较高,要求用户了解OVF环境文件的格式,能够读懂其中的内容并具备各种操作系统、中间件和应用软件的配置知识。即使用户具备这些知识,但是由于配置过程非常复杂,也可能因为误操作或者系统异常终止而导致激活失败。

脚本技术可以简化激活的过程,脚本由虚拟器件的创建者和发布者编制。在激活过程中用户只需要调用配置脚本,并将OVF环境文件中的配置信息作为脚本的输入参数就可以完成激活。用户不需要了解激活脚本的工作流程,也不需要具备各种软件产品的配置知识。不过这种方式对用户仍有一定的要求,一是用户需要读懂OVF环境文件的内容;二是用户需要了解激活脚本暴露的接口格式,并将 OVF 环境文件对应的内容传给脚本;三是用户需要了解并协调多个脚本的执行过程,因为在激活中多个软件的激活可能需要遵循一定的顺序。

一个典型的自动化激活单个虚拟器件工具的工作原理为在虚拟器件启动过程中激活工具从虚拟磁盘中获取OVF环境文件。根据激活的先后顺序读取OVF环境文件中的参数、执行激活脚本并配置虚拟器件中的软件,在不需要用户干预的情况下得到定制化且可用的虚拟器件。

这样的部署方式改进了传统的软件安装和部署方式,免去了那些费时并且容易出错的部署步骤,如编译、兼容性和优化配置。这种方式在虚拟资源池智能管理的支持下能够做到完全自动化,非常适合在虚拟化环境中软件和服务的快速部署。目前很多公司开发的虚拟器件都内置了简单的激活工具,如IBM 激活引擎作为一个自动化激活工具在IBM公司发布的虚拟器件中得到了广泛使用。

多个虚拟器件会组合成一个解决方案,而在激活过程中这些虚拟器件可能有配置参数的依赖和激活顺序关系。通过在虚拟器件内部植入具备网络通信功能的激活工具可以统筹整个解决方案的激活过程,协作完成解决方案的激活,当然这需要借助现有的OVF文件中定义的参数依赖关系及激活顺序。

3、虚拟资源调度模型、算法及其过程

资源调度是根据一定的资源使用规则在不同资源使用者之间进行资源调整的过程。不同资源使用者对应不同的计算任务,每个计算任务在操作系统中对应一个或多个进程。资源调度的目的是将用户任务分配到合适的资源上,使得在满足用户需求的前提下任务完成时间尽量小和资源利用率尽量高。

资源调度最终要实现时间跨度、服务质量、负载均衡和经济原则最优的目标。由于不同厂商架构的云基础设施不同,资源的管理和调度没有统一的国际标准,因此基于各种调度基础设施和调度模型的调度算法很多。

1. 资源调度模型

将任务调度模型分为应用模型、计算平台模型和性能目标模型,应用模型涉及如何将应用划分为任务和如何考虑任务的属性特征等,典型的任务模型有依赖任务模型DAG、独立任务模型IND 及可分任务模型DLM。

计算平台模型是对系统中资源的抽象,其中最重要的资源是处理机资源和网络资源;性能指标模型可以分为基于系统的目标和基于用户的目标两类,基于系统的性能模型关注整个系统的吞吐量、资源利用率和效率和公平性,基于用户的性能指标包括应用的最短完成时间、周转时间、平均延迟和带权完成时间等。

资源管理调度模型按照调度实体之间的关系可以分为统一资源代理调度模型和多资源代理调度模型,按照资源的组织调度形式可分为集中调度模型、层次调度模型和非集中式调度模型。在集中式的环境中所有的资源由一个中央调度程序调度,所有可用系统的有关信息被聚集在中心机中。在层次式的调度模型中有一个集中式的调度程序,作业被提交到其中。而每一个资源使用一个独立的调度程序用于本地调度,此结构的主要优点是采用不同的策略用于本地和全局的作业调度;在非集中式系统中分布式的调度程序交互作用并且将作业提交到远程系统中,单个组件的失效不会影响整个云计算系统,容错和可靠性更高。但是由于一个并行程序的所有部分可能被分配在不同域的资源上,因此不同的调度程序必须同步作业并且保证同时运行,这使得调度系统的优化相当困难。

资源管理调度模型按照体系结构不同可分为层次模型、抽象所有者模型及市场经济模型,层次模型将管理系统分为若干功能层,有利于对具有站点自治性和底层异构性资源进行管理。能在一定程度上实现资源的联合分配,具有较强的适用性。

抽象所有者模型使用作为资源所有者的资源经纪人与用户交互和协商,在资源共享过程中遵循类似快餐店的订购与交货模式。计算经济模型综合了层次模型和抽象所有者模型的核心特征,既可以利用层次模型中相对成熟的技术,又明确强调了以经济为基础的资源管理和调度。基于供求原则的投资回报机制促进了计算服务质量的提高和资源的升级,经济是调节供求关系的最重要的机制。它为访问网格资源的用户提供公平的价格机制,并允许对一切资源进行交易。建立以用户为中心,而不是系统为中心的调度政策,从而提供了资源分配和管理的有效机制。

2. 资源调度算法

针对不同的资源调度模型,许多学者都提出了各自不同的算法,基于算法的目标函数较典型的有时间最优算法、代价最优算法和时间代价最优算法。时间最优算法的出发点是尽量快地在预算范围内完成任务,针对每个资源考虑以往分配的任务和完成率估算一个任务的完成时间。并且依据完成时间对资源按升序排序,然后从队列中依次取出资源。

如果该任务的成本小于或等于该任务的预算,则分配该任务给这个资源。代价最优算法尽量以最小的花费在完成期限内完成任务,基本思想是首先按价格升序排序资源,为队列中的每个资源在不超过完成期限的范围内分配尽可能多的任务;时间代价最优算法结合了以上两种算法的优点,在不增加额外处理成本的情况下最优化处理时间。

考虑算法的不同调度策略和目标函数,按照不同标准资源调度算法有以下多种分类。

  1. 传统的调度算法:如轮循调度、最小连接调度、目标地址散列调度和源地址散列调度等,算法简单但性能不佳。
  2. 启发式映射调度算法:由于资源调度因素复杂,所以通常采用启发式算法。根据调度算法的运行时间,启发式映射调度算法可以分为静态映射和动态映射。动态调度算法分为在线模式和批模式,典型的在线模式启发式算法有最小完成时间(Minimum Completion Time,MCT)、最小执行时间(Minimum Execution Time,MET)、切换算法(Switching Algorithm,SA)、百分之k最好启发式(K-Percent Best Heuristic,KPB)和机会均载平衡(Opportunistic Load Balancing,OLB)等;典型的批模式启发算法有 min-min 算法、max-min 算法、快速贪心算法、贪吃算法、忍耐算法和老化算法等。
  3. 基于经济学模型的调度算法:以经济学中的商品市场模型、标价模型、议价模型、招标/合同网模型和拍卖模型等为基础分别采用代价最优、时间最优或时间代价等目标函数实现最优资源调度。
  4. 基于智能代理的调度算法:将每个资源节点封装成一个智能代理,资源管理系统成为一种多层次智能代理系统的集合,调度问题被简化成如何在各智能代理之间匹配计算任务并随时根据智能代理的变化情况进行调整,以及在智能代理内如何进行子任务的继续分配的问题。
  5. 基于任务的性质及任务之间的相关性算法:该调度算法可以分为独立任务调度算法、可分任务调度算法、依赖任务调度算法,以及多维QoS要求及负载均衡的任务调度算法。
  6. 基于博弈论的资源调度算法:博弈论是经济学中的重要理论方法,由于资源分配与社会经济活动的相似性,所以博弈论也广泛地应用到资源分配研究中。
  7. 其他调度算法:除以上介绍的资源调度算法之外,还有一些改进和综合的调度算法,如基于信任模型的可信资源调度算法、任务依赖调度算法、多维 QoS 要求调度算法、负载均衡的调度算法和基于能耗的资源调度算法等。

云资源调度算法可以借鉴网格计算和分布式计算中的研究成果,并关注云计算资源调度的特点。云数据中心资源调度的特点是资源虚拟化和面向用户的调度性能优化,虚拟机的出现使得所有的计算任务都被封装在一台虚拟机内部。

由于虚拟机具有隔离性,因此可以采用虚拟机的动态迁移技术来完成计算任务的迁移实现资源优化。在传统的分布式计算环境中资源均为无偿免费的,系统整体性能最优往往是调度的最优化目标;在云计算环境中云服务提供商提供资源和服务,用户按需付费。即只需要为使用的资源或服务付费,因此云环境中的调度问题必须考虑任务执行的成本约束。

此外,与成本相关的如任务完成时间、赔偿率及用户付费等因素也是云计算调度问题中需要考虑的重要约束条件。在传统分布式环境中调度的优化目标均以系统为中心主要面向系统性能,如系统吞吐量和 CPU 利用率等,而对用户的QoS需求考虑较少。在云计算环境中不仅注重资源利用率及系统性能的提高,而且重视保证用户的QoS需求,以实现资源供给与资源消费的双赢局面。

3. 资源调度的抽象关系和一般步骤

对于云计算来说,资源调度是一个很重要的组成部分。不同云的资源不同,相应的调度策略也不相同。对于这些不同的调度如何设计一个相对比较通用的框架,使不同的云可以根据自身的需求定义自己的策略和行为是云计算资源调度的难点。

通常的资源管理系统一般由资源消费者接口、资源提供者接口、资源管理器支持接口和对等接口组成,如下图所示。

在网格计算和云计算中资源调度系统是核心,其基本功能是接收资源请求,然后从资源池或云中分配满足要求的资源分配给请求者。资源调度一般包括如下4个步骤。

  1. 资源请求:资源消费者将申请的资源需求信息提交给资源管理系统,资源需求信息由多个构件元素组成,在基于虚拟化的云计算产品中每一个构件就是一台虚拟机或物理机的资源描述信息集合。
  2. 资源探测:按照某种需求查找资源,通过探测获得所有符合条件的资源列表,资源探测主要涉及资源信息存储格式、资源发布(传递)方法和资源发现方法3个方面。
  3. 资源选择:从候选资源列表中根据资源选择策略选中最优资源,并将资源分配给请求者。资源选择包括两个方面,一是必须定义选择优化的目标(效用函数),这是候选资源评定的标准;二是选择一种合适的算法,它能根据效用函数从候选资源中选择出最优资源。 
  4. 资源监控:资源管理的最后阶段就是将选择出来的最优资源交给资源请求者,并对资源进行监控。在资源出现异常时能够重新分配给请求者资源,保证请求者对资源的可用性;在资源使用后要执行清理工作来回收资源,如删除虚拟机文件。

4、虚拟化资源管理目录的系统架构和引擎设计

1. 资源目录服务的总体设计思想

虚拟化资源管理目录的系统架构设计遵循以下思路。

  1. 严格的层次关系:系统实现严格分层,在各层内可以继续分层。
  2. 自顶向下且逐步求精:从系统的最顶层开始设计与实现,直到最底层。
  3. 虚拟实现:在实现上层时假定其依赖的各个下层已经实现,但为了功能保持系统可以运行,对于尚未实现的下层功能只给出“空”实现并令其直接返回既定的测试数据或者直接返回操作状态标志。

2. 系统总体架构设计

系统体系结构指系统的内部结构,即系统的算法与基本数据结构之上的实现结构。体系结构对用户透明,并决定系统的性能。

下图所示为系统总体架构设计:

系统架构设计图分为6个部分,从底层到高层分为数据层、持久层、中间层、逻辑层、表现层和用户层。

1)数据层

系统的数据存储层,包括本地数据和网络数据,本地数据包括系统日志、资源目录、Server 型数据库和文件库等;网络数据包括所有的结构化、半结构化和非结构化信息资源。 

  • Server 型数据库存储的是结构化数据和系统数据表,结构化数据包括各机构采集的格式数据,如地区、行业、指标和时间的数据;系统数据表包括用户数据表和用户个性化记录表。
  • 由于在资源信息管理系统中内容管理占大多数,文件库的负载压力相对比较大,所以采用多个文件库来存储内容。即实现分库存储,降低各个文件库的负载压力;此外还有资源目录库和日志文件库,资源目录使用可扩展标记语言(eXtensible Markup Language,XML)文件存储,以实现资源目录的平台无关性,可以即插即用。

2)持久层

包括资源目录持久管理器、Hibernate数据访问对象(Data Access Objects,DAO)和文件读写引擎等。

  • 资源目录持久管理器:持久化和读取资源目录,使用 XML 作为资源目录的存储格式。基于 XML 的特性最大化地支持了资源目录的热拔插,使得异构资源目录的同步成为可能。并且使得异构平台的资源目录交换的成本最低化,实现对资源的零修改即可接入另一个异构平台。
  • Hibernate DAO:用于对关系型数据库的持久化,支持存取结构化数据。并具有良好的灵活性、可扩展性、平台无关性和可配置等特性,符合插件式的特性。在信息资源中包括关系数据库资源,这些资源的持久化和访问依赖于这一个DAO;同时在系统中提供了用户管理、界面板块个性化定制、流水审核和用户功能等功能。这些功能的数据都存储在关系数据库中,对这些数据的持久化和访问都依赖于这个DAO,而操作这个DAO的引擎可能有数据获取引擎、数据处理引擎、数据组合引擎、数据采集引擎和数据中心等。
  • 文件读写引擎:用于对内容类资源的持久化,属于呼叫型引擎;同时负责对文件库的负载进行动态评估,实现各个文件库的负载均衡。

3)中间层

包括资源目录引擎、Luence(一个开源搜索引擎构架,最初为Java版本,.net、C++和Pascal等语言都有相应的版本)搜索引擎、病毒检测和数据中心等。

  • 资源目录引擎:属于服务器型引擎,提供了资源目录的插入、更新、删除、读取、导入和导出等服务。这是本系统一个关键的模块,能提供对资源的索引,并提供安全、版本控制、流水和加锁等服务。资源目录引擎的核心是资源目录树,并且提供操作目录树的一系列功能接口,为信息资源目录平台提供目录服务。
  • Luence 搜索引擎:为资源全文检索提供服务,它与资源目录引擎相配合。资源目录是Luence搜索引擎的数据源,该引擎根据资源目录的变动来更新索引库。为了实现全文检索,需要对资源内容进行分词,得到关键字后其构建索引。
  • 为了防止资源库受到恶意病毒的入侵,需要对存储的资源内容进行病毒检测。病毒检测层作为一个中间件出现在中间层提供病毒检测服务,属于呼叫型服务器。
  • 数据中心:在Server型数据库中各个机构或者集中式服务器中的数据不同步,很多时候需要同步各个机构的Server型数据库,以便对数据执行综合分析等操作;同时,由于各个机构使用的服务器平台、Web 服务器、Server 数据库和数据表等不保证同构,还需要解决同步异构数据库表的问题,所以数据中心担负了异构数据库的同步和数据交换等工作。

4)逻辑层

包括用户管理、检索、数据获取、数据处理、数据组合、数据采集、数据存储控制引擎和Web Service引擎等模块,称为“信息资源目录平台引擎”。

  • 用户管理:包括对用户的权限管理和系统访问控制的管理,实现单点登录、多系统共享登录,以及页面功能权限控制到资源节点级的权限控制。
  • 检索:包括全文检索、专业检索和二次检索等,全文检索即通用的一般搜索;专业检索实现了对检索条件的自定义。
  • 数据获取:包括读取资源目录、资源内容和日志文件等,封装资源数据使其对应用服务透明。
  • 数据处理:主要的抽象操作有转化、清洗、筛选、更新、同步、替换、存储和数据的分类(按照中图法、统计年鉴法和自定义分类法等)等操作。
  • 数据组合:按照策略对资源池中的数据进行重组、归并及多维处理,在资源池中形成新的数据资源。
  • 数据采集:按照策略将外部数据收集到本系统中,包括 Web 和本地信息资源采集,Web 采集通过定义一定的策略自动下载 Web 页面到本系统中。
  • 数据存取控制引擎:为各功能模块的使用门户接收操作指令,调度各相关模块执行相应的操作;同时负责整个缓冲池的维护和各功能模块的生命周期管理等。资源内容可能在本地或网络中,有可能是结构化、半结构化或非结构数据等。为此,该引擎向外屏蔽了信息资源内容的路径差异,提供一致的读写接口;向内根据信息资源内容路径分派和拉取资源内容。
  • Web Service引擎:信息资源目录平台引擎开放的面向Web Service的接口,为远程访问提供支持,信息资源目录平台集成了资源存取控制、资源访问、资源组合、资源处理、资源采集和资源清洗等应用。为了适应用户对网络服务日益增长并趋向于多样化的需求,需要为平台引擎提供Web Service支持。即提供一个跨平台且独立于程序设计语言的方法来支持系统间的通信,因此需要为平台引擎提供Web Service访问接口,即Web Service引擎。

5)表现层

包括窗口式Web客户端和谷歌全球网工具包(Google Web Toolkit,GWT)远端处理呼叫(Remote Procedure Call,RPC)引擎。

  • 窗口式 Web 客户端提供了类Windows资源管理器的交互界面,用户体验更佳。
  • GWT RPC引擎提供了胖客户端与服务器通信的AJAX远程调用的丰富的接口,本系统的Web客户端的所有数据通信都将通过这些接口来实现上下行数据的传递。

3. 引擎设计

信息资源目录平台包括针对信息资源管理的多种应用,如获取、组合、处理、采集、清洗和筛选等应用集合。为了整合这些应用为远程用户提供服务,就需要一个松散耦合和平台无关的框架来管理这些服务,基于面向服务的架构(Service-Oriented Architecture,SOA)系统的平台引擎能为远程用户提供命令和数据服务。

1)基于 Web Service 的引擎架构

基于 Web Services 的应用集成是目前最先进的一种企业应用集成方法,它可以通过互联网分布式服务器或者中心服务器提供访问方法,企业和用户可以通过标准的接口和一些公共服务来发现、描述和使用这些共享的系列服务。

Web Service是SOA的一种实现技术,这里采用Web Service来实现互联网环境下的企业应用的集成和松散耦合。Web Services标准依照统一描述、发现和集成(Universal Description Discovery and Integration,UDDI)标准,通过名字和目录来定位服务并描述使用WSDL语言规范,而这些消息对象采用简单对象访问协议SOAP。

基于 Web Services 的架构对于系统的原有应用来说,在不需要对原有系统进行修改和不影响原有应用的前提下只需在原有系统的基础上加一个 SOAP 接口即可将现有且用不同技术实现的系统互联提供相互的数据交换和访问操作,进而各种不同的系统可以相互协作,形成一个更为强大的系统。

下图所示为信息资源虚拟化管理引擎结构:

2)协议规范

在基于 Web Services 的引擎框架中引擎间需要支持各种访问项,如登录、注销、访问目录、列出当前工作目录下的子目录和资源、创建目录、删除目录、写入资源、查询资源、更新资源、删除资源,以及导入、导出和帮助等。

在设计时需要设计容易读懂的命令名、选项和有关参数等,这里不再详述。 

5、典型虚拟资源管理器框架

根据虚拟资源管理的特点和需求,使得虚拟资源的描述与传统的物理资源的描述相比更为困难和复杂。而本体(Ontology)是关于存在、本质和规律的学说,其目的是获取领域内的知识,在领域内达到知识或者概念的共同理解。并且确定领域内词汇的统一,从不同层次的形式化和规范化地给出词汇之间关系的明确定义,因此下面采用基于本体的资源虚拟化方法分析案例。

要实现虚拟资源的合理利用,首先要能够管理资源。为有效管理虚拟资源,需要建立相应的虚拟资源管理器,如下图所示为建立的虚拟资源管理器框架。

虚拟资源管理器主要包括3个层次,即虚拟资源层、虚拟资源池层和虚拟资源管理层。

下面分别加以说明:

1. 虚拟资源层

在现实资源的基础上利用前述方法实现资源的虚拟化封装,通过本体解析引擎能够对虚拟资源的信息和状态进行更新、感知和查询,并且实时地监控和动态控制资源。

2. 虚拟资源池

包括虚拟资源抽象模型、虚拟资源组合模型、虚拟资源协商模型,以及相应的模型解析引擎、知识库、资源映射及资源准则等。建立虚拟资源池需要通过建立物理到虚拟资源之间的映射关系定义,以构建虚拟资源映射模型集合。

物理资源与虚拟资源之间的映射关系可以分为3种基本类型,一是一对一映射,属于最基本的资源映射关系,如单一功能的物理器件只能映射为一种虚拟器件;二是一对多映射,适用于具有多种功能的物理资源。其中的单项功能可以映射为一种独立的虚拟资源,如具有多个功能模块的软件工具可以映射为多个虚拟软件工具。三是多对一映射,主要针对多种物理资源组合与协同的需求将多个物理资源元素按照一定逻辑关系和约束映射为一种虚拟资源。

例如,对于复杂产品的仿真计算任务,常常需要高性能的计算系统资源,可以将存储资源、运算器资源和仿真软件等组合并映射为一台虚拟机;对于具有逻辑关系的物理资源组合,可将多个产品软件工具的功能接口组合成一个虚拟设计软件,并且需要对组合的流程逻辑、约束条件和协作规则等同时进行定义。

3. 虚拟资源管理层

主要为虚拟资源的使用者提供相应的功能,包括虚拟资源的封装、注册/发布管理、模型管理、部署与绑定、QoS 模型及评价管理、智能搜索与匹配管理、调度与监控管理,以及安全管理和在线实时动态优化管理等。封装/注册/发布管理用于虚拟资源的封装,以及在虚拟资源池目录中的注册与发布管理。

模型管理用于对物理与虚拟资源之间的映射模型,以及虚拟资源抽象描述模板进行管理,在云服务需要调用具体资源之前虚拟资源模板需要根据映射模型进行实例化,并完成运行环境的部署与绑定。

QoS模型及评价管理用于对虚拟资源和物理资源服务质量的模型管理,以及各指标进行评估。智能搜索与匹配管理用于按照云服务的资源需求从虚拟资源池中查找并获取合适的虚拟资源模板或虚拟资源实例。调度与监控管理用于资源的状态采集、事件通知、任务调度,以及资源监视与控制等管理。安全管理用于对虚拟资源池的用户认证、访问控制和安全审计等管理。在线实时动态优化管理用于多目标多约束优化调度、资源组合的动态替换、负载平衡和容错迁移等的管理。

在虚拟资源管理器的基础上即可实现基于本体描述的虚拟资源查找及调度流程,如下图所示。 

流程主要分为虚拟资源发布流程和虚拟资源查找与调度流程两个部分,详细描述如下。

  1. 资源提供者按照顶层本体映射规则将资源描述成资源本体并利用资源注册与发布功能将资源本体提交到虚拟资源管理中。
  2. 资源本体随后被系统中的本体解析引擎依据顶层本体映射规则解析,此处使用Web服务的本体语言(Web Ontology Language for Services,OWL-S)解析引擎,解析完成后进入虚拟资源本体库中。
  3. 为了保证能够准确地检索到虚拟资源,解析完成后的本体还会在虚拟资源目录中增加相应的虚拟资源信息,主要包括虚拟资源ID、名称和属性等基本信息。至此形成虚拟资源本体库及虚拟资源目录,完成了虚拟资源的发布流程和相应的审核过程。
  4. 虚拟资源使用者按照系统所能解析的格式描述资源的属性、功能及非功能等使用需求信息将其提交到虚拟资源管理器中。
  5. 接收到虚拟资源需求后虚拟资源管理器会调用智能查找与匹配功能查找资源,该功能是虚拟资源管理器的核心功能之一。通过基于本体的相似性将虚拟资源目录中资源的描述信息与需求进行匹配,包括基本属性、分类、功能、输入输出前提条件及效果(Input Output Precondition Effect,IOPE)匹配等,相应的匹配算法包括文本匹配、模糊函数匹配、层次分析匹配和结构树匹配算法等。经过相似性比较得到一个通常只能满足功能性需求的候选虚拟资源列表。然而非功能性需求,如QoS需求等还没有考虑,因此智能查找与匹配功能进一步将前面的候选虚拟资源列表进行非功能性匹配。通过将虚拟资源本体库中的虚拟资源,包括QoS和SLA等非功能性描述与需求进行比较,最终得到一个同时满足用户功能性和非功能性需求的候选虚拟资源列表返回给用户。
  6. 通过系统自动实现智能查找与匹配得到的候选虚拟资源列表可能不止一个,因此用户除了考虑默认的虚拟资源之外,还可以依据自身需求人工选择。确定选取的资源后从虚拟资源本体库中得到相应的资源绑定信息,将需求或者任务绑定到具体的物理资源中以实现需求或者完成任务。
  7. 资源绑定完成后系统将任务或需求信息传递给现实当中的物理资源,由现实中的资源来完成任务。
  8. 现实资源接收到资源的需求或任务后即可用约定的服务级别完成任务,在使用过程中必须接受相应的资源监控。资源使用过程及使用后资源的状态和能力等信息可能会发生变化,将变化后的信息重新描述为本体信息,并更新虚拟资源目录和虚拟资源本体信息。基于本体描述的虚拟资源查找及调度应用案例验证了所提出的资源虚拟化方法能够满足需求。

上面的工作仅考虑了单个资源虚拟化描述,实际上在云制造环境中虚拟资源之间也存在相应的组合关系,因此如何利用本节提出的本体模型来描述组合之后的虚拟资源,以及如何利用上述资源模型来实现虚拟资源依据任务特性自动聚集使得虚拟资源的查找和匹配更高效等问题都是下一步要解决的问题。

在虚拟资源管理方面,今后有待进一步研究的主要内容如下。

  1. 多阶段的动态资源分配:由于用户使用云资源可以采用资源预约和即用即付等多种方式,因此数据中心资源提供的实施将分为不同阶段。并且由于资源的需求具有不确定性,因此需要考虑在用户需求的动态不确定性情况下如何提高云数据中心的收益和资源利用率。
  2. QoS 约束问题:云应用呈现的多样性使得云用户对 QoS 的需求不同,应为用户提供不同SLA的云应用服务并建立SLA 度量、监测和惩罚机制,确保满足用户的QoS需求。
  3. 多数据中心的资源分配问题:通过联合多个不同厂商和企业的数据中心建立更大范围的动态伸缩资源池,以扩展资源的提供能力。

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/128786120