XenServer是一套已在云计算环境中经过验证的企业级开放式服务器虚拟化解决方案,可以将静态、复杂的IT环境转变为更加动态、易于管理的虚拟数据中心,从而大大降低数据中心成本。同时,它可以提供先进的管理功能,实现虚拟数据中心的集成和自动化,而成本远远低于其它解决方案。
XenServer易用简单,只要优化部署做得好,运行是非常稳定的。对于中小企业来说,采用XenServer来部署虚拟化系统,性价比是十分不错的选择。XenServer基于Xen开发,现在已经全部开源了全部源代码。
在XenServer没有开发全部源代码之前,XenServer的源代码结构组成是这样的:
XenServer全部开源就是将红色部分的源代码和紫色部分的源代码进行开源公布。其代码结构如下:

可能行业内的工程师都知道,在Citrix还没有完全开源XenServer之前,XenServer是有一个社区版本的,名字简称为XCP。在XenServer开源之后,将会有以下的改变:
在今天,我们的XenServer已经开源了,那么对于他的定位的是什么?在服务器虚拟化领域,XenServer已经远远的落后于Vmware和Hyper-v了。根据XenServer.Org社区及Citrix的定义:
2. XenServer体系架构
如果说我们要给XenServer的体系结构做一个等级归类的话,XenServer 4.x和5.x版本算是第一代架构,XenServer6.0到6.2之前的版本算是第二代架构,XenServer 6.5算是第三代架构。
之所以有这样的划分是因为XenServer在积极的改变自身的架构和性能,为了自身更好的进行模块化的耦合,也解决之前架构的一些问题。
XenServer 6.2版本之前,其主要存在以下问题:
XenServer 6.5基于这些问题进行了架构的改变和解决:
以下对XenServer的体系架构解读基于XenServer6.2及以下的版本。

如上图所示,XenServer包含以下几部分:
2.1 管理接口GUI和CLI
通过以下两种方法管理 XenServer:XenCenter和 XenServer 命令行接口 (CLI)。
GUI:XenCenter
XenServer 主机系统安装完成后,系统会自带一个图形化管理工具:XenCenter。通过XenCenter可以完成所有的配置操作,我们在实施中大部分配置操作都会通过该管理工具实现。XenServer主机使用HTTPS协议通过端口443与XenCenter进行通信(使用 XenAPI 进行命令和响应的双向连接),并通过端口 5900 与半虚拟化的 Linux VM 进行图形 VNC 连接。在Linux环境下,XenCenter还有一给开源的版本可以安装在Linux上对XenServer进行管理。
获取XenCenter的途径有3个,第一种是通过网页的方式访问XenServer主机系统的IP地址,即可下载到该工具。第二种就是在安装光盘或者ISO文件中进行提取,一般路径为:.\client_install\XenCenter.msi。第三种是通过Citrix官网Download(下载)页面下载,可选择下载中文版本。
同时,思杰还通过该接口提供了一个基于虚拟机的 Web 管理控制台。需要导入一台OVF的虚拟机WebSelf Service,Web Self Service是一个轻型门户,允许每位用户操作自己的虚拟机,而无需具有 XenServer 主机的管理员凭据。不过该虚拟机控制台在6.2及以后的版本中已经弃用。
命令行接口 (CLI)
使用XenServer命令行接口 (CLI) 的方式管理XenServer,需要使用SSH通过22端口登陆XenServer系统进行操作。该方式以命令行的方式对XenServer进行连接管理,除了常规的Linux的命令之外,思杰还给我们提供了一个专门的管理命令:xe,通过该命令可以完成和XenCenter相同的功能。由于命令行操作不方便,涉及的参数繁多,这里我们就不加以介绍了,如果有需要请参考XenServer的《XenServer 管理员指南》文档。
2.2 XAPI
对XenServer的管理需要依靠一个服务:XenAPI(或者XAPI)。 XenAPI是XenServer中的一组管理接口的统称,是XenServer管理的核心,由一系列的toolstack组成。
XenAPI提供了一个基于 XML-RPC的 API,该API除了提供给XenCenter以及pool中各主机通信使用外,还可以从远程系统调用 XML-RPC 编写使用 XenServer 管理 API 的应用程序。

XenServer XAPI中提供的这些Toolstack,其运行与Domain 0中,主要功能如下:
XenCenter就是通过XAPI来读取XenServer的配置、管理、License的管理、数据库的维护等等,同时也包括如存储(SR)、虚机、虚拟网卡、HA等等所有的功能控制。而Pool中的所有XenServer的操作请求也是通过XAPI传递给Dom0,同时在池中的所有主机中间通信,例如:Pool中数据库(配置数据库,由XenServer维护的一个小型数据库)会通过XAPI在所有的主机之间同步,以便在Master服务器宕机以后,其他机器能够正确而迅速的取代Master,并维持Pool的功能和服务。
2.3 State.db
在XenServer的总体架构图中,我们还看见了在XPAI和Plugins下面还存放一个State.db的文件,该文件就是存储一些配置信息的一个简易数据库。XAPI会将一些配置信息写入到该数据库,同时在需要时还会去调用这个数据库里面的培配置信息。那么这个数据库中存放了那些配置信息呢?我们可以通过如下命令进行查看:./dbtool –a –v /var/xapi/state.db > /root/dbtool_output.txt

