初識虛擬化技術

suipingsp發表於2014-07-31

(一)虛擬化技術概述

虛擬化技術可針對具體應用目的建立特定目的的虛擬環境,安全、效率高,快照、克隆、備份、遷移等方便。系統虛擬化是將一臺物理計算機虛擬成一臺或多臺虛擬計算機系統,每個都有自己的虛擬硬體,其上的作業系統任認為自己執行在一臺獨立的主機上,計算機軟體在一個虛擬的平臺上而不是真實的硬體平臺上執行。虛擬化技術可以擴大硬體的容量,簡化軟體的重新配置過程。其中CPU的虛擬化可以單CPU模擬多CPU並行執行,允許一個平臺同時執行多個作業系統,並且應用程式可以在相互獨立的空間內執行而互不影響。虛擬化技術在降低硬體成本的同時,還可以顯著提高系統的工作效率和安全性。

虛擬化系統的實現通常是在作業系統和硬體之間加入一個虛擬機器監控程式,稱為Hypervisor(如圖1所示)。由Hypervisor主要負責各個作業系統之間的硬體資源協調。虛擬機器監控程式是一種特殊作業系統,直接在裸機上執行(針對完全虛擬化技術)。虛擬機器監控程式建立一個底層硬體平臺抽象,一個或多個虛擬機器(VM)共享這個底層硬體平臺。在這種環境中,VM 只是作業系統及其應用程式的容器,一個 VM 與虛擬機器監控程式上執行的其他 VMs 隔離,這支援多個作業系統或多個配置不同的相似作業系統。


圖1  虛擬化系統結構

1,虛擬計算機系統三層含義-同質、高效、資源受控。

同質-本質上虛擬機器和物理機是相同的、表現上有所差異,如一個物理核虛擬多個核。

高效-虛擬機器效能接近物理機。

資源受控-虛擬機器對系統資源有完全的控制能力,包括分配、管理、回收。

2,虛擬化分不同層面的虛擬化

硬體抽象層的虛擬化-客戶機與宿主機硬體相似,指令集相似。

作業系統層虛擬化-核心可以提供多個相互隔離的使用者態,其擁有獨立的檔案系統、網路、系統設定和庫函式。

庫函式層初始化-是不同的作業系統可以擁有共同的庫函式介面,應用程式不需修改。

程式語言層虛擬化-編的程式執行在一個虛擬機器上,與具體硬體無關。如Java。

3,虛擬機器的優點

良好的封裝,虛擬機器的執行環境保持便捷,便於隨時抓取狀態、備份、克隆、掛起和恢復。

多例項-最大限度減少物理資源,提高利用率,便於管理。

隔離-每個應用程式可以再獨立的作業系統中執行,互不干涉,崩潰也不會影響其他任務。

硬體無關性-只要擁有相同的硬體抽象層,虛擬機器就可以無縫遷移,因此維護和升級簡單。

安全-便於控制訪問權利,病毒入侵檢測等。

4,虛擬化分類

按照虛擬化程度分完全虛擬化和類虛擬化。完全虛擬化-客戶及作業系統不需要任何修改即可執行,分軟體輔助完全虛擬化和硬體輔助完全虛擬化,完全虛擬化能夠模擬所有CPU指令。類虛擬化-作業系統需要做出適應性修改,迴避那些難以模擬的指令。

按照宿主機是否存在獨立作業系統分為hypervisor模型和宿主模型,前者需支援所有的物理資源管理(系統啟動、記憶體管理、裝置驅動等),效率高、複雜;後者只需呼叫宿主作業系統API實現虛擬化,宿主作業系統可以是windows、linux,效率低、簡單。第三類是兩者的混和,VMM位於硬體層之上,但讓出部分IO裝置管理權給一個執行在特權虛擬機器上的特權作業系統,VMM負責處理器和記憶體虛擬化。

(二)虛擬化技術框架

虛擬環境組成:硬體、VMM、虛擬機器,物理機中作業系統直接管理硬體(通過硬體抽象層HAL),虛擬環境中VMM管理硬體(會構建一個或多個邏輯HAL),作業系統執行在VMM 邏輯HAL之上,執行在非CPU最高特權。

