vt

vt

在電腦中,虛擬化(英語:Virtualization)是一種資源管理技術,是將電腦的各種實體資源,如伺服器、網路、記憶體及存儲等,予以抽象、轉換後呈現出來,打破實體結構間的不可切割的障礙,使使用者可以比原本的組態更好的方式來套用這些資源。這些資源的新虛擬部份是不受現有資源的架設方式,地域或物理組態所限製。一般所指的虛擬化資源包括計算能力和資料存儲。

在實際的生產環境中,虛擬化技術主要用來解決高性能的物理硬體產能過剩和老的舊的硬體產能過低的重組重用,透明化底層物理硬體,從而最大化的利用物理硬體

  • 外文名稱
    Vanderpool
  • 英文簡稱
    VT
  • 特權級壓縮
    Ring Compression
  • 特權級別名
    Ring Alias

基本定義

虛擬化技術與多任務以及超執行緒技術是完全不同的。多任務是指在一個作業系統中多個程式同時並行運行,虛擬化

而在虛擬化技術中,則可以同時運行多個作業系統,而且每一個作業系統中都有多個程式運行,每一個作業系統都運行在一個虛擬的CPU或者是虛擬主機上;而超執行緒技術隻是單CPU模擬雙CPU來平衡程式運行性能,這兩個模擬出來的CPU是不能分離的,隻能協同工作。

虛擬化技術也與VMware Workstation等同樣能達到虛擬效果的軟體不同,是一個巨大的技術進步,具體表現在減少軟體虛擬機相關開銷和支持更廣泛的作業系統方面。

純軟體虛擬化解決方案存在很多限製。“客戶”作業系統很多情況下是通過VMM(Virtual Machine Monitor,虛擬機監視器)來與硬體進行通信,由VMM來決定其對系統上所有虛擬機的訪問。(註意,大多數處理器和記憶體訪問獨立于VMM,隻在發生特定事件時才會涉及VMM,如頁面錯誤。)在純軟體虛擬化解決方案中,VMM在軟體套件中的位置是傳統意義上作業系統所處的位置,而

虛擬化技術將各種資源虛擬出多台主機

作業系統的位置是傳統意義上應用程式所處的位置。

虛擬化技術是一套解決方案。完整的情況需要CPU、主機板晶片組、BIOS和軟體的支持,例如VMM軟體或者某些作業系統本身。即使隻是CPU支持虛擬化技術,在配合VMM的軟體情況下,也會比完全不支持虛擬化技術的系統有更好的性能。

兩大CPU巨頭Intel和AMD都想方設法在虛擬化領域中佔得先機,但是AMD的虛擬化技術在時間上要比Intel落後幾個月。Intel自2005年末開始便在其處理器產品線中推廣套用Intel Virtualization Technology(Intel VT)虛擬化技術。

而AMD方面也已經發布了支持AMD Virtualization Technology(AMD VT)虛擬化技術的一系列處理器產品,包括Socket S1接口的Turion 64 X2系列以及Socket AM2接口的Athlon 64 X2系列和Athlon 64 FX系列等等,並且絕大多數的AMD下一代主流處理器,包括即將發布的Socket F接口的Opteron都將支持AMD VT虛擬化技術。虛擬化技術

基本原理

虛擬機是對真實計算環境的抽象和模擬,VMM 需要為每個虛擬機分配一套資料結構來管理它們狀態,包括虛擬處理器的全套暫存器,物理記憶體的使用情況,虛擬設備的狀態等等。VMM 調度虛擬機時,將其部分狀態恢復到主機系統中。並非所有的狀態都需要恢復,例如主機 CR3 暫存器中存放的是 VMM 設定的頁表物理地址,而不是 Guest OS 設定的值。主機處理器直接運行 Guest OS 的機器指令,由于 Guest OS運行在低特權級別,當訪問主機系統的特權狀態(如寫 GDT暫存器)時,許可權不足導致主機處理器產生異常,將運行權自動交還給 VMM。此外,外部中斷的到來也會導致 VMM 的運行。

VMM 可能需要先將 該虛擬機的當前狀態寫回到狀態資料結構中,分析虛擬機被掛起的原因,然後代表 Guest OS 執行相應的特權操作。最簡單的情況,如Guest OS 對 CR3 暫存器的修改,隻需要更新虛擬機的狀態資料結構即可。一般而言,大部分情況下,VMM 需要經過復雜的流程才能完成原本簡單的操作。最後 VMM 將運行權還給 Guest OS,Guest OS 從上次被中斷的地方繼續執行,或處理 VMM “塞”入的虛擬中斷和異常。這種經典的虛擬機運行方式被稱為 Trap-And-Emulate,虛擬機對于 Guest OS 完全透明,Guest OS 不需要任何修改,但是 VMM 的設計會比較復雜,系統整體性能受到明顯的損害。

挑戰信息

VMM 控製權

