複製鏈接
請複製以下鏈接發送給好友

計算機虛擬化技術

鎖定
虛擬化是一個廣義術語,在計算機方面通常是指計算元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術可以擴大硬件的容量,簡化軟件的重新配置過程。CPU的虛擬化技術可以單CPU模擬多CPU 並行,允許一個平台同時運行多個操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
中文名
計算機虛擬化技術
外文名
Computer virtualization technology
所屬學科
計算機學科
適用領域
計算機

計算機虛擬化技術簡介

虛擬化技術與多任務以及超線程技術是完全不同的。多任務是指在一個操作系統中多個程序同時並行運行,而在虛擬化技術中,則可以同時運行多個操作系統,而且每一個操作系統中都有多個程序運行,每一個操作系統都運行在一個虛擬的CPU或者是虛擬主機上;而超線程技術只是單CPU模擬雙CPU來平衡程序運行性能,這兩個模擬出來的CPU是不能分離的,只能協同工作。虛擬化技術也與如今VMware Workstation等同樣能達到虛擬效果的軟件不同,是一個巨大的技術進步,具體表現在減少軟件虛擬機相關開銷和支持更廣泛的操作系統方面。
純軟件虛擬化解決方案存在很多限制。“客户”操作系統很多情況下是通過VMM(Virtual Machine Monitor,虛擬機監視器)來與硬件進行通信,由VMM來決定其對系統上所有虛擬機的訪問。(注意,大多數處理器和內存訪問獨立於VMM,只在發生特定事件時才會涉及VMM,如頁面錯誤。)在純軟件虛擬化解決方案中,VMM在軟件套件中的位置是傳統意義上操作系統所處的位置,而操作系統的位置是傳統意義上應用程序所處的位置。這一額外的通信層需要進行二進制轉換,以通過提供到物理資源(如處理器、內存、存儲、顯卡和網卡等)的接口,模擬硬件環境。這種轉換必然會增加系統的複雜性。此外,客户操作系統的支持受到虛擬機環境的能力限制,這會阻礙特定技術的部署,如64位客户操作系統。在純軟件解決方案中,軟件堆棧增加的複雜性意味着,這些環境難於管理,因而會加大確保系統可靠性和安全性的困難。
而CPU的虛擬化技術是一種硬件方案,支持虛擬技術的CPU帶有特別優化過的指令
計算機虛擬化技術 計算機虛擬化技術
集來控制虛擬過程,通過這些指令集,VMM會很容易提高性能,相比軟件的虛擬實現方式會很大程度上提高性能。虛擬化技術可提供基於芯片的功能,藉助兼容VMM軟件能夠改進純軟件解決方案。由於虛擬化硬件可提供全新的架構,支持操作系統直接在上面運行,從而無需進行二進制轉換,減少了相關的性能開銷,極大簡化了VMM設計,進而使VMM能夠按通用標準進行編寫,性能更加強大。另外,在純軟件VMM中,如今缺少對64位客户操作系統的支持,而隨着64位處理器的不斷普及,這一嚴重缺點也日益突出。而CPU的虛擬化技術除支持廣泛的傳統操作系統之外,還支持64位客户操作系統。
虛擬化技術是一套解決方案。完整的情況需要CPU、主板芯片組、BIOS和軟件的支持,例如VMM軟件或者某些操作系統本身。即使只是CPU支持虛擬化技術,在配合VMM的軟件情況下,也會比完全不支持虛擬化技術的系統有更好的性能
兩大CPU巨頭Intel和AMD都想方設法在虛擬化領域中佔得先機,但是AMD的虛擬化技術在時間上要比Intel落後幾個月。Intel自2005年末開始便在其處理器產品線中推廣應用Intel Virtualization Technology(Intel VT)虛擬化技術。如今,Intel已經發布了具有Intel VT虛擬化技術的一系列處理器產品,包括桌面平台的Pentium 4 6X2系列、Pentium D 9X0系列和Pentium EE 9XX系列,還有Core Duo系列和Core Solo系列中的部分產品,以及服務器/工作站平台上的Xeon LV系列、Xeon 5000系列、Xeon 5100系列、Xeon MP 7000系列以及Itanium 2 9000系列;同時絕大多數的Intel下一代主流處理器,包括Merom核心移動處理器Conroe核心桌面處理器,Woodcrest核心服務器處理器,以及基於Montecito核心的Itanium 2高端服務器處理器都將支持Intel VT虛擬化技術。
而AMD方面也已經發布了支持AMDVirtualization Technology(AMD VT)虛擬化技術的一系列處理器產品,包括Socket S1接口的Turion 64 X2系列以及Socket AM2接口的Athlon 64 X2系列和Athlon 64 FX系列等等,並且絕大多數的AMD下一代主流處理器,包括即將發佈的Socket F接口的Opteron都將支持AMD VT虛擬化技術

