George Ou 提供了伺服器虛擬化的介紹,從什麼是虛擬化,為什麼要使用虛擬化到何時需要使用虛擬化、如何將物理伺服器遷移至虛擬伺服器,等等。 這篇熱文最初發表于2006年5月。
————————————————————————————–
什麼是虛擬化,為什麼要虛擬化什麼時候要使用虛擬化如何避免「所有雞蛋都放進同一個籃子中」物理向虛擬伺服器的遷移虛擬化伺服器的補丁管理授權及支援方面的考慮什麼是虛擬化,為什麼要虛擬化?
虛擬化是在單個物理伺服器上運行多個獨立的虛擬作業系統的一種方法。 是通過最大化物理資源來達到投資最大化的一種途徑。 既然摩爾定律已經準確地預測出計算能力的指數增長,而對於同樣的計算任務而言,硬體需求大部分沒有改變,那麼現在,把一台極其廉價的雙槽雙核1U機架式伺服器,拆分為8個乃至16個虛擬伺服器就已經變得可行了。 虛擬化技術是獲得更高伺服器密度的一種方式。 不過,實際上它並沒有提升總體的計算能力;其實由於額外開銷,計算能力還略有下降。 但是,由於一台現代的3000美元2插槽4核伺服器,比4年前30000美元的8插槽8核伺服器還要強大,我們就可以通過在這種新硬體上增加邏輯作業系統的數量來開發它的能力。 這可以削減主要的硬體購置和維護費用,從而最終顯著地節省公司或組織的成本。
什麼時候該虛擬化?
虛擬化是中小規模應用的完美解決方案。 虛擬化不應該用在那些需要1到多台伺服器進行集群方能滿足需求的高性能應用上,因為增加的開銷和複雜性只會降低性能。 基本上我們是在拿一個12GHz(3GHz的四核CPU)的伺服器來把它拆解為16個750MHz的伺服器。 不過一旦有8個那樣的伺服器處於非忙時或空閒時,其餘的8個伺服器將能得到約1.5GHz的主頻。
儘管在虛擬化行業裡面有人喜歡宣揚高CPU利用率作為硬體優化使用的指標,這種建議不應該走極端,在應用的回應性超限了還使用。 一個簡單的經驗法則是,永遠也不要讓伺服器的CPU利用率在峰值負荷的情況下超過50%;更為重要的是,永遠不要讓應用的回應時間超過合理的SLA (服務水準協定) 。 大部分內部使用的先進伺服器的任務是把CPU利用率控制在1-5%之間 。 在單台物理伺服器上運行8個作業系統會把峰值CPU利用率提高到將近50% ,但平均水準要低得多,因為虛擬作業系統的波峰波谷,或多或少地,會趨於相互抵消。
儘管在今天現有大部分的虛擬化解決方案裡,出現CPU超載的很少,但存儲及網路輸送量的I/O(輸入/輸出)超載則是另一回事。 對於有著高到極端的存儲或硬體I/O需求的伺服器來說,運行于裸機之上會更為明智一些,即便其CPU需求可在虛擬環境中得到滿足。
如何避免「所有雞蛋都放在一個籃子上」綜合症
虛擬化最大的憂慮是出現「所有雞蛋放進同一籃子」綜合症。 把所有關鍵伺服器都放進一台物理伺服器是不是明智之舉? 當然不是! 避免這種傾向的最簡易的辦法是確保單個服務沒有駐留在單台伺服器上。 我們以下列伺服器類型為例說明:
HTTPFTPDNSDHCPRADIUSLDAP使用光纖通道(FC)或iSCSI存儲的檔服務storageActive Directory服務
我們可以將這些類型的伺服器中的每一個放置到至少2台物理伺服器上,以便獲得冗余性。 這種類型的服務,由於在單台伺服器失效的時候可方便地切換,相對而言比較易於集群。 當單台物理伺服器失敗或需要進行服務的時候,在其他物理伺服器上的另外的虛擬伺服器會自動接替。 通過橫跨多台物理伺服器,這些關鍵服務永遠也不會因為單個硬體失敗而停止運行。
對於像Exchange Server,Microsoft SQL ,MySQL或Oracle這樣更為複雜的服務,集群技術可應用於在兩台物理伺服器上的兩個邏輯伺服器的同步; 這種方法在轉換的時候一般會導致約5分鐘的停機時間。 但這並非由於虛擬化,而是因為集群的複雜性往往需要時間去進行轉換。 處理這些複雜服務的一種替代辦法,是把虛擬伺服器從主物理伺服器遷移至另一台物理伺服器。 為了讓這個方法行之有效,需要不斷地將記憶體從一台物理伺服器同步到另一台,以便故障切換時間能在毫秒級的時間內完成,這樣所有服務都能維持正常運行。
物理伺服器向虛擬伺服器的遷移
任何一個像樣的虛擬化解決方案都會提供某種類型的P2V(物理到虛擬)遷移工具。 該P2V工具會對一台已有的物理伺服器的磁碟機堆疊做一些必要的修改,來進行硬碟鏡像的虛擬化,以便伺服器可以虛擬伺服器的形式進行啟動和運行。 這麼做的好處是不必重建伺服器,再人工把它們配置為虛擬伺服器 — 只需原封不動地把伺服器接收過來就行!
因此,如果你的資料中心充斥著主頻低於GHz的日漸老化的伺服器的話,它們正是P2V遷移的絕佳候選者。 由於這些授權你已支付,你甚至無需為獲取授權的成本擔憂。 你幾乎可以騰出128台主頻不過GHz的傳統伺服器的空間,讓位於8台1U高的雙槽四核伺服器,伺服器帶雙千兆乙太網卡以及兩套獨立的iSCSI磁碟陣列,均通過千兆乙太網交換器互聯到一起。 每年在老系統上花費的的硬體維護費足夠支付購買這裡所有的新硬體! 儘管想像一下吧,進行這樣的遷移之後,你的伺服器空間會有多整潔。 新硬體可全部裝進一個機架中,給你騰出了大量的擴展空間。
作為虛擬化的一個額外的好處,你可以得到一個災害復原計畫,因為虛擬化後的鏡像可悲用於即時恢復所有伺服器。 自問一下,如果是傳統的伺服器的死掉的話會發生什麼事情。 你還記不記得如何從潦草的記錄中去重建並重新配置回所有的伺服器? (我想你現在就要哭出來了。 ) 利用虛擬化,通過P2V鏡像重建虛擬伺服器,你可以在1個小時之內恢復Active Directory和Exchange Server。
虛擬伺服器的補丁管理
虛擬伺服器的補丁管理與正常伺服器的並沒有什麼不同,因為每個虛擬作業系統就是自己獨立的虛擬硬碟。 你仍需要一個補丁管理系統來對所有伺服器進行打補丁,不過未來可能會出現有趣的發展,如果伺服器共用某些公共的作業系統或應用二進位代碼的話,也許可以對多個作業系統同時打補丁。 理想情況下,你可以為獨立的或一組類似的伺服器分配一種補丁級別。 目前,還還需要像在其他作業系統上做過那樣對虛擬作業系統進行打補丁,不過在虛擬化領域將有所創新,而你在物理伺服器上是做不到這些的。
授權與支援方面的考慮
軟體的許可是虛擬化的一大擔憂。 誰都不想為運行于單台伺服器上的16個虛擬會話支付16份許可。 (高昂的)軟體許可通常會令硬體開銷相形見絀,因此在共用的硬體上運行一份許可為2萬美元的軟體是愚蠢的。 這種情況下,最好是在速度最快的物理伺服器上跑軟體,不要進行任何虛擬化,以便增加開銷。
對於像Windows Server 2003標準版這類的軟體,需要為運行在物理伺服器上的每個虛擬會話支付費用。 此規則的例外是企業版,允許運行在1台物理機器上以1份許可分費用運行Windows Server 2003的4分虛擬拷貝。 微軟的這項許可策略應用於以Windows Server 2003為作業系統的任何虛擬技術上。
如果你用的是開源軟體,就不必擔心許可問題,因為它一直就是免費的 — 你所需要關心的是支援合同。 如果你在考慮開源的虛擬化作業系統或軟體,確保你已計算了支援方面的開銷。 如果支援費用與該軟體的虛擬化實例數量有關,最好是把花費最大的部分放到專用伺服器上運行以節省費用。 記住,硬體相對於軟體許可及/或服務支援費用而言那是相當小,這一點很重要。 計算硬體成本的時候,確保也計算了硬體的維護、耗電、製冷和機架空間所需的費用。
虛擬化技術本身也需要考慮許可和支援。 好消息是所有的主流的虛擬化玩家都有某些免費的方案供你起步。 即便在一年前,由於VMware幾乎是僅有的玩家,免費的虛擬化還是不可能的,不過現在VMware, Microsoft, Xen Source, 和Virtual Iron都有了免費的解決方案了。