基于XCP的虚拟化云平台建设研究
刘斌, 朱海涛, 王晓翠
北京第二外国语学院图书馆 北京 100024
摘要

以北京第二外国语学院图书馆虚拟化云平台建设为例, 通过对几种虚拟化云平台方案分析与比较, 提出基于Xen Cloud Platform(XCP)的虚拟化云平台建设的完整解决方案。该方案包括两个部分:底层基于Xen的虚拟化服务资源池、上层虚拟化云管理组件。同时, 给出一些关键性技术问题的处理方法以及该方案的应用前景。

关键词: 虚拟化; 云平台; XCP; Xen
中图分类号:TP393
Research on Construction of XCP-based Virtualization Cloud Platform
Liu Bin, Zhu Haitao, Wang Xiaocui
Library of Beijing International Studies University, Beijing 100024, China
Abstract

Taking the virtualization cloud platform construction of the Library of Beijing International Studies University as an example, by analyzing and comparing several virtualization cloud plans, this paper proposes an implementation plan to construct virtualization cloud platform which is based on Xen Cloud Platform (XCP). The plan includes two parts: the base level virtualization service resource pool and the top level virtualization cloud management component. The authors also give some solutions to the key technical problems and the prospects of the plan.

Keyword: Virtualization; Cloud platform; XCP; Xen
1 引 言

虚拟化具有低成本、绿色节能、动态伸缩的优良基础特性,成为实现信息服务规模化、集约化和专业化的主要技术途径之一。虚拟化云管理平台是将虚拟化管理服务发布成Web应用,通过浏览器来进行管理的平台。它不仅能提高虚拟化服务管理的易用性和可移动性,而且使整个虚拟化架构更加集约化,逐渐成为虚拟化平台管理的发展趋势。

目前,商用的私有虚拟化云平台主要有VMware ESXi[ 1]、Citrix XenServer[ 2]、Microsoft Hyper-V[ 3]三大解决方案。ESXi市场份额大、技术成熟、服务支持好,但价格和性能损失偏高,国内很多图书馆员对其进行了全面的介绍和分析,包括任庆平[ 4]、胡昌文[ 5]、刘荣发[ 6]和王政军等[ 7];XenServer基于成熟的Xen虚拟化技术,性能、安全性、兼容性、可扩展性等方面都比较优秀,但国内服务支持不是很全面,因此国内用户不多,赵华茗等[ 8, 9]对其进行了深入的研究;Hyper-V作为Windows 2008 R2平台的一个组件,具有性价比高、使用维护方便等优点,但对非Windows平台支持不好,李琳等[ 10]对其进行了全面的分析。

北京第二外国语学院图书馆(简称北二外图书馆)在2008年已经部署了VMware ESX虚拟化云平台,目前大部分的应用都迁移到该平台上,并使用vRanger[ 11]备份软件对虚拟化应用进行备份, 取得了很好的使用效果。但ESX虚拟化云平台仍存在一些问题,如不支持半虚拟化、性能损失偏高(高达40%)、 无法支持USB加密狗 (很多期刊数据库使用加密狗保护数据)、管理虚拟应用较为复杂(需要Windows平台并安装客户端)、很难进行深入的开发和应用(如与基于DotNetNuke[ 12]的门户系统进行整合)等。因此本馆寻求一个开源的虚拟化云平台的完整解决方案,用来解决这些问题。

在比较了Xen[ 13]、OpenVZ[ 14]、VirtualBox[ 15]和KVM[ 16]等几种开源虚拟化解决方案后,选取性能好、平台支持广泛、成熟度高的Xen虚拟化技术。Xen虚拟化技术被Amazon[ 17]、IBM[ 18]、Oracle[ 19]等公司所支持,是事实上的业界标准。Xen的实现有基于原始Xen架构和基于封装后的XenServer架构两种方式。后者与前者相比,由于得到了Citrix公司大力支持,成熟度、稳定性都更好。目前,基于XenServer架构的开源实现是XCP(Xen Cloud Platform)[ 20]平台。该平台不仅具有XenServer标准版的几乎所有特性,而且开放源代码,方便进行深层次的开发和应用。XenServer的免费版、标准版和XCP特性的比较[ 21, 22],如表1所示:

表1 XenServer5.6免费版、标准版与XCP1.0比较[ 21, 22]
2 XCP介绍

