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