zoukankan      html  css  js  c++  java
  • Xen学习——原理要点归纳总结

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

    XEN的系统架构

    Xen Hypervisor

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

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

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

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

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

    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进行硬件访问。

  • 相关阅读:
    创业公司技术总监,去上市公司面试,结果凉了!
    Java开发最常犯的10个错误,打死都不要犯!
    这 17 个 JVM 参数,高级 Java 必须掌握!
    推荐几个顶级的IT技术公众号,坐稳了!
    Spring Boot 面试,一个问题就干趴下了!(下)
    密码已进入"淘汰"倒计时!
    一条简单的 SQL 执行超过1000ms,纳尼?
    天天用Synchronized,底层原理是个啥?
    为什么很多程序员工作时都戴耳机?
    Java转型大数据开发全套教程,都在这儿!
  • 原文地址:https://www.cnblogs.com/kevinji/p/3207779.html
Copyright © 2011-2022 走看看