XCP是开源的企业级服务器虚拟化云平台。它源自Citrix XenServer,是Xen.Org推出的开源项目。XCP包括了vLAN(Open vSwitch[ 23]实现)、Share Storage、Resource Pool和Live Migration等几乎所有XenServer免费版不具有而商业版本才具有的重要的功能特性(但不具有高可用性和动态负载平衡支持),并且具有Vastsky[ 24]集群存储系统支持等XenServer所不具备的特性,更为重要的是XCP 的源码是基于GPL2(General Public License)协议完全开放的,这方便了对其进行深入的开发和应用。XCP的结构如图1所示[ 20]

图1中可以看到,每台XCP主机由6个部分组成:

(1)XAPI:OCaml实现的Xen管理程序。

(2)XAPI Lib:XAPI调用接口代码库,可用于深入的开发。

(3)管理接口(Control Interface):基于命令行的XE(Xen Exe)管理平台和基于Web的管理平台,如XAPI调试接口等。

(4)Xen管理程序(Xen Hypervisor): 是Xen的核心,在物理层最高特权级硬件保护环路上运行,负责为域分配资源, 以域的本机架构虚拟视图表示域。

(5)特权域(Dom0):控制硬件,如网络、存储和驱动。

(6)客户域(DomU):控制虚拟机,支持几乎所有的主流的Linux和Windows系统。

多台XCP主机可以建立一个虚拟化服务资源池(Resource Pool),进行统一管理和调度。

3 建设基于XCP虚拟化云平台
3.1 虚拟化云平台总体设计

基于XCP虚拟化云平台包括虚拟化服务资源池和虚拟化云管理组件两大部分。其中虚拟化服务资源池是整个平台的底层基础,包括由XCP服务器组成的虚拟化服务器集群、核心存储系统和虚拟化应用三个部分。虚拟化云管理组件是整个平台的上层,包括如XWM、XVP等虚拟化云管理服务和DHCP、NAT、代理等网络管理服务。通过互联网,管理员可以方便地管理虚拟化应用,而终端用户可以方便地获取虚拟化应用服务。该虚拟化云平台的结构如图2所示。

图2 虚拟化云平台的结构图

3.2 虚拟化服务资源池搭建

北二外图书馆虚拟化服务资源池的搭建过程如下。

(1) 前期准备工作。准备三台服务器,配置如表2所示:

表2 虚拟化服务资源池硬件与软件配置

其中两台服务器作为虚拟化服务器,另一台作为网络存储服务器。虚拟化服务器使用64GB内存、73GB的Raid0+1硬盘。网络存储服务器使用2GB内存、900GB的Raid5硬盘。所有服务器均使用两块网卡,并绑定在一起,分别分配一个固定IP地址。软件方面,准备XCP1.0安装光盘、Openfiler2.99安装光盘、XenServer5.6.1安装光盘。

(2) 建立虚拟化服务集群。XCP具体安装过程省略,其整个安装过程与XenServer安装相似,详情请参考Citrix网站相关文档[ 21]。由于XCP自带的Web管理接口太繁琐,因此使用XenCenter来管理虚拟化服务器。由于版本号的问题,XCP无法直接使用XenCenter来进行管理,需要修改一下配置。使用XenCenter分别添加两个服务器,并分别将两台服务器的两块网卡绑定为一块。建立一个Pool,将两台虚拟服务器加入到其中,将一台设为主、另一台设为从,从服务器添加时会自动重启。重启后,使用XenCenter,如虚拟化服务集群显示为图3,则表明建立成功。

图3 虚拟化服务集群结构图

(3) 建立核心存储系统。建立网络存储服务器可

以选用Openfiler[ 25]或FreeNAS[ 26]。由于Openfiler基于Linux,对iSCSI和NFS有很好的支持,管理方便,而且有打包好的虚拟化应用,可以方便地部署到虚拟化平台上,因此选取Openfiler来搭建核心存储系统(如选用FreeNAS请参考文献[27])。

如同其他Linux系统安装一样,根据向导完成Openfiler的安装(具体步骤参考文献[28])。打开浏览器,输入https://ipaddress:446/。登入用户名:openfiler,密码:password。管理界面如图4所示:

图4 Openfiler的管理界面

开启必须的服务,在‘Services’中开启iSCSI Target、NFS、SMB和CIFS服务。使用Openfiler分别建立100GB的CIFS和800GB的iSCSI网络存储,并将其分别挂载到XCP资源池上作为ISO介质池和虚拟化资源池,如图5所示:

图5 iSCSI网络存储

(4) 建立模板系统。为了简化建立虚拟化应用过程,先建立好所需要模板系统。大部分的操作系统,包括Windows系列和Red Hat系列,都可以通过标准模板的向导来完成安装,将它们转化为系统模板即可,如图6所示:

图6 虚拟应用建立向导

