云計(jì)算離不開(kāi)底層的虛擬化技術(shù)支持。維基百科列舉的虛擬化技術(shù)有超過(guò)60種,基于X86(CISC)體系的超過(guò)50種,也有基于RISC體系的,其中有4種虛擬化技術(shù)是當(dāng)前最為成熟而且應(yīng)用最為廣泛的,分別是:VMWARE的ESX、微軟的Hyper-V、開(kāi)源的XEN和KVM。云計(jì)算平臺(tái)選用何種虛擬化技術(shù)將是云計(jì)算建設(shè)所要面臨的問(wèn)題,文章就4種主流虛擬化技術(shù)的架構(gòu)層面進(jìn)行了對(duì)比分析。
1.前言
云計(jì)算平臺(tái)需要有資源池為其提供能力輸出,這種能力包括計(jì)算能力、存儲(chǔ)能力和網(wǎng)絡(luò)能力,為了將這些能力調(diào)度到其所需要的地方,云計(jì)算平臺(tái)還需要對(duì)能力進(jìn)行調(diào)度管理,這些能力均是由虛擬化資源池提供的。
在本文中,我們重點(diǎn)討論虛擬化資源池的技術(shù)。形成資源池計(jì)算能力的物理設(shè)備,可能有兩種,一種是基于RISC的大/小型機(jī),另一種是基于CISC的X86服務(wù)器。大/小型機(jī)通常意味著高性能、高可靠性和高價(jià)格,而X86服務(wù)器與之相比有些差距,但隨著Inter和AMD等處理器廠商技術(shù)的不斷發(fā)展,原本只在小型機(jī)上才有的技術(shù)已經(jīng)出現(xiàn)在了X86處理器上,如64位技術(shù)、虛擬化技術(shù)、多核心技術(shù)等等,使得X86服務(wù)器在性能上突飛猛進(jìn)。通過(guò)TPC組織在2011年3月份所公布的單機(jī)計(jì)算機(jī)性能排名中可以看出,4路32核的X86服務(wù)器性能已經(jīng)位列前10名,更重要的是X86服務(wù)器的性價(jià)比相對(duì)小型機(jī)有約5倍的優(yōu)勢(shì)。因此,選擇X86服務(wù)器作為云計(jì)算資源池,更能凸顯出云計(jì)算的低成本優(yōu)勢(shì)。
由于單機(jī)計(jì)算機(jī)的處理能力越來(lái)越大,以單機(jī)資源為調(diào)度單位的顆粒度就太大了,因此需要有一種技術(shù)讓資源的調(diào)度顆粒更細(xì)小,使資源得到更有效和充分的利用,這就引入了虛擬化技術(shù)。當(dāng)前虛擬化技術(shù)中主流和成熟的有4種:VMWARE的ESX、微軟的Hyper-V、開(kāi)源的XEN和KVM,下面將針對(duì)這4種虛擬化技術(shù)的架構(gòu)進(jìn)行分析。
2.虛擬化架構(gòu)分析
從虛擬化的實(shí)現(xiàn)方式來(lái)看,虛擬化架構(gòu)主要有兩種形式:宿主架構(gòu)和裸金屬架構(gòu)。在宿主架構(gòu)中的虛擬機(jī)作為主機(jī)操作系統(tǒng)的一個(gè)進(jìn)程來(lái)調(diào)度和管理,裸金屬架構(gòu)下則不存在主機(jī)操作系統(tǒng),它是以Hypervisor直接運(yùn)行在物理硬件之上,即使是有類似主機(jī)操作系統(tǒng)的父分區(qū)或Domain 0,也是作為裸金屬架構(gòu)下的虛擬機(jī)存在的。宿主架構(gòu)通常用于個(gè)人PC上的虛擬化,如WindowsVirtual PC,VMware Workstation,VirtualBox,Qemu等,而裸金屬架構(gòu)通常用于服務(wù)器的虛擬化,如文中提及的4種虛擬化技術(shù)。
(1) ESX的虛擬化架構(gòu)(如圖1)

ESX服務(wù)器啟動(dòng)時(shí),首先啟動(dòng)Linux Kernel,通過(guò)這個(gè)操作系統(tǒng)加載虛擬化組件,最重要的是ESX的Hypervisor組件,稱之為VMkernel,VMkernel會(huì)從LinuxKernel完全接管對(duì)硬件的控制權(quán),而該Linux Kernel作為VMkernel的首個(gè)虛擬機(jī),用于承載ESX的serviceConsole,實(shí)現(xiàn)本地的一些管理功能。
VMkernel負(fù)責(zé)為所承載的虛擬機(jī)調(diào)度所有的硬件資源,但不同類型的硬件會(huì)有些區(qū)別。
虛擬機(jī)對(duì)于CPU和內(nèi)存資源是通過(guò)VMkernel直接訪問(wèn),最大程度地減少了開(kāi)銷,CPU的直接訪問(wèn)得益于CPU硬件輔助虛擬化(Intel VT-x和AMD AMD-V,第一代虛擬化技術(shù)),內(nèi)存的直接訪問(wèn)得益于MMU(內(nèi)存管理單元,屬于CPU中的一項(xiàng)特征)硬件輔助虛擬化(Intel EPT和AMD RVI/NPT,第二代虛擬化技術(shù))。
虛擬機(jī)對(duì)于I/O設(shè)備的訪問(wèn)則有多種方式,以網(wǎng)卡為例,有兩種方式可供選擇:一是利用I/O MMU硬件輔助虛擬化(Intel VT-d和AMD-Vi)的VMDirectPath I/O,使得虛擬機(jī)可以直接訪問(wèn)硬件設(shè)備,從而減少對(duì)CPU的開(kāi)銷;二是利用半虛擬化的設(shè)備VMXNETx,網(wǎng)卡的物理驅(qū)動(dòng)在VMkernel中,在虛擬機(jī)中裝載網(wǎng)卡的虛擬驅(qū)動(dòng),通過(guò)這二者的配對(duì)來(lái)訪問(wèn)網(wǎng)卡,與仿真式網(wǎng)卡(IntelE1000)相比有著較高的效率。半虛擬化設(shè)備的安裝是由虛擬機(jī)中VMware tool來(lái)實(shí)現(xiàn)的,可以在Windows虛擬機(jī)的右下角找到它。網(wǎng)卡的這兩種方式,前者有著顯著的先進(jìn)性,但后者用得更為普遍,因?yàn)閂MDirectPath I/O與VMware虛擬化的一些核心功能不兼容,如:熱遷移、快照、容錯(cuò)、內(nèi)存過(guò)量使用等。
ESX的物理驅(qū)動(dòng)是內(nèi)置在Hypervisor中,所有設(shè)備驅(qū)動(dòng)均是由VMware預(yù)植入的。因此,ESX對(duì)硬件有嚴(yán)格的兼容性列表,不在列表中的硬件,ESX將拒絕在其上面安裝。
(2) Hyper-V的虛擬化架構(gòu)(如圖2)

