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

[经验分享] Xen 架构

[复制链接]

尚未签到

发表于 2015-10-11 13:02:59 | 显示全部楼层 |阅读模式
  小结:
  这个文档是从高层次分析Xen hypervisor的整体架构以及相关工具和应用程序。这个架构是基于2008年2月发布的Xen3.2版本。该文档是Xen架构的简介,更多信息请参考Xen books。
  
  Xen组成部分
Xen虚拟环境由以下几个组成部分:
Xen HypervisorXen管理程序
Domain 0域0
Domain Management and Control(Xen DM&C)域管理控制程序
Domain U(Dom U) PV Guest域U半虚拟化客户
Domain U(Dom U)HVM Guest域U全虚拟化客户
  下图是Xen的架构
   DSC0000.png
  
  Xen Hypervisor Xen管理程序
Xen Hypervisor是软件的抽象底层,位于硬件和操作系统之间。它负责管理各个虚拟机的CPU时间分配和内存分配。由于管理程序和上层虚拟机共享进程环境,所以管理程序不仅向虚拟机抽象出底层的硬件,还对上层虚拟机进行控制,它不负责网络,硬盘,音频或者其他IO功能。
  
  域0
域0,基于修改过的linux内核,它是一个运行在Xen Hypervisor上的虚拟机,它具有访问物理IO资源的权限,并能同其他的虚拟机( Domain U:PV HVM Guests )进行交互。域0启动后,通过域0来启动其他虚拟机。
域0中带有(Network backend Driver)网络后端驱动和(block Backend Driver)块设备后端驱动,通过驱动可以访问网络和硬盘,其他虚拟机可以通过域0使用网络和硬盘资源(如下图)。网络后端驱动直接和网卡通信,处理其他虚拟机发送过来的任务。块设备后端驱动根据其他虚拟机的需求读写硬盘。
DSC0001.png
  
  域U
Xen Hypervisor上运行的半虚拟化的机器叫做PV客户机,可以运行修改过的linux操作系统,如Solaris、FreeBSD。Xen hypervisor上运行的全虚拟化机器叫做HVM客户机,可以运行Windows或者其他未修改过的操作系统。
  PV虚拟客户机不直接访问硬件,可以识别运行在同一机器上的其他虚拟机。HVM虚拟客户机可直接访问硬件,通其他HVM虚拟机共享CPU处理时间。PV虚拟客户机的网络和硬盘驱动分别是PV Network Driver和PV Block Driver。
DSC0002.png
  
HVM虚拟客户机没有PV虚拟客户机的那两个驱动,它由域0给分配一个进程,叫Qemu-dm。Qemu-dm可以支持HVM虚拟客户机使用网络的硬盘资源。由于Xen用来模拟BIOS的虚拟固件要作为软件加载HVM虚拟客户机的底层,所以HVM虚拟客户机需要这样的要求进行初始化。
  域管理控制一些Xen相关的进程统称域管理控制进程。这些进程在域0虚拟机中,用于管理和控制整个虚拟环境。下图阐述了域0外的进程和域0的关系,可以清楚的理解整体架构。
DSC0003.png
  
  Xend
Xend是基于Python语言的用于管理xen环境的进程。它通过libxenctrl库来访问xen hypervisor,所有要求xend处理的请求都由xm工具通过XML RPC接口发送给xend。
  
DSC0004.png
  XM
XM命令工具接受用户的输入,通过XML RPC发送给xend。
  
  Xenstored
Xenstored进程包含内存、域0和其他虚拟机之间的事件链接的注册信息,域0虚拟机通过这些注册信息同系统内的其他虚拟机建立通信频道。
  
Libxenctrl
Libxenctrl是一个c库,用来支持xend通过域0同xen hypervisor之间的通信。域0中有个特别的驱动,用来向xen hypervisor发送请求。
  
DSC0005.png
  Qemu-dm
Xen环境中的每个HVM虚拟客户机需要有自己的Qemu进程,这个进程用来处理HVM虚拟客户集中所有的网络和硬盘请求,实现全虚拟化。由于Qemu要直接访问网络和IO口,所以它位于xen hypervisor的外面,也就是存在于域0中。
一个叫做Stub-dm的新工具已经在开发中,采用Stub-dm之后,不用再每个HVM虚拟客户机中都建立一个Qemu,Stub-dm可以给HVM虚拟客户机提供服务。Xen 3.3以后的版本会包含这个工具。
  
Xen 虚拟固件
Xen虚拟固件时虚拟BIOS,插入每个HVM虚拟客户机,保证他们的操作系统在正常启动时能得到启动所需的所有标准指令。
  
Xen操作
这部分阐明一个半虚拟化的客户机如何通过域0和xen hypervisor访问网络和存储设备。
域0和域U通信
前面提到过,xen hypervisor没有支持网络和硬盘的驱动,所以域U必须通过xen hypervisor同域0通讯,进而完成网络和硬盘操作。下面的例子是PV虚拟客户机想硬盘中写入数据的过程。
PV虚拟客户机的PV块设备驱动收到一个像本地磁盘中写入数据的请求,它先通过xen hypervisor将数据写入内存的合适位置(PV虚拟客户机和域0共享内存),域0和域U之间的事件信道,允许他们通过xen hypervisor进行域间的异步中断。域0收到xen hypervisor发来的中断,中断使得PV后端块设备驱动到域0和域U共享内存中读取合适的数据,内存中的数据通过域0写入硬盘。
事件信道如下图所示,图中域0和域U之间的直接连接表示事件信道。实际上,事件信道要通过xen hypervisor使用xenstored中注册过的特定中断来实现域0和域U之间通过本地内存进行数据共享。
图示详细的说明了整个过程。
DSC0006.png
  
  
  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
  

运维网声明 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-125452-1-1.html 上篇帖子: VMM CPU Scheduling in Xen 下篇帖子: Linux 中的 XEN 虚拟化技术
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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