XEN與VMware ESXi、Hyper-V 以及 KVM 架構與特色比較【非原創】

XEN與VMware ESXi、Hyper-V 以及 KVM 架構與特色比較

版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接和本聲明。
本文連接: https://blog.csdn.net/Kim_Weir/article/details/80555766
XEN 與 VMware ESXi,Hyper-V 以及 KVM 特色比較: 
a.XEN 有簡化虛擬模式,不須要設備驅動,可以保證每一個虛擬用戶系統相互獨立,依賴於 service domains 來完成一些功能; 
b.Vmware ESXI 與 XEN 比較相似,包含設備驅動以及管理棧等基本要素,硬件支持依賴於 VMware 建立的驅動; 
c.Hyper-V 是基於 XEN 管理棧的修改; 
d.KVM 與 XEN 方式不一樣,KVM 是以 Linux 內核做爲管理工具的。 

虛擬機的體系結構 
1.XEN 體系結構 

圖 1. XEN 體系結構圖
 

一個 XEN 虛擬機環境主要由如下幾部分組成: 
XEN Hypervisor; 
Domain 0 —— Domain Management and Control(XEN DM&C); 
Domain U Guest(Dom U) 
a. PV Guest 
b. HVM Guest 

下圖 2 顯示除了各部分之間的關係: 

圖 2. Xen 三部分組成之間關係圖


XEN Hypervisor : 

XEN Hypervisor 是介於操做系統和硬件之間的一個軟件描述層。它負責在各個虛擬機之間進行 CPU 調度和內存分配。XEN Hypervisor 不只抽象出虛擬機的硬件,同時還控制着各個虛擬機的執行。XEN Hypervisor 不會處理網絡、存儲設備、視頻以及其餘 I/O. 

Domain 0: 

Domain 0 是一個修改過的 Linux kernel,是惟一運行在 Xen Hypervisor 之上的虛擬機,它擁有訪問物理 I/O 資源的權限,同時和系統上運行的其餘虛擬機進行交互。Domain 0 須要在其它 Domain 啓動以前啓動。 

Domain U: 

運行在 Xen Hypervisor 上的全部半虛擬化(paravirtualized)虛擬機被稱爲「Domain U PV Guests」,其上運行着被修改過內核的操做系統,如 Linux、Solaris、FreeBSD 等其它 UNIX 操做系統。全部的全虛擬化虛擬機被稱爲「Domain U HVM Guests」,其上運行着不用修改內核的操做系統,如 Windows 等。 

2.Hyper-V 體系結構 

圖 3. Hyper-V 體系結構圖


Hyper-V 是微軟提出的一種系統管理程序虛擬化技術,採用微內核的架構,兼顧了安全性和性能的要求。Hyper-V 底層的 Hypervisor 運行在最高的特權級別下,微軟將其稱爲 ring -1(而 Intel 則將其稱爲 root mode),而虛機的 OS 內核和驅動運行在 ring 0,應用程序運行在 ring 3 下,這種架構就不須要採用複雜的 BT(二進制特權指令翻譯)技術,能夠進一步提升安全性。從架構上講 Hyper-V 只有「硬件-Hyper-V-虛擬機」三層,自己很是小巧,代碼簡單,且不包含任何第三方驅動,因此安全可靠、執行效率高,能充分利用硬件資源,使虛擬機系統性能更接近真實系統性能。 

Hyper-V 支持分區層面的隔離。分區是邏輯隔離單位,受虛擬機監控程序支持,而且操做系統在其中執行。Microsoft 虛擬機監控程序必須至少有一個父 / 根分區,用於運行 64 位版本的 Windows Server 2008 操做系統。虛擬化堆棧在父分區中運行,而且能夠直接訪問硬件設備。隨後,根分區會建立子分區用於承載來賓操做系統。根分區使用虛擬化調用應用程序編程接口 (API) 來建立子分區。 

分區對物理處理器沒有訪問權限,也不能處理處理器中斷。相反,它們具備處理器的虛擬視圖,並運行於每一個來賓分區專用的虛擬內存地址區域。虛擬機監控程序負責處理處理器中斷,並將其重定向到相應的分區。Hyper-V 還能夠經過輸入輸出內存管理單元 (IOMMU) 利用硬件加速來加快各個來賓虛擬地址空間相互之間的地址轉換。IOMMU 獨立於 CPU 使用的內存管理硬件運行,並用於將物理內存地址從新映射到子分區使用的地址。從系統的結構圖,咱們能夠看出來 Hyper-V 與 Xen 的架構很類似。 
a.Vmware ESXI 體系結構 

