Xen學習——原理要點概括總結

Xen是半虛擬化,須要修改操做系統內核。Vmware是徹底虛擬化。ios

XEN的系統架構網絡

Xen Hypervisor架構

  1. 直接運行在硬件上,介於操做系統和硬件之間的一層軟件,負責管理CPU、內存、中斷。

(1)    負責在各個虛擬機之間進行CPU調度和內存分配。dom

(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進行硬件訪問。

相關文章
相關標籤/搜索