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

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

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