对于FreeBSD和Solaris等Unix版本和没有包含的Linux发行的版本可以使用“Other Media”模板来创建,然后使用更新内核的方法来实现半虚拟化。图7为所建立的模板系统。

图7 建立的模板系统

3.3 添加虚拟化云管理组件

虚拟化服务的云管理主要是指系统管理员和终端用户可以通过浏览器来方便地管理服务器和应用。对于基于XCP的虚拟化服务,该方案使用XVP(Xen VNC Platform)[ 29]、XenWebManager[ 30]两个软件平台来管理。前者适合终端用户使用,而后者适合系统管理员使用。

(1) XVP

XVP是基于VNC和Web的虚拟应用的管理平台。XVP可以对每个用户设置管理不同虚拟机和管理权限,适用于终端用户通过浏览器来管理自己的虚拟化应用。该平台包括xvpappliance、xvp、xvpviewer、xvpweb、xvpdiscover和xvptag等组件。XVP平台的架构[ 31]图8所示:

使用XVP最简单的方法是直接导入预先建好的xvpappliance虚拟应用。具体步骤如下:

①从官方网站http://www.xvpsource.org/xvpappliance-1.9.2-1.zip下载xvpappliance虚拟应用文件;

②解压缩,使用XenCenter导入到已建立好的XCP Pool中;

③启动xvpappliance虚拟应用,可以通过xvpappliance命令来管理XVP(具体设置请参考文献[32]);

④通过https://ipaddress/来访问XVP管理平台,如图9所示:

图9 XVP与XVP Viewer

(2)XenWebManager

XenWebManager是使用Python实现的基于Web的XenCenter的开源实现,使管理员在未安装XenCenter的Windows和Linux环境中方便地管理XCP服务器。XenWebManager安装方法有很多,详情参考文献[33]。由于已经在XCP资源池中建立XVP应用,而其操作系统为CentOS 5,将XenWebManager安装到这台虚拟服务器上。

具体步骤如下:

①更新源中加入第三方更新源RPMforge

②运行如下命令安装XenWebManager:

yum install--enablerepo=rpmforge install xenwebmanager

③使用如下命令启动和停止XenWebManager服务:

service xenwebmanager start

service xenwebmanager stop

④修改iptables防火墙规则,将TCP端口8080、8081和8082打开

⑤使用http://ipaddress:8080访问XenWebManager管理平台,如图10所示:

3.4 使用效果

北二外图书馆虚拟化云平台已经在测试运行中。管理者已经可以通过浏览器方便地来对虚拟化应用和虚拟化服务器进行管理和维护,达到了预期的目的。

目前正在将原来在VMware上运行的Linux虚拟化应用迁移到该平台上,主要使用XenConverter来完成,如图11所示。未来可能会将更多的应用迁移到该平台上。

目前最大的问题是不能使用USB加密狗,这是由于XCP1.0中Xen的版本较低(Xen3.4)。XCP1.1版本[ 34]将支持Xen4.1,而Xen4.1支持USB加密狗,因此这个问题将得以解决。

由于XCP是开源的,未来尝试将该平台与门户系统整合起来使用。

4 技术难点及解决方法
4.1 XenCenter管理XCP

由于版本问题,XCP无法直接使用XenCenter,需要进行修改。解决方法如下:将脚本保存为patchxcp.sh[ 35],并分别在两台虚拟服务器上执行。修改后重启服务器,就可以使用XenCenter来管理XCP。使用“xapi-version”命令来查看修改是否生效。patchxcp.sh脚本如下:

#!/bin/bash

/etc/init.d/xapi stop

echo "Doing backup of xapi executable.."

cp-v /opt/xensource/bin/xapi

/opt/xensource/bin/xapi.original

echo "Applying patch.."

/usr/bin/perl-pi-e ′s/1\.0\.0/5.6.1/g′

/opt/xensource/bin/xapi

echo "Applied"

/etc/init.d/xapi start

4.2 半虚拟化Unix系统

本馆使用的图书馆自动化ALEPH500运行在两台Sun小型机组成的Cluster上,作双机冗余。目前希望在虚拟化云服务平台中提供一个虚拟化应用作为热备。要实现虚拟和实体的双机冗余,这需要两者的环境完全一致,而Sun小型机必须运行Unix系统,因此实现Unix系统的半虚拟化十分重要。但由于Solaris和FreeBSD等Unix版本没有得到官方支持[ 36],需要使用特殊的方法来处理,因此也就成为了技术难点。