x86處理器有 4 個特權級別,Ring 0 ~ Ring 3,隻有運行在 Ring 0 ~ 2 級時,處理器才可以訪問特權資源或執行特權指令;運行在 Ring 0 級時,處理器可以訪問所有的特權狀態。x86 平台上的作業系統一般隻使用 Ring 0 和 Ring 3 這兩個級別,作業系統運行在 Ring 0 級,使用者進程運行在 Ring 3 級。為了滿足上面的第一個充分條件-資源控製,VMM 自己必須運行在 Ring 0 級,同時為了避免 Guest OS 控製系統資源,Guest OS 不得不降低自身的運行級別,運行在 Ring 1 或 Ring 3 級(Ring 2 不使用)。

特權級壓縮

(Ring Compression)

VMM 使用分頁或段限製的方式保護物理記憶體的訪問,但是 64 位模式下段限製不起作用,而分頁又不區分 Ring 0,1,2。為了統一和簡化 VMM的設計,Guest OS 隻能和 Guest 進程一樣運行在 Ring 3 級。VMM 必須監視 Guest OS 對 GDT、IDT 等特權資源的設定,防止 Guest OS 運行在 Ring 0級,同時又要保護降級後的 Guest OS 不受 Guest 進程的主動攻擊或無意破壞。

特權級別名

(Ring Alias)

特權級別名是指 Guest OS 在虛擬機中運行的級別並不是它所期望的。VMM 必須保證 Guest OS 不能獲知正在虛擬機中運行這一事實,否則可能打破等價性條件。例如,x86處理器的特權級別存放在 CS 代碼段暫存器內,Guest OS 可以使用非特權 push 指令將 CS 暫存器壓堆,然後 pop 出來檢查該值。又如,Guest OS 在低特權級別時讀取特權暫存器 GDT、LDT、IDT 和 TR,並不發生異常,從而可能發現這些值與自己期望的不一樣。為了解決這個挑戰,VMM 可以使用動態二進位翻譯的技術,例如預先把 “push %%cs” 指令替換,在堆上存放一個影子 CS 暫存器值;又如,可以把讀取 GDT 暫存器的操作“sgdt dest”改為“movl fake_gdt,dest”。

vt

地址空間壓縮

(Address Space Compression)

地址空間壓縮是指 VMM 必須在Guest OS 的地址空間中保留一部分供其使用。例如,中斷描述表暫存器(IDT Register)中存放的是中斷描述表的線性地址,如果 Guest OS 運行過程中來了外部中斷或觸發處理器異常,必須保證運行權馬上轉移到 VMM 中,因此 VMM 需要將 Guest OS 的一部分線性地址空間對應成自己的中斷描述表的主機物理地址。VMM 可以完全運行在 Guest OS 的地址空間中,也可以擁有獨立的地址空間,後者的話,VMM 隻佔用 Guest OS 很少的地址空間,用于存放中斷描述表和全局描述符表(GDT)等重要的特權狀態。無論如何哪種情況,VMM 應該防止 Guest OS 直接讀取和修改這部分地址空間。

Guest OS 異常

記憶體是一種非常重要的系統資源,VMM 必須全權管理,Guest OS 理解的物理地址隻是客戶機物理地址(Guest Physical Address),並不是最終的主機物理地址(Host Physical Address)。當 Guest OS 發生缺頁異常時,VMM 需要知道缺頁異常的原因,是 Guest 進程嘗試訪問沒有許可權的地址,或是客戶機線性地址(Guest Linear Address)尚未翻譯成 Guest Physical Address,還是客戶機物理地址尚未翻譯成主機物理地址。一種可行的解決方法是 VMM 為 Guest OS 的每個進程的頁表構造一個影子頁表,維護 Guest Linear Address 到 Host Physical Address 的對應,主機 CR3 暫存器存放這個影子頁表的物理記憶體地址。VMM 同時維護一個 Guest OS 全局的 Guest Physical Address 到 Host Physical Address 的對應表。發生缺頁異常的地址總是Guest Linear Address,VMM 先去 Guest OS 中的頁表檢查原因,如果頁表項已經建立,即對應的Guest Physical Address 存在,說明尚未建立到 Host Physical Address的對應,那麽 VMM 分配一頁物理記憶體,將影子頁表和對應表更新;否則,VMM 返回到 Guest OS,由 Guest OS 自己處理該異常。

系統調用

系統調用是作業系統提供給使用者的服務常式,使用非常頻繁。最新的作業系統一般使用 SYSENTER/SYSEXIT 指令對來實現快速系統調用。SYSENTER 指令通過IA32_SYSENTER_CS,IA32_SYSENTER_EIP 和 IA32_SYSENTER_ESP 這 3 個 MSR(Model Specific Register)暫存器直接轉到 Ring 0級;而 SYSEXIT 指令不在 Ring 0 級執行的話將觸發異常。因此,如果 VMM 隻能採取 Trap-And-Emulate 的方式處理這 2 條指令的話,整體性能將會受到極大損害。

中斷和異常

