虛擬化技術(shù)簡(jiǎn)介虛擬化技術(shù)發(fā)展史
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、項(xiàng)城網(wǎng)站維護(hù)、網(wǎng)站推廣。虛擬化技術(shù)最早出現(xiàn)在大型機(jī)時(shí)代。上世紀(jì)60年代,IBM開(kāi)始在其CP-40大型機(jī)系統(tǒng)中嘗試虛擬化的實(shí)現(xiàn),后來(lái)在System/360-67中采用,并衍生出VM/CMS到后來(lái)的z/VM等產(chǎn)品線。大型機(jī)上的虛擬化技術(shù)在之后20多年的發(fā)展中愈發(fā)成熟,但隨著小型機(jī)以及x86的流行,大型機(jī)在新興的服務(wù)器市場(chǎng)中已經(jīng)失去了影響力。
由于處理器架構(gòu)的不同,在大型機(jī)上已經(jīng)成熟的虛擬化技術(shù)卻并不能為小型機(jī)及x86所用。直到2001年,VMware發(fā)布了第一個(gè)針對(duì)x86服務(wù)器的虛擬化產(chǎn)品。之后的幾年間,英國(guó)劍橋大學(xué)的一位講師發(fā)布了同樣針對(duì)x86虛擬化的開(kāi)源虛擬化項(xiàng)目Xen,并成立XenSource公司(07年Citrix將其收購(gòu));惠普發(fā)布了針對(duì)HP-UX的Integrity虛擬機(jī);Sun跟Solaris 10一同發(fā)布了同時(shí)支持x86/x64和SPARC架構(gòu)的Solaris Zone;而微軟也終于在2008年發(fā)布的Windows Server 2008 R2中加入了Hyper-V。期間,VMware被EMC收購(gòu),XenSource則被思杰收購(gòu)。
之后的幾年間,VMware逐漸在企業(yè)級(jí)市場(chǎng)中被廣泛的接受,Xen也逐漸在互聯(lián)網(wǎng)領(lǐng)域展露頭角。在成熟的服務(wù)器操作系統(tǒng)當(dāng)中,Novell SUSE Linux Enterprise 10是第一個(gè)采用Xen技術(shù)的。當(dāng)時(shí)的Xen還很不成熟,乃至于紅帽還為此取笑了Novell一番;不過(guò)幾個(gè)月后,到了RHEL 5.0發(fā)布的時(shí)候,紅帽決定也將Xen加入到自己的默認(rèn)特性當(dāng)中——那是2006年。一時(shí)之間,在Linux服務(wù)器領(lǐng)域,Xen似乎成為了 VMware之外的虛擬化選擇(事實(shí)上也沒(méi)多少其他可選的)。
但是,作為一項(xiàng)Linux平臺(tái)上的虛擬化技術(shù),Xen在很長(zhǎng)一段時(shí)間內(nèi)一直沒(méi)有被接受到Linux內(nèi)核的代碼當(dāng)中,這對(duì)于Xen的維護(hù)者而言,不僅意味著要多做很多工作,還意味著用戶在廢了半天勁裝好Xen之后可能遇到意想不到的問(wèn)題(注:2011年6月發(fā)布的Linux內(nèi)核3.0中已經(jīng)加入了對(duì)Xen的支持——Xen的工程師們表示這是清理了7年遺留代碼、提交了600多個(gè)補(bǔ)丁的成果)。
而紅帽方面,也許是因?yàn)楫?dāng)時(shí)對(duì)這種脫離內(nèi)核的維護(hù)方式很不爽,也許是因?yàn)椴捎肵en的RHEL在企業(yè)級(jí)虛擬化方面沒(méi)有贏得太多的市場(chǎng),也許是因?yàn)樗冀芨④涀叩奶耍N種原因,導(dǎo)致其萌生了放棄Xen的心思。2008年9月,紅帽收購(gòu)了一家名叫Qumranet的以色列小公司,由此入手了一個(gè)叫做KVM的虛擬化技術(shù)(KVM,全稱Kernel-based Virtual Machine,意為基于內(nèi)核的虛擬機(jī))。
總之紅帽決定選擇了一個(gè)新興的基于內(nèi)核的虛擬化技術(shù):KVM。而在正式采用KVM一年后,就宣布在新的產(chǎn)品線中徹底放棄Xen,集中資源和精力進(jìn)行KVM的工作。至此各大虛擬化技術(shù)VMware,Xen,KVM等均出現(xiàn),并找到自己位置。
全虛擬化(Full Virtualization)
全虛擬化也成為原始虛擬化技術(shù),該模型使用虛擬機(jī)協(xié)調(diào)Guest操作系統(tǒng)和原始硬件,VMM在Guest操作系統(tǒng)和裸硬件之間用于工作協(xié)調(diào),一些受保護(hù)指令必須由Hypervisor(虛擬機(jī)管理程序)來(lái)捕獲處理。
全虛擬化主要是在客戶操作系統(tǒng)和硬件之間捕捉和處理那些對(duì)虛擬化敏感的特權(quán)指令,使客戶操作系統(tǒng)無(wú)需修改就能運(yùn)行,速度會(huì)根據(jù)不同的實(shí)現(xiàn)而不同,但大致能滿足用戶的需求。這種方式是業(yè)界現(xiàn)今最成熟和最常見(jiàn)的,而且屬于 Hosted 模式和 Hypervisor 模式的都有,知名的產(chǎn)品有IBM CP/CMS、VirtualBox、KVM、VMware Workstation和VMware ESX(它在其4.0版,被改名為VMware vSphere)。
全虛擬化的運(yùn)行速度要快于硬件模擬,但是性能方面不如裸機(jī),因?yàn)镠ypervisor需要占用一些資源。
·優(yōu)點(diǎn):Guest OS無(wú)需修改,速度和功能都非常不錯(cuò),更重要的是使用非常簡(jiǎn)單,不論是 VMware 的產(chǎn)品,還是Oracle的 VirtualBox。
·缺點(diǎn):基于Hosted模式的全虛擬產(chǎn)品性能方面不是特別優(yōu)異,特別是I/O方面。
未來(lái):因?yàn)槭褂眠@種模式,不僅Guest OS免于修改,而且將通過(guò)引入硬件輔助虛擬化技術(shù)來(lái)提高其性能,在未來(lái)全虛擬化還是主流。
半虛擬化(Para Virtualization)
半虛擬化是另一種類似于全虛擬化技術(shù),它使用Hypervisor分享存取底層硬件,但是它的Guest操作系統(tǒng)集成了虛擬化方面代碼。該方法無(wú)需重新編譯或引起陷阱,因?yàn)椴僮飨到y(tǒng)自身能夠與虛擬進(jìn)程進(jìn)行很好的協(xié)作。
它與完全虛擬化有一些類似,它也利用Hypervisor來(lái)實(shí)現(xiàn)對(duì)底層硬件的共享訪問(wèn),但是由于在Hypervisor 上面運(yùn)行的Guest OS已經(jīng)集成與半虛擬化有關(guān)的代碼,使得Guest OS能夠非常好地配合Hyperivosr來(lái)實(shí)現(xiàn)虛擬化。通過(guò)這種方法將無(wú)需重新編譯或捕獲特權(quán)指令,使其性能非常接近物理機(jī),其最經(jīng)典的產(chǎn)品就是Xen,而且因?yàn)槲④浀腍yper-V所采用技術(shù)和Xen類似,所以也可以把Hyper-V歸屬于半虛擬化。
(半虛擬化由于需要修改VM操作系統(tǒng)的內(nèi)核,所以沒(méi)法支持windows這樣閉源OS,于是后來(lái)Xen也利用CPU虛擬化技術(shù)開(kāi)始支持全虛擬化了,所以目前Xen支持半虛擬化和全虛擬化兩種)
半虛擬化需要Guest操作系統(tǒng)做一些修改,使Guest操作系統(tǒng)意識(shí)到自己是處于虛擬化環(huán)境的,但是半虛擬化提供了與原操作系統(tǒng)相近的性能。
· 優(yōu)點(diǎn):這種模式和全虛擬化相比架構(gòu)更精簡(jiǎn),而且在整體速度上有一定的優(yōu)勢(shì)。
· 缺點(diǎn):需要對(duì)Guest OS進(jìn)行修改,所以在用戶體驗(yàn)方面比較麻煩。
未來(lái):情況比較類似,在公有云(比如Amazon EC2)平臺(tái)上應(yīng)該繼續(xù)占有一席之地,但是很難在其他方面和類似VMware vSphere這樣的全虛擬化產(chǎn)品競(jìng)爭(zhēng),同時(shí)它也將會(huì)利用其它技術(shù)來(lái)提高速度,并簡(jiǎn)化架構(gòu)。
虛擬化廠商
VMware簡(jiǎn)介
· VMware的歷史
早在1998年時(shí),畢業(yè)于MIT的Diane Greene察覺(jué)到計(jì)算機(jī)資源的使用率過(guò)低,因此和Dr. Mendel Rosenblum、Scott Devine、Dr. Edward Wang以及Edouard Bugnion等人成立了VMware公司,專精于OS in OS的軟件,期待能完全發(fā)揮硬件的性能,并為當(dāng)時(shí)的專業(yè)IT人員提供一個(gè)測(cè)試、評(píng)估的低成本環(huán)境。
1.X86平臺(tái)上的第一個(gè)虛擬機(jī)產(chǎn)品:VMware Workstation
當(dāng)時(shí)VMware Workstation一上市就打響,使得VMware直接成為虛擬機(jī)的代名詞。然而Windows系統(tǒng)的相對(duì)不穩(wěn)定性,讓VMware的工程師們把目光投向了相對(duì)較穩(wěn)定的Linux系統(tǒng),因此在VMware Workstation成功推出不久之后,也出現(xiàn)了Linux版本的產(chǎn)品,讓Linux下的用戶也可以同時(shí)運(yùn)行Windows或其他的Linux套件。
2.Linux下的虛擬機(jī)產(chǎn)品
雖然解決了Windows的問(wèn)題,VMware Workstation仍然無(wú)法擺脫寄居在固定操作系統(tǒng)上的恐懼。既然選擇了較為穩(wěn)定的Linux,VMware也順勢(shì)推出了運(yùn)行在RedHat、Mandrake和SUSE Linux下的VMware GSX Server,并且也擁有Web端的管理和客戶端的管理程序。在Linux下,VMware較不需要擔(dān)心病毒或黑客的攻擊,而操作系統(tǒng)本身宕機(jī)帶來(lái)的危險(xiǎn)性也相對(duì)較小,因此在2000年初期,Linux成為VMware產(chǎn)品充分發(fā)揮的最好舞臺(tái)。而VMware也在2000年的初期在Linux下推出了VMware GSX Server產(chǎn)品,這也是后來(lái)推出VMware Server版的基礎(chǔ)。當(dāng)然在GSX Server上的特色,就是使用了Client/Server架構(gòu)的管理界面,更可以使用瀏覽器來(lái)連入GSX Server來(lái)管理。
KVM
KVM Kernel-based Virtual Machine的簡(jiǎn)稱,是一個(gè)開(kāi)源的系統(tǒng)虛擬化模塊,自Linux 2.6.20之后集成在Linux的各個(gè)主要發(fā)行版本中。它使用Linux自身的調(diào)度器進(jìn)行管理,所以相對(duì)于Xen,其核心源碼很少。KVM目前已成為學(xué)術(shù)界的主流VMM之一。06年之前,Linux內(nèi)核中還沒(méi)有任何虛擬化實(shí)現(xiàn),Xen和Vmware依靠自己獨(dú)有的技術(shù)分別在虛擬化不同領(lǐng)域如日中天,尤其值得一提的是,Xen在開(kāi)源領(lǐng)域幾乎成為了虛擬化的事實(shí)標(biāo)準(zhǔn)。Avi Kivity和他所在的以色列初創(chuàng)公司Qumranet提出并推動(dòng)KVM(基于Linux內(nèi)核的全虛擬化方案),以其精簡(jiǎn)的架構(gòu),清晰的定位很快獲得Linux社區(qū)多數(shù)開(kāi)發(fā)人員的支持得以快速被合并進(jìn)入主干,以Avi Kivity為主的工程師僅僅花了不到一年時(shí)間就讓Linux社區(qū)接受KVM的設(shè)計(jì)方案并且通過(guò)了代碼Review,最終于2006年10月合并進(jìn)入2.6.20主干,時(shí)至今日,人們依然對(duì)于KVM合并進(jìn)入Linux主干的速度之快感到不可思議。
為什么那么多的大公司對(duì)KVM感興趣?其中最明顯并且最重要的因素就是KVM是Linux內(nèi)核的一部分。這個(gè)輕量級(jí)的虛擬化管理程序模塊能直接與硬件交互,不需要修改虛擬化操作系統(tǒng),因此性能更好,并且補(bǔ)丁包能夠和Linux內(nèi)核兼容,輕松控制虛擬化進(jìn)程,同時(shí)減輕管理負(fù)擔(dān)。
當(dāng)然,KVM也有成長(zhǎng)的煩惱。KVM究竟屬于Type 1還是Type 2hypervisor呢?出現(xiàn)這種疑惑的原因在于KVM的基因——它屬于操作系統(tǒng)的一部分,類似直接運(yùn)行于硬件系統(tǒng)之上的裸機(jī)管理程序,不需要修改操作系統(tǒng)。這就符合Type 1 hypervisor的定義,也經(jīng)常被稱為硬件虛擬化引擎,更像是個(gè)安裝在客戶端上的操作系統(tǒng),性能佳,運(yùn)行穩(wěn)定,減少了運(yùn)行管理程序本身所需的花銷。
而Type 2 hypervisor更像是個(gè)應(yīng)用,運(yùn)行在基礎(chǔ)操作系統(tǒng)上。如果將KVM看作Type 2,那么所強(qiáng)調(diào)的高性能難達(dá)到,還可能存在安全風(fēng)險(xiǎn)。其實(shí),對(duì)Type 1和Type 2的討論不是是否采納KVM的前提。無(wú)論KVM是“第一類”還是“第二類”,這都是語(yǔ)義上的概念。
此外,就是所有新生技術(shù)在發(fā)展中都會(huì)面臨的難題:技術(shù)不成熟。KVM的出現(xiàn)不過(guò)三四年時(shí)間,在可用資源、平臺(tái)支持、管理工具、實(shí)施經(jīng)驗(yàn)方面當(dāng)然不能與出現(xiàn)八年之久的Xen相比。雖然目前KVM還缺少某些關(guān)鍵特性,例如存儲(chǔ)的動(dòng)態(tài)遷移,但是在后續(xù)的版本中都會(huì)開(kāi)發(fā)出來(lái)。
性能方面,KVM在逐漸顯示其威力。不久前的SPECvirt虛擬化對(duì)照基準(zhǔn)測(cè)試中,紅帽企業(yè)Linux 6.1、其內(nèi)嵌的KVM hypervisor以及惠普ProLiant DL980 G7服務(wù)器三者結(jié)合,創(chuàng)造了新的成績(jī)——的虛擬化性能和最多的計(jì)算區(qū)塊數(shù)量,并且六臺(tái)虛擬機(jī)能同時(shí)運(yùn)行一個(gè)應(yīng)用程序。
雖然只是新生技術(shù),但是由于其性能和實(shí)施的簡(jiǎn)易性,加上Linux企業(yè)市場(chǎng)中份額的紅帽不遺余力的推廣開(kāi)發(fā),KVM將會(huì)持續(xù)成長(zhǎng)壯大。
Hyper-V
在2006年VMware將其Server產(chǎn)品免費(fèi)化之后,整個(gè)虛擬機(jī)的市場(chǎng)立即產(chǎn)生了變化。原來(lái)大家心中的"OS in OS"觀念立即提升到新的境界。微軟是第一個(gè)發(fā)現(xiàn)這個(gè)龐大市場(chǎng)的競(jìng)爭(zhēng)對(duì)手,也在當(dāng)時(shí)立即宣稱投入企業(yè)級(jí)的虛擬機(jī)市場(chǎng),并在2008年成功推出了Hyper-V。在2010年發(fā)布的Windows Server 2008 R2發(fā)布支持Live/Quick Migration的Hyper-V R2更新版,支持不需要重新啟動(dòng)的立即轉(zhuǎn)移,
Hyper-V并不是一個(gè)獨(dú)立的產(chǎn)品,而是很適當(dāng)?shù)厝谌肓薟indows Server 2008系統(tǒng)中的"角色(Role)"。在Windows Server 2008中要安裝Hyper-V,必須以角色的方式將主機(jī)配置成虛擬機(jī)角色。這一點(diǎn)也讓初次接觸虛擬機(jī)的人直接懷疑Hyper-V原生是否真的是原生架構(gòu)。既然需要一個(gè)Windows Server 2008當(dāng)做宿主的操作系統(tǒng),Hyper-V原生怎么會(huì)是原生架構(gòu)的呢?
1. Windows Server 2008是第一個(gè)虛擬機(jī)
原生架構(gòu)的最重要特色反而不是宿主的OS,而是Hypervisor的位置。如果Hypervisor的位置是在Ring 0或是Ring 1,只要能掌控其上的客戶端OS,并且為客戶端OS提供監(jiān)控和分配的服務(wù),那么運(yùn)行了Hyper-V的Windows Server 2008本身,是可以被視為一個(gè)客戶端OS的。
在啟動(dòng)Hyper-V之前,Windows Server 2008就是一個(gè)普通的Windows Server操作系統(tǒng)。整個(gè)操作系統(tǒng)掌握了所有的資源,所有的硬件都被操作系統(tǒng)直接訪問(wèn)。此時(shí),計(jì)算機(jī)是沒(méi)有虛擬機(jī)功能的,安裝Virtual Server/PC或是VMware Workstation/Server均可以順利運(yùn)行。
2.特殊的原生角色
然而啟動(dòng)了Hyper-V的角色之后,系統(tǒng)的本質(zhì)即發(fā)生變化。首先在開(kāi)機(jī)時(shí),會(huì)載入hvboot.sys文件,這就是Hyper-V的Hypervisor;載入hvboot.sys之后,以后加載的操作系統(tǒng)都被視為虛擬機(jī),包括已經(jīng)安裝好的Windows Server 2008。
此時(shí)Windows Server 2008會(huì)繼續(xù)啟動(dòng),但已經(jīng)變成了一個(gè)虛擬機(jī)了。在Hyper-V中,將啟動(dòng)Hyper-V后的Windows Server 2008稱為"父虛擬分區(qū)(Parent partition)",算是一個(gè)最特殊的虛擬機(jī)。"父虛擬分區(qū)"這個(gè)虛擬機(jī)和其他之后安裝的虛擬機(jī)完全不同,其完全掌握著所有的資源,但CPU和網(wǎng)卡除外,因此這個(gè)Windows Server 2008也必須聽(tīng)從Hypervisor的指揮。