歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux業界

X86架構走向芯片級虛擬化

          計世網  孫定

  在今年春季IDF上,英特爾宣布2005將向市場投放內建虛擬技術的P4 600系列桌面處理器,2006年將推出內建虛擬技術的服務器處理器和筆記本處理器。這項發展表明,芯片級虛擬將成為英特爾處理器的標准規格。    

  在同一個發布會上,VMWare公司也宣布,今年將推出支持英特爾桌面虛擬的VMWare Workstation版本,明年推出支持英特爾服務器虛擬的VMWare GSX和VMWare ESX版本。

  差不多同時,AMD也宣布了處理器級的虛擬技術。VMWare證實,該公司也在與AMD合作,開發適合AMD虛擬技術的版本。

  由此可知, X86架構計算機走向芯片級虛擬化已成定局。

  一、 虛擬機概念和產品

  當前流行的X86架構計算環境可分為硬件、操作系統和應用軟件三層。由一個操作系統控制和操作處理器、內存、總線、硬盤等所有硬件設備,在操作系統之上支持多用戶並允許運行多個應用軟件。

  虛擬機則是在單一的硬件環境之上,創建若干個虛擬計算環境(虛擬機),每個虛擬機將一台仿真的、完整的計算機提供給用戶(包括仿真的CPU、內存、總線、硬盤等),虛機之間相互隔離,用戶之間互不干擾。在X86架構下的VM主要有VMWare公司和微軟公司的產品。

  虛擬機有多種技術方案,X86架構下的VMWare和Virtual Server都采用操作系統虛擬機方案(OS Virtural Machines, OS VM)。這種技術由IBM公司於1960年代發明,允許在一台主機上運行多個操作系統,當時用於大型機,目的是使用戶盡可能充分地利用昂貴的大型機資源。

  采用OS VM方案,在硬件環境和操作系統之間增加了一層虛擬機監視器(Virtual Machine Monitor,VMM),它將物理的CPU、內存、總線和硬盤等資源抽象出來(Abstraction),映射成若干個虛擬的CPU、內存、總線和硬 盤,構成虛擬機,每上虛擬機上可運行一個獨立的操作系統和若干應用軟件。於是,在一個物理的硬件環境之上就能互不干擾地運行多個操作系統和應用軟件。

  在計算機運行時,操作系統優先級高於應用程序。操作系統和應用程序都能向處理器發出指今。其中I/O指令、段寄存器指令、處理器控制寄存器指令和標志寄存器指令等會改變系統狀態,優先級最高,稱之為“敏感指令”,只能由操作系統發出。

  在常規的計算機中,只有一個操作系統內核向處理器發出指令,不至引起沖突。但是在虛擬機情況下,多個操作系統都可能發出指令,包括高優先級的敏感指 令。為了避免系統沖突,VMM應把安裝在虛機上的操作系統調整到較低的優先級上,俘獲沖突的指令,特別是必須俘獲可能改變機器狀態的敏感指令,並以恰當的 虛擬機制來處理。VMM“記下”每個虛擬機的狀態,或安排虛擬機指令到處理器真實執行,或 “模仿”處理器虛擬執行,然後返回結果並更新虛擬機狀態。

  VMWare公司當前有VMWare Workstation、VMWare GSX和VMWare ESX等三款產品。前兩款用於工作站和服務器,最後一種用於關鍵任務(Mission-Critical)服務器,現在的版本能支持60GB內存、 250TB存儲以及16個處理器的大型X86架構服務器。在每個虛擬機可安裝Windows不同版本操作系統和不同版本的Linux。

  微軟的Virtual Server當初只是使用戶能在一台服務器上運行不同版本的Windows,以解決用戶現有應用程序不能在新版Windows下運行的難題。今年新推出的Virtual Server 2005已支持在虛擬機上運行Linux。

  二、 X86架構的虛擬化

  在保護模式下,X86處理器一共有4個不同優先級(Privilege Levels),英特爾的術語為Ring,從Ring0-Ring3。Ring0的優先級最高,Ring3最低。按照設計,Ring0用於操作系統內核, Ring1和Ring2用於操作系統服務,Ring3用於應用程序。

  在正常情況下,操作系統占據Ring0,擁有訪問處理器和所有硬件資源的最高特權。應用程序占據Ring3,只能執行一些受到嚴格限制的操作以避免應用程序間的沖突。按這種安排,在操作系統的控制下計算機就可以穩定運行。

  在虛擬化的情況下,VMM占據Ring0,安裝在虛擬機上的操作系統被改到 Ring1或Ring3。可是,現在的操作系統都是為Ring0設計的,均會向CPU發出優先級最高的“敏感指令”。在X86架構中,這類指令一共有 17個。當操作系統不在Ring0,向處理器發出的敏感指令可能導致處理器產生錯誤結果或系統死機。

  理論上,解決這個問題有靜態代碼掃描和動態指令重寫兩種方法,VMWare采用後一種策略。VMM在運行中發現來自虛擬機的危險指令,將其重寫使之能 被VMM俘獲並進行適當的干涉處置。這種方法雖然能解決問題,但也不可避免地增加了系統的復雜性,帶來系統額外開銷,降低了系統性能。雖然VMM保存每次 處理結果,可在下次遇到同樣情況時直接調用,但這也只能在一定程度上減少系統額外開銷。

  由於這一問題同時涉及VMM和操作系統,每當VMM或操作系統版本升級時都需要謹慎處理,增加了軟件產品開發的難度,也提高了用戶IT系統的維護成本。

  為從根本上解決這一問題,Intel的內建虛擬技術改進了X86處理器的硬件架構。

  首先,英特爾在X86中增加了一個較高級別的Ring,專門用於虛擬機上的操作系統。這樣不但簡化了VMM的處理任務,而且提高了對各種操作系統舊版 本的兼容性。其次,原先單純靠軟件完成的,由VMM擔任的虛擬機敏感指令轉換現在獲得硬件支持,減少了復雜的、計算密集的指令轉換操作。第三,VMM和各 個虛擬機操作系統所需的處理器狀態信息在硬件支持下,被保存在一段專用地址空間,使指令重寫速度更快,處理過程的完整性也由此得到保證。

  根據現有的測試數據,由於較大的額外系統開銷,導致安裝VM以後,系統性能下降5%-20%。X86架構實現芯片級虛擬化以後,這種情況應該會得到顯著改善。

  三、應用的意義

  長期以來,用戶機房服務器混亂是一個日益嚴重的問題。機房裡常有不少幾年前購進的各式各樣的X86架構塔式服務器,每台都配顯示器、鍵盤和鼠標。有的放在機架上,有的放在電腦台上,有的放在地上,近些年機房裡還增加一些機架式服務器。

  另一方面,用戶系統上運行著各式各樣的應用軟件,有的是買來的、有的是自行開發的、有的是定制開發的,情況相當復雜。這些應用軟件常常只能在特定操作系統下運行,誰也不願意輕意將它們移到其它未經測試的新的環境下運行。

  這種情況使服務器的管理與維護相當復雜、困難,增加了IT系統運行和維護的成本。近一兩年,為解決服務器管理難題,不少廠商先後提出了服務器整合的概念。

  服務器整合一般有兩種策略。一是采用刀片服務器,一個刀片運行一種應用,提高服務器的密度,實現整合。另一種是采用多RISC處理器的大型Unix服務器,在其上創建多個虛擬機,在虛擬機上安裝不同的操作系統和應用程序,提高單台服務器上的應用密度,實現整合。

  從前,雖然可以用VMWare在X86環境上建虛擬機,但因為X86處理器不像RISC處理器那樣提供芯片級虛擬化,使性能和穩定性均較大型RISC系統差。因此很少有廠商提供采用X86架構虛擬化的服務器整合解決方案。

  現在,解決了芯片級虛擬化問題,為X86架構虛擬化服務器整合方案掃清了障礙。隨著支持虛擬化的芯片和與之相配合的VMM產品上市,相信到2006年,用戶就可以看到性能相當,但價格遠較大型RISC系統便宜的基於X86虛擬化技術的服務器整合解決方案。




Copyright © Linux教程網 All Rights Reserved