2011年5月1日 星期日

虛擬系統的前世今生

虛擬系統的前世

雲端技術、雲端運算,或是雲端服務,都是近幾年火熱的資訊議題,且資訊服務雲端化,更是各大公司企業、政府部門,或教育研究單位未來資訊發展與部屬的方向,然而資訊服務雲端化,需要仰賴的,除了硬體的支援之外,最重要的,就是虛擬系統的部屬與運用。

那麼,什麼是虛擬系統?簡單來說,就是讓原本的作業系統,可以在運行另外一套,甚至多套的作業系統(Guest OS),這與一般所謂的多重開機是不一樣的,差別在於,多重開機一次只能指定運作一套作業系統,而虛擬系統呢,則可以在同一硬體,相同時間之內,與原本的作業系統(Host OS)同時運作,甚至可執行不同的應用系統,以滿足同一時間之內不同的服務需求。

就早期的虛擬系統,依照虛擬電腦(Guest OS)對硬體虛擬化程度的高低,可以分為完全虛擬化(Full virtualization)半虛擬化(Paravirtualization)兩種類型,所謂的完全虛擬化,指的就是該虛擬系統,完全是透過軟體來模擬一個虛擬的硬體環境,並透過轉譯的方式,來處理虛擬硬體與實體硬體之間溝通的橋樑,不過,也由於所有硬體資訊的溝通,都需要透過轉換的方式來運作,可想而知,虛擬系統上的虛擬電腦的效能勢必大打折扣,即使硬體規格強悍,也僅可以達堪用的程度,早期的 VMware Workstation 的版本,就屬於此類。而相較於前者,半虛擬化則是以修改系統(Guest OS)核心的方式,簡化了 CPU 與週邊裝置操作指令轉譯的複雜度, 以提昇虛擬系統的效能,如 早期版本的 Xen 就屬於半虛擬化的虛擬系統,但遺憾的是,除了開放系統(如大部分的 Linux )之外,如 Windows 等較為封閉的作業系統,就無法執行半虛擬化的虛擬系統。

而除了虛擬電腦對硬體虛擬化程度的差異之外,依照虛擬平台的運作架構模式,也可分為寄居架構(Hosted Architecture)與裸機架構(Bare-Metal),前者顧名思義,就是在現有的作業系統(Host OS)之上,再運行虛擬系統,並建立虛擬電腦,完全虛擬化就是這種類型,好處就是硬體的相容性高,但最大的缺點,就是一旦任何一部虛擬電腦發生異常, 所有的虛擬電腦就都無法開機運作(早期 VWare Workstation 就容易出現這樣的狀況),且各個虛擬電腦都沒有獨立的硬體資源,容易相互影響運作效能,除此之外,寄居架構之內的虛擬電腦,由於是寄居在實體作業系統的檔案系統之上,所有虛擬系統之內的虛擬電腦,所有資料的存取與異動,都需要透過兩層檔案系統的轉換(虛擬系統與實體系統),可想而知,如此繁瑣的動作,則是效能不彰的另一主因;相對來說,裸機架構,則存在一個管理程序(Hypervisor),管理所有 虛擬電腦的運作,且任一個虛擬電腦的運作皆不會影響到其他的虛擬電腦,如 VMware ESXi 或是 Linux KVM,就是這種類型,且這些虛擬系統就直接使用裸機系統自定的檔案系統,也減少了資訊轉換的程序,但大前提是,實體 CPU 必須支援虛擬化的技術(Intel VT 或 AMD-V),才能安裝並執行裸機式虛擬系統。


虛擬系統的今生:裸機架構 = 主流架構

