每當看到規模適度的IT基礎架構很少或者完全沒有虛擬化時我都會覺得很不解,而當我瞭解到他們根本就沒有打算在不久的將來接受虛擬化時我會感到更加驚訝。 不管是出於「趕快給我離開」的態度還是單純的為了減少預算,在今天,堅持傳統的物理基礎設施的做法都是瘋狂的。
首先,這些公司購買了什麼作為伺服器? 如果他們使用新的四核或四核以上的伺服器替換舊的單、雙核的伺服器並且只是簡單地移動服務,那麼他們他們已經有了足夠多的硬體。 每個伺服器工作負載都運行在可以輕鬆地處理6台虛擬伺服器即使同時還包含了免費的系統管理程式的硬體上。 難道這些公司在伺服器虛擬化成為過去式時才會接受虛擬化嗎?
放眼未來幾年,可以預期我們將看到管理虛擬伺服器的方式會發生根本改變。 仿佛從頭到尾的企業虛擬化還不是真正的革命,我覺得未來還會有許多風暴會席捲而來。 下一次飛躍將會發生在被顯式設計和調整作為VM運行的作業系統出現的時候,由於缺乏有意義的驅動程式支援和其它物理伺服器世界的特性,這種作業系統甚至將不會運行在物理硬體上。 而將數千個驅動程式和特定功能的硬體帶入VM的意義何在? 它們一點用處都沒有!
最終,我們將看到廣泛使用的作業系統版本:它替代了現今大多數作為支撐的作業系統,解決了多年來的冗余和膨脹以支援專門用於管理程式的內核,並且在記憶體、CPU和I/O資源如何運作和管理方面有著獨到的想法。 現在我們回到了通過熱插拔擴展將CPU和RAM引入到VM中的時代,這種熱插拔擴展最初設想是用於物理RAM和CPU的擴展。
但是要實現上面的想法還有很長一段路要走。 當一個作業系統內核可以即時請求、適應並使用額外的計算資源而不必瞭解這些資源背後的資訊時,我們會更接近真正的雲計算的概念:在每次運算過程中都不用考慮底層的硬體,沒有固定CPU的概念,沒有靜態或者固定RAM的概念。 這些作業系統通過調度層次的管理程式緊密集成一起,絲毫不關心單個處理器核心的親和力、優化NUMA或運行著的RAM。
這自然需要許多年才能完全實現,但我肯定它的到來。 到時,管理程式將變得足夠強大和聰明,可以管理那些用於任何相容的主機OS的函數,本質上把每個VM變成了應用程式池。 隨著應用程式負載的增加,內核更關心的是與日益增長的管理程式的資源需求量的溝通,管理程式隨後作出較低級別的決策,用來決定VM可以消耗哪些物理資源以及在必要時將其它實例轉移到不同的物理伺服器上以釋放空間。
反過來,這將去除指定類比CPU和RAM限制而不是設置最小、最大和突發的限制給VM的概念——類似並行虛擬化,但完全與OS無關,而且不依賴內核主機OS作為中介層和固定內核。 每個VM都可能知道它是一個運行的VM,但通過管理程式管理事務它也會運行自身的內核並直接解決硬體問題。
隨著在運行中升級的能力的出現,即通過升級被動管理程式、即時轉移附近的負載、隨後升級其他方面,我們說的帶有嵌入式管理程式的固定用途的伺服器可能是多餘的,對於小型物理伺服器同樣如此, 這些小型物理伺服器基本上由包含完全用軟體管理的底板級網路介面的CPU和RAM插槽組成。
這些高級的虛擬伺服器完全是虛擬伺服器嗎? 或者說它們完全是伺服器嗎? 如果它們發展成為類似瞭解它們所處環境的資料庫和應用程式的軟體服務,那就沒必要在同一段時間內運行多個實例了。
你可能只有兩個而不是幾十個Web服務VM,但是這兩個VM頻率可以從500MHz瞬間增長到32GBHz,因為負載在同一時間內從消耗6GB RAM跳躍到了512GB,而不需要分配任何固定值。 可以想像,在使用適當的高速底板後,隨著管理程式瓜分優先任務,保持RAM從本地到單個進程,一個伺服器實例可以跨越兩個或更多的物理伺服器。 當然,我們說的是整體的多執行緒應用程式,但是這不正是隱藏在虛擬化和多核CPU背後的整個想法嗎?
或許,在未來的某一天,我們將看到一架甚至若干架刀片主機殼,我們看到的不是數十臺上面運行著管理程式的物理伺服器,相反,我們把它們看成一大堆將被任意數量的服務消耗的資源。 如果出現了一個硬體故障,可以很容易通過熱插拔更換故障的部分,唯一的損失可能是數百個進程從包含了數以萬計的進程的表中消失,而這些消失的進程將會瞬間在其它地方重新開機,這樣就不會對服務造成重大損失。
也許,如果我們能看到這樣的現實,那些仍然在維護一個破舊的物理資料中心的固執者可能最後會贊成在每個物理主機殼中運行多個伺服器的想法。 到那時,他們將別無選擇,也將沒有其它能替代的選擇。