【转】 XenServer的架构
一、Dom0或者控制域
XenServer从安装上看起来像是一个Linux,所以有些同学认为XenServer就是Linux或者是Linux修改的。真实的XenServer和Linux的关系是这样的:XenServer不是Linux,但Dom0是Linux。之所以有这样的误区在于我们在安装好XenServer之后是通过Dom0这个特权用户空间进行控制和访问XenServer的,这个Dom0是经过自定义和优化过后的CentOS系统,自然我们看起来、用起来都感觉和Linux并无二致。而且XenServer安装所使用的引导装载程序是extlinux,extlinux是一个对话框交互式的引导装载程序。其工作原理和Windows的PE类似,Windows的PE系统其实本质是微软的Windows安装对话框交互式的引导装载程序。
Dom0既然是XenServer的管理控制平面而且有是基于Linux的定制版本,那么一定支持Linux的命令,但是Dom0是为了满足XenServer的虚拟化平台控制和管理而设计,如果安装或者修改一些没有被明确设计或认证的安装包以及配置文件,就可能影响XenServer的可伸缩性和性能,最坏的情况下可能导致XenServer出现崩溃。所以你可以在XenServer中尝试一些Linux命令,会发现很多Linux没有,并且Yum等软件安装管理器是没有安装的。基于这些考虑以及对Linux的增加的服务以及软件包的控制等操作,Xen项目最初开发了XM命令,后来Citrix经过修改和优化,重新命名为XE命令。因此对于Dom0的控制并不向我们想象的那样使用Linux命令直接进行控制,而是使用专用的XE命令集。XE命令其实也是属于Shell脚本的一种,其运行机制仍然遵循Linux Shell命令的运行机制,即:
1、解析命令:首先XE的程序会分析给出的命令行信息,分析这一行字符串,那个字符串是命令;
2、分析命令:找到命令字符串之后,分析这个命令,根据命令类型调用各自命令的可执行文件;
3、启动进程:得到进一步的命令信息之后,提请给内核启动为一个进程执行命令的可执行文件;
4、调用功能:命令的可执行文件根据命令的选项或者配置文件信息,启用或关闭相应的功能;
5、调用参数:如果命令有参数,命令会根据参数设置的限定条件或者作用对象,进行相应的调整和执行。
同时还有一些专用的命令:比如Linux的top命令,top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。你如果在Dom0中使用top,没问题,但是top出来的系统资源和统计情况仅仅是Dom0这个特权Linux的系统统计信息,而不是整个XenServer的运行统计信息。而要使用Xentop这样的命令。
Dom0在XenServer中所属的位置如下图所示:
在该图中,我们看到三个主要硬件要素:计算,网络和存储。途中的箭头线表示访问的一个流程。在XenSerevr中,所述第一个虚拟机就是Dom0;在XenServer安装好之后,默认会启动一个虚拟机实例,在该虚拟机中启动一系列的XenServer服务,以便运行整个XenServer环境,该虚拟机运行的环境有些特殊,其可以直接访问和控制硬件,因此也被称之为特权域。与之相对的,非特权域被称为DomU,或者“Guest VMs”或”VM”。所有的域由虚拟机管理程序控制其提供计算服务的接口。这样的Dom0使我们能够直接通过Linux设备驱动程序来驱动硬件,而不必为XenServer的在开发专门的硬件驱动程序。而XenServer为虚拟机提供了一个虚拟设备接口用于承接虚拟机对硬件设备的调用命令,如图中所示,XenServer使用前后端驱动模型。前后端驱动模型是指一个部分的驱动位于dom0(后端)中,而其余的驱动程序则位于DomU中(前端)。
这些虚拟机的虚拟设备模型部分由QEMU进行模拟。其中HVM和PVHM不包含准虚拟化(PV)驱动程序,因此QEMU和QEMU-DM在HVN和PVHVM模式下模拟一些硬件部件,如BIOS。
最后,将这些管理或者服务的toolstack共同捆绑到一起,命名为XAPI,XAPI同为开源项目,和Xen项目一样;Xen项目是是专门实现将硬件资源进行抽象虚拟化的项目,XPAI项目是对其进行管理和维护的项目。
二、核心组件
Xapi
XAPI是一系列管理toolstack的接口,是基于 XML-RPC 的 API,可通过此 API 以编程方式访问一组数量庞大的XenServer 管理功能和工具。此 XenServer API 可以从远程系统调用,也可以从 XenServer 主机本地调用。同时XAPI也回应关于80端口的HTTP请求页面,提供一个下载XenCenter的安装程序的链接路径。
由于XenCenter通过XAPI管理XenServer的基础架构,因此它的管理和维护就显得特别重要,其相关的日志数据可以在以下路径找到:/var/log/xensource.log或/var/log/audit.log。
xhad
xhad是XenServer的高可用性(HA)守护进程。如果XenServer主机是在资源池中且启用HA,那么这个进程就会自动启动。这个进程负责主机与与其他成员的服务器的心跳检测以及负责维护池中所有的心跳活动,通过监视计时器超时以及主机的状态以确定哪些主机已关机。
Xhad本身也属于XAPI的toolstack系列工具之一,其也监视XAPI服务的运行。如果XAPI服务停止或者出现故障,那么xhad也将会重新启动XPAI服务。而且HA也是通过XAPI命令进行配置,并将得到的配置存储在每个主机/etc/xensource/xhad.conf的配置文件中。相关xhad日志数据存储在/var/log/xha.log,方便我们进行查看管理和排错。
xenopsd
xenopsd是Xen的操作后台进程,负责管理Guest VM(来宾虚拟机)的生命周期,同时提供管理(XAPI)和虚拟化进程(Xen)之间的分离。例如创建或启动来宾虚拟机时,就会有一个xenopsd进程创建:负责管理该来宾虚拟机低级别的任务,如资源处理、资源使用情况等统计信息的收集。Xenopsd的日志数据可以在以下目录找到:/var/log/xensource.log。
xcp-rrdd
XCP-rrdd是一个守护进程,用于接收虚拟机提交的数据,然后将其存储在一个数据库中,这是一个循序的过程。这个守护进程接受存储的是有关来宾虚拟机xenopsd进程操作所使用的资源度量信息。比如是磁盘IOPS,CPU负载、网络使用负载和吞吐,以及在XenServer中使用的NVIDIA GRID GPU直通和vGPU应用的负载指标。然后这些信息被分布显示在XenCenter的性能选项卡中,如用于查看当前和历史的来宾虚拟机性能信息。
XCP-rrdd相关日志数据可以在以下目录找到:/var/log/xcp-rrdd-plugins.log和/var/log/xensource.log。
xcp-networkd
这个守护进程负责监测和报告XenServer网络接口状态等信息,比如虚拟桥接网络。
SM
SM负责映射支持的存储解决方案到XAPI作为存储库,并对其进行管理。同时管理虚拟存储设备到存储的对应关系,以及处理存储相关的操作,比如存储的迁移和快照。
存储管理器的日志数据这个目录下:/ var/ log /SMlog。
perfmon
perfmon即性能监视器,是跟踪Dom0性能和统计Dom0信息的后台程序。
Mpathalert
Mpathalert是当存储有问题发生时,发送通知到XenCenter,或通过XAPI管理接口发送消息到其他的管理平台。这是一个十分有用的工具,用以解决特定的存储类型的网络问题,也实现在XenServer启用多路径之后,单其中一条路径出现问题的情况下发送消息,防止存储的单点故障。
日志相关的苏数据存储路径在以下目录:/var/log/daemon.log和/var/log/messages。
snapwatchd
该snapwatchd守护进程负责调用,监控和使用日志记录相关的VM快照的信息。如虚拟磁盘的状态,同步信息,以及调用XAPI跟踪来宾虚拟机的磁盘或相关快照的任何变化。我们知道快照的原理主要有2种,一种是RoW一种是CoW,不管是那种,对虚拟磁盘制作了快照之后,对于虚拟磁盘的任何改写都会受到严格的监控。日志数据可以在目录:/var/log/SMlog。
stunnel
Stunnel是安全隧道,用于加密各种真实或虚拟的节点之间的流量,其使用Open SSL进行加密。客户端连接到来宾系统VM,如通过XenCenter的vncterm访问,可以利用安全通道,以确保这些类型的会话保持独立和安全。
有关安全通道的日志数据在以下路径中:/var/log/secure和/var/log/xensource.log。
xenconsoled
记录由xenconsoled处理的基于控制台的活动日志,包括来宾和控制域控制台。日志数据存储在目录:/var/log/xen/或/var/log/daemon.log。
Xenstored
该xenstored守护程序是驻留在Dom0中的数据库。它提供低级别的操作,比如虚拟内存,共享内存和接口XenBus通用I / O操作。XenBus提供了类似于PCI设备抽象的总线,允许客户虚拟机和Dom0之间进行通信。同时设备驱动程序间进行交互也与xenstored配置数据库有关,xenstored也会处理设备的操作,如“关机”或“重启”等命令从XAPI发送到虚拟机。
日志数据存储在以下目录:/var/log/xenstored-access.log和/var/log/messages,/var/log/xensource.log。
squeezed
squeezed是运行在Dom0中的负责对Xen的动态内存进行管理的一个进程。 XAPI调用squeezed进程,确定物理主机是否有资源供来宾虚拟机启动。反过来,squeezed负责与每个运行的VM接口通讯,在保证有足够的内存用于VM的前提下,将剩余没有使用的内存返还给主机内存。
运行的日志可以在以下目录查看:/var/log/xensource.log、/var/log/xenstored-access.log和/var/log/squeezed.log。
本文出自 “我拿流年乱了浮生” 博客,请务必保留此出处http://tasnrh.blog.51cto.com/4141731/1786859