虛擬化是上個世紀60年代由IBM創造的古老話題了。最初,其目的是為了更好的提高大型主機硬件利用率而為其分區。主要原因是為了平衡大型機和其主要程序運行所需要的容量。
現在我們使用的是日益強大的x86處理器和被開發的各種硬件環境。日益復雜的應用也增加了我們對在同一環境下運行多種應用的恐懼,導致的結果就是每個服務器只能運行一個應用。這致使利用率非常的低下。
虛擬化就好比把每個應用保護在容器中,這樣多種應用就可以在同一服務器下運行了,看起來像是服務器和應用之間的直接連接被切斷了。同時,這也讓同一應用可以在不同的硬件環境下運行。
但很明顯虛擬化環境很耗費計算容量。對大多數應用來說這并不是個問題,因為根據麥肯錫的調研,虛擬化數據中心可以把利用率從5% — 10%提高到30% — 35%。
那些有大量計算需求的公司通常被稱作是高性能計算,他們并不傾向使用虛擬化,因為害怕虛擬化層會增加延遲時間。
我們需要虛擬化嗎?
虛擬化把應用從特定的服務器中屏蔽了出來,所以應用可以很容易從一個服務器移到另一個服務器。虛擬化還讓不同的工作量可以在同一個物理CPU下同時運行而不相互影響。
目前已有幾項舉措正在進行中來建立一個標準化硬件環境,這樣虛擬化就不再被需要了。Facebook正在嘗試開源云硬件。這是一個很有意思的想法,但我認為如果這個方法成功的話將會毀了很多的硬件創新。
Facebook這一方法的優勢是綁定基礎設施標準化,這樣就不需要在應用和服務器之間互相屏蔽了。如果我們加入到那個運營系統標準化中,就可以不需要虛擬化了,至少那些基于此標準研發的新應用不再需要虛擬化了。
所以,虛擬化還需不需要是個很好的問題。惠普正在研究一個非常不同的云架構,該架構也許會減少對虛擬化的依賴。這項工作叫做Project Moonshot,該項目采取了一個非常不同的方法。
用極低功耗計算來改變游戲
現在讓我們來想一下。我們虛擬化x86環境就像我們有非常強大的CPU來運行應用一樣,從根本上來說其實并不需要所有的功率,這讓我們花費很多時間等待IO接口或內存。所以說,通過在那些系統上同時運行多個劃分開來的應用我們可以大大提高其使用率。但如果我們用更小和更低功率的CPU會怎樣呢?這種情況下我們可以為每個應用配一個專屬CPU。
這樣的芯片存在嗎?其實我們每天的手持設備上都在使用這樣的芯片。它們不僅能量低,而且消耗的能量也非常少。所以轉移到這些設備上讓我們可以建立一個更加環保的數據中心。
您也許會說這樣的系統造價會很高,因為實際處理器只是整個環境全部成本的一部分。確實,每個處理器都是由IO控制器,內存等所包圍的。而且,每個服務器都有自己的處理器,芯片組,管理,存儲,散熱,電源和網絡接口。但這些真的都需要嗎?
我們目前在芯片的內核上共享所有的功能,但并不在芯片之間共享。如果我們可以把所有處理器級別以上的部分在所有服務器之間共享會怎樣呢?我們可以把網絡結構整合到系統中并且將其共享來減少布線。我們可以在底部架構級別實施一個管理框架,并且研發一個聯合機架管理,為整個系統建立一個單一的管理。這將導致功率和成本共享,但同樣重要的是,這在相對沒有增加復雜性和管理的開銷下極大的擴大了其規模和使用尺度。這就是Project Moonshot真正要做的事情。
所以,結果是什么呢? 我們模擬了一個類似x86的環境,并且跟Project Moonshot在功耗、空間和成本上進行了比較。下面是比對結果。模擬的x86系統在10個機柜中包括400雙插槽1U服務器。這需要20個網絡切換器和1600根布線。每小時耗費91千瓦,并將花費330萬美元。
惠普的Project Moonshot服務器技術能夠用1600個服務器承載同樣的工作量,但只占用一個半機柜,需要兩個轉換器和41根布線,僅耗費9.9千瓦并花費120萬美元。這意味著節省89%的功耗,94%的空間,63%的成本和減少97%的復雜性。不可思議吧,有沒有?
有了這樣的系統,我還需要虛擬化嗎?坦白說我覺得未必。
也許不適用于所有的工作負載
主流的IT工作負載(就像您在傳統環境下運行的那些一樣)也許看不到同樣的成本和功耗節省,因為他們需要更多的處理器來執行類似的工作。這些應用和計算密集型應用比如科學和技術計算更加適用于傳統工作方法。我們常常討論是否應該使用云來為您已有的應用轉型,還是要研發新的應用。一個像Project Moonshot這樣的環境最適用于新型的,基于SOA和網絡的應用,這也是未來的趨勢所在。
結論
今天的討論我們是從一個問題開始的,即我們需要虛擬化嗎?它的花費也許很高;還增加了復雜性并且耗費CPU功率。這個情況開始發生變化了。70和80年代中虛擬化沒那么流行因為很多工作都被移到了小型機上。后來虛擬化又隨著處理器的大幅增加而流行了起來。
也許是時候重新思考一下了。2011年,數據中心使用了全世界1.3%的電,盡管這個增長幅度不大,但仍在增長。大數據為這些數字增加了額外的負擔。所以現在也許真的是時候來看看我們的計算架構并且重新設計來降低功耗了。