星期四, 十月 18, 2007

虛擬化技術的實作

x86處理器是資訊產業的長青產品之一,它的核心指令集雖然將近廿年都沒有變過,但是英特爾和超微仍然持續將新功能加入x86處理器,例如浮點運算能力、多媒體指令集、64位元定址能力、多核心等等。接下來呢?x86處理器還需要什麼功能?嗯,虛擬技術會是這款資深產品近期的重頭戲;Network Computing的文章《Implementing Virtualization》對此有深入的著墨。

在處理器廠商將虛擬化技術加入處理器之前,雖然x86架構本身不具任何虛擬化的功能,但是x86平台早已出現許多虛擬化產品,而且許多產品的效能、穩定性都很好。而這也意味著虛擬化廠商其實是獨自面對處理器、記憶體、I/O等資源管理的硬體和軟體限制。不過,事實也證明這種作法不僅可行,而且運作的很好。

但如果虛擬化技術能從最底層的處理器直接提供,應該可以讓虛擬化功能更穩定、更有效率;這是處理器廠商的想法。不過這種作法雖然可以提供更有效率、穩定、甚至彈性的虛擬化技術,但卻也衍生出許多處理器、記憶體、I/O等資源管理的技術挑戰,並且必須以軟體加以克服。所幸的是,英特爾和超微為這些挑戰和難題帶來了補救之道。

x86處理器原本的規劃是讓作業系統核心在保護模式的ring 0執行,ring 0已經是處理器的最底層了,而現在要將虛擬化功能加入處理器,勢必要讓虛擬化功能位於可以監控作業系統ring 0的層級,讓ring 0變成執行虛擬作業系統的虛擬機器,而可以監控ring 0的層級,其權限一定要比ring 0還大。目前採取的作法,是加入新的保護模式超級特權ring -1,並且讓虛擬機器監控器(virtual machine monitor,VMM)在ring -1執行。

兩大處理器廠商的作法雖然略有不同,不過卻無礙於虛擬化廠商同時利用這些技術。英特爾採用的技術稱為VT-x,這能提供ring -1及新的指令集,可以設定、管理現有的虛擬機器和記憶體。VT-x和超微的AMD-V有許多相似之處,包括ring -1和虛擬機器的控制結構。但因為英特爾的處理器使用了額外的記憶體控制器,因此VT-x未能提供虛擬記憶體管理能力,也就是說,軟體必須處理實體與虛擬記憶體的位址轉換。相對的超微處理器內建了記憶體處理器,因此AMD-V也提供了新的記憶體指令。

虛擬技術不是萬靈丹,但的確有其可行之處;虛擬技術也不是白吃的午餐,但只要正確評估、妥善應用,虛擬技術將有助於IT環境的建置與管理。雖然目前的VMWare是虛擬化產品的市場領導者,不過後面的追兵不僅追的緊,而且來勢洶洶,尤其藉由處理器的虛擬化技術的加持之後,另兩家虛擬化廠商,也就是Xen微軟,勢必會讓VMWare面臨相當大的挑戰。

如果您現在就要進行伺服器虛擬化的工作,VMWare的產品不論是對硬體、作業系統、以及管理功能的支援,都依然最具優勢。但是虛擬化技術和市場目前也還處於變化快速的狀態,尤其處理器內建虛擬化的功能才要起步,在未來的12個月,新技術及新產品很有機會突破目前虛擬化的應用。文中也以現有的情況預期:Xen將是VMWare最大的對手、AMD-V優於VT-x。

0 意見: