1、虛擬化概念(Virtualization)
2、虛擬機(Virtual Machine)
- 同質:量可以不同,但質與物理機本質相同,例如CPU的ISA(指令集架構,Instruction Set Architecture)必須相同;
- 高效:性能與物理機接近,大多數指令應在硬件直接執行,只有少量由VMM模擬處理),因此wine這類模擬器不是VM;
- 資源可控,VMM對物理機,虛擬機的資源絕對可控;
3、完全虛擬化和半虛擬化(Full Virtualization & Paravirtualization)
- 完全虛擬化是指所抽象的 VM 具有完全的物理機特性,OS 在其上運行不需要任何修改,非常方便,但它的缺點是效率不高(特別是在Intel VT & AMD-V 硬件虛擬化支持前)。典型的有 VMWare, Virtualbox, Virtual PC, KVM-x86等。
- 半虛擬化需 OS 協助的 虛擬化,在其上運行OS 需要修改。起初採用主是爲了解決 x86 體系結構上完全虛擬化的困難(沒有 Intel VT & AMD-V 硬件虛擬化支持前;且不屑於動態掃描指令修補之方法的性能),後來則主要是爲了提高虛擬化效率。典型有 Xen, KVM-PowerPC 等。
從上圖可以看出,Guest OS是運行在用戶態上,當執行到特權指令時,會陷入到 VMM 模擬執行(陷入-模擬)。從這個角度上來說,完全虛擬化是指當Guest OS運行到特權指令時,VMM將特權指令”翻譯“成陷入指令,這個”翻譯“過程對系統性能有損耗。而半虛擬化是指事先修改 Guest OS 的代碼,避免Guest OS執行特權執行的過程,因此它的性能接近於物理機。
4、主要虛擬化流派
瞭解了完全虛擬化和半虛擬化的本質之後,下來再來看看主要的虛擬化流派。
- 基於二進制翻譯的全虛擬化:其主要思想是在執行時將 VM 上執行的 Guest OS 之指令,翻譯成 x86 ISA 的一個子集,其中的特權指令被替換成陷入指令;翻譯過程與指令執行交叉進行,不含特權指令的用戶態程序可以不經翻譯直接執行,該技術爲 VMWare Workstation,VMWare ESX Server 早期版本,Virtual PC 以及 QEMU 所採用。
- 基於掃描和修補的全虛擬化:VMM 會在 VM 運行每塊指令之前對其掃描,查找敏感指令;補丁指令塊會在 VMM 中動態生成,通常每一個需要修補的指令會對應一塊補丁指令;特權指令被替換成一個外跳轉,從 VM 跳轉到 VMM,在 VMM 中執行動態生成的補丁指令塊;當補丁指令塊執行完後,執行流再跳轉回 VM 的下一條指令處繼續執行;Oracle 的 Virtualbox 即採用該技術。
- OS協助的半虛擬化:通過修改 Guest OS 的代碼,將含有敏感指令的操作,替換爲對 VMM 的超調用 (Hypercall,類似 OS 的系統調用,可將控制權轉移到 VMM);該技術的優勢在於 VM 的性能能接近於物理機,缺點在於需要修改 Guest OS;該技術因 Xen 項目而廣爲人知。
- 硬件協助的虛擬化:引入新的處理器運行模式和新的指令,使得 VMM 和 Guest OS 運行於不同的模式下,Guest OS 運行於受控模式,原來的一些特權指令在受控模式下全部會陷入 VMM,這樣就解決了部分非特權的敏感指令的陷入 — 模擬難題,而且模式切換時上下文的保存恢復由硬件來完成,這樣就大大提高了陷入 — 模擬時上下文切換的效率。該技術的引入使 x86 可以很容易地實現完全虛擬化。故皆被幾乎所有之前分歧流派各方所採用,如: KVM-x86,新版 VMWare
ESX Server 3,Xen 3.0。
5、VMM模型(Virtual Machine Monitor)
1)宿主模型(OS-hosted VMM)
VMM 通過調用 Host OS 的服務來獲得資源,實現 CPU,內存和 I/O 設備的虛擬化,VMM 創建出 VM 後,通常將 VM 作爲 Host OS 的一個進程參與調度;VMM 模塊負責 CPU 和內存虛擬化,由 ULM 請求 Host OS 設備驅動,實現 I/O 設備的虛擬化。
優點:可以充分利用現有 OS 的設備驅動,VMM 無需自己實現大量的設備驅動,輕鬆實現 I/O 設備的虛擬化。
缺點:資源受 Host OS 控制,VMM 需調用 Host OS 的服務來獲取資源進行虛擬化,其效率和功能會受到一定影響。
採用該結構的 VMM 有:VMware Workstation, VMWare Server (GSX), Virtual PC,Virtual Server, KVM(早期)
2)Hypervisor 模型 (Hypervisor VMM)
該結構中,VMM 可以看作一個爲虛擬化而生的完整 OS,掌控有所有資源(CPU,內存,I/O 設備),VMM 承擔管理資源的重任,其還需向上提供 VM 用於運行 Guest OS,因此 VMM 還負責虛擬環境的創建和管理。
優點:因 VMM 同時具有物理資源的管理功能和虛擬化功能,故虛擬化的效率會較高;安全性方面,VM 的安全只依賴於 VMM 的安全。
缺點:因 VMM 完全擁有物理資源,因此,VMM 需要進行物理資源的管理,包括設備的驅動,而設備驅動的開發工作量是很大的,這對 VMM 是個很大的挑戰。
採用該結構的 VMM 有:VMWare ESX Server, WindRiver Hypervisor, KVM(後期)
3)混合模型((Hybrid VMM)
該結構是上述兩種模式的混合體,VMM 依然位於最底層,擁有所有物理資源,但 VMM 會主動讓出大部分 I/O 設備的控制權,將它們交由一個運行在特權 VM 上的特權 OS 來控制。VMM 只負責 CPU 和內存的虛擬化,I/O 設備的虛擬化由 VMM 和特權 OS 共同完成.
優點:可利用現有 OS 的 I/O 設備驅動;VMM 直接控制 CPU 和內存等物理資源,虛擬化效率較高;若對特權 OS 的權限控制得當,虛擬機的安全性只依賴於 VMM。
缺點:因特權 OS 運行於 VM 上,當需要特權 OS 提供服務時,VMM 需要切換到特權 OS,這裏面就產生上下文切換的開銷。
採用該結構的 VMM 有:Xen, SUN Logical Domain35
轉自:http://blog.csdn.net/dbanote/article/details/8938106