Twist
隨著近年多核系統(tǒng)、集群、網(wǎng)格、甚至云計(jì)算的廣泛部署,虛擬化技術(shù)在商業(yè)應(yīng)用上的優(yōu)勢日益體現(xiàn),不僅降低了IT運(yùn)營成本,而且還增強(qiáng)了系統(tǒng)安全性和可靠性,虛擬化的概念也逐漸深入到人們?nèi)粘5墓ぷ髋c生活中。那什么是虛擬化技術(shù)?它能為我們帶來了什么?
在iPhone手機(jī)上運(yùn)行Windows、Office,使用iPhone的多點(diǎn)觸摸功能放大,縮小Windows桌面,創(chuàng)建和修改Word、Excel和DPowerPoint,甚至連耗費(fèi)硬件資源極大的AutoCAD也可以在iPhone上修改。這些都不是“神話”,而是利用“桌面虛擬化”和“應(yīng)用程序虛擬化”技術(shù)在手機(jī)屏幕上顯示出運(yùn)行在數(shù)據(jù)中心上的操作系統(tǒng)和應(yīng)用軟件的鏡像,是最新虛擬化技術(shù)為移動用戶帶來的全新體驗(yàn)。
在服務(wù)器層面,目前利用虛擬化技術(shù)已經(jīng)能做到1:10的整合,就是把一臺服務(wù)器虛擬成10臺虛擬客戶機(jī)。舉例來說,如果一個企業(yè)的數(shù)據(jù)中心過去需要1500臺服務(wù)器,那現(xiàn)在150臺就夠了,既符合環(huán)保,低碳概念,又能極大地降低企業(yè)的運(yùn)營成本,在經(jīng)濟(jì)危機(jī)下尤其受到企業(yè)的重視和歡迎。虛擬化浪潮契合了IT發(fā)展的兩大趨勢——計(jì)算成本的不斷下降以及計(jì)算能力重新由分散走向集中。那到底什么是虛擬化技術(shù)呢?
虛擬化技術(shù)的定義
虛擬化簡單地講是一種將系統(tǒng)硬件資源(包括CPU、內(nèi)存、硬盤等)按照客戶的要求分割為不同的虛擬空間,使得其中的每一個都相當(dāng)于一個完整的系統(tǒng)(對客戶機(jī)操作系統(tǒng)和用戶來說),用戶可以在這些不同的獨(dú)立空間內(nèi)運(yùn)行各自的操作系統(tǒng)和應(yīng)用軟件,并且互不影響,而創(chuàng)建這些獨(dú)立空間的過程就被稱為虛擬化,也叫做平臺虛擬化。那我們不禁有這樣的疑問:如果是為了實(shí)現(xiàn)多用戶共享,增加更多的機(jī)器不是更簡單,那為什么還要舍易求難?
虛擬技術(shù)發(fā)展的漫漫歷程
要回答這個問題,就不得不從50年前講起。1959年,美國學(xué)者Christopher Stmchey首次在《大型高速計(jì)算機(jī)中的時間共享》一書中提出了虛擬化的概念。隨后,IBM以及其它公司以此開發(fā)出了最初的虛擬化技術(shù)。但和Strachey的目的一樣,當(dāng)時他們更多的是關(guān)注計(jì)算機(jī)的性能。當(dāng)時大型機(jī)非常昂貴,為了讓更多用戶使用它,技術(shù)人員使用軟件對大型機(jī)硬件資源進(jìn)行分割,虛擬成多臺主機(jī),再安裝相互隔離的操作系統(tǒng),讓更多用戶使用。這就是虛擬化的雛形。
在隨后的10年里,微處理器技術(shù)得到了巨大的發(fā)展,IT技術(shù)也逐漸演變成了一種“通用”的計(jì)算模式。當(dāng)時,絕大部分大型和小型計(jì)算機(jī)系統(tǒng)均被服務(wù)器所取代,因?yàn)樗咝?,成本更低,尤其是在部署新?yīng)用方面。只要某個部門需要部署一個新的應(yīng)用,就會要求新增一臺服務(wù)器,這樣做的直接后果就是服務(wù)器數(shù)量急劇增加。從1990年至今,大多數(shù)公司的服務(wù)器規(guī)模增加了10倍以上,用于維護(hù)大型數(shù)據(jù)中心的成本不斷攀升,蠶食了大量的資金,運(yùn)營和管理資源,但是每臺服務(wù)器的資源利用率卻下降到15%左右。這種趨勢持續(xù)下去,企業(yè)將不堪重負(fù)。
為此,以適用為導(dǎo)向的計(jì)算模式開始受到人們的重視,其中,虛擬化就是解決服務(wù)器集群臃腫最切實(shí)有效的辦法,不僅可以減少服務(wù)器的數(shù)量,而且可以大幅提高服務(wù)器的資源利用率。為此,在高端服務(wù)器領(lǐng)域,虛擬化技術(shù)獲得了長足的發(fā)展,先后經(jīng)歷了部分虛擬化,操作系統(tǒng)虛擬化,完全虛擬化(超虛擬化)階段,以致最終發(fā)展成熟。最具標(biāo)志性的就是1999年2月8日VMware推出的“VMware VirtualPlatform”(VMware虛擬平臺),它的出現(xiàn)標(biāo)志著虛擬化技術(shù)“平民化”的開始。
VMware全虛擬平臺
VMware虛擬平臺是在斯坦福大學(xué)的研究基礎(chǔ)上提出的一種完全虛擬化解決方案,利用虛擬化監(jiān)視器(VMM,也叫Hypervisor)軟件來實(shí)現(xiàn)PC的完全虛擬化。VMM或Hypersivor是一種運(yùn)行在服務(wù)器硬件和操作系統(tǒng)之間的軟件層,可允許多個操作系統(tǒng)和應(yīng)用共享硬件。VMM可為每個客戶端操作系統(tǒng)提供一個完整的硬件界面,讓操作系統(tǒng)認(rèn)為其完全掌控所有資源,從而允許多個操作系統(tǒng)共享硬件。并且,VMM還能夠模擬與操作系統(tǒng)和應(yīng)用有關(guān)的所有物理服務(wù)器功能。
然而,在純軟件的虛擬化模式中,VMM必須控制各種關(guān)鍵平臺資源(特別是內(nèi)存),然后分配給每個客戶機(jī)操作系統(tǒng),以避免發(fā)生沖突。但是在傳統(tǒng)的x86架構(gòu)下,沖突卻不可避免。因?yàn)?,IA-32體系采用的是指令集架構(gòu)(ISA),它確定了四種操作系統(tǒng)和應(yīng)用可以運(yùn)行的“特權(quán)層級”(Ring0~Ring 3)。操作系統(tǒng)一般運(yùn)行在Ring 0上,它具有訪問所有處理器和平臺資源的特別權(quán)限。應(yīng)用程序通常運(yùn)行在Ring 3上,被限制內(nèi)存映射等特定功能,以避免影響到其它應(yīng)用。通過這種配置,操作系統(tǒng)把持了所有控制權(quán),以確保整個系統(tǒng)的流暢運(yùn)行,但是這也造成了VMM與操作系統(tǒng)之間對資源控制權(quán)的爭奪。
在早期的虛擬化過程中,常規(guī)的解決方法是在Ring 0中運(yùn)行VMM,將客戶機(jī)操作系統(tǒng)的權(quán)限降至Ring1或Ring 3。但是,操作系統(tǒng)都是針對Ring 0設(shè)計(jì)的,虛擬機(jī)軟件必須要修改操作系統(tǒng)源代碼,在VMM運(yùn)行期間降低操作系統(tǒng)的權(quán)限。如此一來就需要操作系統(tǒng)開發(fā)商、集成商等在內(nèi)的專業(yè)技術(shù)人員花費(fèi)大量的時間和人力對系統(tǒng)源代碼進(jìn)行再修改,這個工作的繁瑣就不多說了。更重要的是這條路根本走不通,因?yàn)橹T如微軟等系統(tǒng)軟件商根本不想把源代碼拿出來。唯一可行的方法就只有在虛擬平臺和操作系統(tǒng)之間通過二進(jìn)制轉(zhuǎn)碼的方式,減少操作系統(tǒng)對特權(quán)狀態(tài)訪問的操作,盡量減少產(chǎn)生不必要的硬件異常,由此出現(xiàn)了類似VMware這樣的全虛擬化技術(shù)。
在全虛擬化狀態(tài)下,虛擬機(jī)模擬了完整的底層硬件,包括處理器、物理內(nèi)存、時鐘、外設(shè)等,使得操作系統(tǒng)或其它系統(tǒng)軟件完全不做任何修改就可以在虛擬機(jī)中運(yùn)行。操作系統(tǒng)與真實(shí)硬件之間的交互可以看成是通過一個預(yù)先規(guī)定的硬件接口進(jìn)行的。全虛擬化VMM以完整模擬硬件的方式提供全部接口,同時還必須模擬特權(quán)指令的執(zhí)行過程。但是,如果硬件不提供虛擬化的特殊支持,那么這個模擬過程就會非常復(fù)雜。
舉例而言,在x86體系中,對于操作系統(tǒng)切換進(jìn)程頁表的操作,真實(shí)硬件通過提供一個特權(quán)CR3寄存器來實(shí)現(xiàn),操作系統(tǒng)只需執(zhí)行“mov pgtable,%%cr3”匯編指令即可。那交給VMM會發(fā)生什么情況呢?
當(dāng)客戶機(jī)操作系統(tǒng)執(zhí)行該指令時,由于這條指令超出了它的控制權(quán)限,因此系統(tǒng)產(chǎn)生異常,執(zhí)行控制權(quán)轉(zhuǎn)到VMM手中。VMM首先分配一個變量給客戶機(jī)操作系統(tǒng),相當(dāng)于原來的CR3寄存器,然后將pgtable代表的客戶機(jī)物理地址填入這個“CR3寄存器”中,接下來
VMM還要將pgtable翻譯成主機(jī)物理地址并填入到真實(shí)的CR3寄存器中,最后返回操作系統(tǒng),操作系統(tǒng)才能執(zhí)行這條指令。因此,盡管全虛擬化可以在不修改操作系統(tǒng)源代碼的情況下穩(wěn)定運(yùn)行,但是就其平臺本身而言,不僅編程更加復(fù)雜,而且程序的執(zhí)行效率低下。這種狀況—直持續(xù)到2005年。
虛擬化的新階段——硬件輔助虛擬化技術(shù)
在2005年春季信息技術(shù)峰會上,Intel發(fā)布了IVT(Intel Virtualization Technology),從而拉開了IA架構(gòu)虛擬化應(yīng)用的新時代大幕。支持虛擬化技術(shù)的處理器帶有特別優(yōu)化過的指令集來自動控制虛擬化進(jìn)程,從而極大簡化了VMM的設(shè)計(jì),使其性能得到大幅提升。其中,IA-32處理器的虛擬化技術(shù)稱為VT-x,安騰處理器的虛擬化技術(shù)稱為VT-i。
VT-x在原有的IA 4·Rings架構(gòu)之上提供了一個名為VMX Root的“新特權(quán)階層”,專門用來運(yùn)行VMM。與此對應(yīng),客戶機(jī)操作系統(tǒng)則運(yùn)行在VMX non-rootope ration(也就是原來的4-Ring架構(gòu)),這兩種操作模式之間可以切換。VMM通過調(diào)用“VMLAUNCH”或“VMRESUME”指令切換到VMX non-root operation模式,這時硬件自動加載操作系統(tǒng),操作系統(tǒng)獲得運(yùn)行,這種轉(zhuǎn)換被稱為VM entry。操作系統(tǒng)運(yùn)行過程中遇到需要VMM處理的事件,就會主動調(diào)用“VMCALL”指令硬件自動掛起,退出操作系統(tǒng)切換到VMX root operation模式,恢復(fù)VMM的運(yùn)行,這種轉(zhuǎn)換稱為VM exit。這樣一來基本上解決了VMM與客戶機(jī)操作系統(tǒng)之間的沖突和轉(zhuǎn)換問題。
除此之外,IVT還提供了一個名為虛擬機(jī)控制塊(VMCS)的緩存區(qū),分為客戶機(jī)狀態(tài)區(qū)(GuestState Area)、主機(jī)狀態(tài)區(qū)(Host StateArea)和執(zhí)行控制區(qū)。當(dāng)VM entry發(fā)生時,硬件自動從客戶機(jī)狀態(tài)區(qū)加載之前操作系統(tǒng)的哲存數(shù)據(jù)(這時不需要保存VMM的數(shù)據(jù)。因?yàn)樵赩MX root operation模式下,VMM被賦予了最高權(quán)限。一旦VMM開始運(yùn)行,就不會受到任何干擾,只有在VMM徹底處理完畢后才可能切換到操作系統(tǒng),所以每次VMM運(yùn)行,必然是處理一個新事件);當(dāng)需要由操作系統(tǒng)切換到VMM時(VM exit),硬件自動將操作系統(tǒng)的暫存數(shù)據(jù)保存到客戶機(jī)狀態(tài)區(qū),并從主機(jī)狀態(tài)區(qū)中加載VMM的通用事件處理函數(shù)的地址,VMM開始執(zhí)行。而執(zhí)行控制區(qū)存放的則是可以操控VM entry和 exit的標(biāo)志位,例如標(biāo)記哪些事件可以導(dǎo)致從操作系統(tǒng)切換到VMM。而當(dāng)由VMM進(jìn)入操作系統(tǒng)時,VMM會自動給操作系統(tǒng)“塞”入中斷標(biāo)志,當(dāng)滿足條件時,再切換回VMX root operation。這個緩存區(qū)的出現(xiàn),從根本上解決了VMM與客戶操作系統(tǒng)之間的信息控制和轉(zhuǎn)換問題。至此,軟件虛擬化技術(shù)存在的兩個最大技術(shù)障礙在以IVT為首的硬件虛擬化技術(shù)出現(xiàn)后都已不復(fù)存在了,這為簡化虛擬化的實(shí)施鋪平了道路。
可以說,硬件輔助虛擬化技術(shù)代表了虛擬化技術(shù)的未來,但是,這并不意味著IVT已經(jīng)完美無缺了,實(shí)際上還有不少值得改進(jìn)的地方。首先,最需要解決的就是提高操作模式間的轉(zhuǎn)換速度問題。由于兩種模式的轉(zhuǎn)換太過頻繁,如果不能有效提高轉(zhuǎn)換速度,即使充分利用硬件特性,虛擬機(jī)的整體性能也會大打折扣,以Pentium 4處理器為例,它通常需要花費(fèi)2409個時鐘周期處理VM entry,花費(fèi)508個時鐘周期處理VM exit,代價相當(dāng)高;而新的Core架構(gòu)響應(yīng)時間已經(jīng)減少到937和446個時鐘周期。其次是提高TLB(Translation Lookaside Buffer,翻譯后援緩沖器)的性能,因?yàn)槊看渭虞d都需要從它里面讀取數(shù)據(jù),它的性能決定了轉(zhuǎn)換的快慢。除此之外,提供內(nèi)存管理單元虛擬化的硬件支持以及支持高效的I/O虛擬化也是處理器級虛擬化技術(shù)升級亟需解決的問題。
為此,Intel為IVT制定了一條明確的路線圖,從解決Ring 0指令沖突問題的VT-x,到解決I/O設(shè)備虛擬化問題的VT-d(在2008年的Stoakley平臺中已實(shí)現(xiàn)),以及解決內(nèi)存虛擬化問題的VT-x Gen2(Nehalem處理器中包含此技術(shù))。AMD也推出了自己的虛擬化解決方案,稱為AMD-V(內(nèi)部研發(fā)代號為Pacifica)。盡管Intel-VT和AMD-V并不完全相同,但是基本思路和數(shù)據(jù)結(jié)構(gòu)卻是相似的。目前,AMD-V可以為CPU虛擬化和I/O設(shè)備虛擬化(10MMU)提供支持。
虛擬技術(shù)的應(yīng)用擴(kuò)展
在Intel-VT和AMD-V推出之后,虛擬化技術(shù)獲得了迅猛的發(fā)展,已經(jīng)從最初的平臺虛擬化向資源虛擬化和應(yīng)用程序虛擬化方向擴(kuò)展。所謂資源虛擬化,是指對特定的系統(tǒng)資源的虛擬化,比如CPU、內(nèi)存、存儲、網(wǎng)絡(luò)資源等。例如,可以將單CPU虛擬成多CPU,虛擬內(nèi)存技術(shù)可以使應(yīng)用程序認(rèn)為其自身擁有連續(xù)可用的地址空間。而實(shí)際上,應(yīng)用程序的代碼和數(shù)據(jù)可能是被分隔成多個碎片頁或段,甚至被交換到磁盤,閃存等外部存儲器上,即使物理內(nèi)存不足,應(yīng)用程序也能順利執(zhí)行。應(yīng)用程序的虛擬化最經(jīng)典的案例就是本文開篇所提到的能夠運(yùn)行Windows和Office的iPhone手機(jī)。此外,云計(jì)算也是一個很典型的實(shí)例。
虛擬化的未來
目前,虛擬化技術(shù)已經(jīng)和云計(jì)算一起成為未來高端服務(wù)器平臺和數(shù)據(jù)中心必備的兩大技術(shù)。實(shí)際上,虛擬技術(shù)帶來的變革已隨處可見。云計(jì)算最重要的軟件架構(gòu)就是通過虛擬化技術(shù)來實(shí)現(xiàn)的。
另外,虛擬化技術(shù)所帶來的服務(wù)器數(shù)量減少和散熱成本的降低也是顯而易見的,同時還帶來了安全性和可靠性的提升。因?yàn)?,在?yīng)用程序的虛擬化應(yīng)用中,客戶端擁有的只是一個鏡像,所有的數(shù)據(jù)都保存在數(shù)據(jù)中心里(服務(wù)器端),因此即使客戶端損壞或丟失,相關(guān)的數(shù)據(jù)也不會消失。不過,虛擬化技術(shù)所帶來的更重要的革新是,當(dāng)所有的iPhone(智能手機(jī))都可以運(yùn)行Windows時,也就意味著終端硬件的性能差別將不復(fù)存在,CIO們夢想的“網(wǎng)絡(luò)就是計(jì)算機(jī)”就會成為現(xiàn)實(shí)。
MC點(diǎn)評:“截至2008,不能充分利用虛擬化技術(shù)的企業(yè)將會多支出40%的采購成本和20%左右的管理成本?!?摘自Gartner《服務(wù)器慮擬化的未來》)這句話能充分說明了虛擬化為企業(yè)級用戶帶來的成本降低和效益提升。因此,當(dāng)我們發(fā)現(xiàn)虛擬化技術(shù)是如此多姿多彩的時候,對它的需求就更為迫切了。