这里使用的方法是先建立一个全虚拟化的Unix应用,更新内核,实现半虚拟化。另外也可以使用工具XVA[ 37]将基于Xen的Unix系统虚拟机应用迁移到XCP上去。

以OpenSolaris为例,其具体处理步骤[ 38]如下:

(1)使用“Other Install Media” 模板建立一个新的虚拟机。按自身要求设置好磁盘和网络,确保有足够的内存,最好1 024MB,先不要启动虚拟机。

(2)复制OpenSolaris 安装光盘上的两个文件/boot/x86.microroot和/platform/i86xpv/kernel/unix到XCP服务器的一个目录中,如“/opt/kernels”。

(3)在XCP服务器上,确定新创建的OpenSolaris虚拟机的uuid:

xe vm-list

将虚拟机的PV-kernel指向在XCP服务器上保存的kernel:

xe vm-param-set uuid=

PV-kernel=′/opt/kernels/unix′

(4)将虚拟机的 PV-ramdisk 指向在XCP服务器上保存的ramdisk:

xe vm-param-set uuid=

PV-ramdisk=′/opt/kernels/x86.microroot′

(5)调整虚拟机的PV-args:

xe vm-param-set uuid=

PV-args=′/platform/i86xpv/kernel/unix-B console=ttya′

(6)清空HVM boot policy的值,使虚拟机强制进入半虚拟化模式:

xe vm-param-set uuid= HVM-boot-policy=

(7)清空Boot Loader的值:

xe vm-param-set uuid= PV-bootloader=

(8)设置VBD 的“bootable”参数为True,使用xe vbd-list查找:

OpenSolaris虚拟机的VBD UUID (也许可以省略)

xe vbd-param-set uuid= bootable=true

(9)挂载OpenSolaris光盘,启动虚拟机,按照向导完成网络、用户等设置,直至安装完成。

(10)设置XCP服务器的PV-args参数:

xe vm-param-set uuid=

PV-args=′/platform/i86xpv/kernel/unix-B

console=ttya,zfs-bootfs=rpool/ROOT/opensolaris,bootpath="/xpvd/xdf@51712:a"′

至此,OpenSolaris的半虚拟化系统安装完成。

5 结 语

本文通过对几种虚拟化云平台解决方案的比较与分析,以北二外图书馆虚拟化云平台建设为例,从虚拟化云平台总体设计、虚拟化服务资源池搭建、添加虚拟化云管理组件、关键技术问题解决方法和使用效果几个方面,介绍基于XCP的虚拟化云平台的整体建设方案。

该方案适用于搭建中小型虚拟化服务云平台。目前该方案还有一些不足:如对一些存储驱动支持不完善(如HP Storage)、对USB加密狗不支持等,这些都是未来需要研究和探讨的地方。

The authors have declared that no competing interests exist.

作者已声明无竞争性利益关系。