所有的外部中斷和主機處理器的異常直接由VMM 接管,VMM 構造必需的虛擬中斷和異常,然後轉發給 Guest OS。VMM 需要模擬硬體和作業系統對中斷和異常的完整處理流程,例如 VMM 先要在 Guest OS 當前的核心堆上壓入一些信息,然後找到 Guest OS 相應處理常式的地址,並跳轉過去。VMM 必須對不同的 Guest OS 的內部工作流程比較清楚,這增加了 VMM 的實現難度。同時,Guest OS 可能頻繁地禁止中斷和啓用中斷,這兩個操作訪問特權暫存器 EFLAGS,必須由 VMM 模擬完成,性能因此會受到損害。Guest OS 重新啓用中斷時,VMM 需要及時地獲知這一情況,並將積累的虛擬中斷轉發。

訪問特權資源

Guest OS對特權資源的每次訪問都會觸發處理器異常,然後由 VMM 模擬執行,如果訪問過于頻繁,則系統整體性能將會受到極大損害。比如對中斷的禁止和啓用,cli(Clear Interrupts)指令在 Pentium 4處理器上需要花費 60 個時鍾周期(cycle)。又如,處理器在地高級可程式中斷處理器(Local APIC)上有一個作業系統可修改的任務優先權暫存器(Task-Priority Register),IO-APIC 將外部中斷轉發到 TPR 值最低的處理器上(期望該處理器正在執行低優先權的執行緒),從而最佳化中斷的處理。TPR 是一個特權暫存器,某些作業系統會頻繁設定(Linux Kernel隻在初始化階段為每個處理器的 TPR 設定相同的值)。

軟體VMM 所遇到的以上挑戰從本質上來說是因為 Guest OS 無法運行在它所期望的最高特權級,傳統的 Trap-And-Emulate 處理方式雖然以透明的方式基本解決上述挑戰,但是帶來極大的設計復雜性和性能下降。當前比較先進的虛擬化軟體結合使用二進位翻譯和超虛擬化的技術,核心思想是動態或靜態地改變 Guest OS 對特權狀態訪問的操作,盡量減少產生不必要的硬體異常,同時簡化 VMM 的設計。

完全虛擬化

最流行的虛擬化方法使用名為hypervisor的一種軟體,在虛擬伺服器和虛擬化技術

底層硬體之間建立一個抽象層。VMware和微軟的Virtual PC是代表該方法的兩個商用產品,而基于核心的虛擬機(KVM)是面向Linux系統的開源產品。

hypervisor可以捕獲CPU指令,為指令訪問硬體控製器和外設充當中介。因而,完全虛擬化技術幾乎能讓任何一款作業系統不用改動就能安裝到虛擬伺服器上,而它們不知道自己運行在虛擬化環境下。主要缺點是,hypervisor給處理器帶來開銷。

在完全虛擬化的環境下,hypervisor運行在裸硬體上,充當主機作業系統;而由hypervisor管理的虛擬伺服器運行客戶端作業系統(guest OS)。

如下圖所示。

準虛擬化

完全虛擬化是處理器密集型技術,因為它要求hypervisor管理各個虛擬伺服器,並讓它們彼此獨立。減輕這種負擔的一種方法就是,改動客戶作業系統,讓它以為自己運行無法虛擬64-bit客戶作業系統

在虛擬環境下,能夠與hypervisor協同工作。這種方法就叫準虛擬化(para-virtualization)。

Xen是開源準虛擬化技術的一個例子。作業系統作為虛擬伺服器在Xen hypervisor上運行之前,它必須在核心層面進行某些改變。因此,Xen適用于BSD、Linux、Solaris及其他開源作業系統,但不適合對像Windows這些專有的作業系統進行虛擬化處理,因為它們無法改動。

準虛擬化技術的優點是性能高。經過準虛擬化處理的伺服器可與hypervisor協同工作,其回響能力幾乎不亞于未經過虛擬化處理的伺服器。準虛擬化與完全虛擬化相比優點明顯,以至于微軟和VMware都在開發這項技術,以完善各自的產品。

虛擬化

實現虛擬化還有一個方法,那就是在作業系統層面增添虛擬伺服器VMX non-root和VMX root

功能。Solaris Container就是這方面的一個例子,Virtuozzo/OpenVZ是面向Linux的軟體方案。

就作業系統層的虛擬化而言,沒有獨立的hypervisor層。相反,主機作業系統本身就負責在多個虛擬伺服器之間分配硬體資源,並且讓這些伺服器彼此獨立。一個明顯的區別是,如果使用作業系統層虛擬化,所有虛擬伺服器必須運行同一作業系統(不過每個實例有各自的應用程式和使用者賬戶)。

雖然作業系統層虛擬化的彈性比較差,但本機速度性能比較高。此外,由于架構在所有虛擬伺服器上使用單一、標準的作業系統,管理起來比異構環境要容易。

這一額外的通信層需要進行二進位轉換,以通過提供到物理資源(如處理器、記憶體、存儲、顯示卡和網卡等)的接口,模擬硬體環境。這種轉換必然會增加系統的復雜性。此外,客戶作業系統的支持受到虛擬機環境的能力限製,這會阻礙特定技術的部署,如64位客戶作業系統。在純軟體解決方案中,軟體堆疊增加的復雜性意味著,這些環境難于管理,因而會加大確保系統可靠性和安全性的困難。虛擬化技術

