虛擬化技術(Virtualization)和分區(Partition)技術是緊密結合在一起,從60年代Unix誕生起,虛擬化技術和分區技術就開始了發展,並且經曆了從“硬體分區”->“虛擬機器”->“准虛擬機器”->“虛擬作業系統”的發展曆程。最早的分區技術誕生自人們想提升大型主機利用率需求。比如在金融、科學等領域,大型Unix伺服器通常價值數千萬乃至上億元,但是實際使用中多個部門卻不能很好的共用其計算能力,常導致需要計算的部門無法獲得計算能力,而不需要大量計算能力的部門佔有了過多的資源。這個時候分區技術出現了,它可以將一台大型伺服器分割成若干分區,分別提供給生產部門、測試部門、研發部門以及其他部門。
幾種常見的虛擬化技術代表產品如下:
|
類型
|
代表產品
|
|
硬體分區
|
IBM/HP等大型主機硬體分區技術
|
|
虛擬機器 (Virtual Machine Monitor)
|
EMC VMware Mircosoft Virtual PC/Server Parallels
|
|
准虛擬機器 (Para-Virtualization)
|
Xen Project
|
|
虛擬作業系統 (OS Virtualization)
|
SWsoft Virtuozzo/OpenVZ Project
Sun Solaris Container
HP vSE FreeBSD Jail
Linux Vserver
|
硬體分區技術
硬體分區技術如所示:硬體資源被劃分成數個分區,每個分區享有獨立的CPU、記憶體,並安裝獨立的作業系統。在一台伺服器上,存在有多個系統執行個體,同時啟動了多個作業系統。這種分區方法的主要缺點是缺乏很好的靈活性,不能對資源做出有效調配。隨著技術的進步,現在對於資源劃分的顆粒已經遠遠提升,例如在IBM AIX系統上,對CPU資源的劃分顆粒可以達到0.1個CPU。這種分區方式,在目前的金融領域,比如在銀行資訊中心得到了廣泛採用。
虛擬機器技術
在虛擬機器技術(Virtual Machine Monitor)中,不再對底層的硬體資源進行劃分,而是部署一個統一的Host系統。在Host系統上,加裝了Virtual Machine Monitor,虛擬層作為應用層級的軟體而存在,不涉及作業系統核心。虛擬層會給每個虛擬機器類比一套獨立的硬體裝置,包含CPU、記憶體、主板、顯卡、網卡等硬體資源,在其上安裝所謂的Guest作業系統。終端使用者的應用程式,運行在Guest作業系統中。如所示。
這種虛擬機器啟動並執行方式有一定的優點,比如能在一個節點上安裝多個不同類型的作業系統;但缺點也非常明顯,虛擬硬體裝置要消耗資源,大量代碼需要被翻譯執行,造成了效能的損耗,使其更合適用於實驗室等特殊環境。其代表產品有EMC旗下的VMware系列、微軟旗下的Virtual PC/Server系列等。
准虛擬機器技術
為了改善虛擬機器技術(Virtual Machine Monitor)的效能,一種新的准虛擬化技術(Para-Virtualizion)技術誕生了。這種虛擬技術以Xen為代表,其特點是修改作業系統的核心,加入一個Xen Hypervisor層。它允許安裝在同一硬體裝置上的多個系統可以同時啟動,由Xen Hypervisor來進行資源撫平。
在這種虛擬環境下,依然需要類比硬體裝置,安裝Guest作業系統,並且還需要修改作業系統的核心。Xen相對於傳統的Virtual Machine Monitor,效能稍有提高,但並不十分顯著。為了進一步提高效能,Intel和AMD分別開發了VT和Pacifica虛擬技術,將虛擬指令加入到了CPU中。使用了CPU支援的硬體虛擬技術,將不再需要修改作業系統核心,而是由CPU特有的指令集進行相應的轉換操作。
作業系統虛擬化技術
最新的虛擬化技術已經發展到了作業系統虛擬化,以SWsoft的Virtuozzo/OpenVZ和Sun基於Solaris平台的Container技術為代表,其中Virtuozzo是商業解決方案,而OpenVZ是以Virtuozzo為基礎的開源項目。他們的特點是一個單一的節點運行著唯一的作業系統執行個體,通過在這個系統上加裝虛擬化平台,可以將系統劃分成多個獨立隔離的容器,每個容器是一個虛擬作業系統,被稱為虛擬環境(即VE,Virtual Environment),也被稱為虛擬專用伺服器(即VPS,Virtual Private Server)。如所示:
在作業系統虛擬化技術中,每個節點上只有唯一的系統核心,不虛擬任何硬體裝置。此外,多個虛擬環境以模板的方式共用一個檔案系統,效能得以大幅度提升。在生產環境中,一台伺服器可根據環境需要,運行一個VE/VPS,或者運行上百個VE/VPS。所以,作業系統虛擬化技術是面向生產環境、商業運行環境的技術。
表:常見虛擬化技術對比
從最早的硬體分區到現階段的虛擬機器和虛擬作業系統,虛擬化技術已經發展了好幾代,不同的技術路線也帶來了不同的優劣勢。選擇什麼樣的技術和產品,使用者還是應該結合自身的預算和應用實踐來決策。