Xen虛擬化 介紹

2021-08-16 06:18:49 字數 3730 閱讀 7904

虛擬化技術簡介——xen

虛擬化技術從概念上非常類似於**,乙個系統假扮成兩個或多個相同的系統。大多數現代作業系統都包含乙個簡單的虛擬化系統,每乙個正在執行的程序都認為自己是系統唯一執行的程序,

這是因為cpu和記憶體被虛擬化了。大家每天都在使用著某種形式的虛擬化。

cpu的虛擬化

cpu虛擬化從某種程度看來是非常簡單的,當程序a正在占用cpu計算,另乙個程序b需要使用cpu的時候,b就對cpu發出中斷申請,cpu儲存程序a的執行狀態資料,中斷cpu執行,程序b開始使用cpu計算。 過了一段時間程序b儲存執行狀態資料,中斷,程序a繼續占用cpu計算。

虛擬cpu和物理cpu是不一樣的,當作業系統正在執行、交換的時候,cpu處在特權級模式(privileged mode).此時系統允許某些特定的執行。如直接通過實體地址訪問記憶體(這個作業系統通常是不允許的)

cpu的指令劃分為3類:

1.特權級指令:指的是那些可能執行在特權級模式,但是一旦退出特權級模式之後將發生陷入指令。

2.控制敏感指令:指的是那些嘗試著改變系統資源配置的指令。

3.行為敏感指令:指的是那些根據資源配置不同有不同的表現行的指令,包括所有對虛擬位址的load和store操作的指令。

為什麼要虛擬化?

虛擬化技術的根本目的和多工作業系統的目的是一樣的,即計算機擁有不止能滿足乙個任務需要的處理能力。

虛擬化的優點:

1.虛擬機器可以以非常低的開銷進行轉殖

2.虛擬化技術的另乙個巨大優勢就是可移植性。

3.能源開銷非常低也是虛擬化技術的乙個吸引人之處。

4.一台虛擬機器要比一台物理機器更容易攜帶。

5.相對於乙個作業系統上執行的程序來說,一台虛擬機器提供了更深層次的隔離。

歷史上第一台完全支援虛擬化的機器是ibm的vm,它作為ibm360專案的一部分而誕生。

x86架構虛擬化解決方案:

一、二進位制翻譯

是乙個解決x86架構虛擬化問題的方法,它通過vmware而普及。該方法有乙個顯著的優點:他允許絕大多數的虛擬化環境執行在 使用者空間,但也因此造成了效能的損失。二進位制翻譯需要虛擬化環境掃瞄指令流並將特權級指令標識出來,  然後這些指令所進行的操作由他們的**指令來完成。這個方法在效能表現欠佳,特別是做任何同i/o操作的先關的頻繁操作時, 對不安全指令的位置的快速快取能夠帶來一些效能加速,但是也會帶來記憶體的一些開銷。

二、泛虛擬化

以乙個作業系統的視角來看,兩者最大的不同是:在xen系統中,作業系統執行在ring 1級上,而真實的x86系統中,作業系統是直接執行在ring 0上,詳細介紹請見我關於cpu特權環的介紹在xen系統中,guest os 不能執行任何特權級指令,為了提供相似的功能,hypervisor提供了一整套hypercall(高階呼叫)來完成相關的功能。

下圖是原系統和泛虛擬化的系統呼叫的不同機制:

xen和linux一樣使用的是ms-dos的系統呼叫機制,而並沒有採用想freebsd使用的unix呼叫機制。這就表示hypercall的引數都儲存在暫存器中,而不是儲存在堆疊中。

硬體輔助虛擬化

amd虛擬化技術稱之為amd-v

amd-v技術為hypervisor提供兩種方法解決記憶體分割問題。第一種模式是 「影子頁表」guest os 無論什麼時間嘗試修改自身的頁表,該模式都會允許hypervisor發生陷入;

第二種模式是「巢狀頁表」 巢狀頁表所做的工作就像它的名字那樣,他在虛擬記憶體中又增加了乙個間接層。mmu像作業系統定義的那樣解決了虛擬位址到實體地址的轉換,現在通過hypervisor定義的另一套頁表,這些實體地址講過被

轉換成為真實的實體地址。應為這個轉換過程是在硬體條件下的完成的,所以他和通常的虛擬位址查詢一樣快。

intel虛擬化技術稱之為ivt(intel virtualization technology)

