XEN與VMware ESXi、Hyper-V 以及 KVM 架構與特點比較
阿新 • • 發佈:2019-02-04
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 通訊示意圖