设为首页 收藏本站
查看: 1375|回复: 0

[经验分享] Xen工作原理

[复制链接]

尚未签到

发表于 2015-4-13 10:37:11 | 显示全部楼层 |阅读模式

执行摘要
  本文档涵盖了Xen Hypervisor的高层架构概要视图,及其用于支持完整虚拟环境的相关工具和应用。
  该架构文档基于Xen 3.4 发行版,仅仅介绍了Xen的整体架构。更多的完整架构描述,请参考http://wiki.xensource.com/xenwiki/Books。
Xen虚拟环境组件
  Xen虚拟环境由若干协同工作的组件组成,从用户角度看,其包括:
  Xen Hypervisor
  Domain0 Guest
  Domain Management and Control(Xen DM&C)
  DomainU Guest(Dom U)
  PV Guest
  HVM Guest
  这些组件的基本组织如下图:
DSC0000.jpg
Xen Hypervisor
  Xen Hypervisor是一个基本的软件抽象层,其位于硬件之上,操作系统之下。它负责cpu的调度,并为每个运行
  于硬件之上的虚拟机划分内存空间。监视器(Xen hypervisor)为虚拟机提供硬件抽象,与此同时,由于各个虚
  拟机分享共同的运行环境,监视器还需要控制虚拟机的运行。监视器对网络、外存设备、视频、或者其他可以在
  计算机系统中见到的I/O功能一无所知。
  
Domain 0
  Domain 0是一个虚拟机。它是修改过的linux 内核,其运行在Xen hypervisor之上,拥有访问物理I/O资源的特
  殊权限,并且和其他虚拟机(Domain U:PV and HVM Guests)进行通信。需要指出一点,Domain 0是唯一的。
  Xen完整虚拟环境的构建要求Domain 0在其他虚拟机能够启动之前运行起来。
  
  在Domain 0中,包含两个驱动:Network Backend Driver 和 Block Backend Driver。这两个驱动可以支持来
  自于Domain U的网络与本地磁盘访问请求。Network Backend Driver与本地网络硬件直接通信,以此处理来自
  于Domain U所有虚拟机访问网络设备的请求。Block Backend Driver与本地存储设备进行通信,以此完成来自于
  Domain U的磁盘数据读写请求。
DSC0001.jpg
Domain U
  DomainU 没有直接访问物理硬件的权限,但Domain 0有。此外,DomainU通常被看作是没有直接读写I/O权限的(
  DomainU中的“U”来自于英文单词unprivileged)。所有运行在Xen hypervisor之上的平行虚拟化机器都被看作是
  Domain U PV Guests。同时,其操作系统为修改过的linux,比如Solaris,FreeBSD,以及其他UNIX操作系统。
  所有运行于Xen hypervisor之上的完全虚拟化机器都被看作是Domain U HVM Guests。同时,其操作系统为标准的
  windows或者其他未作修改的操作系统。
  
  Domain U PV Guest 虚拟机能够知晓自己没有直接访问硬件的权限,也能知道其他虚拟机也运行在同一个物理机器上。
  与此相反的是,Domain U HVM 虚拟机并不知道它正和其他虚拟机在同一个物理机器上分享处理器,也不知道其他虚拟
  机正在运行。
  
  Domain U PV Guest虚拟机包含两个驱动:PV NetworkDriver和PV Block Driver,其用于处理网络和磁盘访问。
DSC0002.jpg
Domain U HVM Guest 虚拟机虽然没有PV drivers,但Domain 0却为它们启动了一个特殊的Qemu-dm镜像。

Qemu-dm支持Domain U HVM Guest对网络和磁盘的访问请求。


Domain U HVM Guest在初始化时必须尽可能地添加一个软件Xen virtual firmware,该软件用于模拟操作系统

启动之前所需的BIOS。更多有关Xen virtual firmware的信息请参考后续章节。

DSC0003.jpg
Domain Management and Control
  开源社区把一系列linux守护进程划分为域管理和控制工具。这些守护进程存在于Domain 0虚拟机,它们用于支持
  整个虚拟环境的管理和控制。下面的图表展示了Domain 0中的守护进程。通过这个图表,可以对整个架构有更清
  晰的理解。
DSC0004.jpg
Xend
  Xend守护进程是一个Python应用程序,它被看作Xen虚拟环境的系统管理器。Xend利用Libxenctrl获得对Xen
  hypervisor的访问请求。所有需要被Xend处理的请求都通过一个Xm工具的XML RPC接口被发送到Xend。
  
Xm
  Xm是一个命令行工具,它获取用户输入,并把这些输入的命令通过XML RPC传输到Xend。
  
Xenstored
  Xenstored守护进程维护一个信息注册表,这些信息涉及内存、Domain 0与所有其他Domain U Guests之间的
  事件通道链。Domain 0虚拟机利用这个注册表来设置与其他虚拟机之间的设备通道。(更多的细节信息,请参看
  Domain 0 to Domain U Communication章节)
  