而CPU的虛擬化技術是一種硬體方案,支持虛擬技術的CPU帶有特別最佳化過的指令集來控製虛擬過程,通過這些指令集,VMM會很容易提高性能,相比軟體的虛擬實現方式會很大程度上提高性能。虛擬化技術可提供基于晶片的功能,借助兼容VMM軟體能夠改進純軟體解決方案。由于虛擬化硬體可提供全新的架構,支持作業系統直接在上面運行,從而無需進行二進位轉換,減少了相關的性能開銷,極大簡化了VMM設計,進而使VMM能夠按通用標準進行編寫,性能更加強大。另外,在純軟體VMM中,缺少對64位客戶作業系統的支持,而隨著64位處理器的不斷普及,這一嚴重缺點也日益突出。而CPU的虛擬化技術除支持廣泛的傳統作業系統之外,還支持64位客戶作業系統。

Intel已經發布了具有IntelVT虛擬化技術的一系列處理器產品,包括桌面平台的Pentium 4 6X2系列、Pentium D 9X0系列和Pentium EE 9XX系列,以及伺服器/工作站平台上的基于Paxville核心的Xeon系列;同時絕大多數的Intel下一代主流處理器,包括Merom核心移動處理器,Conroe核心桌面處理器,Woodcrest核心伺服器處理器,以及基于Montecito核心的Itanium 2高端伺服器處理器都將支持Intel VT虛擬化技術。而AMD的具有代號為“Pacific”虛擬化技術的CPU不久也會發布。虛擬化技術

相關:虛擬技術

虛擬化技術

當前非常熱門的Virtualization虛擬化技術的出現和套用其實已經有數十年的歷史了,在早期,這個技術主要套用在伺服器以及大型主機上面,隨著PC性能的不斷成長,Virtualization也

虛擬化技術

開始逐漸在x86架構上流行起來。虛擬化可以將IT環境改造成為更加強大、更具彈性、更富有活力的架構。通過把多個作業系統整合到一台高性能伺服器上,最大化利用硬體平台的所有資源,用更少的投入實現更多的套用,還可以簡化IT架構,降低管理資源的難度,避免IT架構的非必要擴張。客戶虛擬機的真正硬體無關性還可以實現虛擬機的運行時遷移,可以實現真正的不間斷運行,從而最大化保持業務的持續性,而不用為購買超高可用性平台而付出高昂的代價。虛擬化技術和Sun上的虛擬化技術(CPU分區)比起來,x86上的虛擬化要落後不少的,然而確實在不斷進步著,在數年前,x86上還沒有什麽硬體支持,甚至連指令集都不是為虛擬化而設計,這時主要靠完全的軟體來實現虛擬化技術虛擬化,當時的代表是VMware的產品,以及尚未被Microsoft收購Connectix開發的Virtual PC,在伺服器市場上套用的主要是VMware的產品,包括GSX Server和稍後的ESX Server,這些軟體虛擬化產品在關鍵指令上都採用了二進位模擬/翻譯的方法,開銷顯得比較大,後期出現了Para-Virtualization部分虛擬化技術,避免了一些二進位轉換,性能得到了提升,不過仍然具有隔離性的問題。

虛擬化技術今天,虛擬化技術的各方面都有了進步,虛擬化也從純軟體逐深入到處理器級虛擬化,再到平台級虛擬化乃至輸入/輸出級虛擬化,代表性技術就是Intel Virtualization Technology for Directed I/O,簡寫為Intel VT-d,在介紹這個Intel VT-d之前,我們先來看看x86硬體虛擬化的第一步:處理器輔助虛擬化技術,也就是Intel Virtualization Technology,分為對應Itanium平台的VT-i和對應x86平台的VT-x兩個版本。AMD公司也有對應的技術AMD-V,用于x86平台。我們介紹的是x86平台上的VT-x技術,VT-i技術原理上略為相近。純軟體虛擬化主要的問題是性能和隔離性。Full Virtualization完全虛擬化技

傳統的I/O模擬虛擬化

術可以提供較好的客戶作業系統獨立性,不過其性能不高,在不同的套用下,可以消耗掉主機10%~30%的資源。而OS Virtualization可以提供良好的性能,然而各個客戶作業系統之間的獨立性並不強。無論是何種軟體方法,隔離性都是由Hypervisor軟體提供的,過多的隔離必然會導致性能的下降。這些問題主要跟x86設計時就沒有考慮虛擬化有關。我們先來看看x86處理器的Privilege特權等級設計。虛擬化技術x86架構為了保護指令的運行,提供了指令的4個不同Privilege特權級別,術語稱為Ring,從Ring 0~Ring 3。Ring 0的優先權最高,Ring 3最低。各個級別對可以運行的指令有所限製,例如,GDT,IDT,LDT,TSS等這些指令就隻能運行于Privilege 0,也就是Ring 0。要註意Ring/Privilege級別和我們通常認知的進程在作業系統中的優先權並不同。

Xeon Stoakley平台

