(三)虛擬化技術重點筆記與總結

聽沈老師的作業系統與虛擬化總結記錄

一、傳統伺服器

傳統是煙囪式結構,為應付少量峰值負載而過度配置伺服器,導致資源利用率低

缺陷1:據統計資料中心伺服器的平均使用率低於 30%,但仍有相當數量的伺服器無法滿足其服務水平目標

缺陷2:一個新應用的部署需要歷經預算、採購、安裝測試、上線等過程,週期長達數週至數月,難以及時響應業務需求

缺陷3:伺服器數量和管理成本與應用數量呈線性關係,IT管理和成本壓力巨大

“冰山模式”– 傳統資料中心的成本支出結構:30% 預算用於新基礎設施建設和新應用開發,70% 預算用於現有設施維護和人員支出

亞馬遜最開始只是賣書的,但是後來由於空間比較多,不想浪費,開始賣服務。

二、虛擬化定義與本質

虛擬化本質:將原來執行在真實環境上的計算系統或元件執行在虛擬出來的環中

虛擬化定義:虛擬化是表示計算機資源的抽象方法,通過虛擬化可以用與訪問抽象前資源一致的方法訪問抽象後的資源。這種資源的抽象方法並不受實現、地理位置或底層資源的物理配置的限制 (維基百科)

三、虛擬化常見型別

虛擬化常見型別:基礎設施虛擬化、系統虛擬化、軟體虛擬化

基礎設施虛擬化包括:網路虛擬化,儲存空間虛擬化;系統虛擬化包括:PC/伺服器虛擬化:(系統虛擬化的最大價值所在)、桌面虛擬化;軟體虛擬化包括(讓軟體不依賴作業系統):高階語言虛擬化、應用程式虛擬化。

 

四、虛擬化關鍵技術

1.相關定義與概念

虛擬機器系統是通過在現有平臺(裸機或作業系統)上增加一個虛擬層VMM(virtual Machine Monitor或Hypervisor)來實現

VMM是一個系統軟體,可以維護多個高效的、隔離的程式環境. VMM管理計算機系統的真實資源,為虛擬機器提供介面

VM(Virtual Machine)指通過軟體模擬的具有完整硬體系統功能的、執行在一個完全隔離環境中的完整計算機系統。

host OS有一些VMM是安裝在已有作業系統之上的,原有作業系統為host OS

2.全虛擬化:

原本的作業系統調直接呼叫硬體介面,給底層硬體傳送的指令是二進位制指令,加了一層虛擬機器之後,作業系統不能直接呼叫底層,但依然傳送二進位制指令,這時候,虛擬機器要攔截下指令,由虛擬機器完成呼叫,所以虛擬機器要轉換二進位制指令。優點在於不需要修改原來的作業系統,缺點在於這種軟體攔截機制開銷比較大。

3.泛虛擬化

作業系統仍然可執行在0環上,更改作業系統核心,以前的二進位制指令變成了hypercall呼叫。優點在於降低了虛擬機器的難度,不需要對二進位制指令進行轉換了。缺點在於:需要修改OS核心

4.硬體輔助虛擬化

優點在於特權指令呼叫之時,不需要半虛擬化,也不需要二進位制轉換,因為有了硬體的支援。缺點:需要有硬體支援(如Intel VT, AMD SVM)

 

五、VMM的實現技術

1.cpu虛擬化:

指令集通常可分為非特權指令和特權指令兩種。

非特權指令不能改變共享資源的值或狀態。共享資源包括處理器、記憶體、計時器和特殊目的的暫存器等。非特權指令如算術運算指令、邏輯運算指令等。

特權指令是所有用來訪問共享資源的值或狀態的指令,這類指令包括關機、設定計時器、設定程式計數器、改變重定位暫存器的值和I/O相關的指令。

VMM執行非特權指令,可以直接執行,而對特權指令,則需要模擬執行

為了提高CPU虛擬化的效率,需要用硬體來完成不同層級的切換。在伺服器領域,CPU可以把VMM放在-1環。

2.記憶體虛擬化

VMM必須對實體記憶體有最終的控制權,也就是說,它必須控制將客戶實體地址空間對映到主機實體地址空間的操作。這樣,才可以順利的實現記憶體虛擬化

VMM維護一個虛擬機器記憶體管理資料結構——影子頁表(shadow page table)。VMM通過影子頁表給不同的虛擬機器分配機器的記憶體頁,如作業系統虛擬記憶體一樣,VMM能將虛擬機器記憶體換頁到磁碟,因此,虛擬機器申請的記憶體可以超過機器的實體記憶體。VMM也可以根據每個虛擬機器的要求,動態地分配相應的記憶體。

作業系統對頁表的頻繁更改增加了更新影子頁表操作的開銷,使用硬體來管理影子頁表將是未來研究的方向。

3.IO虛擬化

用宿主型的體系結構,使用宿主作業系統的I/0裝置驅動程式。

缺點:

大大增加了虛擬化的效能開銷;

現代作業系統如Windows和Linux並沒有資源管理的支援為虛擬機器提供效能隔離和服務保證,而這是很多伺服器環境的基本要求。

I/O子系統的產業趨勢是朝著硬體支援的方向發展。擁有足夠的硬體支援,直接傳送I/O裝置到虛擬機器中的軟體是完全可能的,這將有效地消除所有I/O虛擬開銷。要做到這一點, I/O裝置需要了解虛擬機器的情況和能夠支援多個虛擬介面,以便VMM能安全地對映介面到虛擬機器。

Intel VT-d是目前硬體I/O虛擬化的代表