圖 4. Vmware ESXI 體系結構圖


由上圖咱們能夠看出來管理工具也是直接嵌入到了 ESXi vmKernel 中,沒有再分化出單獨的管理工具,這一點與 Xen 是相區別的。 
a.KVM 體系結構 

圖 5. KVM 體系結構圖


KVM 是一個獨特的管理程序,經過將 KVM 做爲一個內核模塊實現,在虛擬環境下 Linux 內核集成管理程序將其做爲一個可加載的模塊能夠簡化管理和提高性能。在這種模式下,每一個虛擬機都是一個常規的 Linux 進程,經過 Linux 調度程序進行調度。 

經過以上四種虛擬機的體系結構圖,咱們能夠看出他們在整個系統中的位置,以及相互之間的區別。 


-------------------------------------------------------------------------------- 


XEN 工做原理 

上面咱們針對 Xen 的體系結構進行了簡單的描述,咱們知道 Xen 主要由 Xen Hypervisor,Domain0,DomainU 三部分組成。下面經過 Domain 0 與 Domain U 的通訊以及這三部分的交互來探討一下 Xen 的工做原理。 
以前咱們已經提到過 Domain U 分爲 PV 客戶系統和 HVM 客戶系統兩種,咱們首先討論一下 PV 客戶系統,也就是半虛擬化操做系統工做原理。 

首先咱們須要知道在 Domain 0 中有兩個驅動 Network Backend Driver 和 Block Backend Driver,它們分別用來處理來自 Domain U 的網絡和本地磁盤請求。因爲 Xen Hypervisor 不會支持網絡和磁盤請求的,所以一個 PV(半虛擬化)客戶系統必須經過和 Xen Hypervisor、Domain 0 通訊,從而來實現網絡和磁盤請求。因爲 Xen 文檔中已經探討過 PV 客戶系統如何將一個數據寫到本地硬盤,下面咱們就來討論一下 PV 客戶系統如何將一個數據發送到網絡中去。在這以前咱們首先要了解到一點,那就是 Domain U PV Guest 中也包括兩個驅動「PV Network Driver」和「PV Block Driver」,它們分別也是用來處理髮送網絡和本地磁盤請求用的,這與 Domain 0 中的兩個驅動是相對應的。 

當一個 PV 客戶系統的網絡設備驅動程序接收到一個發送數據請求的時候,而且經過 Xen Hypervisor 發送數據到本地網絡設備(網卡之類的設備)中,這個網絡設備是和 Domain 0 共享的。在 Domain 0 和 Domain U 之間存在一個事件通道(event channel),經過該通道兩者進行異步的域間中斷通訊。Domain 0 會接收到一個來自 Xen Hypervisor 的中斷,觸發 PV Network Backend Driver 訪問上述網絡設備,讀取來自 PV 客戶系統的數據,而後將這些數據發送出去。 

下圖中事件通道表示爲鏈接 Domain 0 與 Domain U 的一個區域,這是系統工做流的一個簡化。事實上事件通道運行在 Xen Hypervisor 中,經過 Xenstored(Xenstored 維護一個信息檔案,包括內存和創建在 Domain 0 與 Domain U 之間的事件通道。Domain 0 經過改變這個檔案來設置和其餘虛擬機的設備通道)中的特定中斷實現,提供 Domain 0 與 Domain U 之間的快速共享網絡設備,見圖6。 

圖 6. Domain 0 與 Domain U PV Guest 通訊示意圖

上面咱們已經分析了 PV 客戶系統的工做原理,下面咱們再簡要的介紹一下 HVM 客戶系統的工做原理。 

因爲一個 HVM Guests 虛擬機中沒有上面提到得 PV driver,因此 Xen 在 Domain 0 中爲每個 HVM Guest 都啓動一個守護進程 Qemu-dm 處理來自客戶系統的網絡和磁盤請求,因此當一個 HVM Guest 有相應的網絡和 I/O 請求的時候,它就會直接與 Domain0 中和它相對應的 Qemu-dm 來進行交互,經過 Domain 0 最終達到訪問網絡設備或者磁盤的目的。見下圖 7: 

圖 7. Domain 0 與 Domain U HVM Guest 通訊示意圖 
相關文章
相關標籤/搜索