作業系統必須要運行一些Privilege 0的特權指令,因此Ring 0是被用于運行作業系統核心,Ring 1和Ring 2是用于作業系統服務,Ring 3則是用于應用程式。然而實際上並沒有必要用完4個不同的等級,一般的作業系統實現都僅僅使用了兩個等級,即Ring 0和Ring 3,如圖所示:虛擬化技術也就是說,在一個常規的x86作業系統中,系統核心必須運行于Ring 0,而VMM軟體以及其管理下的Guest OS卻不能運行于Ring 0——因為那樣就無法對所有虛擬機進行有效的管理,就像以往的協同式多任務作業系統(如,Windows 3.1)無法保證系統的穩健運行一樣。在沒有處理器輔助的虛擬化情況下,挑戰就是採用Ring 0之外的等級來運行VMM (Virtual Machine Monitor,虛擬機監視器)或Hypervisor,以及Guest OS。

現在流行的解決方法是Ring Deprivileging(暫時譯為特權等級下降),並具有兩種選擇:客戶OS運行于Privilege 1(0/1/3模型),或者Privilege 3(0/3/3模型)。無論是哪一種模型,客戶OS都無法運行于Privilege 0,這樣,如GDT,IDT,LDT,TSS這些特權指令就必須通過模擬的方式來運行,這會帶來很明顯的性能問題。特別是在負荷沉重、這些指令被大量執行的時候。同時,這些特權指令是真正的“特權”,隔離不當可以嚴重威脅到其他客戶OS,甚

高端四路Caneland平台也會支持VT-d功能

至主機OS。Ring Deprivileging技術使用IA32架構的Segment Limit(限製分段)和Paging(分頁)來隔離VMM和Guest OS,不幸的是EM64T的64bit模式並不支持Segment Limit模式,要想運行64bit作業系統,就必須使用Paging模式。對于虛擬化而言,使用Paging模式的一個致命之處是它不區分Privileg 0/1/2模式,因此客戶機運行于Privileg 3就成為了必然(0/3/3模型),這樣Paging模式才可以將主機OS和客戶OS隔離開來,然而在同一個Privileg模式下的不同應用程式(如,不同的虛擬機)是無法受到Privileg機構保護的,這就是IA32帶來的隔離性問題,這個問題被稱為Ring Compression。IA32不支持VT,就無法虛擬64-bit客戶作業系統這個問題的實際表現是:VMware在不支持Intel VT的IA32架構CPU上無法虛擬64-bit客戶作業系統,因為無法在客戶OS之間安全地隔離。作為一個晶片輔助(Chip-Assisted)的虛擬化技術,VT可以同時提升虛擬化效率和虛擬機的安全性,下面我們就來看看Intel VT帶來了什麽架構上的變遷。我們談論的主要是IA32上的VT技術,一般稱之為VT-x,而在Itanium平台上的VT技術,被稱之為VT-i。

虛擬化技術

VT-x將IA32的CU操作擴展為兩個forms(窗體):VMX root operation(根虛擬化操作)和VMX non-root operation(非根虛擬化操作),VMX root operation設計來供給VMM/Hypervisor使用,其行為跟傳統的IA32並無特別不同,而VMX non-root operation則是另一個處在VMM控製之下的IA32環境。所有的forms都能支持所有的四個Privileges levels,這樣在VMX non-root operation環境下運行的虛擬機就能完全地利用Privilege 0等級。

兩個世界:VMX non-root和VMX root和一些文章認為的很不相同,VT同時為VMM和Guest OS提供了所有的Privilege運行等級,而不是隻讓它們分別佔據一個等級:因為VMM和Guest OS運行于不同的兩個forms。

由此,GDT、IDT、LDT、TSS等這些指令就能正常地運行于虛擬機內部了,而在以往,這些特權指令需要模擬運行。而VMM也能從模擬運行特權指令當中解放出來,這樣既能解決Ring Aliasing問題(軟體運行的實際Ring與設計運行的Ring不相同帶來的問題),又能解決Ring Compression問題,從而大大地提升運行效率。Ring Compression問題的解決,也就解決了64bit客戶作業系統的運行問題。

為了建立這種兩個虛擬化窗體的架構,VT-x設計了一個Virtual-Machine Control Structure(VMCS,虛擬機控製結構)的資料結構,包括了Guest-State Area(客戶狀態區)和Host-State Area(主機狀態區),用來儲存虛擬機以及主機的各種狀態參數,並提供了VM entry和VM exit兩種操作在虛擬機與VMM之間切換,使用者可以通過在VMCS的VM-execution control fields裏面指定在執行何種指令/發生何種事件的時候,VMX non-root operation環境下的虛擬機就執行VM exit,從而讓VMM獲得控製權,因此VT-x解決了虛擬機的隔離問題,又解決了性能問題。

可以看到,Inter VT的出現,可以解決了重要的虛擬處理器架構問題,讓純軟體虛擬化解決方案的性能問題得以大大緩解。然而要做的事情還有很多。