参考文献
[1] VMware ESXi ESX Info Center: Migrate to ESXi Hypervisor[EB/OL]. [2011-04-25]. http://www.vmware.com/products/vsphere/esxi-and-esx/index.html. [本文引用:1]
[2] Citrix XenServer: Efficient Server Virtualization Software[EB/OL]. [2011-04-25]. http://www.citrix.com/English/ps2/products/product.asp?contentID=683148&ntref=prod_top. [本文引用:1]
[3] Microsoft Hyper-V Server[EB/OL]. [2011-04-25]. http://www.microsoft.com/hyper-v-server/en/us/default.aspx. [本文引用:1]
[4] 任庆平. vSphere在图书馆的应用浅析[J]. 科技情报开发与经济, 2010, 20(17): 7-8, 11. [本文引用:1]
[5] 胡昌文. 虚拟化技术及其在图书馆中的应用研究[J]. 当代图书馆, 2009(4): 53-55. [本文引用:1]
[6] 刘荣发. 服务器虚拟化技术在图书馆数字化服务中的应用[J]. 现代图书情报技术, 2007(4): 79-82. [本文引用:1]
[7] 王政军, 金玉玲. 虚拟化技术在数字图书馆中的应用[J]. 现代情报, 2010, 30(10): 77-80. [本文引用:1]
[8] 赵华茗, 李春旺, 周强. 基于XENServer的数字图书馆云服务平台实现研究[J]. 电信科学, 2010(8A): 33-38. [本文引用:1]
[9] 赵华茗. 基于虚拟机的高可用信息服务平台建设[J]. 现代图书情报技术, 2009(12): 18-24. [本文引用:1]
[10] 李琳, 祁天. 服务器虚拟化技术探讨——Hyper-V与VMware的分析与比较[J]. 科技传播, 2010(6): 114, 118. [本文引用:1]
[11] VMware ESX / ESXi Backup Software for Virtualized Servers[EB/OL]. [2011-05-13]. http://vizioncore.com/product/vRangerPro. [本文引用:1]
[12] DotNetNuke. What is DotNetNuke[EB/OL]. [2011-05-13]. http://www.dotnetnuke.com [本文引用:1]
[13] What is Xen[EB/OL]. [2011-04-25]. http://www.xen.org/ [本文引用:1]
[14] OpenVZ Wiki[EB/OL]. [2011-04-25]. http://wiki.openvz.org/Main_Page. [本文引用:1]
[15] VirtualBox[EB/OL]. [2011-04-25]. http://www.virtualbox.org. [本文引用:1]
[16] Kernel-based Virtual Machine[EB/OL]. [2011-05-13]. http://www.linux-kvm.org/. [本文引用:1]
[17] Amazon Web Services[EB/OL]. [2011-04-25]. http://aws.amazon.com/. [本文引用:1]
[18] IBM Cloud Computing-United States[EB/OL]. [2011-04-25]. http://www.ibm.com/cloud-computing/. [本文引用:1]
[19] Cloud Computing | Oracle[EB/OL]. [2011-05-15]. http://www.oracle.com/us/technologies/cloud/index.htm. [本文引用:1]
[20] Xen Cloud Platform[EB/OL]. [2011-04-25]. http://www.xen.org/products/cloudxen.html. [本文引用:2]
[21] XenServer-资源和支持[EB/OL]. [2011-05-15]. http://www.citrix.com.cn/products/xenserver/resources-support.aspx. [本文引用:2]
[22] XCP Docs[EB/OL]. [2011-05-15]. http://wiki.xen.org/xenwiki/XCP_Docs. [本文引用:1]
[23] Open vSwitch[EB/OL]. [2011-04-25]. http://openvswitch.org/. [本文引用:1]
[24] VastSky[EB/OL]. [2011-04-25]. http://wiki.xen.org/xenwiki/VastSky . [本文引用:1]
[25] OpenFiler-Open Source Storage Management Appliance[EB/OL]. [2011-04-25]. http://www.openfiler.com/. [本文引用:1]
[26] FreeNAS 8. 0 | Storage for Open Source[EB/OL]. [2011-04-25]. http://freenas.org/. [本文引用:1]
[27] 张琼露, 祝沙沙, 张穹建. 基于FreeNAS 存储服务器实现XenServer资源池的存储共享[J]. 电脑编程技巧与维护, 2010(22): 17-19. [本文引用:1]
[28] Openfiler — Text-based Installation[EB/OL]. [2011-04-25]. http://www.openfiler.com/learn/how-to/text-based-installation. [本文引用:1]
[29] XVP -Cross-Platform Management for Citrix XenServer Xen Cloud Platform[EB/OL]. [2011-04-25]. http://www.xvpsource.org/. [本文引用:1]
[30] OpenXenManager. What is XenWebManager[EB/OL]. [2011-04-25]. http://www.openxenmanager.com/. [本文引用:1]
[31] Overview of Configuring the XVPTM Suite[EB/OL]. [2011-04-25]. http://www.xvpsource.org/?topic=configure. [本文引用:1]
[32] Overview of Building Installing the XVP Suite[EB/OL]. [2011-04-25]. http://www.xvpsource.org/?topic=build. [本文引用:1]
[33] XenWebManager[EB/OL]. [2011-04-25]. http://www.xensemaking.com/xenwebmanager/. [本文引用:1]
[34] XCP Roadmap[EB/OL]. [2011-05-15]. http://wiki.xen.org/xenwiki/XCP_Roadmap. [本文引用:1]
[35] XCP Patch for Use with XenCenter 5. 6 FP1[EB/OL]. [2011-04-25]. http://www.xensemaking.com/misc/. [本文引用:1]
[36] The Operation of Unsupported Guests on XenServer 5. 5 and 5. 6[EB/OL]. [2011-05-15]. http://community.citrix.com/display/xs/The+Operation+of+Unsupported+Guests+on+XenServer+5.5+and+5.6. [本文引用:1]
[37] SourceForge. net: Vastsky[EB/OL]. [2011-04-25]. http://sourceforge.net/apps/mediawiki/vastsky/index.php?title=Main_Page. [本文引用:1]
[38] Thomas J. XenServer5 and OpenSolaris 2008. 11[EB/OL]. [2011-04-25]. http://justindthomas.wordpress.com/2008/12/22/xenserver-5-and-opensolaris-0811/. [本文引用:1]