計算機虛擬化技術特點

Fidelity(保真性):應用系統程序在虛擬機上執行,除了時間因素外(會比物理硬件上執行慢一點),將表現為與在物理硬件上相同的執行行為。 [1] 
Performance(高性能):在虛擬環境中應用程序絕大多數指令在虛擬機管理器不受干預的情況下,直接在物理硬件上執行。 [1] 
Safety(安全性):物理硬件由虛擬機管理器全權管理,被虛擬出來的執行環境的程序(包括操作系統)不能直接訪問物理硬件。 [1] 

計算機虛擬化技術四種技術

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

計算機虛擬化技術優勢

虛擬機虛擬化技術所能提供的優勢取決於客户的目標、所選擇的特殊虛擬技術以及現有的IT基礎架構。並非所有的客户都能夠從實現某一特殊虛擬化解決方案中獲得同樣的利益。現在,即使是使用虛擬化進行簡單的服務器整合,客户們也經常可以在某種程度上獲得以下很多利益:更高的資源利用率——虛擬可支持實現物理資源和資源池的動態共享,提高資源利用率,特別是針對那些平均需求遠低於需要為其提供專用資源的不同負載。
降低管理成本
虛擬可通過以下途徑提高工作人員的效率:減少必須進行管理的物理資源的數量;隱藏物理資源的部分複雜性;通過實現自動化、獲得更好的信息和實現中央管理來簡化公共管理任務;實現負載管理自動化。另外,虛擬還可以支持在多個平台上使用公共的工具。
提高使用靈活性
通過虛擬可實現動態的資源部署和重配置,滿足不斷變化的業務需求。
提高安全性
虛擬可實現較簡單的共享機制無法實現的隔離和劃分,這些特性可實現對數據和服務進行可控和安全的訪問。
更高的可用性
計算機虛擬化技術 計算機虛擬化技術
虛擬可在不影響用户的情況下對物理資源進行刪除、升級或改變。
更高的可擴展性
根據不同的產品,資源分區和匯聚可支持實現比個體物理資源小得多或大得多的虛擬資源,這意味着您可以在不改變物理資源配置的情況下進行規模調整。
互操作性和投資保護
虛擬資源可提供底層物理資源無法提供的與各種接口和協議的兼容性。
改進資源供應
與個體物理資源單位相比,虛擬能夠以更小的單位進行資源分配。與物理資源相比,虛擬資源因其不存在硬件和操作系統方面的問題而能夠在出現崩潰後更快地恢復。

計算機虛擬化技術AMD