打开之后我们看见里面存储了一些对象与对象之间的对应关系信息,其主要信息就是VM与HOSt以及存储VDI之间的对于关系。我们在XenCenter的图形界面看到的虚拟机在那台Host上,连接的那个磁盘,这些真正的对应关系都是在这里面存储着的,XenCenter会通过XAPI调取里面的配置信息并通过自己以图形界面的形式展现出来。所以这个数据库不但和XAPI本身的服务相关,还和XenCenter显示的界面有一定的关系。
下图显示了里面存储的对应关系图:

VNC(Virtual Network Computing)是一种借助RFB协议实现远程共享和远程操作的软件,它借助网络传送鼠标、键盘动作和画面更新数据。由于VNC使用最底层的绘图信息(指向显卡显存的屏幕像素数据)来进行协议封包和传送,所以其传输数据量大,网络带宽要求很高、效率也相对较低;另外,VNC缺乏统一规范的安全机制。但也正是因为它传输的是平台无关的底层像素信息,这些信息在其他任何平台都可以进行重绘,所以在XenServer和VMWare等服务器虚拟化平台才会采用VNC来支持服务器虚拟化客户端管理软件对虚拟机终端的跨平台操作显示。
VNC在这里不在详细介绍,其运作原理是在Domain 0中安装VNC的服务器端,在XenCenter中集成VNC的客户端。当用户点击其中一台虚拟机的图形控制台窗口的时候,DXenCenter中集成的VNC客户端就会启动和Domain 0中的VNC服务器端进行连接,其VNC连接的身份验证了XAPI里面集成的身份验证信息。在主机上执行的 XML-RPC API 服务器接受客户端的安全套接字连接。这样,所有 API 调用都在登录会话上下文中执行,登录会话是通过在服务器端进行用户名和密码验证生成的。这样,将可以对 XenServer 安装进行安全的、经过身份验证的访问。其他比如VNC的访问都调用其身份验证的信息。这时Domain 0会将该台虚拟机的屏幕操作变化信息进行抓取,并通过VNC协议传输到客户端,在XenCenter的控制台进行显示。同时客户端的VNC通过网络传送鼠标、键盘动作信息给到Domain 0的服务器端,Domain 0的服务器端在将这些鼠标和键盘的操作命令通过XAPI给到Domain中的虚拟机,该台虚拟机在执行了这些操作后,Domain 0抓取这些变化的图像画面传送到XenCenter的VNC进行显示。
在Xen的全虚拟化架构中,Xen对硬件三类资源的管理和调度是这样运作的:对于CPU的管理和调度,加入了对Intel VT 技术和AMD Pacifica 技术的支持,因此可以使得虚拟机可以直接访问物理CPU资源;对于内存来说,硬件虚拟化技术IOMMU等等也简化了内存地址之间虚拟与真实的转换开销。但是对于IO设备来说,由于前后端驱动是基于半虚拟化环境开发的,因此,在最初的Xen完全虚拟化技术中,使用Qemu来仿真PC硬件,包括BIOS、IDE硬盘控制器、VGA图形适配器(显卡)、USB控制器、网络适配器(网卡)等。
在最新的XenServer版本中,比如XenServer 6.5以及Xen4.4版本中,换成了一个被称作PVH的新的虚拟化种类,就是在PV的模式下增加对硬件辅助虚拟化的支持,但目前对xen和kernel的版本有要求。就是相比较以上的全虚拟化而言,PVH融合得更加的彻底。它是一个使用了针对启动和I/O的半虚拟化驱动的半虚拟化模式。与HVM全虚拟化不同的是,它使用了硬件虚拟化扩展,是不需要进行仿真的。因此去掉了QEMU对一些IO设备的模拟和仿真。
因此QEMU和XenServer的关系是,QEMU模拟和仿真Xen虚拟机的虚拟硬件,包括BIOS、IDE硬盘控制器、VGA图形适配器(显卡)、USB控制器、网络适配器(虚拟网卡)等等,同时结合VNC,模拟虚拟机的启动与执行命令后的动作,VNC将其画面抓取之后向前端输送这些画面信息。
XenServer的虚拟机安装 tools 是为了使VM具有完全支持的配置,并且能够使用XenServer管理工具(通过XE CLI或XenCenter中)进行管理。
一个Windows VM不按照XenTools也可以工作,没有XenTools,性能会显著下降。
Xentools是Citrix半虚拟化网络和 SCSI 驱动程序 (XenServer Tools) ,可为虚拟机提供高性能的 I/O 服务,并且不会产生传统设备仿真所需的系统开销。这些驱动程序可替代仿真设备,在 Windows 和 XenServer 产品系列软件之间提供高速传输。在安装 Windows 操作系统期间,XenServer 使用传统的设备仿真为 VM 提供标准 IDE 控制器和标准网卡。通过这种方式,Windows 使用内置驱动程序完成安装,但由于控制器驱动程序仿真存在固有的系统开销,因而导致性能降低。
如果没有安装XenTools,你不能:
如果正在处理的 VM上未安装XenServer Tools,则属性窗格中的常规选项卡上将显示未安装 Tools
红色文本消息。如果 XenServer已经更新,而 VM 上安装有早期版本的XenServer Tools,此处也会
显示一则消息。在这种情况下,显示的消息为Tools已过期(已安装 x.y版本)。对于 Windows VM,
双击此文本可切换到 VM控制台、加载 ToolsISO 并启动 Tools 安装向导;对于 Linux VM,双击此文
本可切换到 VM控制台并加载 ToolsISO(但是,必须装载 ISO并手动运行安装)。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删