對物理資源虛擬的三個主要任務:處理器虛擬化、記憶體虛擬化和I/O虛擬化。若硬體直接支援虛擬化技術則CPU輔助完成虛擬化過程,在CPU、晶片組以及IO裝置等加入專門針對虛擬化的支援,從而高容易、高效的實現虛擬化。


圖2 虛擬化環境組成

1,VMM介紹

虛擬機器VMM(虛擬機器監控器)執行在物理CPU的最高特權級,VMM向下管理宿主機物理資源,包括處理器管理、記憶體管理、外設管理、中斷管理、系統時間管理等,向上則管理虛擬環境資源,包括:

i 虛擬物理資源-處理器、記憶體、IO裝置等。

ii 多個獨立虛擬環境的排程-類似於程式排程。

iii 虛擬環境間的通訊機制--VMM提供VMM與虛擬環境之間、虛擬環境之間的通訊API,通訊方式可以是共享記憶體、事件通知等。

iv 虛擬環境的管理-建立、刪除、暫停等。

2,硬體輔助虛擬化

i 處理器虛擬化:

VMM最核心部分,記憶體、IO虛擬化都賴於處理器虛擬化的正確實現。處理器的虛擬化就是模擬處理器的所有關鍵環節-指令集、記憶體訪問。三個關鍵概念:虛擬暫存器、虛擬上下文、虛擬CPU,其中虛擬CPU與物理CPU具有一致的功能,其功能由物理CPU和VMM共同完成(非敏感指令直接物理CPU完成,敏感指令VMM陷入後再模擬)。處理器虛擬化包括:

(a)指令集模擬:正確模擬指令的行為。作業系統試圖訪問關鍵資源時,VMM會將訪問定位在VMM的虛擬暫存器上。作業系統執行操作時(程式切換等),通過VMM“陷入”再模擬進行,陷入手段包括:處理器保護機制觸發異常、VMM主動通過陷阱呼叫、非同步中斷(處理器內部中斷源和外部中斷)。

(b)中斷和異常的模擬:模擬硬體中斷和軟體異常的執行。

(c)對稱多處理器的模擬:虛擬處理器個數與物理CPU沒有必然聯絡,向作業系統呈現SMP的存在。

ii 記憶體虛擬化:核心要求是每個客戶機實體地址從0開始、大粒度地址連續(如256M),基本做法在於引入一層新的地址空間-客戶機實體地址空間,使用時由VMM將地址轉化為實際實體地址。

iii IO虛擬化:截獲客戶機作業系統對裝置的訪問請求,通過軟體模擬真實物理效果,“欺騙客戶機”

3,基於軟體的完全虛擬化

若硬體在虛擬化支援存在缺陷,可通過軟體彌補。兩種可行方案-模擬執行(完全虛擬化)和直接原始碼改寫(類虛擬化)。軟體模擬技術是在一種硬體平臺上通過軟體模擬出另外一種硬體平臺,從而可以執行其上的作業系統、應用程式。模擬的核心是模擬指令集的執行效果,可模擬相同的硬體體系結構,也可模擬不同的。

i 基於軟體的CPU虛擬化

(a)模擬技術最簡單的就是解釋執行-取指、模擬執行效果、再取指,缺點是效能差。如java即為解釋型執行,具有硬體平臺無關性。

(b)掃描和修補-大部分指令直接由物理CPU執行,部分作業系統敏感指令通過陷阱陷入到VMM模擬執行。

(c)二進位制程式碼翻譯-物理CPU不能直接執行客戶機作業系統操作,待執行程式碼都在VMM緩衝區裡。

ii 記憶體虛擬化:為了實現客戶機實體地址到宿主機實體地址的對映,VMM維護了一張對映表。VMM截獲客戶機記憶體操作指令,並對映到VMM分配給該客戶機的相應宿主機實體地址。翻譯過程通過影子頁表實現,直接翻譯到宿主機實體地址。

iii IO虛擬化:虛擬機器中偵測出來的裝置是VMM虛擬的裝置,可以多於或少於真實裝置,功能和型號也可同可不同,模擬裝置與作業系統互動的API即可。

相關文章