Ⅰ 什麼是虛擬化技術虛擬化技術有哪些分類和方法
要了解詳情,請加我的號,或照片上有我的照片,我們私聊。
可以免費試用的哦!!!!!!!!!
自從虛擬化提出以後,至今虛擬化技術分類有很多,方法也有很多,下面來一起了解下什麼是虛擬化技術,及分類和方法。
當今發達國家在設計、製造、加工技術等方面已經達到相當自動化的水平,其產品設計普遍採用CAD、CAM、CAE和計算機模擬等手段,企業管理也已採用了科學的規范化的管理方法和手段,目前其主要從製造系統自動化方面尋找出路,為此提出了一系列新的製造系統,如敏捷製造、並行工程、計算機集成製造系統等。近些年,從虛擬機的大量部署到成功案例逐漸涌現,越來越多的製造企業開始關注虛擬化技術給優化IT基礎架構,推動業務創新帶來的啟發,希望將其與業務相結合,找到掌握新技術、革新先進製造系統和先進製造模式的方法。虛擬化目前應用於製造業信息化主要體現在IT整合和節約成本,在其他方面很少,而實際上由於虛擬化技術的特點,其應用價值可以在遠程辦公、虛擬製造、工業控制等製造業相關領域都能得到體現。本文主要對虛擬化技術及其在製造業的應用現狀進行綜述,提出虛擬化在製造業的應用框架,為相關人員提供該領域的應用研究進展與發展趨勢方面的介紹。
1 虛擬化技術
虛擬化是指為運行的程序或軟體營造它所需要的執行環境,在採用虛擬化技術後,程序或軟體的運行不再獨享底層的物理計算資源,它只是運行在一個完全相同的物理計算資源中,而底層的影響可能與之前所運行的計算機結構完全不同。虛擬化的主要目的是對IT基礎設施和資源管理方式的簡化。虛擬化的消費者可以是最終用戶、應用程序、操作系統、訪問資源或與資源交互相關的其他服務。由於虛擬化能降低消費者與資源之間的耦合程度,消費者不再依賴於資源的特定實現,因此在對消費者的管理工作影響最小的基礎上,可以通過手工、半自動、或者服務級協定(SLA)等來實現對資源的管理。
1.1 虛擬化的分類
從虛擬化的目的來看,虛擬化技術主要分為以下幾個大類:
(1)平台虛擬化(Platform Virtualization),它是針對計算機和操作系統的虛擬化,又分成伺服器虛擬化和桌面虛擬化。伺服器虛擬化是一種通過區分資源的優先次序,並將伺服器資源分配給最需要它們的工作負載的虛擬化模式,它通過減少為單個工作負載峰值而儲備的資源來簡化管理和提高效率。桌面虛擬化是為提高人對計算機的操控力,降低計算機使用的復雜性,為用戶提供更加方便適用的使用環境的一種虛擬化模式。平台虛擬化主要通過CPU虛擬化、內存虛擬化和I/O介面虛擬化來實現。
(2)資源虛擬化(Resource Virtualization),針對特定的計算資源進行的虛擬化,例如,存儲虛擬化、網路資源虛擬化等。存儲虛擬化是指把操作系統有機地分布於若干內外存儲器,兩者結合成為虛擬存儲器。網路資源虛擬化最典型的是網格計算,網格計算通過使用虛擬化技術來管理網路上的數據,並在邏輯上將其作為一個系統呈現給消費者,它動態地提供了符合用戶和應用程序需求的資源,同時還將提供對基礎設施的共享和訪問的簡化。當前,有些研究人員提出利用軟體代理技術來實現計算網路空間資源的虛擬化,如Gaia,Net Chaser[21],Spatial Agent。
(3)應用程序虛擬化(Application Virtualization),它包括模擬、模擬、解釋技術等。Java 虛擬機是典型的在應用層進行虛擬化。基於應用層的虛擬化技術,通過保存用戶的個性化計算環境的配置信息,可以實現在任意計算機上重現用戶的個性化計算環境。服務虛擬化是近年研究的一個熱點,服務虛擬化可以使業務用戶能按需快速構建應用的需求,通過服務聚合,可屏蔽服務資源使用的復雜性,使用戶更易於直接將業務需求映射到虛擬化的服務資源。現代軟體體系結構及其配置的復雜性阻礙了軟體開發生命周期,通過在應用層建立虛擬化的模型,可以提供最佳開發測試和運行環境。
(4)表示層虛擬化。在應用上與應用程序虛擬化類似,所不同的是表示層虛擬化中的應用程序運行在伺服器上,客戶機只顯示應用程序的UI界面和用戶操作。表示層虛擬化軟體主要有微軟的Windows 遠程桌面(包括終端服務)、Citrix Metaframe Presentation Server和Symantec PcAnywhere等。
1.2 虛擬化的方法
通常所說的虛擬化主要是指平台虛擬化,它通過控製程序隱藏計算平台的實際物理特性,為用戶提供抽象的、統一的、模擬的計算環境。通常虛擬化可以通過指令級虛擬化和系統級虛擬化來實現。
1.2.1 指令級虛擬化方法
在指令集層次上實現虛擬化,即將某個硬體平台上的二進制代碼轉換為另一個平台上的二進制代碼,實現不同指令集間的兼容,也被稱作「二進制翻譯」。二進制翻譯是通過模擬來實現的,即在一個具有某種介面和功能的系統上實現另一種與之具有不同介面和功能的系統。二進制翻譯的軟體方式,它可以有3 種方式實現:解釋執行、靜態翻譯、動態翻譯。
近年來,最新的二進制翻譯系統的研究主要在運行時編譯、自適應優化方面,由於動態翻譯和執行過程的時間開銷主要包括四部分:即磁碟訪問開銷、存儲訪問開銷、翻譯和優化開銷、目標代碼的執行開銷,所以要提高二進制翻譯系統的效率主要應減少後3個方面的開銷。目前典型的二進制翻譯系統主要有Daisy/BOA、Crusoe、Aeries、IA-32EL、Dynamo 動態優化系統和JIT編譯技術等。
1.2.2 系統級虛擬化方法
系統虛擬化是在一台物理機上虛擬出多個虛擬機。從系統架構看,虛擬機監控器(VMM)是整個虛擬機系統的核心,它承擔了資源的調度、分配和管理,保證多個虛擬機能夠相互隔離的同時運行多個客戶操作系統。系統級虛擬化要通過CPU虛擬化、內存虛擬化和I/O虛擬化實現。
(1)CPU虛擬化
CPU虛擬化為每個虛擬機提供一個或多個虛擬CPU,多個虛擬CPU分時復用物理CPU,任意時刻一個物理CPU只能被一個虛擬CPU使用。VMM必須為各虛擬CPU合理分配時間片並維護所有虛擬CPU的狀態,當一個虛擬CPU的時間片用完需要切換時,要保存當前虛擬CPU的狀態,將被調度的虛擬CPU的狀態載入物理CPU。X86 的CPU虛擬化方法主要有:二進制代碼動態翻譯(dynamic binary translation)、半虛擬化(para-virtualization)和預虛擬化技術。為了彌補處理器的虛擬化缺陷,現有的虛擬機系統都採用硬體輔助虛擬化技術。CPU虛擬化需要解決的問題是:①虛擬CPU的正確運行,虛擬CPU正確運行的關鍵是保證虛擬機指令正確執行,各虛擬機之間不互相影響,即指令的執行結果不改變其他虛擬機的狀態,目前主要是通過模擬執行和監控運行;②虛擬CPU的調度。虛擬CPU的調度是指由VMM決定當前哪一個虛擬CPU實際在物理CPU上運行,保證虛擬機之間的隔離性、虛擬CPU的性能、調度的公平。虛擬機環境的調度需求是要充分利用CPU資源、支持精確的CPU分配、性能隔離、考慮虛擬機之間的不對等、考慮虛擬機之間的依賴。常見的CPU調度演算法有BVT、SEDF、CB等。
(2)內存虛擬化
VMM通常採用分塊共享的思想來虛擬計算機的物理內存。VMM將機器的內存分配給各個虛擬機,並維護機器內存和虛擬機內存之間的映射關系,這些內存在虛擬機看來是一段從地址0 開始的、連續的物理地址空間。在進行內存虛擬化後,內存地址將有機器地址、偽物理地址和虛擬地址三種地址。在X86 的內存定址機制中,VMM能夠以頁面為單位建立虛擬地址到機器地址的映射關系,並利用頁面許可權設置實現不同虛擬機間內存的隔離和保護。為了提高地址轉換的性能,X86 處理器中加入TLB,緩存已經轉換過的虛擬地址,在每次虛擬地址空間切換時,硬體自動完成切塊TLB。為了實現虛擬地址到物理地址的高效轉換,通常採取復合映射的思想,通過MMU半虛擬化和影子頁表來實現頁表的虛擬化。虛擬機監控器的數據不能被虛擬機訪問,因此需要一種隔離機制,這種隔離機制主要通過修改客戶操作系統或段保護來實現。內存虛擬化的優化機制,包括按需取頁、虛擬存儲、內存共享等。
(3)I/O虛擬化
由於I/O設備具有異構性強,內部狀態不易控制等特點,VMM系統針對I/O設備虛擬化有全虛擬化、半虛擬化、軟體模擬和直接I/O訪問等設計思路。近年來,更多的學者將I/O虛擬化的研究放在共享的網路設備虛擬化研究,提出將IOVM結構映射到多核心伺服器平台。I/O設備除了增加吞吐量和固有的並行數據流、聯系串列特性以及基於分組的協議外,還應該考慮到傳統的PCI 兼容的PCI Express的硬體,建立相應的匯流排適配器,以彌補象單一主機無專門的驅動程序時的需要。有些研究人員專注於外存儲虛擬化的研究,提出讓存儲虛擬化系統上的SCSI目標模擬器運行在SAN上,存儲動態的目標主機的物理信息,並使用映射表方法來修改SCSI命令地址,使用點陣圖的技術來管理可用空間等思想。存儲虛擬化系統應提供諸如邏輯卷大小、各種功能、數據鏡像和快照,並兼容集群主機和多個操作系統。由於外存儲虛擬化能全面提升存儲區域網路的服務質量,而帶外虛擬化與帶內虛擬化相比具有性能高和擴展性好等優點,通過運用按序操作、Redo日誌以及日誌完整性鑒別,設計基於關系模型的磁碟上虛擬化元數據組織方式,可以形成一致持久的帶外虛擬化系統。
1.3 虛擬化的管理
虛擬化的管理主要指多虛擬機系統的管理,多虛擬機系統是指在對多計算系統資源抽象表示的基礎上,按照自己的資源配置構建虛擬計算系統,其主要包括虛擬機的動態遷移技術和虛擬機的管理技術。
(1)虛擬機之間的遷移
將虛擬化作為一種手段管理現有的資源和加強其在網路計算的利用率,通過構建分布式可重構的虛擬機,必要時在物理伺服器運行時遷移服務。通過移動代理技術、分布式虛擬機等提高資源利用率和服務可用性,通過尋找服務最優的策略在可重構和分布式虛擬機上遷移。為了將虛擬機運行的操作系統與應用程序從一個物理結點遷移到另外一個運行結點,同時保持客戶操作系統和應用程序不受干擾,有些研究者提出以數據為中心的可遷移的虛擬運行環境,使得用戶操作環境實現異地遷移、無縫重構;
也有研究人員提出程序執行環境的動態按需配置機制。在跨物理伺服器遷移虛擬機,進行自動化的虛擬伺服器的管理,必須考慮高層次的服務質量要求和資源管理成本。有些研究人員提出了通過管理程序控制的方法,以支持移動IP的實時遷移虛擬機在網路上,使虛擬機實時遷移其分布計算資源,從而改善遷移性能,降低網路恢復延遲,提供高可靠性和容錯。有些研究機構通過設計一個通用的硬體抽象層,實現多個虛擬機的移植,具有高效率執行環境中的移動設備。虛擬機的遷移步驟一般有啟動遷移、內存遷移、凍結虛擬機、虛擬機恢復執行。
(2)虛擬機的管理
對於多虛擬機來說,一個非常重要的方面是減少用戶對動態的和復雜的物理設備的管理和維護,通過軟體和工具來實現任務管理。當前典型的多虛擬機伺服器管理軟體是Virtual Infrastructure,它通過Virtual Center管理伺服器的虛擬機池,通過VMotion完成虛擬機的遷移,通過VMFS管理多虛擬機文件系統。其次,Parallax 是針對Xen 的多虛擬機管理器,它通過採用消除寫共享,增強客戶端的緩存等方式並利用模板映像來建立整個系統;同時使用快照(snapshot)以及寫時復制(-on-write)機制來實現塊級共享,並使用副本來保證可用性。虛擬機監控器直接控制parallax 使用的物理盤,它們運行物理設備驅動器,並給虛擬磁碟鏡像VDI 的本地虛擬機提供一個普通的塊介面。
2 虛擬化在製造業信息化中的應用
2.1 虛擬化在製造業信息化中的應用框架
當今製造業正朝著精密化、自動化、柔性化、集成化、網路化、信息化和智能化的方向發展,在這種趨勢下,誕生了許多先進製造技術和先進製造模式。這些先進製造技術和先進製造模式要求現有的IT基礎設施能提供更高的計算服務水平,因此在製造業信息化中,需要建立以虛擬化為導向的資源分配體系結構,提供客戶驅動的服務管理和計算風險管理,維持以服務水平協議(SLA)為導向的資源分配體系。虛擬化在製造業信息化中主要用於集中IT管理、應用整合、工業控制、虛擬製造等。
處在最底層的是製造業企業的虛擬計算資源池(VirtualCluster),它由多台物理伺服器(PhysicsMachine)形成,各物理伺服器上運行著虛擬化軟體(VMM),虛擬化軟體上運行著完成各種任務需求的虛擬機,虛擬計算資源池的虛擬化管理軟體(VMS)為IT環境提供集中化、操作自動化、資源優化的功能,可以快速部署向導和虛擬機模板。虛擬計算資源池中的虛擬機將不同類型的客戶操作系統(Guest OS)和運行其上的數據層、服務層應用程序(App)封裝在一起,形成一個企業協同設計製造的完整系統,為表示層的用戶提供多種形態的數據處理和顯示功能。在圖1 的框架中,虛擬計算資源池的動態資源調度(DRS)模塊可以跨越物理機不間斷地監控資源利用率,並根據反映業務需要和不斷變化的優先順序的預定規則,在多個虛擬機之間分配可用資源。在製造業信息化中,集中IT管理、應用整合、工業控制、虛擬製造等多種應用需求都將以各種服務的形式被封裝到了虛擬機中,例如製造任務協同服務、資源管理服務、信息訪問服務、WWW服務、工業控制服務、應用系統集成服務、數據管理服務、高效能計算服務、工具集服務等;同時支撐所有應用需求的資料庫也被封裝到了虛擬機中,例如企業模型資料庫、製造資源資料庫、產品模型資料庫、專業知識資料庫、用戶信息資料庫等。虛擬化特有的優點使它能確保所有虛擬機中的關鍵業務連續可靠地運行。
2.2 虛擬化在製造業信息化應用框架中的作用
虛擬化在製造業信息化中的應用主要有:
Ⅱ 硬體虛擬化技術都有哪些
其技術是互聯網伺服器採用的節省伺服器硬體成本的技術,虛擬主機技術主要應用於HTTP,FTP,EMAIL等多項服務,將一台伺服器的某項或者全部服務內容邏輯劃分為多個服務單位,對外表現為多個伺服器,從而充分利用伺服器硬體資源。如果劃分是系統級別的,則稱為虛擬伺服器。
我是從IT號外知道的。
Ⅲ 虛擬化技術主要包括哪些方向
看你要研究哪個層次,如果研究虛擬化底層的化,肯定要研究硬體這塊和操作系統內核這塊。
Ⅳ 常見的虛擬化技術
虛擬化技術和分區(Partition)技術是緊密結合在一起,從60年代Unix誕生起,虛擬化技術和分區技術就開始了發展,並且經歷了從「硬體分區」->「虛擬機」->「准虛擬機」->「虛擬操作系統」的發展歷程。最早的分區技術誕生自人們想提升大型主機利用率需求。比如在金融、科學等領域,大型Unix伺服器通 常價值數千萬乃至上億元,但是實際使用中多個部門卻不能很好的共享其計算能力,常導致需要計算的部門無法獲得計算能力,而不需要大量計算能力的部門佔有了 過多的資源。這個時候分區技術出現了,它可以將一台大型伺服器分割成若干分區,分別提供給生產部門、測試部門、研發部門以及其他部門。
幾種常見的虛擬化技術代表產品如下:
類型
代表產品
硬體分區
IBM/HP等大型機硬體分區技術
虛擬機 (Virtual Machine Monitor)
EMC VMware Mircosoft Virtual PC/Server Parallels
准虛擬機 (Para-Virtualization)
Xen Project
虛擬操作系統 (OS Virtualization)
SWsoft Virtuozzo/OpenVZ Project Sun Solaris Container
HP vSE FreeBSD Jail
Linux Vserver
硬體分區技術
硬體資源被劃分成數個分區,每個分區享有獨立的CPU、內存,並安裝獨立的操作系統。在一台伺服器上,存在有多個系統實例,同時啟動了多個操作系統。這種分區方法的主要缺點是缺乏很好的靈活性,不能對資源做出有效調配。隨著技術的進步,現在對於資源劃分的顆粒已經遠遠提升,例如在IBM AIX系統上,對CPU資源的劃分顆粒可以達到0.1個CPU。這種分區方式,在目前的金融領域,比如在銀行信息中心得到了廣泛採用。
虛擬機技術
在虛擬機技術(Virtual Machine Monitor)中,不再對底層的硬體資源進行劃分,而是部署一個統一的Host系統。在Host系統上,加裝了Virtual Machine Monitor,虛擬層作為應用級別的軟體而存在,不涉及操作系統內核。虛擬層會給每個虛擬機模擬一套獨立的硬體設備,包含CPU、內存、主板、顯卡、網卡等硬體資源,在其上安裝所謂的Guest操作系統。最終用戶的應用程序,運行在Guest操作系統中。
這種虛擬機運行的方式有一定的優點,比如能在一個節點上安裝多個不同類型的操作系統;但缺點也非常明顯,虛擬硬體設備要消耗資源,大量代碼需要被翻譯執 行,造成了性能的損耗,使其更合適用於實驗室等特殊環境。其代表產品有EMC旗下的VMware系列、微軟旗下的Virtual PC/Server系列等。
准虛擬機技術
為了改善虛擬機技術(Virtual Machine Monitor)的性能,一種新的准虛擬化技術(Para-Virtualizion)技術誕生了。這種虛擬技術以Xen為代表,其特點是修改操作系統的 內核,加入一個Xen Hypervisor層。它允許安裝在同一硬體設備上的多個系統可以同時啟動,由Xen Hypervisor來進行資源調配。
在這種虛擬環境下,依然需要模擬硬體設備,安裝Guest操作系統,並且還需要修改操作系統的內核。Xen相對於傳統的Virtual Machine Monitor,性能稍有提高,但並不十分顯著。為了進一步提高性能,Intel和AMD分別開發了VT和Pacifica虛擬技術,將虛擬指令加入到了 CPU中。使用了CPU支持的硬體虛擬技術,將不再需要修改操作系統內核,而是由CPU指令集進行相應的轉換操作。
操作系統虛擬化技術
最新的虛擬化技術已經發展到了操作系統虛擬化,以SWsoft的Virtuozzo/OpenVZ和Sun基 於Solaris平台的Container技術為代表,其中Virtuozzo是商業解決方案,而OpenVZ是以Virtuozzo為基礎的開源項目。 他們的特點是一個單一的節點運行著唯一的操作系統實例。通過在這個系統上加裝虛擬化平台,可以將系統劃分成多個獨立隔離的容器,每個容器是一個虛擬的操作 系統,被稱為虛擬環境(即VE,Virtual Environment),也被稱為虛擬專用伺服器(即VPS,Virtual Private Server)。
在操作系統虛擬化技術中,每個節點上只有唯一的系統內核,不虛擬任何硬體設備。此外,多個虛擬環境以模板的方式共享一個文件系統,性能得以大幅度提升。在生產環境中,一台伺服器可根據環境需要,運行一個VE/VPS,或者運行上百個VE/VPS。所以,操作系統虛擬化技術是面向生產環境、商業運行環境的技術。
表:常見虛擬化技術對比
從最早的硬體分區到現階段的虛擬機和虛擬操作系統,虛擬化技術已經發展了好幾代,不同的技術路線也帶來了不同的優劣勢。選擇什麼樣的技術和產品,用戶還是應該結合自身的預算和應用實踐來決策。(本文作者系SWsoft中國首席工程師)
Ⅳ 虛擬化技術具體分為哪幾類它到底都有哪些作用
虛擬化技術從應用於二個端來看可分為伺服器端虛擬化和桌面虛擬化。以虛擬化技術中的桌面虛擬化為例。桌面虛擬化在企業中能支持企業實現桌面系統的遠程動態訪問與數據中心統一託管的技術,從而為企業節約大量的成本,達到桌面使用的安全性和靈活性。桌面虛擬化是使用軟體從用戶的PC中抽象操作系統、應用程序和相關的數據,用戶對PC的使用絲毫不受影響,並能獲得完整PC的使用體驗。用戶可以選擇在自己的電腦上運行多個操作系統,能夠從任何位置和設備訪問託管的桌面。天源騰創友情回答。
Ⅵ 什麼是虛擬化技術
虛擬技術是一種通過組合或分區現有的計算機資源(CPU、內存、磁碟空間等),使得這些資源表現為一個或多個操作環境,從而提供優於原有資源配置的訪問方式的技術。虛擬化就是把物理資源轉變為邏輯上可以管理的資源,以打破物理結構之間的壁壘。
虛擬化環境需要多種技術的協調配合:伺服器和操作系統的虛擬化、存儲虛擬化、以及系統管理、資源管理和軟體提交,與非虛擬化環境一致的應用環境。
Ⅶ 虛擬化技術有哪些特點
虛擬化技術與多任務以及超線程技術是完全不同的。多任務是指在一個操作系統中多個程序同時並行運行,而在虛擬化技術中,則可以同時運行多個操作系統,而且每一個操作系統中都有多個程序運行,每一個操作系統都運行在一個虛擬的CPU或者是虛擬主機上;而超線程技術只是單CPU模擬雙CPU來平衡程序運行性能,這兩個模擬出來的CPU是不能分離的,只能協同工作。
Ⅷ 常見的虛擬化技術有哪些
1. KVM :
為完全虛擬化技術,依賴在操作系統上,需要在操作系統上運行,不能直接在物理機上運行,
這種虛擬化必須要求cpu支持虛擬化功能,即虛擬化模塊內置在cpu中,因此kvm就不用將cup
和內存全部模擬出來,直接調用物理機cpu和內存只需對它們執行分配操作,使得虛擬機的性
能大大提升,其性能與物理機基本相當,kvm模塊是內置在linux系統中的,是系統自帶的,無
需再安裝。
2.XEN:
半虛擬化,要求客戶機系統的內核要知道自己是在虛擬化環境中運行,所以客戶機系統架構要和
宿主機或物理機系統架構相同,即需要支持客戶機系統內核的修改;支持內核修改的系統必然是
開源系統,而閉源系統就不支持內核修改,例如微軟、蘋果的操作系統都不開源,不支持xen半
虛擬化技術 ,這是XEN的一大缺陷,3.0版本之後也支持完全虛擬化。
3.KVM與XEN對比:
由於現在大多數CPU都內置虛擬化功能,所以基本都支持KVM虛擬化技術;而XEN虛擬化技術必
須得是開源的操作系統、需要修改客戶機系統內核、要保持客戶機系統架構和宿主機系統架構一致
,這是XEN的一大致命缺陷,避免不了逐漸被KVM替代,不過3.0版本之後XEN也支持完全虛擬化,
提高了兼容性,由於KVM的火熱依然擋不住被KVM替代。
4.VMWARE:
虛擬化VNWARE-esxi 是一個獨立的操作系統,直接運行在物理機上,不依賴操作系統,esxi 有自帶
的服務端管理伺服器,可創建虛擬機,上傳鏡像文件,此管理伺服器不支持虛擬機的移動;但將
vsphere-server安裝在window-server2008上可以實現遠程服務端管理虛擬機,支持將虛擬機的移動到
另一台物理機上,同樣支持虛擬機的創建和iso鏡像文件的上傳。
5.主流架構平台:
x86_64 arm amd
6.guest os (客戶機):
宿主機或物理機上運行的虛擬機
7.KVM使用的主流模擬器QEMU:
模擬鍵盤、滑鼠、顯示屏等硬體設備
8.虛擬化使用條件:
vmware是收費的,KVM和XEN是免費的
9.虛擬化CUP指令集所屬公司:
vmx是inter的,svm是AMD的,都是cup的一個虛擬指令集
10.虛擬化常用磁碟格式:
1)raw:指定多大空間就創建多大空間,相當於一個佔用物理空間的文件,可以直接掛載使用,數據的保存在
磁軌上是順序保存,所以其性能是最好的,但佔用的空間是最大的,不利於虛擬機的遷移,KVM和XEN默
認此磁碟格式。
2)qcow2:主流的虛擬化鏡像格式,可以在鏡像上做多個快照,數據的保存在磁軌上是隨機的,性能接近RAW磁碟
格式,磁碟佔用更小的存儲空間,磁碟佔用物理空間的大小是隨著存入磁碟的數據的增加而增大,虛擬機的遷移比
RAW格式更快捷。
3)vmdk:kvm和XEN等虛擬技術上用的不多,但在vmware-esxi上此鏡像格式性能還是相當穩定,比較出色。
Ⅸ 虛擬化技術都包含什麼內容
虛擬化技術簡介
什麼是虛擬化
虛擬化(Virtualization)技術最早出現在 20 世紀 60 年代的 IBM 大型機系統,在70年代的 System 370 系列中逐漸流行起來,這些機器通過一種叫虛擬機監控器(Virtual Machine Monitor,VMM)的程序在物理硬體之上生成許多可以運行獨立操作系統軟體的虛擬機(Virtual Machine)實例。隨著近年多核系統、集群、網格甚至雲計算的廣泛部署,虛擬化技術在商業應用上的優勢日益體現,不僅降低了 IT 成本,而且還增強了系統安全性和可靠性,虛擬化的概念也逐漸深入到人們日常的工作與生活中。
虛擬化是一個廣義的術語,對於不同的人來說可能意味著不同的東西,這要取決他們所處的環境。在計算機科學領域中,虛擬化代表著對計算資源的抽象,而不僅僅局限於虛擬機的概念。例如對物理內存的抽象,產生了虛擬內存技術,使得應用程序認為其自身擁有連續可用的地址空間(Address Space),而實際上,應用程序的代碼和數據可能是被分隔成多個碎片頁或段),甚至被交換到磁碟、快閃記憶體等外部存儲器上,即使物理內存不足,應用程序也能順利執行。
虛擬化技術的分類
虛擬化技術主要分為以下幾個大類 [1]:
平台虛擬化(Platform Virtualization),針對計算機和操作系統的虛擬化。
資源虛擬化(Resource Virtualization),針對特定的系統資源的虛擬化,比如內存、存儲、網路資源等。
應用程序虛擬化(Application Virtualization),包括模擬、模擬、解釋技術等。
我們通常所說的虛擬化主要是指平台虛擬化技術,通過使用控製程序(Control Program,也被稱為 Virtual Machine Monitor 或 Hypervisor),隱藏特定計算平台的實際物理特性,為用戶提供抽象的、統一的、模擬的計算環境(稱為虛擬機)。虛擬機中運行的操作系統被稱為客戶機操作系統(Guest OS),運行虛擬機監控器的操作系統被稱為主機操作系統(Host OS),當然某些虛擬機監控器可以脫離操作系統直接運行在硬體之上(如 VMWARE 的 ESX 產品)。運行虛擬機的真實系統我們稱之為主機系統。
平台虛擬化技術又可以細分為如下幾個子類:
全虛擬化(Full Virtualization)
全虛擬化是指虛擬機模擬了完整的底層硬體,包括處理器、物理內存、時鍾、外設等,使得為原始硬體設計的操作系統或其它系統軟體完全不做任何修改就可以在虛擬機中運行。操作系統與真實硬體之間的交互可以看成是通過一個預先規定的硬體介面進行的。全虛擬化 VMM 以完整模擬硬體的方式提供全部介面(同時還必須模擬特權指令的執行過程)。舉例而言,x86 體系結構中,對於操作系統切換進程頁表的操作,真實硬體通過提供一個特權 CR3 寄存器來實現該介面,操作系統只需執行 "mov pgtable,%%cr3" 匯編指令即可。全虛擬化 VMM 必須完整地模擬該介面執行的全過程。如果硬體不提供虛擬化的特殊支持,那麼這個模擬過程將會十分復雜:一般而言,VMM 必須運行在最高優先順序來完全控制主機系統,而 Guest OS 需要降級運行,從而不能執行特權操作。當 Guest OS 執行前面的特權匯編指令時,主機系統產生異常(General Protection Exception),執行控制權重新從 Guest OS 轉到 VMM 手中。VMM 事先分配一個變數作為影子 CR3 寄存器給 Guest OS,將 pgtable 代表的客戶機物理地址(Guest Physical Address)填入影子 CR3 寄存器,然後 VMM 還需要 pgtable 翻譯成主機物理地址(Host Physical Address)並填入物理 CR3 寄存器,最後返回到 Guest OS中。隨後 VMM 還將處理復雜的 Guest OS 缺頁異常(Page Fault)。比較著名的全虛擬化 VMM 有 Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac 和 QEMU。
超虛擬化(Paravirtualization)
這是一種修改 Guest OS 部分訪問特權狀態的代碼以便直接與 VMM 交互的技術。在超虛擬化虛擬機中,部分硬體介面以軟體的形式提供給客戶機操作系統,這可以通過 Hypercall(VMM 提供給 Guest OS 的直接調用,與系統調用類似)的方式來提供。例如,Guest OS 把切換頁表的代碼修改為調用 Hypercall 來直接完成修改影子 CR3 寄存器和翻譯地址的工作。由於不需要產生額外的異常和模擬部分硬體執行流程,超虛擬化可以大幅度提高性能,比較著名的 VMM 有 Denali、Xen。
硬體輔助虛擬化(Hardware-Assisted Virtualization)
硬體輔助虛擬化是指藉助硬體(主要是主機處理器)的支持來實現高效的全虛擬化。例如有了 Intel-VT 技術的支持,Guest OS 和 VMM 的執行環境自動地完全隔離開來,Guest OS 有自己的「全套寄存器」,可以直接運行在最高級別。因此在上面的例子中,Guest OS 能夠執行修改頁表的匯編指令。Intel-VT 和 AMD-V 是目前 x86 體系結構上可用的兩種硬體輔助虛擬化技術。
部分虛擬化(Partial Virtualization)
VMM 只模擬部分底層硬體,因此客戶機操作系統不做修改是無法在虛擬機中運行的,其它程序可能也需要進行修改。在歷史上,部分虛擬化是通往全虛擬化道路上的重要里程碑,最早出現在第一代的分時系統 CTSS 和 IBM M44/44X 實驗性的分頁系統中。
操作系統級虛擬化(Operating System Level Virtualization)
在傳統操作系統中,所有用戶的進程本質上是在同一個操作系統的實例中運行,因此內核或應用程序的缺陷可能影響到其它進程。操作系統級虛擬化是一種在伺服器操作系統中使用的輕量級的虛擬化技術,內核通過創建多個虛擬的操作系統實例(內核和庫)來隔離不同的進程,不同實例中的進程完全不了解對方的存在。比較著名的有 Solaris Container [2],FreeBSD Jail 和 OpenVZ 等。
這種分類並不是絕對的,一個優秀的虛擬化軟體往往融合了多項技術。例如 VMware Workstation 是一個著名的全虛擬化的 VMM,但是它使用了一種被稱為動態二進制翻譯的技術把對特權狀態的訪問轉換成對影子狀態的操作,從而避免了低效的 Trap-And-Emulate 的處理方式,這與超虛擬化相似,只不過超虛擬化是靜態地修改程序代碼。對於超虛擬化而言,如果能利用硬體特性,那麼虛擬機的管理將會大大簡化,同時還能保持較高的性能。
本文討論的虛擬化技術只針對 x86 平台(含 AMD 64),並假定虛擬機中運行的 Guest OS 也是為 x86 平台設計的。
--------------------------------------------------------------------------------
回頁首
純軟體虛擬化技術的原理及面臨的挑戰
虛擬機監控器應當具備的條件
1974 年,Popek 和 Goldberg 在《Formal Requirements for Virtualizable Third Generation Architectures》[3] 論文中提出了一組稱為虛擬化准則的充分條件,滿足這些條件的控製程序可以被稱為虛擬機監控器(Virtual Machine Monitor,簡稱 VMM):
資源控制。控製程序必須能夠管理所有的系統資源。
等價性。在控製程序管理下運行的程序(包括操作系統),除時序和資源可用性之外的行為應該與沒有控製程序時的完全一致,且預先編寫的特權指令可以自由地執行。
效率性。絕大多數的客戶機指令應該由主機硬體直接執行而無需控製程序的參與。
盡管基於簡化的假設,但上述條件仍為評判一個計算機體系結構是否能夠有效支持虛擬化提供了一個便利方法,也為設計可虛擬化計算機架構給出了指導原則。
原理簡介
我們知道,傳統的 x86 體系結構缺乏必要的硬體支持,任何虛擬機監控器都無法直接滿足上述條件,所以不是一個可虛擬化架構,但是我們可以使用純軟體實現的方式構造虛擬機監控器。
虛擬機是對真實計算環境的抽象和模擬,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 的時候,需要解決如下挑戰 [4]:
確保 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」。
地址空間壓縮(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 自己處理該異常。
處理 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 頻繁訪問特權資源。
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 的設計。
--------------------------------------------------------------------------------
回頁首
Intel-VT 硬體輔助虛擬化技術詳解
2005 年冬天,英特爾帶來了業內首個面向台式機的硬體輔助虛擬化技術 Intel-VT 及相關的處理器產品,從而拉開了 IA 架構虛擬化技術應用的新時代大幕。支持虛擬化技術的處理器帶有特別優化過的指令集來自動控制虛擬化過程,從而極大簡化 VMM 的設計,VMM 的性能也能得到很大提高。其中 IA-32 處理器的虛擬化技術稱為 VT-x,安騰處理器的虛擬化技術稱為 VT-i。AMD 公司也推出了自己的虛擬化解決方案,稱為 AMD-V。盡管 Intel-VT 和 AMD-V 並不完全相同,但是基本思想和數據結構卻是相似的,本文只討論 Intel-VT-x 技術。
新增的兩種操作模式
VT-x 為 IA 32 處理器增加了兩種操作模式:VMX root operation 和 VMX non-root operation。VMM 自己運行在 VMX root operation 模式,VMX non-root operation 模式則由 Guest OS 使用。兩種操作模式都支持 Ring 0 ~ Ring 3 這 4 個特權級,因此 VMM 和 Guest OS 都可以自由選擇它們所期望的運行級別。
這兩種操作模式可以互相轉換。運行在 VMX root operation 模式下的 VMM 通過顯式調用 VMLAUNCH 或 VMRESUME 指令切換到 VMX non-root operation 模式,硬體自動載入 Guest OS的上下文,於是 Guest OS 獲得運行,這種轉換稱為 VM entry。Guest OS 運行過程中遇到需要 VMM 處理的事件,例如外部中斷或缺頁異常,或者主動調用 VMCALL 指令調用 VMM 的服務的時候(與系統調用類似),硬體自動掛起 Guest OS,切換到 VMX root operation 模式,恢復 VMM 的運行,這種轉換稱為 VM exit。VMX root operation 模式下軟體的行為與在沒有 VT-x 技術的處理器上的行為基本一致;而VMX non-root operation 模式則有很大不同,最主要的區別是此時運行某些指令或遇到某些事件時,發生 VM exit。
虛擬機控制塊
VMM 和 Guest OS 共享底層的處理器資源,因此硬體需要一個物理內存區域來自動保存或恢復彼此執行的上下文。這個區域稱為虛擬機控制塊(VMCS),包括客戶機狀態區(Guest State Area),主機狀態區(Host State Area)和執行控制區。VM entry 時,硬體自動從客戶機狀態區載入 Guest OS 的上下文。並不需要保存 VMM 的上下文,原因與中斷處理程序類似,因為 VMM 如果開始運行,就不會受到 Guest OS的干擾,只有 VMM 將工作徹底處理完畢才可能自行切換到 Guest OS。而 VMM 的下次運行必然是處理一個新的事件,因此每次 VMM entry 時, VMM 都從一個通用事件處理函數開始執行;VM exit 時,硬體自動將 Guest OS 的上下文保存在客戶機狀態區,從主機狀態區中載入 VMM 的通用事件處理函數的地址,VMM 開始執行。而執行控制區存放的則是可以操控 VM entry 和 exit 的標志位,例如標記哪些事件可以導致 VM exit,VM entry 時准備自動給 Guest OS 「塞」入哪種中斷等等。
客戶機狀態區和主機狀態區都應該包含部分物理寄存器的信息,例如控制寄存器 CR0,CR3,CR4;ESP 和 EIP(如果處理器支持 64 位擴展,則為 RSP,RIP);CS,SS,DS,ES,FS,GS 等段寄存器及其描述項;TR,GDTR,IDTR 寄存器;IA32_SYSENTER_CS,IA32_SYSENTER_ESP,IA32_SYSENTER_EIP 和 IA32_PERF_GLOBAL_CTRL 等 MSR 寄存器。客戶機狀態區並不包括通用寄存器的內容,VMM 自行決定是否在 VM exit 的時候保存它們,從而提高了系統性能。客戶機狀態區還包括非物理寄存器的內容,比如一個 32 位的 Active State 值表明 Guest OS 執行時處理器所處的活躍狀態,如果正常執行指令就是處於 Active 狀態,如果觸發了三重故障(Triple Fault)或其它嚴重錯誤就處於 Shutdown 狀態,等等。
前文已經提過,執行控制區用於存放可以操控 VM entry 和 VM exit 的標志位,包括:
External-interrupt exiting:用於設置是否外部中斷可以觸發 VM exit,而不論 Guest OS 是否屏蔽了中斷。
Interrupt-window exiting:如果設置,當 Guest OS 解除中斷屏蔽時,觸發 VM exit。
Use TPR shadow:通過 CR8 訪問 Task Priority Register(TPR)的時候,使用 VMCS 中的影子 TPR,可以避免觸發 VM exit。同時執行控制區還有一個 TPR 閾值的設置,只有當 Guest OS 設置的 TR 值小於該閾值時,才觸發 VM exit。
CR masks and shadows:每個控制寄存器的每一位都有對應的掩碼,控制 Guest OS 是否可以直接寫相應的位,或是觸發 VM exit。同時 VMCS 中包括影子控制寄存器,Guest OS 讀取控制寄存器時,硬體將影子控制寄存器的值返回給 Guest OS。
VMCS 還包括一組點陣圖以提供更好的適應性:
Exception bitmap:選擇哪些異常可以觸發 VM exit,
I/O bitmap:對哪些 16 位的 I/O 埠的訪問觸發 VM exit。
MSR bitmaps:與控制寄存器掩碼相似,每個 MSR 寄存器都有一組「讀」的點陣圖掩碼和一組「寫」的點陣圖掩碼。
每次發生 VM exit時,硬體自動在 VMCS 中存入豐富的信息,方便 VMM 甄別事件的種類和原因。VM entry 時,VMM 可以方便地為 Guest OS 注入事件(中斷和異常),因為 VMCS 中存有 Guest OS 的中斷描述表(IDT)的地址,因此硬體能夠自動地調用 Guest OS 的處理程序。
更詳細的信息請參閱 Intel 開發手冊 [5]。
解決純軟體虛擬化技術面臨的挑戰
首先,由於新的操作模式的引入,VMM 和 Guest OS 的執行由硬體自動隔離開來,任何關鍵的事件都可以將系統控制權自動轉移到 VMM,因此 VMM 能夠完全控制系統的全部資源。
其次,Guest OS 可以運行在它所期望的最高特權級別,因此特權級壓縮和特權級別名的問題迎刃而解,而且 Guest OS 中的系統調用也不會觸發 VM exit。
硬體使用物理地址訪問虛擬機控制塊(VMCS),而 VMCS 保存了 VMM 和 Guest OS 各自的 IDTR 和 CR3 寄存器,因此 VMM 可以擁有獨立的地址空間,Guest OS 能夠完全控制自己的地址空間,地址空間壓縮的問題也不存在了。
中斷和異常虛擬化的問題也得到了很好的解決。VMM 只用簡單地設置需要轉發的虛擬中斷或異常,在 VM entry 時,硬體自動調用 Guest OS 的中斷和異常處理程序,大大簡化 VMM 的設計。同時,Guest OS 對中斷的屏蔽及解除可以不觸發 VM exit,從而提高了性能。而且 VMM 還可以設置當 Guest OS 解除中斷屏蔽時觸發 VM exit,因此能夠及時地轉發積累的虛擬中斷和異常。
--------------------------------------------------------------------------------
回頁首
未來虛擬化技術的發展
我們可以看到,硬體輔助虛擬化技術必然是未來的方向。Intel-VT目前還處在處理器級虛擬化技術的初級階段,尚需在如下方面進行發展:
提高操作模式間的轉換速度。
兩種操作模式間的轉換發生之如此頻繁,如果不能有效減少其轉換速度,即使充分利用硬體特性,虛擬機的整體性能也會大打折扣。早期的支持硬體輔助虛擬化技術的 Pentium 4 處理器需要花費 2409 個時鍾周期處理 VM entry,花費 508 個時鍾周期處理由缺頁異常觸發的 VM exit,代價相當高。隨著 Intel 技術的不斷完善,在新的 Core 架構上,相應時間已經減少到 937 和 446 個時鍾周期。未來硬體廠商還需要進一步提高模式的轉換速度,並提供更多的硬體特性來減少不必要的轉換。
優化翻譯後援緩沖器(TLB)的性能。
每次 VM entry 和 VM exit 發生時,由於需要重新載入 CR3 寄存器,因此 TLB(Translation Lookaside Buffer)被完全清空。虛擬化系統中操作模式的轉換發生頻率相當高,因此系統的整體性能受到明顯損害。一種可行的方案是為 VMM 和每個虛擬機分配一個全局唯一 ID,TLB 的每一項附加該 ID 信息來索引線性地址的翻譯。
提供內存管理單元(MMU)虛擬化的硬體支持。
即使使用 Intel-VT 技術,VMM 還是得用老辦法來處理 Guest OS 中發生的缺頁異常以及Guest OS 的客戶機物理地址到主機物理地址的翻譯,本質原因是 VMM 完全控制主機物理內存,因此 Guest OS 中的線性地址的翻譯同時牽涉到 VMM 和 Guest OS 的地址空間,而硬體只能看到其中的一個。Intel 和 AMD 提出了各自的解決方案,分別叫做 EPT(Extended Page Table)和 Nested Paging。這兩種技術的基本思想是,無論何時遇到客戶機物理地址,硬體自動搜索 VMM 提供的關於該 Guest OS 的一個頁表,翻譯成主機物理地址,或產生缺頁異常來觸發 VM exit。
支持高效的 I/O 虛擬化。
I/O 虛擬化需要考慮性能、可用性、可擴展性、可靠性和成本等多種因素。最簡單的方式是 VMM為虛擬機模擬一個常見的 I/O 設備,該設備的功能由 VMM 用軟體或復用主機 I/O 設備的方法實現。例如 Virtual PC 虛擬機提供的是一種比較古老的 S3 Trio64顯卡。這種方式提高了兼容性,並充分利用 Guest OS 自帶的設備驅動程序,但是虛擬的 I/O 設備功能有限且性能低下。為了提高性能,VMM 可以直接將主機 I/O 設備分配給虛擬機,這會帶來兩個主要挑戰:1. 如果多個虛擬機可以復用同一個設備,VMM 必須保證它們對設備的訪問不會互相干擾。2. 如果 Guest OS 使用 DMA 的方式訪問 I/O 設備,由於 Guest OS 給出的地址並不是主機物理地址,VMM 必須保證在啟動 DMA 操作前將該地址正確轉換。Intel 和 AMD 分別提出了各自的解決方案,分別稱為 Direct I/O(VT-d)和 IOMMU,希望用硬體的手段解決這些問題,降低 VMM 實現的難度。