對于伺服器而言,很重要的一個組成部分就I/O,CPU的計算能力提升雖然可以更快地處理資料,但是前提是資料能夠順暢的到達CPU,因此,無論是存儲,還是網路,以及圖形卡、記憶體等,I/O能力都是企業級架構的一個重要部分。為此,人們不但在傳輸頻寬上投資(比如從百兆乙太網到千兆乙太網再到萬兆乙太網),還在各種系統和架構上進行了大量的投入(比如吞吐量更高的RAID系列、多層資料中心)。

在虛擬化技術中,隨著整體處理器資源的利用效率的提升,對資料I/O也提出了更高的要求。

VMM虛擬機管理器必須提供I/O虛擬化來支持處理來自多個客戶機的I/O請求,當前的虛擬化技術採用下列的方式來處理I/O虛擬化。

虛擬化技術模擬I/O設備:VMM對客戶機摸擬一個I/O設備,通過完全模擬設備的功能,客戶機可以使用對應真實的驅動程式,這個方式可以提供完美的兼容性(而不管這個設備事實上存不存在),但是顯然這種模擬會影響到性能。作為例子,各種虛擬機在使用軟碟映像提供虛擬軟碟機的時候,就運行在這樣的方式,以及Virtual PC的模擬的真實的S3 Virge 3D顯示卡,VMware系列模擬的Sound Blaster 16音效卡,都屬于這種方式。

虛擬化技術額外軟體介面:這個模型比較像I/O模擬模型,VMM軟體將提供一系列直通的設備接口給虛擬機,從而提升了虛擬化效率,這有點像Windows作業系統的DirectX技術,從而提供比I/O模擬模型更好的性能,當然兼容性有所降低,例如VMware模擬的VMware顯示卡就能提供不錯的顯示速度,不過不能完全支持DirectDraw技術,Direct3D技術就更不用想了。相似的還有VMware模擬的千兆網卡,等等,這些品牌完全虛擬的設備(例如,VMware牌顯示卡,VMware牌網卡)需要使用特製的驅動程式部分直接地和主機、硬體通信,比起以前完全模擬的通過虛擬機內的驅動程式訪問虛擬機的十兆百兆網卡,可以提供更高的吞吐量。

一般的I/O設備虛擬化主要是採用模擬方式或者軟體接口方式,因此性能上很容易成為瓶頸——畢竟傳統的機器上,I/O設備都很容易成為瓶頸,因此Intel就適時提出了Intel Virtualization Technology for Directed I/O,簡稱為Intel VT-d。

I/O虛擬化的關鍵在于解決I/O設備與虛擬機資料交換的問題,而這部分主要相關的是DMA直接記憶體存取,以及IRQ中斷請求,隻要解決好這兩個方面的隔離、保護以及性能問題,就是成功的I/O虛擬化。

虛擬化技術和處理器上的Intel VT-i和VT-x一樣,Intel VT-d技術是一種基于North Bridge北橋晶片(或者按照較新的說法:MCH)的硬體輔助虛擬化技術,通過在北橋中內置提供DMA虛擬化和IRQ虛擬化硬體,實現了新型的I/O虛擬化方式,Intel VT-d能夠在虛擬環境中大大地提升 I/O 的可靠性、彈性與性能。

傳統的IOMMUs(I/O memory management units,I/O記憶體管理單元)提供了一種集中的方式管理所有的DMA——除了傳統的內部DMA,還包括如AGP GART、TPT、RDMA over TCP/IP等這些特別的DMA,它通過在記憶體地址範圍來區別設備,因此容易實現,卻不容易實現DMA隔離,因此VT-d通過更新設計的IOMMU架構,實現了多個DMA保護區域的存在,最終實現了DMA虛擬化。這個技術也叫做DMA Remapping。

虛擬化技術I/O設備會產生非常多的中斷請求,I/O虛擬化必須正確地分離這些請求,並路由到不同的虛擬機上。傳統設備的中斷請求可以具有兩種方式:一種將通過I/O中斷控製器路由,一種是通過DMA寫請求直接傳送出去的MSI(message signaled interrupts,訊息中斷),由于需要在DMA請求內嵌入目標記憶體地址,因此這個架構須要完全訪問所有的記憶體地址,並不能實現中斷隔離。

VT-d實現的中斷重對應(interrupt-remapping)架構通過重新定義MSI的格式來解決這個問題,新的MSI仍然是一個DMA寫請求的形式,不過並不嵌入目標記憶體地址,取而代之的是一個訊息ID,通過維護一個表結構,硬體可以通過不同的訊息ID辨認不同的虛擬機區域。VT-d實現的中斷重對應可以支持所有的I/O源,包括IOAPICs,以及所有的中斷類型,如通常的MSI以及擴展的MSI-X。

VT-d進行的改動還有很多,如硬體緩沖、地址翻譯等,通過這些種種措施,VT-d實現了北橋晶片級別的I/O設備虛擬化。VT-d最終體現到虛擬化模型上的就是新增加了兩種設備虛擬化方式:

左邊是傳統的I/O模擬虛擬化,右邊是直接I/O設備分配