簡言之,AMD Virtualization技術是一項基於硬件的技術,該技術支持虛擬軟件在一台基於AMD皓龍處理器的物理服務器上運行多個操作系統和應用,有助於服務器實現更高的效率和利用率。你無需再採用“一個操作系統、一個應用和一台服務器”這種運行模式。AMD的Virtualization技術使你能更好地利用自己的資源,你的服務器和工作站將變得更加高效,數據中心的運轉也更加有效。例如,當今的服務器在以不足15%的容量運行時,其能耗和散熱仍保持在24×7的水平。AMD Virtualization技術具有快速虛擬化索引的功能,這就意味着AMD四核皓龍處理器能夠簡化數據中心,實現更高的利用率。AMD的片內安全和虛擬技術代號分別稱作Presidio和Pacifica,據其官員表示將出現在明年的Opteron處理器中。“每個人都預見到虛擬和安全技術能解決到數據中心的某些問題,”AMD的微處理器業務部總經理Marty Seyer説。
在安全方面,Presidio將利用到微軟即將推出的Windows Vista中某些功能。但AMD更吸引人的一項舉措是讓其內存控制器更“虛擬智能化”——讓芯片在一台虛擬機的不同虛擬地址之間建起一道堅固的壁壘。另外,這樣還能讓Presidio阻止某些黑客攻擊。這類攻擊通常會強迫機器借某張CD或某個分區上的操作系統啓動並使用特別工具讀取機器內存中的內容。
AMD稱Presidio會不斷改進以包含其他保護技術,例如加固鍵鼠等輸入設備與操作系統之間通訊通道等。由於這種保護技術需要操作系統的幫助,微軟為此已經計劃為Vista添加多種類型的安全技術。AMD的官員還表示將在明年的處理器中添加對信用平台模塊(Trusted Platform Module) 1.2等Windows機器以外技術的支持。事實上,AMD正和開放信任運算機構合作開發Linux平台上的可信賴運算標準,預計集成TPM的服務器將在2007年上市。至於用於減輕VMware虛擬軟件部分工作負擔的Pacifica技術,AMD稱也會不斷改善並最終包含輸入/輸出虛擬技術。AMD已經開始這項Xen計劃的研究工作,不過他們不願透露相應產品何時上市。
AMD的Presidio和Pacifica技術和Intel的虛擬技術及"LaGrande"安全技術十分相似。雖然Intel一直稱到明年首季才會向系統廠商推廣使用新的奔騰D處理器"resler",但其實他們已經開始供貨部分集成虛擬技術的奔騰四處理器,而LaGrande安全功能也會在明年出現於Intel處理器中。比較值得我們關注的應該是Pacifica虛擬技術,這將可以大大提高台式處理器的運行能力。Pacifica技術最突出的地方在於對內存控制器的改進方面 。
“Pacifica”通過Direct Connect Architecture(直接互連架構)和在處理器和內存控制器中引入一個新模型和功能來提高CPU的虛擬應用
與過去的方法來進行虛擬應用不同,這項新的技術能夠減少程序的複雜性,提高虛擬系統的安全性,並通過兼容現有的虛擬系統管理軟來減少花費在虛擬管理系統上的費用。例如,用户能在一部機器上輕易地創建多個獨立且互相隔離的分區,從而減少了分區之間病毒傳播的危險。不過,AMD在虛擬化技術方面仍比Intel慢了一步。AMD表示其IO虛擬化技術規範已經成型,且技術授權完全免費,並將鼓勵軟硬件廠商採納該技術並集成進PC中。
目前AMD已經和VMware、Xensource以及微軟等公司結盟推廣其虛擬化技術。AMD的虛擬化技術之前的開發代號為Pacifica,這種技術將在AMD今年的64位CPU核心邏輯以及芯片組兩個層面得以實現。

計算機虛擬化技術英特爾

在前不久的IDF春季論壇上,Intel向人們展示了代號為“Vanderpool”的虛擬化技術。這項技術將運用在Intel今年遲些時候推出的桌面CPU、64位ItaniumCPU以及明年推出Xeon服務器芯片和移動CPU上,屆時Intel的CPU將擁有硬件層次的虛擬化技術。
提到虛擬化技術,大家並不陌生。這項技術在傳統的大型機和Unix系統上早已是很普及了,但因為桌面CPU大都使用的是X86架構,這決定了在其之上使用硬件級虛擬化技術的難度。Intel可謂創造先河,誓將該技術運用到桌面級產品上,用以提高CPU的性能和降低系統組建開銷。這也在一定程度上符合Intel目前的策略,不再一味追求CPU的速度,而把焦點集中在CPU的效率上來。本文就將為讀者詳細介紹Vanderpool Technology技術(以下簡稱VT),它是什麼、做些什麼事、存在的問題及解決方法,還有在技術層面上它是如何運作的。