Libxencrl
  Libxenctrl是一个C程序库,它使得Xend可以通过Domain 0访问Xen hypervisor。privcmd是Domain 0中有一
  个特殊的驱动,它将Xend的访问请求转发给hypervisor。
DSC0005.jpg
  
Qemu-dm
  每个运行在Xen虚拟环境中得HVM Guest虚拟机需要它们自己的Qemu守护进程。这个工具处理所有来自于
  Domain U HVM Guest虚拟机的网络与磁盘访问请求,使得完全虚拟化在Xen系统环境中得以实现。Qemu
  需要访问网络和I/O设备,所有它必须处于Xen hypervisor之外。正因为如此,Qemu处于Domain 0虚拟机中。
  
  Stub-dm是一个新工具。它使得Xen未来的版本不需要为么一个Domain U HVM运行Qemu,而是为每个
  Domain U HVM提供一个可用的服务程序集。这个特性在Xen 3.2版本中还不可使用,但目前已经是
  Xen-unstable版本的一部分。此外,Xen 3.3版本将会发布该特性。
  
Xen Virtual Firmware
  Xen Virtual Firmware是一个被嵌入到Domain U HVM Guest中的虚拟BIOS,它使操作系统接收其正常引导
  过程所需要的标准启动指令,以得到一个PC兼容的软件环境。
  
Xen Operation
  本章描述了并行虚拟化的Domain U虚拟机如何通过Xen hypervisor和Domain 0虚拟机完成与外部网络或存储
  设备的通信。
  
Domain 0 to Domain U Communication
  较早一段时期,Xen hypervisor并不支持网络和磁盘访问请求。因此,Domain U PV Guest必须通过Xen
  hypervisor与Domain 0通信以完成网络或磁盘访问请求。下面的例子描述了Domain U PV Guest 如何往
  本地磁盘写数据。
  
  Domain U PV Guest虚拟机中的PV block driver接收往磁盘写数据的请求,然后通过Xen hypervisor将数
  据存放到本地内存中的某个适当的区域。需要指出的是,该内存区域由该Domain U PV Guest虚拟机与
  Domain 0共享。在Xen hypervisor中,存在异步域间中断,位于Domain 0和Domain U PV Guest之间的
  事件通道允许Domain 0和Domain U PV Guest可以通过该异步域间中断完成通信。Domain 0会收到一个来
  自Xen hypervisor的中断请求,该中断请求会导致PV Block Backend Driver访问本地系统内存并从
  Domain U PV Guest虚拟机的共享内存中读取适当的数据块。然后,共享内存中的数据将被写到本地硬盘的某
  个特定位置。
  
  下图中,Domain 0和Domain U PV Guest之间的事件通道链接简要地展示了系统工作原理。实际上,事件通道
  使用在Xenstored中注册的特殊中断处理程序,运行在Xen hypervisor之上。这些特殊中断处理程序允许
  Domain 0和Domain U PV Guest通过本地内存快速地共享信息。
  
  下面的图展示了之前所描述的系统业务。
DSC0006.jpg
Xen PCI Passthru
  为了提高整体性能,减轻Domain 0的负担,Xen设计了PCI Passthru这样一个新特性。PCI Passthru允许
  Domain U Guest拥有直接访问本地硬件的权限,而不是通过Domain 0来访问硬件。下图描述了这个特性是
  如何工作的:
DSC0007.jpg
  Domain U Guest拥有直接同特殊硬件对话的权利,而不是之前那种使用Frontend 和Backend drivers的方法。
  
Glossary
C: http://www.cprogramming.com/; a computer programming language


Daemons: http://en.wikipedia.org/wiki/Daemon_(computer_software); a program

running in the background rather than under direct control of a user


Driver: http://en.wikipedia.org/wiki/Device_driver; program allowing software to

interact with hardware


Full Virtualization: http://en.wikipedia.org/wiki/Full_virtualization; a virtual machine not aware of its virtualization


Interrupt: http://en.wikipedia.org/wiki/Interrupt; signal from hardware to software

requesting a specific action in software


Kernel: http://en.wikipedia.org/wiki/Linux_kernel; the central component of a computer operating system


Paravirtualized: http://en.wikipedia.org/wiki/Paravirtualization; virtual machine running on a hypervisor that is aware of it being virtualized]


Python: http://www.python.org/; a dynamic object oriented programming language


ROM BIOS: http://en.wikipedia.org/wiki/BIOS; software instructions run on a machine when turned on


XML PRC: http://www.xmlrpc.com/; method for an application to leverage another

application using HTTP for the remote procedure call and XML as the encoding

  
  PS:本文译自http://xen.org/files/Marketing/HowDoesXenWork.pdf
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56591-1-1.html 上篇帖子: XEN笔记 下篇帖子: Xen server四虚拟机管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表