以VMWare為代表的軟件虛擬化技術(shù)在企業(yè)IT中已是耳熟能詳?shù)牟粻幀F(xiàn)實。據(jù)在HPISS任職的好友告知,VMWare等Hypervisor在企業(yè)服務(wù)器的預裝率已達70%-80%。采用虛擬化技術(shù)不光是為了把一臺大的物理機切分成許多臺小的虛擬機來使用,還有運維、系統(tǒng)升級、軟件可靠性提升等許多我所不完全熟悉的原因。
最有趣的故事來自于一個已運營了二十多年的發(fā)電廠。它的管理終端采用的是早已絕種的IBMPC-AT(80286CPU)MS-DOS,還跑了Norvell網(wǎng),采用的是ISA總線NE-2000的網(wǎng)卡。二十年前的發(fā)電廠依舊日復一日地燒燃料、產(chǎn)生電力,仿佛現(xiàn)實世界早已被凝固在投產(chǎn)的那一天。設(shè)計管控系統(tǒng)的供應(yīng)商早已變身多次涅磐歸西,但設(shè)備還得繼續(xù)工作。它的鍵盤、顯示器早已被替換多次,主機和備用的硬件也逐一壞損。好在當年的DOS還能在現(xiàn)代的PC上運行(感謝一貫努力的BIOS設(shè)計者維護了完美的前向兼容),但是,ISA網(wǎng)卡早已沒有替換的配件,即使是有,也早已買不到帶有這種總線的PC。當最后一臺IBMAT報廢之后,是否發(fā)電廠就會如世界末日來臨一樣停止發(fā)電,造成城市的癱瘓呢?這是一個有關(guān)恐龍的故事?,F(xiàn)實世界里,IT設(shè)備有的停留在侏羅紀,有的卻已提前進入了小靈通的未來世界,如何去跨越這個時代的鴻溝?——虛擬化!大家不用擔心可怕的大停電事件。只要買臺PC,裝上一個Hypervisor,NE-2000的虛擬網(wǎng)卡Driver還在,EGA顯卡模式也還在,所以一臺2014年的Inteli7 CPU的PC就自動變身為一個1989年的 IBM-PC AT,帶了NE2000網(wǎng)卡!
當5年前我開始定期對世界最大互聯(lián)網(wǎng)數(shù)據(jù)中心開始一年兩三輪的巡游遍歷的時候,我驚呼到“幾乎沒有人在用Hypervisor!” 時至今日,這個現(xiàn)狀除了提供公有云業(yè)務(wù)的數(shù)據(jù)中心之外,依然少有改變。到底是什么造成了企業(yè)IT和互聯(lián)網(wǎng)數(shù)據(jù)中心之間如此大的不同?難道互聯(lián)網(wǎng)數(shù)據(jù)中心不想得到企業(yè)IT管理員從虛擬化中得到的諸多好處嗎?
利益——TCO,ROI,EPS,還是最根本的答案。以BAT、Google、Facebook為例的超大型數(shù)據(jù)中心,它們的應(yīng)用幾乎每一個都遠遠大于單個節(jié)點的計算和資源能力,因此一個以把一臺物理機切分成更小的虛擬機、并在單機內(nèi)部的虛擬機之間進行資源分配調(diào)度為主要技術(shù)基石的Hypervisor技術(shù),對一個scale-out的機群調(diào)度有些力不從心,也沒有多少必要。
另外,軟件虛擬化技術(shù)在I/O資源訪問上,存在必然引入的額外開銷。因而,你跑了10G網(wǎng)絡(luò),跑上復雜的協(xié)調(diào),可能就已損耗了一定比例的CPU資源,你最新的SSD通過虛擬化層,看到的延遲可能就不再是微秒級,IOPS不再接近百萬次。因此,今天的虛擬機在分秒必爭的互聯(lián)網(wǎng)世紀就抵不過裸體的物理機(BareMetal),因為采用了影響效率的虛擬機,就需要部署更多硬件來支撐同樣的業(yè)務(wù)負載,這就需要花費更多成本。
那虛擬化帶來的額外開銷是否可以避免呢?這一點并不是十分困難。SRIOV等硬件技術(shù)可以在虛擬機和硬件之間建立一個直通的路徑,故此在I/Opath上可以消除虛擬機的影響。實際上從5年前開始,我們(PMC-Sierra)設(shè)計的SAS控制器、SSD控制器等,在硬件上就已經(jīng)支持了SRIOV。但時至今日,卻沒有找到理由(BusinessCase)來打開這些功能。原因除了需要開發(fā)額外的軟件(固件)來支持SRIOV,用戶不愿意為這些新功能支付額外的價錢,再有,就是軟硬(劍、氣)二宗之間的互相爭斗——Hypervisor如果放棄了I/OPath被直通透過,那Hypervisor就失去了在此通道上實現(xiàn)虛擬化高級功能的機會(如軟件定義網(wǎng)絡(luò)、軟件定義存儲),這在近期除了是個Revenue的問題,更是一個有關(guān)控制權(quán)的爭奪。在此作者總結(jié)出了的一個有關(guān)體系結(jié)構(gòu)軟硬取舍定律:
凡是軟件能實現(xiàn)的,就不需要硬件實現(xiàn)。再推進一步,凡是上層軟件(應(yīng)用)能實現(xiàn)的,就不需要系統(tǒng)軟件來實現(xiàn)。凡是Driver能做的,就不需要固件。凡是通用技術(shù)能實現(xiàn)的就不需要專用技術(shù)。
因此,劍宗的弟子,不到萬不得已是絕對不會學練氣功的!這個定律,經(jīng)筆者觀察IT業(yè)多年的技術(shù)發(fā)展,幾乎沒有找到特例。
這里引入大發(fā)明家Thomas Edison的一句話:I will never inventsomething the mass do not need again!(我絕不再發(fā)明大眾不需要的東西了!)
半導體業(yè)的發(fā)展故事就是硬件架構(gòu)師們一次次的窮途末路,又一次次柳暗花明。公司輪替、改朝換代就時時發(fā)生,硬件之出路只能是:
“不斷創(chuàng)造只有通過硬件手段才能達到的獨特價值”。
回到超大規(guī)?;ヂ?lián)網(wǎng)數(shù)據(jù)中心。前面提到的以公有云服務(wù)(Paas)為主的數(shù)據(jù)中心確實已經(jīng)廣泛部署了Hypervisor,并以虛擬機技術(shù)為核心,把虛擬機單位作為商品出售。最有名的要算AmazonAWS,Microsoft Azure,還有國內(nèi)的阿里云。這些不同的實現(xiàn)具體采用的Hypervisor技術(shù)各有不同(Hyper-V, VMWare,Zen,KVM),但基本原理均相似。同時前面所述的性能開銷也不同程度地存在于這些實現(xiàn)上。
有意思的是這三家巨頭既提供云服務(wù),本身又擁有大量的互聯(lián)網(wǎng)服務(wù)(如Bing,Hotmail,Taobao,電商等),其他家作者沒有直接的途徑來確定,但微軟多個Property(業(yè)務(wù)部門)的總架構(gòu)師都一直告訴我,在公司集團內(nèi)部,有明確的目標,要求各業(yè)務(wù)部門都把業(yè)務(wù)系統(tǒng)移植到Azure平臺上。(即不采用各自獨立、專有的數(shù)據(jù)中心系統(tǒng)的軟硬件平臺,而作為用戶跑在統(tǒng)一的Azure平臺上),這個過程是緩慢而缺少積極性的。五年過去了,終于有些業(yè)務(wù)逐漸跑到了虛擬化的Azure平臺上,這也就是說總算有了些大型的互聯(lián)網(wǎng)業(yè)務(wù)在基于虛擬化的Azure的云平臺上)。不知阿里、亞馬遜是否也有同樣的中長期目標,使得集團數(shù)據(jù)中心的總體資源得到統(tǒng)一和整合。這個當前業(yè)務(wù)部門利益和集團長期利益之間的權(quán)衡,相信終會把互聯(lián)網(wǎng)業(yè)務(wù)推向云平臺。
故此,虛擬化技術(shù)作為主流互聯(lián)網(wǎng)業(yè)務(wù)的運營平臺,可以推測為中長期的趨勢。
在Rack Space等云計算商家的推動下,Openstack作為一個開放式的虛擬化平臺應(yīng)運而生。目前,Openstack基于LinuxKVM虛擬化技術(shù),可以對計算資源在機群上作協(xié)調(diào)管理,也有基于OVS的軟件定義網(wǎng)絡(luò),以及相對原始低能的存儲資源管理體系的建立。如果和VMware、AWS、Azure相比,可以說仍然處在學習和模仿的階段。但作為一個完全開源的云平臺(還有CloudStack等),它所吸引的IP資源是十分可觀的。如果Linux在互聯(lián)網(wǎng)完全擊敗其他商業(yè)OS的歷史經(jīng)驗可借鑒的話,我們對Openstack取得的飛速進步和最終前景是十分樂觀的。
再跨界回到硬件的體系中來看,Intel RSA、PMCFDIO、Facebook的OpenCompute等體系均著眼于以下共同的目標,即在Rack或POD級(幾十到上百個服務(wù)器規(guī)模的機群)以硬件手段實現(xiàn)物理上相對分離的各種資源池,并在云平臺軟件的管控下對硬件資源之間實現(xiàn)動態(tài)的綁定(binding),這也就是說,整個機架成了一個全硬件的Hypervisor,實現(xiàn)物理機之間的動態(tài)資源分配和共享、遷移,這些硬件資源可完全呈現(xiàn)在軟件的管理之下。
當單機內(nèi)的軟件虛擬化技術(shù)(KVM)和機群內(nèi)物理機之間的硬件虛擬化(FDIO,RSA)再和云平臺管控(cloudorchestration)的Openstack技術(shù)相結(jié)合,就會產(chǎn)生出新一代革命性的云軟硬混合式的平臺。這也是全軟件定義數(shù)據(jù)中心的各門跨界架構(gòu)師所追求之圣杯(HolyGrail),同時也是我們機架硬件體系的一個參考設(shè)計,即Openstack+FDIO實現(xiàn)機架內(nèi)的物理資源完全池化和在整個機群上的虛擬機之間的不受限的自由分配、共享和遷移。