直接I/O設備分配:虛擬機直接分配物理I/O設備給虛擬機,這個模型下,虛擬機內部的驅動程式直接和硬體設備直接通信,隻需要經過少量,或者不經過VMM的管理。為了系統的健壯性,需要硬體的虛擬化支持,以隔離和保護硬體資源隻給指定的虛擬機使用,硬體同時還需要具備多個I/O容器分區來同時為多個虛擬機服務,這個模型幾乎完全消除了在VMM中運行驅動程式的需求。例如CPU,雖然CPU不算是通常意義的I/O設備——不過它確實就是通過這種方式分配給虛擬機,當然CPU的資源還處在VMM的管理之下。

I/O設備共享:這個模型是I/O分配模型的一個擴展,對硬體具有很高的要求,需要設備支持多個功能接口,每個接口可以單獨分配給一個虛擬機,這個模型無疑可以提供非常高的虛擬化性能表現。

運用VT-d技術,虛擬機得以使用直接I/O設備分配方式或者I/O設備共享方式來代替傳統的設備模擬/額外設備接口方式,從而大大提升了虛擬化的I/O性能。

根據資料表明,不日發布的Stoakley平台和Caneland平台上將包含VT-d功能,Stoakley平台是Bensley的下一代產品,用于雙路Xeon處理器,而Caneland則是Truland的繼任者,用于四路Xeon處理器,這些晶片組都能支持最新的45nm Penryn處理器。

虛擬化技術從Intel虛擬化技術發展路線圖來看,虛擬化無疑是從處理器逐漸擴展到其他設備的,從VT-i/VT-x到VT-d就非常體現了這個過程,對于關註I/O性能的企業級套用而言,完成了處理器的虛擬化和I/O的虛擬化,整個平台的虛擬化就接近完成了,因此在未來,Intel將會持續地開發VT-d技術,將各種I/O設備中加入虛擬化特徵,從而提供一個強大的虛擬化基礎架構。

AMD虛擬化技術--降低操作成本,提高商業價值 低成本運營是在當今經濟情勢下開展業務面臨的首要挑戰。在不斷改變的公司IT部門需求與註重預算的預期之間進行平衡時會出現的一些特殊難題。

通過支持在單一計算系統上同時運行多種作業系統、應用程式或使用者會話,虛擬化可提供巨大的業務優勢,從而有助于降低整體擁有成本,同時增加公司IT投資的價值與能力。

減少能耗和散熱成本最小化資料中心空間與間接費用 使當前軟體投資發揮最大效益精簡部署和升級過程提高性能、可管理性與資料安全性簡化您伺服器與客戶端系統的基礎設施 !-- Uncomment for SWFAddress -- AMD在為x86電腦開發支持快速、高效的虛擬化功能領域處于業內領先地位,例如高能效的多核心處理器、先進的記憶體處理能力以及基于硬體的虛擬化技術。

簡言之,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的官員還表示將在2007年的處理器中增加對額度平台模組(Trusted Platform Module) 1.2等Windows機器以外技術的支持。事實上,AMD正和開放信任運算機構合作開發Linux平台上的可信賴運算標準,預計集成TPM的伺服器將在2007年上市。

至于用于減輕VMware等虛擬軟體部分工作負擔的Pacifica技術,AMD稱也會不斷改善並最終包含輸入/輸出虛擬技術。AMD已經開始這項Xen計畫的研究工作,不過他們不願透露相應產品何時上市。

AMD的Presidio和Pacifica技術和Intel的虛擬技術及LaGrande安全技術十分相似。雖然Intel一直稱到2007年首季才會向系統廠商推廣使用新的雙核奔騰D處理器resler,但其實他們已經開始供貨部分集成虛擬技術的奔騰四處理器,而LaGrande安全功能也會在2007年出現于Intel處理器中。

比較值得我們關註的應該是Pacifica虛擬技術,這將可以大大提高台式處理器的運行能力。Pacifica技術最突出的地方在于對記憶體控製器的改進方面。“Pacifica”通過Direct Connect Architecture(直接互連架構)和在處理器和記憶體控製器中引入一個新模型和功能來提高CPU的虛擬套用。

與過去的方法來進行虛擬套用不同,這項新的技術能夠減少程式的復雜性,提高虛擬系統的安全性,並通過兼容現有的虛擬系統管理軟體來減少花費在虛擬管理系統上的費用。例如,使用者能在一部機器上輕易地建立多個獨立且互相隔離的分區,從而減少了分區之間病毒傳播的危險。不過,AMD在虛擬化技術方面仍比Intel慢了一步。

AMD表示其IO虛擬化技術規範已經成型,且技術授權完全免費,並將鼓勵軟硬體廠商採納該技術並集成進PC中。

AMDAM2處理器

AMD已經和VMware、Xensource以及微軟等公司結盟推廣其虛擬化技術。

AMD AM2接口

AMD的虛擬化技術之前的開發代號為Pacifica,這種技術將在AMD2007年的64位CPU核心邏輯以及晶片組兩個層面得以實現。

I/O 虛擬化

