世纪互联CloudEx的云计算研发主要集中在系统级虚拟化之上,它所抽象的环境是整个计算机,抽象出来的环境是虚拟机。它把物理主机的内存、I/O设备、存储和CPU管理起来成为一个虚拟的资源池,可按照用户需求在一个物理主机上进行虚拟机的划分。每个虚拟机中都可以运行一个独立的操作系统,操作系统的启动、停止、运行不影响其他的虚拟机。
对于IDC公司来说,采用虚拟化技术能够降低能耗、充分利用现有资源、降低成本、提高管理效率。随着虚拟化技术的成熟和用户需求的提升,全球知名的IDC公司已经开始了虚拟化技术的应用,在这一背景下,世纪互联开始了CloudEx的开发,它的基本功能如下:
•虚拟机基本操作:创建,删除,启动,停止,远程管理
•虚拟机资源调整:CPU、内存、存储
•存储虚拟化:磁盘管理,SAN和集群文件系统与虚拟机的结合,快照
•网络虚拟化:虚拟局域网,虚拟机环境下网络流量限制,虚拟机环境下独享带宽
•监控、统计和报警:跟踪物理机和虚拟机资源使用情况,根据策略的恢复和迁移。
CloudEx的架构:
为了实现基础资源的整合、虚拟化,公用化,达到降低客户基础设施投资成本、提高资源利用率、产生规模化效益的目的,根据公司的实际业务,考虑第三方合作的扩展性,我们进行如下架构设计。
该系统运行于一个用千兆位以太网连接起来的一个普通服务器集群上。某些或所有服务器与存储器直接相连,这些存储器可以是廉价的IDE/ATA/SATA硬盘,并用来组成一个分布式存储池。该系统核心包括三部分:分布式内核子系统、接口子系统,控制子系统。
分布式内核子系统是虚拟化层,通过Hypervisor等虚拟化技术对底层的基础设施进行虚拟化管理和调度,底层的通用硬件被整合成虚拟资源池,资源池是一个可供任意使用的计算、存储、网络资源集合。
存取接口子系统为API层,为上层提供虚拟资源和应用实例的统一调用接口。Web应用和存储、计算、网络等资源均可作为虚拟化对象被引用、初始化、复制、迁移等;还可任意组合各虚拟化对象,按服务目录形式供上层调用。
控制子系统为用户界面层,系统管理员通过提供的Web界面对平台进行监控、维护、控制等统一管理。控制子系统还为客户提供了自助服务台,方便客户管理、指配自己已申请的资源和应用。
CloudEx虚拟化原理结构描述如下:
1.采用开源软件Xen作为hypervisor。
2.当CloudEx启动时,它启动一个特权domain服务分区(也称为domain 0),它通过与hypervisor交互提供与硬件交互的接口。domain 0选用了Novell的SLES 10 SP2的内核,设备驱动程序,提供诸如远程管理功能和加速的I / O的功能。在domain 0中我们集成了用户登录、与系统交互的功能。domain 0使用RAM磁盘运行,不需要本地存储。
3.CloudEx是通过私有的管理网络进行虚拟化管理的软件。它与Domain0进行信息交互,发送命令给Domain0,接受Domin0的命令执行结果。它的大多数虚拟化环境服务是支持远程访问的。比如分配、开机、关机和性能信息。
注:虚拟软件的核心是一个"虚拟机监视器"(VMM,virtual machine monitor),也被称作"hypervisor"。一个hypervisor是一个非常底层的虚拟化程序,可以让多个操作系统共享一个单一的硬件处理器–无论是不同类型的操作系统,还是同一操作系统的多个实例(instance)。一个hypervisor是专为某一种架构的处理器来设计的,如专为X86 CPU设计。表面上看来,每个操作系统"独占"处理器、内存及 其他资源。但实际上是由hypervisor控制着真实的处理器等资源,并根据需求轮流向操作系统分配资源。由于一个操作系统经常是用于运行某个或某组特定的应用,而使用hypervisor可以在单一服务器上运行多个操作系统(及相关应用),因此可以全面地减少硬件成本。
在物理机启动后,hypervisor会被加载,它管理所有的硬件资源,包括处理器、内存,硬盘,IO设备。hypervisor程序在虚拟服务器之间共享资源,以确保它们都具有分离的处理时间和指定的资源,这样,它让每个虚拟机操作系统就好像是在一个单独的物理主机上运行。
CloudEx软件层次结构和各层次之间调用关系如下:
1.Agent Access Object (AAO)层通过Agent的协议调用Agent,完成操作并得到返回值。
2.Database Access Object (DAO)层调用DB,完成数据的读写操作。
3.Physical And Virtual Object (PVO)调用AAO和DAO,完成对管理对象(例如Virtual Server,Logical Disk等)的操作。
4.Control层对PVO层的操作进行组合,完成设计多个管理对象复杂的复杂操作(例如创建带Logical Disk的Virtual Server)。也可能直接访问DAO,对DB进行操作。
5.Engines种类比较多。可以直接调用DAO,也可以调用PVO层。
路途中的荆棘
系统虚拟化技术是一门跨领域的技术,涉及到操作系统、编译和体系结构等学科知识,并延展到资源管理、性能和系统安全等问题,在开发的过程中,我们项目组遇到了大量的难点,经过项目组的讨论总结,我们认为以下几个部分属于项目中的重点:
1.domain 0的集成。domain 0是开发人员根据项目的实际要求定制集成的。它主要涉及到网络管理、存储管理和系统管理工具。在开发过程中,可根据项目的需求对管理工具进行甄别和筛选,选择适合自己的工具。
2.服务的管理。CloudEx的功能需求决定了它需要提供多种服务,包括
Tftp服务:将节点机的操作系统发送给节点机
DHCP 服务:为节点机提供DHCP服务
Discover 服务:Discover节点机,获得返回的xml,并解析
Backup服务:将代码和数据打包保存起来
Configration 服务:检查 Configration File是否更新。
Statistics服务:不断监控系统数据,生成statistics
等服务,需要采用统一的服务管理系统对所有服务进行管理。
3.对应物理硬件的虚拟化对象设计。
对应每一种物理硬件,比如CPU,Memory,网卡,各种存储设备都有对应的虚拟化对象设计,通过该对象对实际物理硬件进行操作。需要对于实际物理硬件作出恰当的抽象,提取出物理硬件的各种状态与各种操作方法。
4.一致性过程的保证。
在系统的操作过程中,经常会出现需要保证前后数据和状态一致性的情况,不仅仅需要保证数据库的一致性,还需要保证物理机状态和数据库的一致性,在这种情况下,我们设计了一致性保证机制,它主要做了以下几个方面的工作:
A.定时循环Discover物理机,保证物理机状态和数据库状态的一致。
B.锁机制。在开始一致性过程的时候对于可能用到的物理资源进行"加锁",以避免物理资源内容被修改。对应的,在结束一致性过程的时候进行"解锁"。
C.回滚机制。在一致性过程内部的操作都具有对应的回滚操作方法,如果执行过程中发生错误,可以采用该机制回滚到执行过程前。
5.事件的处理
在系统的运行过程中会产生各种各样的事件,比如虚拟机状态错误事件、Discover错误事件等。这些事件都有对应的处理方法,并且在产生事件的时候就被处理。事件在处理完后集合到事件列表中,虚拟化对象可以查询出与自己相关的事件,作为对象操作的输入。
6.为了保证硬件虚拟化技术与软件虚拟化技术的匹配,需要跟踪最新的硬件虚拟化技术,以此推进虚拟化软件技术的应用,提升服务器虚拟化技术的整体应用水平。