云計算4種主流虛擬技術(shù)架構(gòu)對比分析
2012/02/29
云計算離不開底層的虛擬化技術(shù)支持。維基百科列舉的虛擬化技術(shù)有超過60種,基于X86(CISC)體系的超過50種,也有基于RISC體系的,其中有4種虛擬化技術(shù)是當(dāng)前最為成熟而且應(yīng)用最為廣泛的,分別是:VMWARE的ESX、微軟的Hyper-V、開源的XEN和KVM。云計算平臺選用何種虛擬化技術(shù)將是云計算建設(shè)所要面臨的問題,文章就4種主流虛擬化技術(shù)的架構(gòu)層面進行了對比分析。
1.前言
云計算平臺需要有資源池為其提供能力輸出,這種能力包括計算能力、存儲能力和網(wǎng)絡(luò)能力,為了將這些能力調(diào)度到其所需要的地方,云計算平臺還需要對能力進行調(diào)度管理,這些能力均是由虛擬化資源池提供的。
在本文中,我們重點討論虛擬化資源池的技術(shù)。形成資源池計算能力的物理設(shè)備,可能有兩種,一種是基于RISC的大/小型機,另一種是基于CISC的X86服務(wù)器。大/小型機通常意味著高性能、高可靠性和高價格,而X86服務(wù)器與之相比有些差距,但隨著Inter和AMD等處理器廠商技術(shù)的不斷發(fā)展,原本只在小型機上才有的技術(shù)已經(jīng)出現(xiàn)在了X86處理器上,如64位技術(shù)、虛擬化技術(shù)、多核心技術(shù)等等,使得X86服務(wù)器在性能上突飛猛進。通過TPC組織在2011年3月份所公布的單機計算機性能排名中可以看出,4路32核的X86服務(wù)器性能已經(jīng)位列前10名,更重要的是X86服務(wù)器的性價比相對小型機有約5倍的優(yōu)勢。因此,選擇X86服務(wù)器作為云計算資源池,更能凸顯出云計算的低成本優(yōu)勢。
由于單機計算機的處理能力越來越大,以單機資源為調(diào)度單位的顆粒度就太大了,因此需要有一種技術(shù)讓資源的調(diào)度顆粒更細小,使資源得到更有效和充分的利用,這就引入了虛擬化技術(shù)。當(dāng)前虛擬化技術(shù)中主流和成熟的有4種:VMWARE的ESX、微軟的Hyper-V、開源的XEN和KVM,下面將針對這4種虛擬化技術(shù)的架構(gòu)進行分析。
2.虛擬化架構(gòu)分析
從虛擬化的實現(xiàn)方式來看,虛擬化架構(gòu)主要有兩種形式:宿主架構(gòu)和裸金屬架構(gòu)。在宿主架構(gòu)中的虛擬機作為主機操作系統(tǒng)的一個進程來調(diào)度和管理,裸金屬架構(gòu)下則不存在主機操作系統(tǒng),它是以Hypervisor直接運行在物理硬件之上,即使是有類似主機操作系統(tǒng)的父分區(qū)或Domain 0,也是作為裸金屬架構(gòu)下的虛擬機存在的。宿主架構(gòu)通常用于個人PC上的虛擬化,如WindowsVirtual PC,VMware Workstation,VirtualBox,Qemu等,而裸金屬架構(gòu)通常用于服務(wù)器的虛擬化,如文中提及的4種虛擬化技術(shù)。
(1) ESX的虛擬化架構(gòu)(如圖1)
圖1:Esx虛擬化架構(gòu)示意圖
ESX是VMware的企業(yè)級虛擬化產(chǎn)品,2001年開始發(fā)布ESX 1.0,到2011年2月發(fā)布ESX 4.1 Update 1。
ESX服務(wù)器啟動時,首先啟動Linux Kernel,通過這個操作系統(tǒng)加載虛擬化組件,最重要的是ESX的Hypervisor組件,稱之為VMkernel,VMkernel會從LinuxKernel完全接管對硬件的控制權(quán),而該Linux Kernel作為VMkernel的首個虛擬機,用于承載ESX的serviceConsole,實現(xiàn)本地的一些管理功能。
VMkernel負責(zé)為所承載的虛擬機調(diào)度所有的硬件資源,但不同類型的硬件會有些區(qū)別。
虛擬機對于CPU和內(nèi)存資源是通過VMkernel直接訪問,最大程度地減少了開銷,CPU的直接訪問得益于CPU硬件輔助虛擬化(Intel VT-x和AMD AMD-V,第一代虛擬化技術(shù)),內(nèi)存的直接訪問得益于MMU(內(nèi)存管理單元,屬于CPU中的一項特征)硬件輔助虛擬化(Intel EPT和AMD RVI/NPT,第二代虛擬化技術(shù))。
虛擬機對于I/O設(shè)備的訪問則有多種方式,以網(wǎng)卡為例,有兩種方式可供選擇:一是利用I/O MMU硬件輔助虛擬化(Intel VT-d和AMD-Vi)的VMDirectPath I/O,使得虛擬機可以直接訪問硬件設(shè)備,從而減少對CPU的開銷;二是利用半虛擬化的設(shè)備VMXNETx,網(wǎng)卡的物理驅(qū)動在VMkernel中,在虛擬機中裝載網(wǎng)卡的虛擬驅(qū)動,通過這二者的配對來訪問網(wǎng)卡,與仿真式網(wǎng)卡(IntelE1000)相比有著較高的效率。半虛擬化設(shè)備的安裝是由虛擬機中VMware tool來實現(xiàn)的,可以在Windows虛擬機的右下角找到它。網(wǎng)卡的這兩種方式,前者有著顯著的先進性,但后者用得更為普遍,因為VMDirectPath I/O與VMware虛擬化的一些核心功能不兼容,如:熱遷移、快照、容錯、內(nèi)存過量使用等。
ESX的物理驅(qū)動是內(nèi)置在Hypervisor中,所有設(shè)備驅(qū)動均是由VMware預(yù)植入的。因此,ESX對硬件有嚴格的兼容性列表,不在列表中的硬件,ESX將拒絕在其上面安裝。
(2) Hyper-V的虛擬化架構(gòu)(如圖2)
圖2:Hyper-V虛擬化架構(gòu)示意圖
Hyper-V是微軟新一代的服務(wù)器虛擬化技術(shù),首個版本于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)將直接操作硬件設(shè)備,一旦在其中開啟了Hyper-V角色,系統(tǒng)會要求重新啟動服務(wù)器。雖然重啟后的系統(tǒng)在表面看來沒什么區(qū)別,但從體系架構(gòu)上看則與之前的完全不同了。在這次重啟動過程中,Hyper-V的Hypervisor接管了硬件設(shè)備的控制權(quán),先前的Windows Server 2008則成為Hyper-V的首個虛擬機,稱之為父分區(qū),負責(zé)其他虛擬機(稱為子分區(qū))以及I/O設(shè)備的管理。Hyper-V要求CPU必須具備硬件輔助虛擬化,但對MMU硬件輔助虛擬化則是一個增強選項。
其實Hypervisor僅實現(xiàn)了CPU的調(diào)度和內(nèi)存的分配,而父分區(qū)控制著I/O設(shè)備,它通過物理驅(qū)動直接訪問網(wǎng)卡、存儲等。子分區(qū)要訪問I/O設(shè)備需要通過子分區(qū)操作系統(tǒng)內(nèi)的VSC(虛擬化服務(wù)客戶端),對VSC的請求由VMBUS(虛擬機總線)傳遞到父分區(qū)操作系統(tǒng)內(nèi)的VSP(虛擬化服務(wù)提供者),再由VSP重定向到父分區(qū)內(nèi)的物理驅(qū)動,每種I/O設(shè)備均有各自的VSC和VSP配對,如存儲、網(wǎng)絡(luò)、視頻和輸入設(shè)備等,整個I/O設(shè)備訪問過程對于子分區(qū)的操作系統(tǒng)是透明的。其實在子分區(qū)操作系統(tǒng)內(nèi),VSC和VMBUS就是作為I/O設(shè)備的虛擬驅(qū)動,它是子分區(qū)操作系統(tǒng)首次啟動時由Hyper-V提供的集成 服務(wù)包安裝,這也算是一種半虛擬化的設(shè)備,使得虛擬機與物理I/O設(shè)備無關(guān)。如果子分區(qū)的操作系統(tǒng)沒有安裝Hyper-V集成服務(wù)包或者不支持Hyper-V集成服務(wù)包(對于這種操作系統(tǒng),微軟稱之為Unenlightened OS,如未經(jīng)認證支持的Linux版本和舊的Windows版本),則這個子分區(qū)只能運行在仿真狀態(tài)。其實微軟所宣稱的啟蒙式(Enlightenment)操作系統(tǒng),就是支持半虛擬化驅(qū)動的操作系統(tǒng)。
Hyper-V的Hypervisor是一個非常精簡的軟件層,不包含任何物理驅(qū)動,物理服務(wù)器的設(shè)備驅(qū)動均是駐留在父分區(qū)的Windows Server 2008中,驅(qū)動程序的安裝和加載方式與傳統(tǒng)Windows系統(tǒng)沒有任何區(qū)別。因此,只要是Windows支持的硬件,也都能被Hyper-V所兼容。
(3) XEN的虛擬化架構(gòu)(如圖3)
圖3:XEN的虛擬化架構(gòu)示意圖
XEN最初是劍橋大學(xué)Xensource的一個開源研究項目,2003年9月發(fā)布了首個版本XEN 1.0,2007年Xensource被Citrix公司收購,開源XEN轉(zhuǎn)由www.xen.org繼續(xù)推進,該組織成員包括個人和公司(如Citrix、Oracle等)。目前該組織在2011年3月發(fā)布了最新版本XEN 4.1。
相對于ESX和Hyper-V來說,XEN支持更廣泛的CPU架構(gòu),前兩者只支持CISC的X86/X86_64 CPU架構(gòu),XEN除此之外還支持RISC CPU架構(gòu),如IA64、ARM等。
XEN的Hypervisor是服務(wù)器經(jīng)過BIOS啟動之后載入的首個程序,然后啟動一個具有特定權(quán)限的虛擬機,稱之為Domain 0(簡稱Dom 0)。Dom 0的操作系統(tǒng)可以是Linux或Unix,它實現(xiàn)對Hypervisor控制和管理功能。在所承載的虛擬機中,Dom 0是唯一可以直接訪問物理硬件(如存儲和網(wǎng)卡)的虛擬機,它通過本身加載的物理驅(qū)動,為其它虛擬機(Domain U,簡稱DomU)提供訪問存儲和網(wǎng)卡的橋梁。
XEN支持兩種類型的虛擬機,一類是半虛擬化(PV,Paravirtualization),另一類是全虛擬化(XEN稱其為HVM,Hardware Virtual Machine)。半虛擬化需要特定內(nèi)核的操作系統(tǒng),如基于Linux paravirt_ops(Linux內(nèi)核的一套編譯選項)框架的Linux內(nèi)核,而Windows操作系統(tǒng)由于其封閉性則不能被XEN的半虛擬化所支持,XEN的半虛擬化有個特別之處就是不要求CPU具備硬件輔助虛擬化,這非常適用于2007年之前的舊服務(wù)器虛擬化改造。全虛擬化支持原生的操作系統(tǒng),特別是針對Windows這類操作系統(tǒng),XEN的全虛擬化要求CPU具備硬件輔助虛擬化,它修改的Qemu仿真所有硬件,包括:BIOS、IDE控制器、VGA顯示卡、USB控制器和網(wǎng)卡等。為了提升I/O性能,全虛擬化特別針對磁盤和網(wǎng)卡采用半虛擬化設(shè)備來代替仿真設(shè)備,這些設(shè)備驅(qū)動稱之為PV on HVM,為了使PV on HVM有最佳性能。CPU應(yīng)具備MMU硬件輔助虛擬化。
XEN的Hypervisor層非常薄,少于15萬行的代碼量,不包含任何物理設(shè)備驅(qū)動,這一點與Hyper-V是非常類似的,物理設(shè)備的驅(qū)動均是駐留在Dom 0中,可以重用現(xiàn)有的Linux設(shè)備驅(qū)動程序。因此,XEN對硬件兼容性也是非常廣泛的,Linux支持的,它就支持。
(4) KVM的虛擬化架構(gòu)(如圖4)
圖4:KVM的虛擬化架構(gòu)示意圖
KVM的全稱是Kernel-based Virtual Machine,字面意思是基于內(nèi)核虛擬機。其最初是由Qumranet公司開發(fā)的一個開源項目,2007年1月首次被整合到Linux 2.6.20核心中;2008年,Qumranet被RedHat所收購,但KVM本身仍是一個開源項目,由RedHat、IBM等廠商支持。KVM作為Linux內(nèi)核中的一個模塊,與Linux內(nèi)核一起發(fā)布,至2011年1月的最新版本是kvm-kmod 2.6.37。
與XEN類似,KVM支持廣泛的CPU架構(gòu),除了X86/X86_64 CPU架構(gòu)之外,還將會支持大型機(S/390)、小型機(PowerPC、IA64)及ARM等。
KVM充分利用了CPU的硬件輔助虛擬化能力,并重用了Linux內(nèi)核的諸多功能,使得KVM本身是非常瘦小的,KVM的創(chuàng)始者Avi Kivity聲稱KVM模塊僅有約10000行代碼,但我們不能認為KVM的Hypervisor就是這個代碼量,因為從嚴格意義來說,KVM本身并不是Hypervisor,它僅是Linux內(nèi)核中的一個可裝載模塊,其功能是將Linux內(nèi)核轉(zhuǎn)換成一個裸金屬的Hypervisor。這相對于其它裸金屬架構(gòu)來說,它是非常特別的,有些類似于宿主架構(gòu),業(yè)界甚至有人稱其是半裸金屬架構(gòu)。
通過KVM模塊的加載將Linux內(nèi)核轉(zhuǎn)變成Hypervisor,KVM在Linux內(nèi)核的用戶(User)模式和內(nèi)核(Kernel)模式基礎(chǔ)上增加了客戶(Guest)模式。Linux本身運行于內(nèi)核模式,主機進程運行于用戶模式,虛擬機則運行于客戶模式,使得轉(zhuǎn)變后的Linux內(nèi)核可以將主機進程和虛擬機進行統(tǒng)一的管理和調(diào)度,這也是KVM名稱的由來。
KVM利用修改的QEMU提供BIOS、顯卡、網(wǎng)絡(luò)、磁盤控制器等的仿真,但對于I/O設(shè)備(主要指網(wǎng)卡和磁盤控制器)來說,則必然帶來性能低下的問題。因此,KVM也引入了半虛擬化的設(shè)備驅(qū)動,通過虛擬機操作系統(tǒng)中的虛擬驅(qū)動與主機Linux內(nèi)核中的物理驅(qū)動相配合,提供近似原生設(shè)備的性能。從此可以看出,KVM支持的物理設(shè)備也即是Linux所支持的物理設(shè)備。
本文所討論的4種虛擬化技術(shù)都用到了半虛擬化驅(qū)動,若要在不同虛擬化架構(gòu)之間遷移虛擬機,這些半虛擬化驅(qū)動將必然帶來兼容性問題。因此,RedHat和IBM聯(lián)合Linux社區(qū)推出VirtIO半虛擬化驅(qū)動開發(fā)標準,基于VirtIO的半虛擬化驅(qū)動獨立于Hypervisor,跨平臺遷移時半虛擬化驅(qū)動仍可重用,使得不同虛擬化架構(gòu)之間更容易實現(xiàn)互操作。
3.結(jié)束語
目前,傳統(tǒng)概念下的半虛擬化和全虛擬化的界線越來越模糊了,而且半虛擬化和全虛擬化得到了有機的整合,如半虛擬化的設(shè)備驅(qū)動和全虛擬化的虛擬機在上述四種虛擬化架構(gòu)中得到了統(tǒng)一,很多虛擬化廠商也不再明確自己的虛擬化產(chǎn)品歸類(如VMware和微軟)。
隨著CPU硬件輔助虛擬化技術(shù)發(fā)展到了二代,而且新版的操作系統(tǒng)對虛擬化技術(shù)的原生支持(如Windows7的Natively Enlightened,Linux的paravirt_ops內(nèi)核選項),以及Hypervisor對虛擬機的CPU調(diào)度和內(nèi)存管理越來越少的干預(yù)。則軟件做得越少而硬件做得越多,如虛擬機之間內(nèi)存管理所需用到的地址翻譯由軟件的影式分頁(Shadow Paging)轉(zhuǎn)變?yōu)橛蒀PU硬件加速的嵌套分頁(Nested Paging),各種虛擬化技術(shù)既有全虛擬化技術(shù)對操作系統(tǒng)的兼容性,又有半虛擬化技術(shù)所帶來的性能優(yōu)勢。
從架構(gòu)上來看,各種虛擬化技術(shù)沒有明顯的性能差距,穩(wěn)定性也在逐漸逼近中,各自有著自身的優(yōu)勢場景和市場群體。因此,我們在進行虛擬化技術(shù)選型時,不應(yīng)局限于某一種虛擬化技術(shù),而應(yīng)該有一套綜合管理平臺實現(xiàn)對各種虛擬化技術(shù)的兼容并蓄,實現(xiàn)不同技術(shù)架構(gòu)的統(tǒng)一管理及跨技術(shù)架構(gòu)的資源調(diào)度,最終達到云計算可運營的目標。
萬方數(shù)據(jù)
相關(guān)閱讀:
感谢您访问我们的网站,您可能还对以下资源感兴趣:
亚洲综合伊人,成人欧美一区二区三区视频不卡,欧美日韩在线高清,日韩国产午夜一区二区三区
a级**毛片,成年女人视频播放免费观看,亚洲第一区视频,日韩在线视频中文字幕
日本不卡中文字幕一区二区,精品国产一二三区,国产高清天干天天视频,天天干天天天天
亚洲高清视频在线播放,一级淫片在线观看,三级aa视频在线观看,欧美天天爽
黄色永久免费,www.sese123,91系列在线观看,美国毛片一级视频在线aa
mmmmxxxx国产在线观看,亚洲合集综合久久性色,在线国产观看,亚洲精品一级无码中文字幕
玖玖精品,国产精品1区2区3区在线播放,天堂网视频在线,欧美精品在线视频
欧美色人阁,aaaa大片,神马影院午夜剧场,91福利一区二区三区
亚洲一区二区三区高清不卡,美国毛片aa,啪啪视,天天添天天操
综合激情网站,最新中文字幕在线播放,电影伦敦战场,亚洲精品在线不卡
www淫,亚洲欧美在线视频免费,www.亚洲一区二区三区,98色花堂国产精品首页