一、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

【转】 XenServer的架构的更多相关文章

  1. 【转】XenServer体系架构解析

    XenServer是一套已在云计算环境中经过验证的企业级开放式服务器虚拟化解决方案,可以将静态.复杂的IT环境转变为更加动态.易于管理的虚拟数据中心,从而大大降低数据中心成本.同时,它可以提供先进的管 ...

  2. 【转】XenServer的架构之Xenopsd组件架构与运行机制

    一.Xenopsd概述 Xenopsd是XenServer的虚拟机管理器. Xenopsd负责:启动,停止,暂停,恢复,迁移虚拟机:热插拔虚拟磁盘(VBD):热插拔虚拟网卡(VIF):热插拔虚拟PCI ...

  3. xenserver+starwind架构布署

    主机 CPU 和主板均需支持 INTER-VT/ AMD-VT ,主板默认可能没开  进BISO开启  下载最新的 xenserver ,授权注册一下 轻松得到授权文件 (鄙视一下VMWARE,看人家 ...

  4. 【转】Xen与XenServer的区别

    说到XenServer,总是离不开Xen,所以我要说他们的区别,得首先从Xen开始说起! Xen体系架构 Xen hypervisor体系架构 Xen 的 VMM ( Xen Hypervisor ) ...

  5. Windows<小白>详细笔记

    Windows 7 部署 =========================================== ========================================== ...

  6. 【转】XenServer架构之XAPI

    一.XAPI对资源池的管理 作为XenServer的管理工具集,XAPI管理XenServer的主机,网络和存储.不管是OpenStack还是CloudStack,如果使用XenServer作为虚拟化 ...

  7. 【转】 XenServer架构之HA概述

    一.XenServer HA概述 XenServer HA是一套全自动功能设计,规划,安全地恢复出现问题的XenServe 主机上的虚拟机的功能组件. 启用 HA 后,XenServer 将持续监视池 ...

  8. 【转】XenServer架构之XAPI的调用流程

    XAPI 调用是使用XML-RPC协议通过网络发送到安装有XenServer 的主机上.XAPI对象的引用不保证对象的永久标识符,引用不允许对象进行相等比较.对同一物体的两个引用,不保证是文本相同的. ...

  9. vSphere、Hyper-V与XenServer 你选哪个?

    vSphere.Hyper-V与XenServer 你选哪个? 当在VMware vSphere.Microsoft Hyper-V与Citrix Systems XenServer之间做出选择时,v ...

随机推荐

  1. 用php做注册审核

    做注册审核就像前面讲的注册登录一样,也是要连接数据库 首先在数据库内要做这样一张表: 表名为users表 里面的列名分别为用户名,密码,姓名,性别,生日,账户的状态,照片 然后就可以写代码了,要注册的 ...

  2. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  3. .NET Core 系列5 :使用 Nuget打包类库

    NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...

  4. Node.js:dgram模块实现UDP通信

    1.什么是UDP? 这里简单介绍下,UDP,即用户数据报协议,一种面向无连接的传输层协议,提供不可靠的消息传送服务.UDP协议使用端口号为不同的应用保留其各自的数据传输通道,这一点非常重要.与TCP相 ...

  5. Visual Studio:error MSB8020(搬运)

    状况如下: error MSB8020: The builds tools for v120 (Platform Toolset = 'v120') cannot be found. To build ...

  6. mysql 行级锁的使用以及死锁的预防

    一.前言 mysql的InnoDB,支持事务和行级锁,可以使用行锁来处理用户提现等业务.使用mysql锁的时候有时候会出现死锁,要做好死锁的预防. 二.MySQL行级锁 行级锁又分共享锁和排他锁. 共 ...

  7. Win10连接远程桌面时提示“您的凭据不工作”

    我遇到这个问题的时候查找网上都给出一堆高大上的解决办法, 然而我的错误实际上是用户名的问题, 很多人以为远程用户名就一定是锁屏状态下的登录名, 其实不是,跟自己设置有关,所以首先应该检查远程用户名是否 ...

  8. closure

    什么是闭包?百度的答案: 闭包是指可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)."闭包&quo ...

  9. 【译】Meteor 新手教程:在排行榜上添加新特性

    原文:http://danneu.com/posts/6-meteor-tutorial-for-fellow-noobs-adding-features-to-the-leaderboard-dem ...

  10. 我的MYSQL学习心得(十四) 备份和恢复

    我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) ...