虛擬化的方式多種多樣,耳朵很熟悉的一些名字有:全虛擬化,類虛擬化,硬件虛擬化,混合虛擬化等等。這些不同的虛擬化方式,并不是根據同一個標準來分類的,以下介紹三種主要的分類方法,并相應介紹一些目前主流的虛擬化實現方式,以及對應的產品。
從虛擬平臺的角度來劃分的話,主要分為全虛擬化和類虛擬化:
- 全虛擬化是指VMM虛擬出來的平臺是現實中存在的平臺,因此對于客戶機來說,并不知道自己是運行在虛擬的平臺上。正因為此,全虛擬化中的客戶機操作系統(tǒng)是不需要做任何修改的。
- 類虛擬化是指通過對客戶機進行源碼級的修改,讓客戶機可以使用虛擬化的資源。由于需要修改客戶機內核,因此類虛擬化一般都會被順便用來優(yōu)化I/O,客戶機的操作系統(tǒng)通過高度優(yōu)化的I/O協議,可以和VMM緊密結合達到近似于物理機的速度。
對于全虛擬化來說,從虛擬化支持的層次劃分,主要分為軟件輔助的虛擬化和硬件支持的虛擬化:
- 軟件輔助的虛擬化是指通過軟件的方法,讓客戶機的特權指令陷入異常,從而觸發(fā)宿主機進行虛擬化處理。主要使用的技術是優(yōu)先級壓縮和二進制代碼翻譯。
a) 優(yōu)先級壓縮是指讓客戶機運行在Ring 1級別,由于處于非特權級別,所以客戶機的指令基本上都會觸發(fā)異常,然后宿主機進行接管。
b) 但是有些指令并不能觸發(fā)異常,因此就需要二進制代碼翻譯技術來對客戶機中無法觸發(fā)異常的指令進行轉換,使之無法逃出宿主機的控制。
通過軟件級的全虛擬化,可以讓一臺x86的物理機運行64位操作系統(tǒng)。更有勝者,通過IA64機型模擬古老的Mainframe虛擬機,從而把Mainframe機器的系統(tǒng)遷移至新機型中。
- 硬件輔助的虛擬化主要是由于在技術層面上用軟件手段達到全虛擬化非常麻煩,而且效率較低,才由Intel等處理器廠商直接在芯片上提供了對虛擬化的支持。硬件直接可以對敏感指令進行虛擬化執(zhí)行。比如Intel的VT-x技術。
從實現結構來看,主要分為Hypervisor型虛擬,宿主模型虛擬,混合模型虛擬:
- Hypervisor虛擬是指,硬件資源之上沒有操作系統(tǒng),而是直接由VMM作為Hypervisor接管,Hypervisor負責管理所有資源和虛擬環(huán)境支持。這種結構的主要問題是,硬件設備多種多樣,VMM不可能把每種設備的驅動都一一實現,所以此模型支持有限的設備。目前主要的產品是VMware EX Server,是當前最高端和成熟的虛擬化產品。
- 宿主模型,是在硬件資源之上有個普通的操作系統(tǒng),負責管理硬件設備,然后VMM作為一個應用搭建在宿主OS上負責虛擬環(huán)境的支持,在VMM之上再加載客戶機。此方式由底層操作系統(tǒng)對設備進行管理,因此VMM完全不用操心實現設備驅動。而它的主要缺點VMM對硬件資源的調用依賴宿主機,因此效率和功能受宿主機影響較大。目前主要產品是VMware Server,Virtual PC/Server。
- 混合模型,是綜合了以上兩種實現模型的虛擬化技術。首先VMM直接管理硬件,但是它會讓出一部分對設備的控制權,交給運行在特權虛擬機中的特權操作系統(tǒng)來管理(稱之為Domain 0)。VMM和Domain 0合作搭建起虛擬環(huán)境,在其上運行客戶虛擬機(Domain N)。這個模型還是具有一些缺點,由于在需要特權操作系統(tǒng)提供服務時,就會出現上下文切換,這部分的開銷會造成性能的下降。目前主要產品有Windows 2008, Xen。
|