伺服器使用一個輸入/輸出記憶體管理單元(Input/Output Memory Management Unit,IOMMU)將DMA I/O匯流排(如PCIe)連線到主存儲器,和傳統的記憶體管理單元一樣,它將CPU可見的虛擬地址轉換成物理地址,IOMMU會將設備可見的虛擬地址對應到物理地址,這些單元也提供了記憶體保護功能。

I/O虛擬化可以隔離和限製設備訪問由分區管理設備擁有的資源。VT-d 通過減少 VMM 參與管理I/O流量的需求,消除了大部分的性能開銷,從而加速資料傳輸。基于純軟體的虛擬化技術中,使用者作業系統與硬體設備通過VMM來通信,而借助VT-d,完成初始分配之後,資料即可直接在客戶作業系統與為其分配的設備之間進行傳輸。這樣,I/O 流量的流動將更加迅速,減少的 VMM 工作運行則會進一步縮減伺服器處理器的負載。此外,由于用于特定設備或客戶作業系統的 I/O 資料不能被其它任何硬體或客戶軟體組件訪問,VMM將特定 I/O 設備安全分配給特定客戶作業系統。每個設備在系統記憶體中都有一個專用區域,隻有該設備及其分配的客戶作業系統才能對該區域進行訪問,增強了虛擬化的安全性能。

遷移技術

虛擬機遷移技術為伺服器虛擬化提供了便捷的方法。當前流行的虛擬化工具如 VMware,Xen,HyperV,KVM 都提供了各自的遷移組件。遷移伺服器可以為使用者節省管理資金、維護費用和升級費用。以前的 x86伺服器,體積比較“龐大”;而一般的伺服器,體積已經比以前小了許多,遷移技術使得使用者可以用一台伺服器來同時替代以前的許多台伺服器,這樣就節省了使用者大量的機房空間。另外,虛擬機中的伺服器有著統一的“虛擬硬體資源”,不像以前的伺服器有著許多不同的硬體資源(如主機板晶片組不同,網卡不同,硬碟,RAID 卡,顯示卡不同)。遷移後的伺服器,不僅可以在一個統一的介面中進行管理,而且通過某些虛擬機軟體,如 VMware 提供的高可用性工具,在這些伺服器因為各種故障停機時,可以自動切換到網路中另外相同的虛擬伺服器中,從而達到不中斷業務的目的。總之,遷移的優勢在于簡化系統維護管理, 提高系統負載均衡,增強系統錯誤容忍度和最佳化系統電源管理。

V2P(虛擬機到物理機的遷移 Virtual-to-Physica )

V2P 指把一個作業系統、應用程式和資料從一個虛擬機中遷移到物理機的主硬碟上,是 P2V 的逆操作。它可以同時遷移虛擬機系統到一台或多台物理機上。盡管虛擬化的基本需求是整合物理機到虛擬機中,但這並不是虛擬化的唯一的套用。比如有時虛擬機上的應用程式的問題需要在物理機上驗證,以排除虛擬環境帶來的影響。另外,配置新的工作站是件令 IT 管理者頭痛的事情,但虛擬化的套用可以幫助他解決這個難題。先配置好虛擬機,然後運用硬碟克隆工具復製資料至工作站硬體,比如賽門鐵克的 Save  Restore (Ghost)。不過這種克隆方法有兩個局限:一個鏡像隻能運用在同種硬體配置的機器上;要想儲存配置的修改,隻能重做新的鏡像。

V2V (虛擬機到虛擬機的遷移Virtual-to-Virtual )

V2V 遷移是在虛擬機之間移動作業系統和資料,照顧主機級別的差異和處理不同的虛擬硬體。虛擬機從一個物理機上的 VMM 遷移到另一個物理機的 VMM,這兩個 VMM 的類型可以相同,也可以不同。如 VMware 遷移到 KVM, KVM 遷移到 KVM。可以通過多種方式將虛擬機從一個 VM Host 系統移動到另一個 VM Host 系統。

P2V (物理機到虛擬機的遷移Physical-to-Virtua )

P2V 指遷移物理伺服器上的作業系統及其上的套用軟體和資料到 VMM(Virtual Machine Monitor)管理的虛擬伺服器中。這種遷移方式,主要是使用各種工具軟體,把物理伺服器上的系統狀態和資料“鏡像”到 VMM 提供的虛擬機中,並且在虛擬機中“替換”物理伺服器的存儲硬體與網卡驅動程式。隻要在虛擬伺服器中安裝好相應的驅動程式並且設定與原來伺服器相同的地址(如 TCP/IP 地址等),在重啓虛擬機伺服器後,虛擬伺服器即可以替代物理伺服器進行工作。

識別信息

虛擬化技術是當今企業熱門技術之一,而伺服器虛擬化技術能夠為企業實現伺服器整合、降低整體擁有成本等眾多優勢。學員學完該課程(實施和管理微軟伺服器虛擬化),可參加70-659的考試,考試通過後,可獲得兩張MCTS證書:Windows Server 2008 R2,Server Virtualization 和System Center Virtual Machine Manager,Configuring。擁有該證書,說明您已經掌握了伺服器虛擬化的配置、管理及實現。

相關詞條

相關搜尋

其它詞條