ivt給處理器新增了乙個新的模式,叫做vmx。hypervisor能夠執行正在vmx模式下,並對執行在ring 0上層的作業系統透明。當cpu執行在vmx模式下,以乙個為修改的作業系統視角來看沒有任何區別,

以guest os 的視角來看,所有的指令照舊做他們應該做的事情,並且只要hypervisor正確無誤的執行**操作,那麼系統就不會出現錯誤。在某些情況下,硬體虛擬化要比軟體虛擬化快的多。

xen的理念

方案和機制分離-乙個好的系統設計的關鍵性思想是方案和機制的分離。

xen自身不支援任何外部裝置。xen僅僅是提供了乙個讓guest os 直接訪問物理裝置的機制。這樣guest os可以使用乙個已經存在的裝置驅動程式。。當然為了

是多個guest os 都可以訪問裝置,xen在這裡設定了乙個機制。授權表介面允許開發者將內容頁的訪問授權給其他的guest os。

做的越少越好

xen每乙個新的發布版本都嘗試著比前乙個版本的xen做的更少,這樣做的原因是xen執行在乙個非常高的特殊級別上-甚至比作業系統的執行級別還要高;一旦出現乙個bug

就會是毀滅性的。就像前段時間發現xen的bug,影響的非常廣泛的雲服務廠商,造成部分雲服務主機必須要冷重啟才能完成bug的修復,應為xen是非常底層的,對業務造成了一定的影響。

xen的系統結構

hypervisor,核心,應用程序之間的關係

對於在xen上執行的核心來說,最大的變化是離開的ring 0的執行級。具體轉移到哪個ring級,根據平台的不同而不同,在ia32系統中,核心轉移到了ring1 。如圖

當amd將ia32架構同x86-64位架構結合在一起時,它所做的事就是減少ring級別,在沒有ring1 和ring2的系統中,不得不通過修改xen使得操系統執行在ring3級上。如圖

domain 0的角色            

hypervisor的職責就是允許guest os的執行。xen在乙個稱為domain的環境下執行 guest os ,它包含了乙個完整的虛擬執行環境。當xen啟動時他做的第一件事就是裝載domain 的guest os核心。

該核心作為乙個模組在啟動裝載單元中被代表性的指定,因此它可以在沒有任何檔案系統驅動程式的情況下被載入。

domain 0是第乙個執行的guest os,並且具有更高的特權級。相應地,其他domain被稱之為 domain u(dom u)-u 代表的意思是非特權級(unprivileged)然而,當前已經可以將dom 0的一些職責叫給dom u guest os,這樣做將使得兩者之間的界限變的模糊。xen本身不包含任何的裝置驅動和使用者介面。這些工作都是作業系統及執行在dom0 之上的使用者空間的工具來提供的。

dom0 guest os 最重要的乙個任務就是處理外設。因此它比其他的guest os具有更高的特權級,所以可以訪問硬體。

任何驅動都有3個主鍵:

分塊裝置驅動;多路復用器;真實的驅動

非特權domain

對於domain u 有著更多的限制,它通常不被允許執行任何能夠直接訪問硬體的hypercall,雖然某些情況下他被允許訪問乙個或更多的裝置。

應為不能直接訪問硬體,所以dom u 實現了一些裝置驅動的前端,在最低限度下,需要xenstore來控制好裝置驅動,

出處:

XEN 半虛擬化 全虛擬化

半虛擬化,支援通過 http ftp nfs 方式進行安裝。全虛擬化,支援通過 iso檔案 光碟機 網路pxe 安裝。半虛擬化的意思是需要修改被虛擬系統的核心,以實現系統能被完美的虛擬在xen上面。完全虛擬化則是不需要修改系統核心則可以直接執行在xen上面。pv vs.fv pv para vrit...

開源虛擬化專案 Xen

對於雲計算來說,虛擬化是不是 必須 的,但它對於絕大多數雲計算公司來說是需要的。實際上,正是虛擬化技術的出現加速雲計算的發展。因為它開源,它免費,xen的是乙個優秀的專案。但除了採納與建立雲計算基礎設施,許多使用者或者工程師並不熟悉這個專案,雖然它對虛擬化和雲計算都很重要。四月 16日,xen.or...

虛擬化介紹

1 完全虛擬化 full virtualization 需要跑在宿主機之上 全虛擬化也成為原始虛擬化技術,該模型使用虛擬機器協調guest作業系統和原始硬體,vmm在guest作業系統和裸硬體之間用於工作協調,一些受保護指令必須由hypervisor 虛擬機器管理程式 來捕獲處理。guest執行特權...