虛擬化 - 優(yōu)化資源的解決方案
虛擬化是一個廣義的術(shù)語,是指計(jì)算元件在虛擬的基礎(chǔ)上而不是真實(shí)的基礎(chǔ)上運(yùn)行,是一個為了簡化管理,優(yōu)化資源的解決方案。虛擬化可以通過很多方法來證實(shí),它不是一個單獨(dú)的實(shí)體,而是一組模式和技術(shù)的集合,這些技術(shù)提供了支持資源的邏輯表示所需的功能,以及通過標(biāo)準(zhǔn)接口將其呈現(xiàn)給這些資源的用戶所需的功能,這些模式本身是以各種不同虛擬形式的重復(fù)出現(xiàn)。

基本簡介
虛擬化是一個廣義的術(shù)語,是指計(jì)算元件在虛擬的基礎(chǔ)上而不是真實(shí)的基礎(chǔ)上運(yùn)行,是一個為了簡化管理,優(yōu)化資源的解決方案。如同現(xiàn)在空曠、通透的寫字樓,整個樓層幾乎看不到墻壁,用戶可以用同樣的成本構(gòu)建出更加自主適用的辦公空間,進(jìn)而節(jié)省成本,發(fā)揮空間最大利用率。這種把有限的固定的資源根據(jù)不同需求進(jìn)行重新規(guī)劃以達(dá)到最大利用率的思路,在IT領(lǐng)域就叫做虛擬化技術(shù)。
虛擬化技術(shù)可以擴(kuò)大硬件的容量,簡化軟件的重新配置過程。CPU的虛擬化技術(shù)可以單CPU模擬多CPU并行,允許一個平臺同時運(yùn)行多個操作系統(tǒng),并且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響,從而顯著提高計(jì)算機(jī)的工作效率。
虛擬化技術(shù)與多任務(wù)以及超線程技術(shù)是完全不同的。多任務(wù)是指在一個操作系統(tǒng)中多個程序同時并行運(yùn)行,而在虛擬化技術(shù)中,則可以同時運(yùn)行多個操作系統(tǒng),而且每一個操作系統(tǒng)中都有多個程序運(yùn)行,每一個操作系統(tǒng)都運(yùn)行在一個虛擬的CPU或者是虛擬主機(jī)上;而超線程技術(shù)只是單CPU模擬雙CPU來平衡程序運(yùn)行性能,這兩個模擬出來的CPU是不能分離的,只能協(xié)同工作。
虛擬化技術(shù)也與目前VMware Work station等同樣能達(dá)到虛擬效果的軟件不同,是一個巨大的技術(shù)進(jìn)步,具體表現(xiàn)在減少軟件虛擬機(jī)相關(guān)開銷和支持更廣泛的操作系統(tǒng)方面。
軟件方案
純軟件虛擬化解決方案存在很多限制。“客戶”操作系統(tǒng)很多情況下是通過虛擬機(jī)監(jiān)視器(Virtual?Machine?Monitor,VMM)來與硬件進(jìn)行通信,由VMM來決定其對系統(tǒng)上所有虛擬機(jī)的訪問。 - 注意,大多數(shù)處理器和內(nèi)存訪問獨(dú)立于VMM,只在發(fā)生特定事件時才會涉及VMM,如頁面錯誤。在純軟件虛擬化解決方案中,VMM在軟件套件中的位置是傳統(tǒng)意義上操作系統(tǒng)所處的位置,而操作系統(tǒng)的位置是傳統(tǒng)意義上應(yīng)用程序所處的位置。這一額外的通信層需要進(jìn)行二進(jìn)制轉(zhuǎn)換,以通過提供到物理資源 - 如處理器、內(nèi)存、存儲、顯卡和網(wǎng)卡等的接口,模擬硬件環(huán)境。這種轉(zhuǎn)換必然會增加系統(tǒng)的復(fù)雜性。此外,客戶操作系統(tǒng)的支持受到虛擬機(jī)環(huán)境的能力限制,這會阻礙特定技術(shù)的部署,如64位客戶操作系統(tǒng)。在純軟件解決方案中,軟件堆棧增加的復(fù)雜性意味著,這些環(huán)境難于管理,因而會加大確保系統(tǒng)可靠性和安全性的困難。
硬件方案
而CPU的虛擬化技術(shù)是一種硬件方案,支持虛擬技術(shù)的CPU帶有特別優(yōu)化過的指令集來控制虛擬過程,通過這些指令集,VMM會很容易提高性能,相比軟件的虛擬實(shí)現(xiàn)方式會很大程度上提高性能。虛擬化技術(shù)可提供基于芯片的功能,借助兼容VMM軟件能夠改進(jìn)純軟件解決方案。由于虛擬化硬件可提供全新的架構(gòu),支持操作系統(tǒng)直接在上面運(yùn)行,從而無需進(jìn)行二進(jìn)制轉(zhuǎn)換,減少了相關(guān)的性能開銷,極大簡化了VMM設(shè)計(jì),進(jìn)而使VMM能夠按通用標(biāo)準(zhǔn)進(jìn)行編寫,性能更加強(qiáng)大。另外,在純軟件VMM中,缺少對64位客戶操作系統(tǒng)的支持,而隨著64位處理器的不斷普及,這一嚴(yán)重缺點(diǎn)也日益突出。而CPU的虛擬化技術(shù)除支持廣泛的傳統(tǒng)操作系統(tǒng)之外,還支持64位客戶操作系統(tǒng)。
虛擬化技術(shù)是一套解決方案。完整的情況需要CPU、主板芯片組、BIOS和軟件的支持,例如VMM軟件或者某些操作系統(tǒng)本身。即使只是CPU支持虛擬化技術(shù),在配合VMM的軟件情況下,也會比完全不支持虛擬化技術(shù)的系統(tǒng)有更好的性能。
兩大CPU巨頭Intel和AMD都想方設(shè)法在虛擬化領(lǐng)域中占得先機(jī),但是AMD的虛擬化技術(shù)在時間上要比Intel落后幾個月。Intel自2005年末開始便在其處理器產(chǎn)品線中推廣應(yīng)用Intel?Virtualization?Technology - Intel?VT虛擬化技術(shù)。Intel已經(jīng)發(fā)布了具有Intel?VT虛擬化技術(shù)的一系列處理器產(chǎn)品,包括桌面平臺的Pentium?4?6X2系列、Pentium?D?9X0系列和Pentium?EE?9XX系列,還有Core?Duo系列和Core?Solo系列中的部分產(chǎn)品,以及服務(wù)器/工作站平臺上的Xeon?LV系列、Xeon?5000系列、Xeon?5100系列、Xeon?MP?7000系列以及Itanium?2?9000系列;同時絕大多數(shù)的Intel下一代主流處理器,包括Merom核心移動處理器,Conroe核心桌面處理器,Woodcrest核心服務(wù)器處理器,以及基于Montecito核心的Itanium?2高端服務(wù)器處理器都將支持Intel?VT虛擬化技術(shù)。
而AMD方面也已經(jīng)發(fā)布了支持AMD?Virtualization?Technology - AMD?VT虛擬化技術(shù)的一系列處理器產(chǎn)品,包括Socket?S1接口的Turion?64?X2系列以及Socket?AM2接口的Athlon?64?X2系列和Athlon?64?FX系列等等,并且絕大多數(shù)的AMD下一代主流處理器,包括即將發(fā)布的Socket?F接口的Opteron都將支持AMDVT虛擬化技術(shù)。
準(zhǔn)虛擬化
完全虛擬化是處理器密集型技術(shù),因?yàn)樗骽ypervisor管理各個虛擬服務(wù)器,并讓它們彼此獨(dú)立。減輕這種負(fù)擔(dān)的一種方法就是,改動客戶操作系統(tǒng),讓它以為自己運(yùn)行在虛擬環(huán)境下,能夠與hypervisor協(xié)同工作。這種方法就叫準(zhǔn)虛擬化 - para-virtualization。
Xen是開源準(zhǔn)虛擬化技術(shù)的一個例子。操作系統(tǒng)作為虛擬服務(wù)器在Xenhypervisor上運(yùn)行之前,它必須在核心層面進(jìn)行某些改變。因此,Xen適用于BSD、Linux、Solaris及其他開源操作系統(tǒng),但不適合對像Windows這些專有的操作系統(tǒng)進(jìn)行虛擬化處理,因?yàn)樗鼈儫o法改動。
準(zhǔn)虛擬化技術(shù)的優(yōu)點(diǎn)是性能高。經(jīng)過準(zhǔn)虛擬化處理的服務(wù)器可與hypervisor協(xié)同工作,其響應(yīng)能力幾乎不亞于未經(jīng)過虛擬化處理的服務(wù)器。準(zhǔn)虛擬化與完全虛擬化相比優(yōu)點(diǎn)明顯,以至于微軟和VMware都在開發(fā)這項(xiàng)技術(shù),以完善各自的產(chǎn)品。
完全虛擬
最流行的虛擬化方法使用名為hypervisor的一種軟件,在虛擬服務(wù)器和底層硬件之間建立一個抽象層。VMware和微軟的VirtualPC是代表該方法的兩個商用產(chǎn)品,而基于核心的虛擬機(jī) - KVM是面向Linux系統(tǒng)的開源產(chǎn)品。
hypervisor可以捕獲CPU指令,為指令訪問硬件控制器和外設(shè)充當(dāng)中介。因而,完全虛擬化技術(shù)幾乎能讓任何一款操作系統(tǒng)不用改動就能安裝到虛擬服務(wù)器上,而它們不知道自己運(yùn)行在虛擬化環(huán)境下。主要缺點(diǎn)是,hypervisor給處理器帶來開銷。
在完全虛擬化的環(huán)境下,hypervisor運(yùn)行在裸硬件上,充當(dāng)主機(jī)操作系統(tǒng);而由hypervisor管理的虛擬服務(wù)器運(yùn)行客戶端操作系統(tǒng) - guestOS。
實(shí)現(xiàn)虛擬化還有一個方法,那就是在操作系統(tǒng)層面增添虛擬服務(wù)器功能。SolarisContainer就是這方面的一個例子,Virtuozzo/openVZ是面向Linux的軟件方案。就操作系統(tǒng)層的虛擬化而言,沒有獨(dú)立的hypervisor層。相反,主機(jī)操作系統(tǒng)本身就負(fù)責(zé)在多個虛擬服務(wù)器之間分配硬件資源,并且讓這些服務(wù)器彼此獨(dú)立。一個明顯的區(qū)別是,如果使用操作系統(tǒng)層虛擬化,所有虛擬服務(wù)器必須運(yùn)行同一操作系統(tǒng) - 不過每個實(shí)例有各自的應(yīng)用程序和用戶賬戶。
雖然操作系統(tǒng)層虛擬化的靈活性比較差,但本機(jī)速度性能比較高。此外,由于架構(gòu)在所有虛擬服務(wù)器上使用單一、標(biāo)準(zhǔn)的操作系統(tǒng),管理起來比異構(gòu)環(huán)境要容易。
模式簡介
虛擬化可以通過很多方法來證實(shí)。它不是一個單獨(dú)的實(shí)體,而是一組模式和技術(shù)的集合,這些技術(shù)提供了支持資源的邏輯表示所需的功能,以及通過標(biāo)準(zhǔn)接口將其呈現(xiàn)給這些資源的消費(fèi)者所需的功能。這些模式本身都是前面介紹過的各種不同虛擬形式的重復(fù)出現(xiàn)。
下面是在實(shí)現(xiàn)虛擬化時常常使用的一些模式和技術(shù):
單一資源多個邏輯表示
這種模式是虛擬化最廣泛使用的模式之一。它只包含一個物理資源,但是它向消費(fèi)者呈現(xiàn)的邏輯表示卻仿佛它包含多個資源一樣。消費(fèi)者與這個虛擬資源進(jìn)行交互時就仿佛自己是唯一的消費(fèi)者一樣,而不會考慮他正在與其他消費(fèi)者一起共享資源。
多個資源單一邏輯表示
這種模式包含了多個組合資源,以便將這些資源表示為提供單一接口的單個邏輯表示形式。在利用多個功能不太強(qiáng)大的資源來創(chuàng)建功能強(qiáng)大且豐富的虛擬資源時,這是一種非常有用的模式。存儲虛擬化就是這種模式的一個例子。在服務(wù)器方面,集群技術(shù)可以提供這樣的幻想:消費(fèi)者只與一個系統(tǒng)(頭節(jié)點(diǎn))進(jìn)行交互,而集群事實(shí)上可以包含很多的處理器或節(jié)點(diǎn)。實(shí)際上,這就是從?IT?技術(shù)設(shè)施的角度看到的網(wǎng)格可以實(shí)現(xiàn)的功能。
在多個資源之間提供單一邏輯表示
這種模式包括一個以多個可用資源之一的形式表示的虛擬資源。虛擬資源會根據(jù)指定的條件來選擇一個物理資源實(shí)現(xiàn),例如資源的利用、響應(yīng)時間或臨近程度。盡管這種模式與上一種模式非常類似,但是它們之間有一些細(xì)微的差別。首先,每個物理資源都是一個完整的副本,它們不會在邏輯表示層上聚集在一起。其次,每個物理資源都可以提供邏輯表示所需要的所有功能,而不是像前一種模式那樣只能提供部分功能。這種模式的一個常見例子是使用應(yīng)用程序容器來均衡任務(wù)負(fù)載。在將請求或事務(wù)提交給應(yīng)用程序或服務(wù)時,消費(fèi)者并不關(guān)心到底是幾個容器中執(zhí)行的哪一個應(yīng)用程序的副本為請求或事務(wù)提供服務(wù)。消費(fèi)者只是希望請求或事務(wù)得到處理。
單個資源單一邏輯表示
這是用來表示單個資源的一種簡單模式,就仿佛它是別的什么資源一樣。啟用?Web?的企業(yè)后臺應(yīng)用程序就是一個常見的例子。在這種情況下,我們不是修改后臺的應(yīng)用程序,而是創(chuàng)建一個前端來表示?Web?界面,它會映射到應(yīng)用程序接口中。這種模式允許通過對后臺應(yīng)用程序進(jìn)行最少的修改(或根本不加任何修改)來重用一些基本的功能。也可以根據(jù)無法修改的組件,使用相同的模式構(gòu)建服務(wù)。
復(fù)合或分層虛擬
這種模式是剛才介紹的一種或多種模式的組合,它使用物理資源來提供豐富的功能集。信息虛擬化是這種模式一個很好的例子。它提供了底層所需要的功能,這些功能用于管理對資源、包含有關(guān)如何處理和使用信息的元數(shù)據(jù)以及對信息進(jìn)行處理的操作的全局命名和引用。例如?Open?Grid?Services?Architecture(OGSA)或者?Grid?Computing?Components,實(shí)際上都是虛擬化的組合或虛擬化的不同層次。
軟件方案
純軟件虛擬化解決方案存在很多限制?!翱蛻簟辈僮飨到y(tǒng)很多情況下是通過虛擬機(jī)監(jiān)視器(Virtual?Machine?Monitor,VMM)來與硬件進(jìn)行通信,由VMM來決定其對系統(tǒng)上所有虛擬機(jī)的訪問。(注意,大多數(shù)處理器和內(nèi)存訪問獨(dú)立于VMM,只在發(fā)生特定事件時才會涉及VMM,如頁面錯誤。)在純軟件虛擬化解決方案中,VMM在軟件套件中的位置是傳統(tǒng)意義上操作系統(tǒng)所處的位置,而操作系統(tǒng)的位置是傳統(tǒng)意義上應(yīng)用程序所處的位置。
這一額外的通信層需要進(jìn)行二進(jìn)制轉(zhuǎn)換,以通過提供到物理資源 - 如處理器、內(nèi)存、存儲、顯卡和網(wǎng)卡等的接口,模擬硬件環(huán)境。這種轉(zhuǎn)換必然會增加系統(tǒng)的復(fù)雜性。此外,客戶操作系統(tǒng)的支持受到虛擬機(jī)環(huán)境的能力限制,這會阻礙特定技術(shù)的部署,如64位客戶操作系統(tǒng)。在純軟件解決方案中,軟件堆棧增加的復(fù)雜性意味著,這些環(huán)境難于管理,因而會加大確保系統(tǒng)可靠性和安全性的困難。
硬件方案
而CPU的虛擬化技術(shù)是一種硬件方案,支持虛擬技術(shù)的CPU帶有特別優(yōu)化過的指令集來控制虛擬過程,通過這些指令集,VMM會很容易提高性能,相比軟件的虛擬實(shí)現(xiàn)方式會很大程度上提高性能。虛擬化技術(shù)可提供基于芯片的功能,借助兼容VMM軟件能夠改進(jìn)純軟件解決方案。
由于虛擬化硬件可提供全新的架構(gòu),支持操作系統(tǒng)直接在上面運(yùn)行,從而無需進(jìn)行二進(jìn)制轉(zhuǎn)換,減少了相關(guān)的性能開銷,極大簡化了VMM設(shè)計(jì),進(jìn)而使VMM能夠按通用標(biāo)準(zhǔn)進(jìn)行編寫,性能更加強(qiáng)大。另外,在純軟件VMM中,缺少對64位客戶操作系統(tǒng)的支持,而隨著64位處理器的不斷普及,這一嚴(yán)重缺點(diǎn)也日益突出。而CPU的虛擬化技術(shù)除支持廣泛的傳統(tǒng)操作系統(tǒng)之外,還支持64位客戶操作系統(tǒng)。
虛擬化技術(shù)是一套解決方案。完整的情況需要CPU、主板芯片組、BIOS和軟件的支持,例如VMM軟件或者某些操作系統(tǒng)本身。即使只是CPU支持虛擬化技術(shù),在配合VMM的軟件情況下,也會比完全不支持虛擬化技術(shù)的系統(tǒng)有更好的性能。
兩大CPU巨頭Intel和AMD都想方設(shè)法在虛擬化領(lǐng)域中占得先機(jī),但是AMD的虛擬化技術(shù)在時間上要比Intel落后幾個月。Intel自2005年末開始便在其處理器產(chǎn)品線中推廣應(yīng)用Intel?Virtualization?Technology - Intel?VT虛擬化技術(shù)。
ntel已經(jīng)發(fā)布了具有Intel?VT虛擬化技術(shù)的一系列處理器產(chǎn)品,包括桌面平臺的Pentium?4?6X2系列、Pentium?D?9X0系列和Pentium?EE?9XX系列,還有Core?Duo系列和Core?Solo系列中的部分產(chǎn)品,以及服務(wù)器/工作站平臺上的Xeon?LV系列、Xeon?5000系列、Xeon?5100系列、Xeon?MP?7000系列以及Itanium?2?9000系列;同時絕大多數(shù)的Intel下一代主流處理器,包括Merom核心移動處理器,Conroe核心桌面處理器,Woodcrest核心服務(wù)器處理器,以及基于Montecito核心的Itanium?2高端服務(wù)器處理器都將支持Intel?VT虛擬化技術(shù)。
而AMD方面也已經(jīng)發(fā)布了支持AMD?Virtualization?Technology - AMD?VT虛擬化技術(shù)的一系列處理器產(chǎn)品,包括Socket?S1接口的Turion?64?X2系列以及Socket?AM2接口的Athlon?64?X2系列和Athlon?64?FX系列等等,并且絕大多數(shù)的AMD下一代主流處理器,包括即將發(fā)布的Socket?F接口的Opteron都將支持AMDVT虛擬化技術(shù)。
