在今天復雜的IT環境中,服務器虛擬化具有顯而易見的積極意義。冗余服務器硬件可以迅速補充進企業的數據中心并形成容量;每一項新的采購都會將電力和制冷成本一路推高。為解決這一問題,方法之一就是將物理服務器劃分到虛擬服務器中是恢復寧靜并保持IT支持在受控的范圍內。
利用虛擬化,您能夠以動態方式啟動和關閉虛擬服務器(也稱作虛擬機),每臺虛擬服務器基本上都會欺騙操作系統(以及任何在其上運行的應用),讓它們相信虛擬機就是實實在在的硬件。運行多個虛擬機可以充分利用物理服務器的計算潛力 - 并且為不斷變化的數據中心需求提供快速響應的機會。
虛擬化的概念由來已久。早在上世紀70年代,主流計算機就可以同時運行多個操作系統實例,每個系統都是相互獨立的。然而,直到最近,軟件和硬件方面的進步才使虛擬化在符合行業標準的商品服務器上成為可能。
事實上,今天的數據中心經理們已經可以從令人目眩的眾多虛擬化解決方案自由選擇。有些方案是專有的,另外一些則是開源的。多數解決方案都基于三種基本的技術之一;至于誰能夠產生最好的結果,還要看有待虛擬化的具體負載,及其運行優先等級。
完全虛擬化
在虛擬化的過程中,最常用的方法是使用一種稱為監視程序的軟件,在虛擬服務器和下層硬件之間創建一個抽象層。VMware和Microsoft Virtual PC便是此類中兩種典型的商品化實例,而KVM(基于內核的虛擬機)是一種適用于Linux的開源產品。
監視程序會捕獲CPU指令,并協調硬件控制器和外設的存取。因此,完全虛擬化可允許幾乎任意操作系統安裝在虛擬服務器上,而且無需對操作系統做任何的修改,操作系統也不會感知自己是在一個虛擬環境中運行。這種作法的主要缺點是,監視程序會產生處理器開銷,雖然很小但影響較大。
在一個完全虛擬化的環境中,監視程序運行在裸硬件上,并且擔當主機操作系統的角色。由監視程序管理的虛擬服務器則被稱為來賓服務器。
準虛擬化
完全虛擬化是處理器密集型的,因為監視程序需要管理多個虛擬服務器,并保持它們彼此獨立。減輕這種負擔的方法之一是對每個來賓操作系統進行修改,使它能夠意識到自己是在虛擬環境中運行,并且能夠與監視程序合作。這種方法被稱為準虛擬化。
Xen是開源準虛擬化技術的典型例子。由于操作系統在Xen監視程序上作為虛擬服務器運行,它必須在內核一級經過特定的修改。因此,Xen非常適合用于BSD、Linux、Solaris和其它開源操作系統,但它不適合虛擬化Windows等無法修改的專有系統。
準虛擬化的優勢在于性能。準虛擬化的服務器在與監視程序協調工作時,其響應能力幾乎與未虛擬化的服務器一樣。與完全虛擬化相比,準虛擬化的好處非常誘人,因此微軟和VMware都開始研究準虛擬化技術,為各自的產品提供補充。
服務器虛擬化的面目
在服務器虛擬化中,監視程序充當主機操作系統,而來賓操作系統的實例及其應用會運行在自己的虛擬機上。因此,一臺服務器能夠完成更多的工作,而且能夠針對不斷變化的負載及時做出響應。
完全虛擬化 準虛擬化 操作系統級虛擬化
監視程序可以同時運行多個不同操作系統的虛擬實例,而且虛擬服務器不需要知道自己是運行在一個虛擬環境中。 在這里,操作系統的版本經過了特別的修改,使之能夠與監視程序合作,因此可提供更高的性能。 在這種情況下,虛擬服務器仍然是彼此隔離開的,但它們都運行在同一個操作系統上,而操作系統則內建有監視程序。
操作系統級虛擬化
還有一種實現虛擬化的方法就是將虛擬服務器的能力內建在操作系統一級上。Solaris Containers就是一個典型的例子,還有Virtuozzo/OpenVZ也可以在Linux上實現類似的功能。
有了操作系統級的虛擬化,就不再需要獨立的監視程序層。相反,主機操作系統本身會負責硬件資源在多個虛擬服務器間的分配,并且保護服務器之間彼此獨立。操作系統級虛擬化最明顯的特點是,所有的虛擬服務器都必須運行在同一個操作系統中(不過每個實例都有其自己的應用和用戶賬戶)。
操作系統級虛擬化會喪失一些靈活性,但從根本上取得了更高的速度性能。此外,在所有虛擬服務器上使用單一標準操作系統的架構也要比異型環境更容易管理。
更簡單,但更強大
與大型機不同,PC硬件在設計時并沒有考慮到虛擬化,因此直到最近只能由軟件來承擔這一負擔。但在最新一代的x86處理器上,AMD和Intel都首次在CPU層添加了虛擬化支持。
不幸的是,兩家公司的技術都是獨立開發的,這意味著它們在代碼上互不兼容,不過它們都可以提供類似的好處。通過承擔虛擬服務器對I/O通道和硬件資源的管理職責,硬件虛擬化支持解除了監視程序所承擔的照看職責。除改善性能外,包括Windows在內的操作系統未經修改即可在準虛擬環境中運行。
CPU級的虛擬化并不會自動啟用。必須編寫出虛擬化軟件才能對其提供特定的支持。然而,由于這些技術的優勢非常誘人,所有類型的虛擬化軟件都將會在不久的將來支持這些技術。
虛擬工具箱
根據所處情況的不同,每一種虛擬化方法都有自己的優勢。如果有一組服務器都基于相同的操作,則比較適合使用操作系統級的虛擬化,但其它的技術也有自己的優點。
準虛擬化在兩個世界中都能夠很好地發揮作用,尤其是部署在虛擬化感知處理器的環境中。它可以提供良好的性能,以及在異型來賓操作系統構成的混合環境中運行的能力。
在這三種方法中,完全虛擬化對性能造成的影響是最大的,但它的優勢在于,來賓操作系統之間是完全隔離的,而且與主機操作系統也是隔離的。這種方法非常適合用于軟件質量保障及測試,同時它還可以支持范圍最廣泛的來賓操作系統。
完全虛擬化解決方案還可以提供其它一些特有的能力。例如,它們可以拍攝虛擬服務器的"快照",保存其狀態并有助于實現災難恢復。這些虛擬服務器鏡像可用于更快供應新的服務器實例,而且有越來越多的軟件公司甚至開始提供評估版的預先打包虛擬服務器鏡像供用戶下載。
需要記住的是,虛擬服務器需要不斷的后續支持和維護,就像物理服務器一樣。這一點非常重要。服務器虛擬化的日益普及已經催生出一個非常繁榮的第三方工具市場,其內容從物理至虛擬遷移實用程序,到主要系統管理控制臺的面向虛擬化版本,所有這些工具的目的都是簡化從傳統IT環境到高效、高成本效益虛擬環境的過渡進程。