提到以色列,自然會(huì)使人聯(lián)想到猶太人和猶太教及其在二十世紀(jì)前半葉所遭受的種種苦難,作為這個(gè)世界上最古老的民族之一,除了其沉重的歷史之外,更使人驚嘆的是,這個(gè)面積僅有2.2萬平方公里的彈丸之地,在短短幾十年中轉(zhuǎn)變成為了高科技研發(fā)和創(chuàng)新的“全球性大國”。或許,時(shí)刻處于強(qiáng)敵環(huán)伺的危險(xiǎn)境地能夠激發(fā)人類最原始的創(chuàng)造力,使得以色列在諸多領(lǐng)域出類拔萃,尤其在信息科技領(lǐng)域尤為突出,世界上最大的科技公司不約而同都選擇在以色列設(shè)立研發(fā)中心,而且成果卓著,例如,Intel x86家族中比較重要的兩代CPU,Sandy Bridge和Ivy Bridge都是由Intel以色列的研發(fā)中心研發(fā)的,藍(lán)色巨人IBM也早在上世紀(jì)七十年代就在以色列設(shè)立了龐大的研發(fā)中心,且成果斐然。
但是,值得稱道的是科技巨頭在以色列的成功并不能掩蓋個(gè)體的創(chuàng)新力量所散發(fā)出的光芒,尤其在云計(jì)算領(lǐng)域,當(dāng)崇尚人格自由,同時(shí)又具有堅(jiān)強(qiáng)性格這兩種特質(zhì)結(jié)合在一起所爆發(fā)出的創(chuàng)新的力量,使得草根創(chuàng)業(yè)公司和個(gè)體也敢于在前沿領(lǐng)域與科技巨頭一爭長短,其中的代表性人物就是Avi Kivity和他所在的以色列初創(chuàng)公司Qumranet,Avi Kivity提出并推動(dòng)KVM(基于Linux內(nèi)核的全虛擬化方案),以其精簡的架構(gòu),清晰的定位很快獲得Linux社區(qū)多數(shù)開發(fā)人員的支持得以快速被合并進(jìn)入主干,從而成為x86全虛擬化技術(shù)的一顆新星。
虛擬化技術(shù)的由來與所面臨的挑戰(zhàn)
信息技術(shù)領(lǐng)域本不應(yīng)是一個(gè)缺乏遠(yuǎn)見的領(lǐng)域,但事實(shí)正好相反,藍(lán)色巨人IBM發(fā)明了PC,但失去了整個(gè)桌面,Intel發(fā)明并主導(dǎo)x86架構(gòu)的處理器,提出了摩爾定律,但是失去了整個(gè)掌上,而且,即使是處于鼎盛時(shí)期的Intel,即使有摩爾定律指路,也沒有人能料到,有朝一日x86家族的處理器幾乎快要統(tǒng)治整個(gè)數(shù)據(jù)中心,而且x86家族處理器計(jì)算能力的提升速度快到可以在原本為桌面環(huán)境設(shè)計(jì)的處理器架構(gòu)上采用“分時(shí)”來為多個(gè)虛擬環(huán)境提供運(yùn)算能力的地步。
要知道虛擬化技術(shù)并不新,早在1967年,第一代的硬件虛擬化技術(shù)就由IBM提出,藍(lán)色巨人在他們的大型機(jī)中實(shí)現(xiàn)了以CP/CMS為代表的虛擬化技術(shù)。但直到2006年,Intel和AMD才分別在各自的處理器中加入了“有限”的硬件虛擬化特性,實(shí)際上是給CPU打了一個(gè)補(bǔ)丁:),分別稱為,Intel VT-x和AMD-V。與大型機(jī)所采用的專為虛擬化設(shè)計(jì)的處理器不同,從PC機(jī)起家的以Intel為代表的x86家族的處理器生來就并不是為虛擬化設(shè)計(jì)的。要在x86家族處理器上完全向后兼容的同時(shí)加入硬件虛擬化特性,無疑成為一個(gè)挑戰(zhàn),硬件層面實(shí)現(xiàn)較為困難,導(dǎo)致軟件層面的實(shí)現(xiàn)復(fù)雜度也隨之水漲船高。據(jù)估算,Linux內(nèi)核中,虛擬化部分代碼,x86架構(gòu)部分的代碼行是IA64架構(gòu)的1倍,S390架構(gòu)的7倍,PPC架構(gòu)的8倍。即使和ARM架構(gòu)相比,x86架構(gòu)的復(fù)雜度依然是其4倍,其復(fù)雜度之高從中可見一斑。
Talk is cheap, show me the code
硬件層面較為復(fù)雜的局面意味著在系統(tǒng)層面需要一個(gè)極為精簡的設(shè)計(jì)從而確保x86的硬件虛擬化特性能夠在Linux內(nèi)核層面有較好的可維護(hù)性,良好的性能,同時(shí)保持一定程度的可擴(kuò)展性以便為未來新的特性(補(bǔ)丁)的加入留有余地,另外,在那個(gè)時(shí)候,Xen和Vmware依靠自己獨(dú)有的技術(shù)分別在不同領(lǐng)域如日中天,尤其值得一提的是,Xen在開源領(lǐng)域幾乎成為了虛擬化的事實(shí)標(biāo)準(zhǔn),而且開源領(lǐng)域一向奉行Don’t reinvent the wheel這一金科玉律,這一切無疑都為提出新的虛擬化實(shí)現(xiàn)增加了巨大的不確定性,但是當(dāng)時(shí)Linux內(nèi)核中還沒有任何虛擬化實(shí)現(xiàn),這一現(xiàn)狀又使得提出新的設(shè)計(jì)成為可能,唯一的問題就是誰能夠在足夠短的時(shí)間內(nèi)另辟蹊徑提出新的方案并且獲得多數(shù)人的支持,這一點(diǎn)難度之大,恐怕只有深入了解開源社區(qū)的人才會(huì)感受到,要知道Linux社區(qū)恐怕是這個(gè)星球上最為“獨(dú)裁”的組織,沒有之一,而且語言“暴力”與人身“攻擊”司空見慣(Alan Cox就是無法容忍這一點(diǎn)才選擇退出Linux社區(qū)),要想在其中被認(rèn)可并取得一席之地,除了超強(qiáng)的技術(shù)實(shí)力之外,更要有謙遜的品格,非凡的耐心和絕佳的溝通技巧。
Do one thing and do it well
Avi Kivity提出的方案非常清晰而且巧妙,充分遵循Linux源自Unix的設(shè)計(jì)思想,把方案的關(guān)注點(diǎn)聚焦于Linux內(nèi)核部分,User space部分交給了穩(wěn)定可靠的Qemu,采用Qemu作為其用戶空間的入口,而且KVM僅僅實(shí)現(xiàn)HVM功能。遵循慣例,Linux內(nèi)核中的KVM模塊通過設(shè)備文件暴露系統(tǒng)呼叫給User space的Qemu。這一切現(xiàn)在看起來似乎平淡無奇,但是,Avi Kivity方案的背后是要在極短時(shí)間內(nèi)通過代碼實(shí)現(xiàn)來證實(shí)并獲得社區(qū)認(rèn)可這一幾乎不可能實(shí)現(xiàn)的任務(wù),這有賴于Avi Kivity對(duì)于計(jì)算機(jī)體系架構(gòu)的深入理解,不單單是x86架構(gòu)的Intel VT-x和AMD-V,還有后續(xù)陸續(xù)支持的其它架構(gòu),并且深入了解Linux內(nèi)核,精通匯編和C。
以Avi Kivity為主的工程師僅僅花了不到一年時(shí)間就讓Linux社區(qū)接受KVM的設(shè)計(jì)方案并且通過了代碼Review,最終于2006年10月合并進(jìn)入2.6.20主干,時(shí)至今日,人們依然對(duì)于KVM合并進(jìn)入Linux主干的速度之快感到不可思議,從中也產(chǎn)生了一些不同的聲音,但是多數(shù)人還是傾向于最簡單的一種答案,那就是KVM良好的設(shè)計(jì)和實(shí)現(xiàn)是其最終被社區(qū)快速接受的主要原因。幾年以后,Avi Kivity接受采訪,最經(jīng)常被問到的仍然是這個(gè)問題,他的回答也總是輕描淡寫,說只不過提前花了半年時(shí)間在Linux社區(qū)學(xué)習(xí)如何更好的與社區(qū)開發(fā)人員協(xié)作,但是我們知道,這背后實(shí)際是其投入的大量心血和超強(qiáng)實(shí)力。
KVM的出現(xiàn)震撼了整個(gè)了Linux社區(qū)和業(yè)界,人們驚異于其出眾的性能,更加折服于其精簡的設(shè)計(jì)和良好實(shí)現(xiàn)(在SPEC virt2013 Benchmark中基于同樣的處理器、內(nèi)存和存儲(chǔ),KVM單在VM Density指標(biāo)上以37%的優(yōu)勢超越對(duì)手),以至于,在極短的時(shí)間內(nèi),這個(gè)世界上最重要的科技公司紛紛宣稱他們將把KVM作為他們x86虛擬化的解決方案,要知道,這極為不同尋常,在這之前以藍(lán)色巨人IBM為代表的科技巨頭已經(jīng)在Xen上投入了大量的財(cái)力物力和人力,如果沒有決定性的因素,科技巨頭的Strategic dicision是不可能輕易改變的,時(shí)至今日,IBM在準(zhǔn)備推出Power KVM,打算把KVM移植到Power Linux上。就連以Google Glass、無人駕駛汽車和Project Loon著稱的跟現(xiàn)代科技格格不入的前沿科技巨頭Google也在其Google Compute Engine中采用KVM技術(shù)作為x86的虛擬化方案來和Amazon對(duì)抗。這一切只能說明KVM憑借其優(yōu)異的性能和精簡架構(gòu)當(dāng)仁不讓成為了一項(xiàng)無法忽視的虛擬化技術(shù)屹立于云計(jì)算之巔。
云計(jì)算的新征程OSv
在KVM合并進(jìn)入Linux主干之后不久Avi Kivity很快成為內(nèi)核KVM子模塊的Maintainer,2012年11月21日一封標(biāo)題為“KVM: Retire as maintainer”的簡短郵件出現(xiàn)在Linux社區(qū)郵件列表中,在以KVM模塊Maintainer身份貢獻(xiàn)Linux社區(qū)6年零6個(gè)月之后,Avi Kivity選擇開啟了新的征程,發(fā)起并擔(dān)任云計(jì)算創(chuàng)業(yè)公司Cloudius的CTO,這是一個(gè)不同尋常的選擇,要知道在這個(gè)世界上,在虛擬化和云計(jì)算領(lǐng)域恐怕沒有多少人能夠比Avi Kivity更有發(fā)言權(quán),這一次,Avi Kivity敏銳的意識(shí)到除了x86家族的處理器架構(gòu)之外,已經(jīng)成為云計(jì)算基石的Linux同樣天生不是為云計(jì)算設(shè)計(jì)的,因此具有極大的性能提升空間,大膽提出并設(shè)計(jì)了專為云計(jì)算設(shè)計(jì)的操作系統(tǒng)OSv,當(dāng)然,其依然是建立在Linux基礎(chǔ)上,但是其無需Context switch,真正的Zero Copy以及Lock Free等特性使得其Less One second boot相對(duì)于眾多宣稱秒級(jí)響應(yīng)的廠商來說更加具有說服力。尤其重要的是,KVM之父通過OSv項(xiàng)目表達(dá)了對(duì)以Linux CGroup技術(shù)為核心的Containner技術(shù)的看法。
Avi Kivity是如此低調(diào),以至于你很難在網(wǎng)上找到太多的關(guān)于他的信息,只有寥寥幾篇報(bào)道和訪談,但是KVM在整個(gè)云計(jì)算領(lǐng)域中又是如此的炙手可熱,雖然今年已經(jīng)是KVM進(jìn)入內(nèi)核的第八個(gè)年頭,但是KVM依然活躍,我們依然難以估量其在云計(jì)算領(lǐng)域的真正價(jià)值,而這一切都源自于這個(gè)地球上最危險(xiǎn)的那個(gè)角落中的那名天才程序員Avi Kivity。
注:僅以此文表達(dá)對(duì)Avi Kivity、Yaniv Kamay、Dor Laor、Uri Lublin還有Anthony Liguori還有其他KVM以及Qemu開發(fā)人員的敬意。(責(zé)編:周小璐)
原文鏈接:不朽傳奇-云計(jì)算技術(shù)背后的那些天才程序員:KVM之父Avi Kivity