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