上述對於虛擬系統的分類(完全虛擬化與半虛擬化),在這邊,將它稱為虛擬系統的過去式,那現在式呢?還記得前面提過,由於硬體( CPU )對於虛擬化的輔助,使得虛擬系統可以不需要再透過任何核心指令轉換的動作,就可以直接與下達 CPU 的指令,而在半虛擬化的階段,還需要搭配虛擬電腦核心的修改,才能提昇硬體溝通與虛擬電腦運作的效能,而現在,因為硬體(CPU)虛擬化的支援,已經不需要再嘗試以修改系統核心的方式來提升效能,硬體本身就可以完全支援虛擬化的技術並運作,就可以以極佳的效能,來運行虛擬系統,而這就是裸機式虛擬系統的架構,在這樣的情形之下,也就再也沒有所謂的完全虛擬化與半虛擬化的分別,虛擬系統直接安裝在實體主機的檔案系統之上,這是目前虛擬系統主流的運作架構。


Linux 核心虛擬技術 (KVM - Kernel-based Virtual Machine)

Linux 核心從 2.6.20 版本開始,就支援核心虛擬化技術,稱之為 KVM(Kernel-based Virtual Machine),此架構完全支援 CPU 的虛擬化技術(Intel VT 或 AMD-V),而前面有提到,硬體(CPU)支援虛擬化技術的虛擬系統,是裸機式架構虛擬系統的必要條件,所以 Linux KVM 就是一套以裸機式架構運作的虛擬系統;Linux KVM 可以讓虛擬系統不需要像半虛擬化技術般的修改虛擬電腦的核心,也不需要如完全虛擬化般,讓虛擬系統完全創建虛擬硬體,而是能直接通透實體 CPU ,以模組化的方式來執行核心指令,以提升運作效能,而其餘週邊裝置(網路卡、顯示卡...等)的虛擬化,則是透過 QEMU 這一套開源碼(Open Source)軟體來控制虛擬週邊裝置與實體週邊裝置溝通的橋樑。

以前,在虛擬系統尚未成熟,以及硬體對於虛擬化的支援較低,寄居式虛擬軟體的出現,解決了當時多重開機建立與使用的費時費工,以及同一時間只能運行一套系統的窘境,適合需要測試環境的單一使用者,如程式開發人員,用來測試程式在不同系統之內的相容性,或者是一般的系統玩家,這些人當時在乎的不是速度,而是可用的不同系統環境;而今,在 CPU 幾乎全面支援虛擬化的狀況下,虛擬系統的效能,已經大幅提昇至可承載繁瑣應用系統服務(如 Windows Active Directory、 Exchange Server,或是 SQL Server ...等)的地步,加上裸機式的虛擬系統,降低了不同系統之間(虛擬系統與實體系統)資料轉換的程序,更是再一步提昇虛擬系統的運作能力,達到一般公司企業可用來建構或部屬各種應用服務系統,甚至是所有系統的備援機制,其中, Linux 核心支援的核心虛擬化技術, Linux KVM ,在建置與部屬的程序上,更是優於其他裸機式的虛擬軟體,也更適合用在公司企業、教育研究團體之內,因為,現在只要有 Linux 系統,就幾乎等同於擁有可運行虛擬化的條件。

利用 Linux KVM ,可以輕易的達到快速且大量部屬虛擬系統平台,即使要架構自有的雲端服務,也可以輕易達到,除此之外,備份、快速移機與異地備援也都可以輕易達到,雖然 Linux KVM 有上述優點,但比較遺憾的是,其 GUI 操作介面的親和度,至少在自由軟體的部份,還是比不上一些市面上的付費軟體,但瑕不掩瑜,其靈活且彈性的運作,在日後雲端服務的領域上,必定是不可小覷的一員。




名詞定義:
1、虛擬系統:指的是可建立虛擬電腦的應用系統(軟體),如 VMware Workstation、Xen、Hyper-V,與 Linux KVM 等

2、虛擬電腦:或稱 Guest OS,指的是運行在虛擬系統之上的虛擬硬體與作業系統的統稱

3、KVM(Kernel-based Virtual Machine):指的是 Linux 核心從 2.6.20 版本開始,核心所支援的核心虛擬技術

4、Linux KVM:KVM 因為是 Linux 核心所支援的虛擬技術,是以裸機式架構的方式在運作,加上可虛擬化的物件,已經不僅止於虛擬電腦,虛擬網路裝置也可模擬,所以將 Linux KVM 稱之為裸機式虛擬平台,是比較恰當的。

沒有留言:

張貼留言