【转】 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
【转】 XenServer的架构的更多相关文章
- 【转】XenServer体系架构解析
XenServer是一套已在云计算环境中经过验证的企业级开放式服务器虚拟化解决方案,可以将静态.复杂的IT环境转变为更加动态.易于管理的虚拟数据中心,从而大大降低数据中心成本.同时,它可以提供先进的管 ...
- 【转】XenServer的架构之Xenopsd组件架构与运行机制
一.Xenopsd概述 Xenopsd是XenServer的虚拟机管理器. Xenopsd负责:启动,停止,暂停,恢复,迁移虚拟机:热插拔虚拟磁盘(VBD):热插拔虚拟网卡(VIF):热插拔虚拟PCI ...
- xenserver+starwind架构布署
主机 CPU 和主板均需支持 INTER-VT/ AMD-VT ,主板默认可能没开 进BISO开启 下载最新的 xenserver ,授权注册一下 轻松得到授权文件 (鄙视一下VMWARE,看人家 ...
- 【转】Xen与XenServer的区别
说到XenServer,总是离不开Xen,所以我要说他们的区别,得首先从Xen开始说起! Xen体系架构 Xen hypervisor体系架构 Xen 的 VMM ( Xen Hypervisor ) ...
- Windows<小白>详细笔记
Windows 7 部署 =========================================== ========================================== ...
- 【转】XenServer架构之XAPI
一.XAPI对资源池的管理 作为XenServer的管理工具集,XAPI管理XenServer的主机,网络和存储.不管是OpenStack还是CloudStack,如果使用XenServer作为虚拟化 ...
- 【转】 XenServer架构之HA概述
一.XenServer HA概述 XenServer HA是一套全自动功能设计,规划,安全地恢复出现问题的XenServe 主机上的虚拟机的功能组件. 启用 HA 后,XenServer 将持续监视池 ...
- 【转】XenServer架构之XAPI的调用流程
XAPI 调用是使用XML-RPC协议通过网络发送到安装有XenServer 的主机上.XAPI对象的引用不保证对象的永久标识符,引用不允许对象进行相等比较.对同一物体的两个引用,不保证是文本相同的. ...
- vSphere、Hyper-V与XenServer 你选哪个?
vSphere.Hyper-V与XenServer 你选哪个? 当在VMware vSphere.Microsoft Hyper-V与Citrix Systems XenServer之间做出选择时,v ...
随机推荐
- 闲来无聊,研究一下Web服务器 的源程序
web服务器是如何工作的 1989年的夏天,蒂姆.博纳斯-李开发了世界上第一个web服务器和web客户机.这个浏览器程序是一个简单的电话号码查询软件.最初的web服务器程序就是一个利用浏览器和web服 ...
- C语言 · Anagrams问题
问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...
- PHP赋值运算
1. 赋值运算:= ,意思是右边表达式的值赋给左边的运算数. $int1=10; $int1=$int1-6; //$int1=4 echo $int1,"<br>"; ...
- JavaScript实现常用的排序算法
▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...
- 初步认识TDD
TDD,测试驱动开发(Test Driven Development)是极限编程中倡导的程序开发方法,以其倡导先写测试程序,然后编码实现其功能得名.本文将对TDD有一个较为系统的认识. 基础属性 ...
- MyBatis基础入门--知识点总结
对原生态jdbc程序的问题总结 下面是一个传统的jdbc连接oracle数据库的标准代码: public static void main(String[] args) throws Exceptio ...
- Newtonsoft.Json设置类的属性不序列化
参考页面: http://www.yuanjiaocheng.net/webapi/parameter-binding.html http://www.yuanjiaocheng.net/webapi ...
- interpreter(解释器模式)
一.引子 其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中:在实际应用中,我们可能很少碰到去构造一个语言的文法的情况. 虽然你几乎用 ...
- Javascript高性能编程-提高Dom访问速度
在浏览器中对于Dom的操作和普通的脚本的操作处于两个不同的dll中,两个dll的交互是比较耗时的,优化对Dom的操作可以提高脚本的执行速度.下面是对如何优化的一些总结: 将需要多次操作的节点存储在一个 ...
- Android studio使用git教程
①下载Git工具,配置到Android studio中 http://git-scm.com/downloads ------------------------------------------- ...