計算機虛擬化技術應用平台

通過和信應用虛擬化來發布企業應用系統,能夠為用户帶來更好的體驗。不需要改變現在網絡結構和修改任何應用程序,就能實現快速、靈活地部署,而且內置的安全、負載均衡機制保證了企業不間斷業務的進行,同時大大簡化系統管理員管理和維護工作量。
使用和信應用虛擬化有什麼好處?
使用和信應用虛擬化能夠做到:
- 軟件應用的集中管理;
- 遠程安全接入與應用訪問控制
- 應用加速;
- 企業應用平台從局域網向互聯網遷移。
和信應用虛擬化客户端環境要求
操作系統:Windows XP、2003、Vista、Win7 32位及64位系統
和信應用虛擬化客户端無特殊要求,只要能順利安裝以上操作系統,均可無障礙使用和信應用虛擬化。
什麼是虛擬化
虛擬化能使用户在一台服務器上同時運行多個操作系統,這與“多重任務處理”技術有些類似。不過“多重任務處理”技術只允許用户在同一機器設備的同一操作系統中運行多個程序,而虛擬化則可讓用户在同一機器設備中運行多個操作系統。這樣用户能更靈活高效地配用計算機資源,並且有助於提高安全性能
想象一下,一個操作系統幾乎不需花任何時間就可被啓動,即使它崩潰了,你只需簡單地將它剔除出去,同時立即裝載一個新的。如果你正在同時運行幾個操作系統,當你準備給其中一個載入新的映像時,你可馬上將它關閉,並把該系統正在處理的工作分流給其他系統運行。如果你有5個RedHat的副本正在運行Apache服務器軟件,而其中一個因滿負荷而停止響應,沒問題,你只需簡單地將響應請求轉交給其他4個系統處理,同時重啓那個停止工作的系統就行了。
如果你已為你正在運行的操作系統存儲了一份“快照”,那麼每當有一些不愉快的事情發生時你都可重新啓動它,例如被黑客攻擊、感染病毒。從一個安全的分區載入映像並修復好它就行了。虛擬化還可讓用户毫不費時地重新安裝操作系統而不需像以往使用Ghost那樣去安裝設備驅動。你可簡單地就像使用普通程序那樣去載入、卸載和存儲操作系統。
同樣,它也允許你在同一台機器上使用多個不同的操作系統。如果你是一名程序員,需要編寫代碼使它們在Windows 95/98/Me/2000/XP上都能運行,你可在你的辦公桌上準備5台機器或是1台運行了5種虛擬化操作系統的電腦。同時,作為程序員的你需在每個瀏覽器的每個版本上校驗這些代碼,很明顯微軟不會讓你在一個已擁有高版本IE的情況下去安裝更低版本的IE去做這些事,但你可一個個地安裝舊的操作系統或採取更好一些的解決方法——讓它們同時運行。
現有虛擬化技術及缺陷
是不是一切都很簡單和完美?然而在虛擬化世界並非一切都是盡善盡美的。最顯而易見的就是那麼多的副本操作系統(上面例子中的操作系統副本多嗎?你可以想象一個網絡主機公司,20個、50個都是有可能的)同時運行在一台計算機上需要佔據很多的資源並導致更昂貴的服務器開銷。數據傳輸在任何情況下都變得更難,因為越多東西被載入,需要的存儲器容量也就越多。
是的,真正的殺手就是系統開銷。目前在計算機虛擬化方面有幾項技術,但它們都伴有不同程度降低系統性能方面的問題。單就CPU而言,其佔用率可以從10%到超過40%。
很顯然,我們需要新的技術來解決這些問題。Intel所要採用的VT技術背後的思想就是降低虛擬化時的系統開銷。在我們深入瞭解它如何工作之前,我們有必要了解一下虛擬化技術到底是如何實現不同的操作系統工作在同一CPU上的。
目前主要存在有3種類型的虛擬化技術:Paravirtualisation、二元碼轉譯和模擬器。大家最為熟悉可能就是模擬器了。你可以讓一個超級任天堂的模擬器在Windows XP的一個窗口中運行,同時還可有另一個PS模擬器。這些都可看作是虛擬化的最基本形式。模擬器需耗費巨大的CPU開銷,如果你非要去模擬硬件裝置的每一個Bit位,你將花費大量的時間和精力。比較好的方法是跳過其中的某些部分,我們使用的模擬器就是這樣,它工作得也還過的去。
這個領域的另一端就是目前較流行的並被業界認可的“Paravirtualisation”(以下簡稱PV)技術。按字面意思理解,是編程序模擬的意思。它讓主機操作系統知道它們正工作在一個虛擬化的環境中,通過修改它們以使之工作得更好。因此操作系統需針對這種方法進行修改和調整,它們必須來回於操作系統的編寫人員和編寫虛擬化軟件人員之間。從這個角度來看,它並非是完全的虛擬化,因為存在這種合作的關係。
PV技術在開源代碼的操作系統中工作得不錯,Linux,、xBSD都是很合適的PV工作平台的候選者,你可在這些系統中任意調整所需調整的地方,使PV能工作得更好。而Windows則不行,這大概能解釋最近為什麼眾多IT巨頭吹捧開源虛擬化技術Xen了。
而“二元碼轉譯”(以下簡稱BT)技術可説是較折衷的方法了。它所要做的取決於操作系統將要做些什麼,並在不知不覺中改變它。假如操作系統試圖去執行指令A,但該指令A會給虛擬化引擎帶來某些問題,那麼BT將把它轉換成某些更合適的指令並偽造指令A應該返回的結果。這是一項欺騙工作,且佔用大量CPU資源,另外用許多代碼取代一條代碼也不會使事情運作得快些。
當你瞭解這些後,你會感到頭痛。純粹致命的缺陷的確沒有,但都沒有一個簡單的解決方案。這些虛擬化的技術仍在繼續運用,只是人們都在儘量使其處在一個較低程度的缺陷範圍內工作罷了。是什麼造成這樣的呢?
什麼問題困擾着我們
對於X86系統架構的CPU而言,至少在32位領域,有太多讓人頭痛的條條框框,但作為一條總則,它們都包含有環轉換器(Ring Transitions)和有關指令。從概念意義上説,環是一種劃分系統特權級別的方法(因此“Ring”也稱作特權環)。你可讓操作系統運行在一個特權級別上而不會使之被用户程序更改。這樣即使你的程序出了問題,它也不會導致系統崩潰,而操作系統能取得控制權,關閉出毛病的程序。這些環強行控制系統的不同部分。
Intel公司的X86系列CPU(包括80386、80486、Pentium、Pentium Pro、Pentium Ⅱ、Pentium Ⅲ以及現在的Pentium 4CPU),提供4個特權級別R0、R1、R2和R3。較大的數字表示較低的特權,我們可簡單理解為運行在某一級別的程序無法改變運行在較小數字級別上的程序,但較低數字級別上的程序可干擾甚至控制運行在較高數字級別的程序。
在實際運用中,被經常用到的只有R0和R3,即最高級別和最低級別。操作系統運行在R0上,而用户程序運行在R3上。X86架構在向64位擴展時,採用的方法之一就是通過去掉中間的特權級別——R1和R2。幾乎沒有人注意到它們消失了,除了那些使用虛擬化技術的特定人羣。
像VMware這類軟件模式的虛擬化機(Virtual Machines,以下簡稱VM)顯然必須運行在R0級別上,但如它們要想保持完全控制權,就必須使操作系統在這個級別之外。最顯而易見的解決辦法是強迫主機操作系統運行在一個較低級別的環中,如R1。它們的部分代碼原先被設定為從R0到R3,而不是R1到R3。雖然在PV環境中,你能修改操作系統從而使它工作得很好,但如果你要找到一個圓滿的解決方法,就必須使操作系統工作在R1級別中。
可如此一來又出現問題了,有些指令只有當它們從R0級裏發出或發往R0級時才會工作,如果不在正確的環中,這些指令會運作得很古怪。如果你試圖這麼去做,會有很不好的後果。讓代碼在正確的環中執行確實能防止操作系統破壞VM,同時也防止運行在主機操作系統上的軟件破壞操作系統自身。這就是所謂的“0/1/3”模式。
還有一種模式被稱為“0/3”模式。這種模式將VM放入R0級別中運行,而將操作系統和用户程序都放入R3級別中。但從本質上而言,它還是像“0/1/3”模式一樣去處理其他事情。在R3級別裏,有特權的操作系統能更輕鬆地執行用户程序,由於不存在環的阻隔,也使它運行的更快一些,但系統穩定性不佳。
另外一個方式去使用“0/3”模式,就是讓CPU保有兩份運行於R0級別中的事物的頁表。一份為操作系統,另一份為運行在R3級別中的老程序。這樣可擁有一份完整的存儲器保護集,用來把用户程序隔離到操作系統空間之外。當然,這同樣需要消耗性能,只是以不同的方式罷了。
概括來説,在“0/1/3”模式中,系統安全性更高一些,但從R3到R1、R3到R0或R1到R0轉換時性能會受到一些影響,反過來也是。在“0/3”模式中,只存在R0與R3之間的轉換,所以它潛在的比一個非主機操作系統運行得更快一些。但如你碰到一個問題,“0/3”模式比“0/1/3”模式更容易出現藍屏。儘管未來將廣泛使用“0/3”模式,主要是因為上文我們提到向在64位擴展時已去掉了R1和R2,所以你必須被迫使用“0/3”模式。對計算機而言,這被稱作是進步,同樣,毀滅性的崩潰被認為是“古怪”行為。
理論上,如果你可忍受一點不穩定性,或者在“0/1/3”模式中犧牲一點速度,那麼應該説的很完美的。可它們在某些方面確實還存在一些缺陷,主要存在以下4點。首先是那些檢驗指令自己所在環的指令,另外是那些處在錯誤的環中卻沒有正確保護CPU現場的指令。最後兩點是截然相反的,就是那些應引發錯誤卻沒有導致錯誤的指令,以及那些本不該導致錯誤卻引發許多錯誤的指令。所有這些都讓編寫VM的天才程序員們活得不輕鬆。
其中第一點是顯而易見的。如果你給予操作系統R1級別的特權,當它檢驗自己運行所處的環時,它會返回1而不是0。如果此時運行於該系統的一段程序期望自己應該處在R0環時,那麼它會因為得到的是R1而導致錯誤。這會導致藍屏的出現,存儲器清除或另一些不理想的後果。二元碼轉譯技術可捕捉到這種錯誤,並把返回值偽裝成0,但這意味着需要幾十上百條指令來完成這一工作,顯然速度受到極大影響。
保護現場是一個潛在的更糟糕的問題,有些CPU裏的東西在上下文開關程序中並不是很容易被保存的。那些隱藏的段寄存器狀態就是一個很好的例子。一旦它們被載入主存,其中一部分無法被保存,導致內存常駐部分和CPU中實際值間的不同而引起意外中斷。當然我們可為它們設立工作區,但這樣做極為複雜且需付出很高的代價使之表現得聰明一些。
那些本該引起某些問題卻沒有導致這些問題的指令也是擺在我們眼前的一道難題。如果你期望一條指令應在你後面的設計的中斷陷阱中造成錯誤,但卻沒有,這一點也不會讓人因為沒有錯誤而高興。與此相反的情況也極為常見,如果不在正確的環中向CR0和CR4寫入,則會產生錯誤,導致系統崩潰。雖然這兩種錯誤在你不注意時可被修正,但卻造成很多性能損失。
整個所涉及到的虛擬化技術就是要將操作系統放在一個它本不應該在的地方,不斷地運轉去嘗試解決所有撲來的問題。存在許多問題,這些問題也不斷的發生,所以性能損失也就沒什麼奇怪的了。
解決之道
Intel的VT技術能解決這些困擾。VT的目的是在儘可能最小化程序員痛苦的同時儘可能多的增加“virtualization holes”(虛擬化孔)。這種解決方案中,VT-X針對X86而VT-i針對Itanium,分別引入了一種新的模式針對不同的CPU。這裏我們主要來看看VT-X,實際上VT-i的功能與VT-X有很多相同的地方。
這種新的模式被稱為VMX,並且引入了一個虛擬化機監控器VMM運行於其中。它被設定在R0級別下,你可以認為是R-1級或者看成是在環的旁邊運行。主機操作系統和所有的程序在VMX模式中運行,與此同時VMM運行在VMX根模式中。
任何一個運行在VMX模式下的操作系統,都擁有所有運行於非VT系統中的一般操作系統的功能和特性。它也處在R0級別中,與平常一樣有權利處理每一件事情,而且並不知道有什麼東西正在它的旁邊運行。當情況得到授權,CPU進入VMX根模式,VMM就可以切換到其他一個運行在另一VMX實例的操作系統。這些切換被稱做VM登錄和VM退出。
VT技術所表現出來的不可思議的地方就在於它將從VMX模式到VMX根模式(或從VMX根模式到VMX模式)的登錄和退出處理易於操作。一旦主機操作系統被涉及到,那它一定是獨自處在自己的世界裏的,你必須保存虛擬化世界的完整狀態並當你返回時重新載入它。雖然在VT裏還有很多事物要去處理,但它被設計為一項任務,所以客觀地説它實際是一個簡單而並不費力的進程。
因為每一個操作系統實例都在正確的位置運行,所以前面所提到的4個問題也就不存在了。相關聯的工作區也不再需要,與此有關的系統開銷沒有了。這些能有效提高速度。但這些並非免費,只是付出的代價要少很多。
啓動一個新的主機操作系統,你需為其留出一塊4kB的存儲區並將它傳遞給一個VMPTLRD指令。這塊區域將用來存儲該系統實例不被激活時的所有狀態和重要Bit位。只要該操作系統實例存在,則這塊區域一直有效,直到在其上運行一條VMCLEAR指令。這樣就設立了一個虛擬化機實例。
如果你想要把控制權交給虛擬化機,你要麼登錄VMX非根模式或簡單一點,運行VMX模式即可。這些提到的VM登錄指令就是VMLAUNCH和VMRESUME,兩者並沒有太大的區別。VMRESUME指令只是簡單地從剛開始已經初始化的4kB存儲區裏載入CPU狀態,並把控制權交給主機操作系統。VMLAUNCH做的也是同樣的工作,但它會啓動一個虛擬化機控制構件VMCS,它包含一些設立VM的現場背後的記錄,因為這需花費一些時間,所以人們儘量避免在併發登錄時使用VMLAUNCH。
從這一點來看,主機操作系統開始了它的愉快之旅,儘可能地運轉,毫無察覺是否有其他東西正在它的一旁運行。正如過去所計劃的一樣,它存在於自己的世界裏,全速運行,或接近全速。唯一的問題是你如何打破這一切美好的景象而將它關閉到一邊,以使得機器裏的其他操作系統能真正運行。這就是VT技術所體現出來的複雜的一面——VMCS中一些特別的位映像。
這些位映像是一些32位的字段,每一個Bit位標誌一個事件。如果某個事件被觸發,則對應的Bit位被置位,CPU觸發一條VM退出指令,並將控制權返還給運行在VMX根模式下的VMM。VMM可做任何想做的事,然後將VMRESUME指令傳遞給下一個操作系統,或剛離開的那個操作系統。這個被啓動的操作系統同樣很好地運行着,直到觸發另一條VM退出指令。如此這樣以每秒上千次的速度重複着。
什麼能觸發這些指令呢?它們可以是引腳信號、CPU、異常和頁面錯誤這些平台事件,所有這些都會觸發VM退出指令。VT技術的完美之處在於它有很強的適應性,另一個與此類似之處就是在調試程序中設置斷點,你可在每個事件上都設置一個,或者一個也不設置,這都取決於你自己。
引腳信號事件要做的是當有一個內部中斷或一個不可屏蔽中斷髮生時,則觸發退出指令。而CPU事件,則是當你設置任意Bit位在某一字段,當相應的CPU狀態接收到它時,則觸發退出指令。雖然大多數指令需要去設置,但也有一些指令無條件地引發VM退出指令。這是在一個非常細小的層面上控制VM,允許每當你需要時登錄和退出。
異常位映像也是一些32位的字段,每個Bit位標誌每個32位指令地址的異常情況。如果Bit位被設定並有一個異常被拋出,它就會引發VM退出指令。如果Bit位是空的或沒有異常,那麼主機操作系統則繼續它的快樂之旅,與平常一樣。這是一種從VMX模式退出而進入VMX根模式的系統開銷非常低的方法。
最後還有頁面錯誤退出,它與異常退出十分相像,只不過它用兩個32位字段來控制。這些字段內的Bit位對每一個可能出問題的頁面錯誤代碼進行映像,因此你可細心地從中挑選從哪裏退出。同樣,它也是基於很細小的層面,系統開銷也很低。
在計算機裏,VT工作在一個比傳統的R0環更有特權的級別中。任何一個主機操作系統都可在沒有改變的舊有架構下運行,並且不知道一個控制程序在控制它們。當遭遇到某些用户設置的觸發器,控制權將被轉交給運行在更高級別的VMX根模式上的VMM。因為這是一種被動觸發事件,而不需被積極監視,因此系統開銷降到了最低限。
VT技術使得安裝和卸載那些比以往VM模式更穩定的運行環境變得簡單。如果你需運行虛擬化系統,沒有理由不用一個擁有Vanderpool功能的CPU去實現它,而軟件虛擬化機會逐漸不被人關注。
這也許不錯,但必須記得,這必須付出代價。每一次登錄意味着建立4kB的存儲區域,每一次退出要向這4kB存儲區內寫入數據。這看上去有些耗費過多,可與那些較老的方式比較,它的速度驚人地快。
總結
Intel的VT技術給人們帶來了驚喜,它讓我們可在硬件級別上完成計算機的虛擬化工作。目前時機成熟了,Intel將首先在其桌面CPU中引入該技術,最新的Pentium 4 6系列CPU就支持VT,這讓更多的用户都能涉足到新技術的應用,大大提高了用户使用CPU的效率,編寫VMM不再那麼困難了。
不過我們也要清醒地認識到,現有的虛擬化技術不會馬上消失,相反它們會變得更為普遍且系統開銷問題也正得到改善,而大型服務器提供商們也不會在現有的技術上發生巨大的變化,畢竟目前還用得過去。加上AMD公司也發佈了在其64位CPU上使用Pacifica虛擬化技術,因此VT想要取代現有的計算機虛擬化技術或得到人們的認同還需一段時間。可我們相信硬件級別的虛擬化技術毋庸置疑的是未來計算機發展的方向,有着燦爛的前途。
參考資料