Xen是半虚拟化,需要修改操作系统内核。Vmware是完全虚拟化。

XEN的系统架构

Xen Hypervisor

  1. 直接运行在硬件上,介于操作系统和硬件之间的一层软件,负责管理CPU、内存、中断。

(1)    负责在各个虚拟机之间进行CPU调度和内存分配。

(2)    抽象出虚拟机的硬件,并控制各个VM的执行。

(3)    Xen Hypervisor不会处理网络、存储、视频及其他I/O。

  1. 是在bootloader之后运行的第一个程序。

Guest Domains/Virtual Machines/Domain U

非特权domain,在Xen中运行的一个虚拟机实例,不直接访问硬件。VM相互隔离,运行自己的操作系统和应用。Xen 的guest完全从硬件隔离,没有特权来访问硬件或IO。

客户机类型

(1)    Domain U PV Guests:运行在 Xen Hypervisor上的所有半虚拟化虚拟机。VM上运行的是被修改内核的操作系统。Eg:Linux。

PV Guest有两个驱动:PV网络驱动、PV Block驱动。

(2)    Domain U HVM Guest:所有的完全虚拟化虚拟机或硬件辅助的虚拟化(Intel VT)。Eg:Windows。Xen 使用Qemu来仿真PC硬件。全虚拟化客户机不需要任何内核支持。全虚拟化客户机要比半虚拟化客户机慢,因为需要仿真。

在Domain 0中为每个HVM客户机启动一个特殊的守护进程——Qemu-dm。Qemu-dm支持HVM客户机对于网络和磁盘访问请求。

(3)    PVHPV in an HVM Container:

PV客户机为boot和I/O使用PV驱动,使用HW虚拟化扩展。??

Domain 0

  1. 是一个修改过的Linux kernel,唯一运行在Xen Hyperviosr之上的VM。

(1)    拥有访问物理I/O资源的权限;

(2)    和系统上运行的其他VM交互;

(3)    需要在其他domain启动之前启动。

  1. Domain0包含系统中所有设备的硬件驱动,是其他虚拟机的管理者和控制者。
  2. Domain0也包含控制栈,管理VM创建、删除和配置。
  3. 特权虚拟机,可直接访问硬件,处理所有的系统级I/O函数,与其他虚拟机交互。

Domain 0有两个驱动

(1)Network Backend Driver:处理来自网络的请求。处理所有来自于DomainU虚拟机的请求的本地联网硬件。

(2)Block Backend Driver:处理本地磁盘请求。处理基于Domain U需求的本地存储磁盘读写数据。

Domain的管理和控制:

有一系列用于虚拟环境管理和控制的守护进程(daemons)在domain0虚拟机中。

1.Xend:

Xend守护进程是一个Python应用,Xen环境的系统管理器。支持libxenctrl库,来提出Xen Hypervisor的请求。所有的请求被处理,由XM工具通过一个XML RPC接口,由Xend提交给Domain0。(All requests processed by the Xend are delivered to it via an XML RPC interface by the Xm tool)

2.Xm:一个命令行工具,用户给用户输入,并且由XML PRC传到Xend。

3.Xenstored:

在domain0和所有Domain U客户机之间维护一个包含内存和事件通道链接的记录。

4.Libxeenctrl:是一个提供给Xend的通过Domain0与Xen Hypervisor通信能力的C库。

5.Qemu-dm:

每个HVM客户机运行在一个需要它自己Qemu守护进程的Xen环境。在一个全虚拟化机器的Xen环境中,这个工具用来处理所有的来自于Domain U HVM客户的网络和磁盘请求。Qemu需要访问网络和I/O,因此必须存在于Xen Hypervisor外,建立于Domain0中。

新版Xen中,有个新的工具——Stub-dm,为每个Domain U HVM客户机删除了Qemu,取而代之,它为每个Domain U HVM客户提供一组服务。

6.Xen虚拟固件:

是一个虚拟的BIOS,插入到每个domain U HVM客户机中,保证操作系统接收所有标准启动指令,在通常的引导启动期间提供一个标准的PC兼容软件环境。

Toolstack和控制台:

Toolstack:Domain 0包括一个控制栈,允许用户管理虚拟机创建、销毁和配置。Toolstack通过命令行控制台、图形接口或cloud orchestration stack(如openstack或cloudstack)作为接口驱动。

Xen运行带有很多不同的toolstack,每个toolstack利用一个运行不同工具的API。

Xen操作:

半虚拟化情况下,Domaiin U通过Xen Hypervisor和Domain0与外部网络或存储通信,以完成一个网络或磁盘请求。

  1. Domain U PV客户机PV块驱动通过Xen hypervisorz占用和domain0共享的局部存储器,来接收一个写本地磁盘和数据的请求。
  2. 一个事件通道(event channel)Domain0和Domain U PV客户机存在,允许他们通过在Xen hypervisor中的inter-domain中断异步通信。

(1)    事件通道:是一个在Domain0到Domain U PV客户机的直接链路。

(2)    事件通道通过注册在Xenstored中的带有特殊中断的Xen Hypervisor运行,Domain 0和Domain U PV客户机两者访问本地内存来快速共享信息。

  1. Domain0从Xen hypervisor中接收一个中断,导致PV Block Backend Driver访问本地系统内存从Domain U PV客户共享的内存来读合适的块。共享内存中的数据写入到本地磁盘一个特殊的区域。
  2. Xen PCI Passthru:

改善所有的性能,并且降低负载; PCI Passthru,允许Domain U客户机直接访问本地硬件,没使用Domain U进行硬件访问。

最新文章

  1. Ubuntu14-04 MySQL-5.6.21通用二进制安装
  2. 增量式PID计算公式4个疑问与理解
  3. js继承的概念
  4. shell读取文件每行,并执行命令
  5. windows查看端口占用
  6. Google Chrome浏览器各版本直接下载地址
  7. Pox组件
  8. 使用jQuery动态加载js脚本文件的方法
  9. hyperv虚拟机网络速度慢问题的解决办法
  10. WPF集合控件实现分隔符(ItemsControl Splitter)
  11. Python爬虫从入门到放弃(二十二)之 爬虫与反爬虫大战
  12. 201521123083《Java程序设计》第13周学习总结
  13. 12.22 大湾区.NET Meet 大会
  14. 使用xheditor时 cloneRange错误 ext.net
  15. JavaScript中this 详解
  16. Java 连接远程Linux 服务器执行 shell 脚本查看 CPU、内存、硬盘信息
  17. Vec3b类型数据确定颜色通道
  18. python作业之修改用户配置文件
  19. Promise异步编程整理
  20. Java基础知识强化之集合框架笔记79:HashMap的实现原理

热门文章

  1. JavaScript 正则表达式相关理解
  2. Write a beautiful button
  3. Mac OS X Yosemite 10.10 配置 Apache+PHP 教程注意事项
  4. s实现指定时间自动跳转到某个页面
  5. ActiveMQ(5.10.0) - Building a custom security plug-in
  6. 上传系列:jquery.upload.js
  7. HTTPClient模块的HttpGet和HttpPost
  8. Android 分析工具 APKAnalyser
  9. DOS批处理命令-if语句
  10. VBA 将 ANSI 转换为 UTF-8文件