Hyper-V是微軟新一代的服務(wù)器虛擬化技術(shù),首個(gè)版本于2008年7月發(fā)布,目前最新版本是2011年4月發(fā)布R2 SP1版,Hyper-V有兩種發(fā)布版本:一是獨(dú)立版,如Hyper-V Server 2008,以命令行界面實(shí)現(xiàn)操作控制,是一個(gè)免費(fèi)的版本;二是內(nèi)嵌版,如Windows Server 2008,Hyper-V作為一個(gè)可選開(kāi)啟的角色。
對(duì)于一臺(tái)沒(méi)有開(kāi)啟Hyper-V角色的Windows Server 2008來(lái)說(shuō),這個(gè)操作系統(tǒng)將直接操作硬件設(shè)備,一旦在其中開(kāi)啟了Hyper-V角色,系統(tǒng)會(huì)要求重新啟動(dòng)服務(wù)器。雖然重啟后的系統(tǒng)在表面看來(lái)沒(méi)什么區(qū)別,但從體系架構(gòu)上看則與之前的完全不同了。在這次重啟動(dòng)過(guò)程中,Hyper-V的Hypervisor接管了硬件設(shè)備的控制權(quán),先前的Windows Server 2008則成為Hyper-V的首個(gè)虛擬機(jī),稱之為父分區(qū),負(fù)責(zé)其他虛擬機(jī)(稱為子分區(qū))以及I/O設(shè)備的管理。Hyper-V要求CPU必須具備硬件輔助虛擬化,但對(duì)MMU硬件輔助虛擬化則是一個(gè)增強(qiáng)選項(xiàng)。
其實(shí)Hypervisor僅實(shí)現(xiàn)了CPU的調(diào)度和內(nèi)存的分配,而父分區(qū)控制著I/O設(shè)備,它通過(guò)物理驅(qū)動(dòng)直接訪問(wèn)網(wǎng)卡、存儲(chǔ)等。子分區(qū)要訪問(wèn)I/O設(shè)備需要通過(guò)子分區(qū)操作系統(tǒng)內(nèi)的VSC(虛擬化服務(wù)客戶端),對(duì)VSC的請(qǐng)求由VMBUS(虛擬機(jī)總線)傳遞到父分區(qū)操作系統(tǒng)內(nèi)的VSP(虛擬化服務(wù)提供者),再由VSP重定向到父分區(qū)內(nèi)的物理驅(qū)動(dòng),每種I/O設(shè)備均有各自的VSC和VSP配對(duì),如存儲(chǔ)、網(wǎng)絡(luò)、視頻和輸入設(shè)備等,整個(gè)I/O設(shè)備訪問(wèn)過(guò)程對(duì)于子分區(qū)的操作系統(tǒng)是透明的。其實(shí)在子分區(qū)操作系統(tǒng)內(nèi),VSC和VMBUS就是作為I/O設(shè)備的虛擬驅(qū)動(dòng),它是子分區(qū)操作系統(tǒng)首次啟動(dòng)時(shí)由Hyper-V提供的集成 服務(wù)包安裝,這也算是一種半虛擬化的設(shè)備,使得虛擬機(jī)與物理I/O設(shè)備無(wú)關(guān)。如果子分區(qū)的操作系統(tǒng)沒(méi)有安裝Hyper-V集成服務(wù)包或者不支持Hyper-V集成服務(wù)包(對(duì)于這種操作系統(tǒng),微軟稱之為Unenlightened OS,如未經(jīng)認(rèn)證支持的Linux版本和舊的Windows版本),則這個(gè)子分區(qū)只能運(yùn)行在仿真狀態(tài)。其實(shí)微軟所宣稱的啟蒙式(Enlightenment)操作系統(tǒng),就是支持半虛擬化驅(qū)動(dòng)的操作系統(tǒng)。
Hyper-V的Hypervisor是一個(gè)非常精簡(jiǎn)的軟件層,不包含任何物理驅(qū)動(dòng),物理服務(wù)器的設(shè)備驅(qū)動(dòng)均是駐留在父分區(qū)的Windows Server 2008中,驅(qū)動(dòng)程序的安裝和加載方式與傳統(tǒng)Windows系統(tǒng)沒(méi)有任何區(qū)別。因此,只要是Windows支持的硬件,也都能被Hyper-V所兼容。
共 2 頁(yè):1 2
萬(wàn)方數(shù)據(jù)