虛擬化技術基礎_第1頁
虛擬化技術基礎_第2頁
虛擬化技術基礎_第3頁
虛擬化技術基礎_第4頁
虛擬化技術基礎_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

虛擬化技術基礎1基本概念1.1虛擬化虛擬化(Virtualization)是資源的邏輯表示,其不受物理限制的約束。虛擬化技術的實現(xiàn)形式是在系統(tǒng)中加入一個虛擬化層,將下層的資源抽象成另一形式的資源,提供給上層使用。本質上,虛擬化就是由位于下層的軟件模塊,通過向上一層軟件模塊提供一個與它原先所期待的運行環(huán)境完全一致的接口的方法,抽象出一個虛擬的軟件或硬件接口,使得上層軟件可以直接運行在虛擬環(huán)境上。通過空間上的分割、時間上的分時以及模擬,虛擬化可將一份資源抽象成多份,亦可將多份資源抽象成一份。虛擬化中的兩個重要的定語名詞:宿主(Host)和客戶(Guest)Host用在物理資源前,Guest則用于虛擬出來的資源前。如將一個物理機器虛擬成多個虛擬機器,則稱物理機為物理機(HostMachine),運行其上的OS為HostOS;稱多個虛擬機為GuestMachine,運行其上的OS為GuestOS1.2虛擬機虛擬機(VirtualMachine)是由虛擬化層提供的高效、獨立的虛擬計算機系統(tǒng),其皆擁有自己的虛擬硬件(CPU,內存,I/O設備)。通過虛擬化層的模擬,虛擬機在上層軟件看來,其就是一個真實的機器。這個虛擬化層一般稱為虛擬機監(jiān)控器(VirtualMachineMonitor,VMM)1974年,Popek和Goldberg在論文"FormalRequirementsforVirtualizableThirdGenerationArchitectures"中將VM定義為物理機的一種高效、隔離的復制,且指出VM的三個特征:同質(Equivalence)即VM的運行環(huán)境和物理機的環(huán)境在本質上是相同的,表現(xiàn)上可以有一些差異。如CPU的ISA必須一致,CPUcore的個數(shù)可以不同。高效(Efficiency)即VM的性能必須接近物理機。因此,常見的模擬器(boches,simics...)就不能稱為VM為達此目的,軟件在VM上運行時,大多數(shù)指令要直接在硬件上執(zhí)行,只有少量指令需要VMM的模擬或處理。資源受控(Resourcecontrol)即VMM對物理機的所有資源有絕對的控制力1.3FullvirtualizationandParavirtualizationFullvirtualization:所抽象的VM具有完全的物理機特性,OS在其上運行不需要任何修改。典型的有VMWare,Virtualbox,VirtualPC,KVM-x86...)Paravirtualization:需OS協(xié)助的虛擬化,在其上運行的OS需要修改。起初采用主要是為了解決x86體系結構上完全虛擬化的困難(沒有IntelVT&AMD-V硬件虛擬化支持前;且不屑于動態(tài)掃描指令修補之方法的性能),后來則主要是為了提高虛擬化的效率。典型的有Xen,KVM-PowerPC等。下表是市面上流行的虛擬化技術的一個概況:數(shù)據(jù)來自"VIRTUALIZATIONWITHLOGICALDOMAINSANDSUNCOOLTHREADSSERVERS"1.4硬件虛擬化概況x86鑒于x86本身完全虛擬化的困難以及虛擬化性能的考慮,Intel在2006年是引入VT(VT-xforIA32,VT-iforItanium)來解決之,AMD以AMD-V緊隨之。其后Intel又引入VT-d(AMD為IOMMU)對x86平臺上的I/O虛擬化作了增強。PowerPC2001年IBM在Power4中加入虛擬化支持,并在2004年的Power5中推出增強的虛擬化支持,且在2009年發(fā)布的PowerISAv2.06中規(guī)范化。Freescale亦在e500mc中實現(xiàn)PowerISAv2.06的虛擬化增強。SPARC2005年SUN即在SPARC中引入虛擬化支持。2虛擬化技術概要之處理器虛擬化VMM對物理資源的虛擬可以劃分為三個部分:處理器虛擬化、內存虛擬化和I/O虛擬化(設備)。其中以處理器的虛擬化最為關鍵。體系結構背景簡而言之,處理器呈現(xiàn)給軟件的接口就是一堆的指令(指令集)和一堆的寄存器(含用于通用運算的寄存器和用于控制處理器行為的狀態(tài)和控制寄存器)。而I/O設備呈現(xiàn)給軟件的接口也就是一堆的狀態(tài)和控制寄存器(有些設備亦有內部存儲)。這些都是系統(tǒng)的資源,其中影響處理器和設備狀態(tài)和行為的寄存器稱為關鍵資源或特權資源,如x86之CR0?CR4,MIPS的CP0寄存器,PowerPC的PrivilegedSPR(SPR編號第5位為1)。可以讀寫系統(tǒng)關鍵資源的指令叫做敏感指令,如x86的lgdt/sgdt/lidt/sidt/in/out,MIPS的mtc0/mfc0,PowerPC的mtmsr/mfmsr,SPARC的rdpr/wrpr等,此類又可稱為控制敏感指令。還有一類行為敏感指令,該類指令的執(zhí)行結果依賴于系統(tǒng)的狀態(tài)(如x86之popf)現(xiàn)代計算機體系結構一般至少有兩個特權級,(即用戶態(tài)和核心態(tài),未加虛擬化擴展的SPARC和PowerPC即是,MIPS有三個特權級(外加一個Supervisor態(tài),沒什么用),而x86有四個特權級(Ring0?Ring3))用來分隔系統(tǒng)軟件和應用軟件。決大多數(shù)的敏感指令是特權指令,特權指令只能在處理器的最高特權級(內核態(tài))執(zhí)行,如果執(zhí)行特權指令時處理器的狀態(tài)不在內核態(tài),通常會引發(fā)一個異常而交由系統(tǒng)軟件來處理這個“非法訪問”(陷入)。少數(shù)敏感指令是非特權指令,如x86的sgdt/sidt等,非特權指令可以在用戶態(tài)讀取處理器的狀態(tài),如sgdt/sidt則可在用戶態(tài)(Ring3)將GDTR和IDTR的值讀取到通用寄存器中。對于一般RISC處理器,如MIPS,PowerPC以及SPARC,敏感指令肯定是特權指令,唯x86例外。2.1經典的虛擬化方法經典的虛擬化方法主要使用“特權解除”(Privilegedeprivileging)和“陷入一模擬”(Trap-and-Emulation)的方式。即:將GuestOS運行在非特權級(特權解除),而將VMM運行于最高特權級(完全控制系統(tǒng)資源)。解除了GuestOS的特權后,GuestOS的大部分指令仍可以在硬件上直接運行,只有當執(zhí)行到特權指令時,才會陷入到VMM模擬執(zhí)行(陷入一模擬)。其早期的代表系統(tǒng)是IBMVM/370由此可引入虛擬化對體系結構(ISA)的要求:須支持多個特權級此亦是現(xiàn)代操作系統(tǒng)的要求非敏感指令的執(zhí)行結果不依賴于CPU的特權級“陷入一模擬”的本質是保證可能影響VMM正確運行的指令由VMM模擬執(zhí)行,大部分的非敏感指令還是照常運行。CPU需支持一種保護機制,如MMU,可將物理系統(tǒng)和其它VM與當前活動的VM隔離以上三個條件,現(xiàn)代體系結構一般都滿足,唯有最后一個也是最重要的條件:敏感指令需皆為特權指令此為保證敏感指令在VM上執(zhí)行時,能陷入到VMM.因控制敏感指令的執(zhí)行可能改變系統(tǒng)(處理器和設備)的狀態(tài),為保證VMM對資源的絕對控制力維護VM的正常運行,這類指令的執(zhí)行需要陷入而將控制權轉移到VMM,并由其模擬處理之。行為敏感指令的執(zhí)行結果依賴于CPU的最高特權級,而GuestOS運行于非最高特權級,為保證其結果正確,亦需要陷入VMM,并由其模擬之。2x86ISA分析x86ISA中有十多條敏感指令不是特權指令,因此x86無法使用經典的虛擬化技術完全虛擬化。如:sgdt/sidt/sldt可以在用戶態(tài)讀取特權寄存器GDTR/IDTR/LDTR的值;popf/pushf在Ring0和Ring3的執(zhí)行結果不同;其它的還有smsw,lar,lsl,verr,verw,pop,push,call,jmp,intn,ret,str,move關于這些指令的詳細分析可以參見:"AnalysisoftheIntelPentium'sAbilitytoSupportaSecureVirtualMachineMonitor"2.3x86虛擬化方法鑒于x86本身的局限,長期以來對x86的虛擬化都是通過軟件方式實現(xiàn),后來Intel和AMD都引入各自的硬件虛擬化技術來彌補處理器的缺陷。2.3.1基于二進制翻譯(BT)的全虛擬化(Fullvirtualization)其主要思想是在執(zhí)行時將VM上執(zhí)行的GuestOS之指令,翻譯成x86ISA的一個子集,其中的敏感指令被替換成陷入指令。翻譯過程與指令執(zhí)行交叉進行。不含敏感指令的用戶態(tài)程序可以不經翻譯直接執(zhí)行。該技術為VMWareWorkstation,VMWareESXServer早期版本,VirtualPC以及QEMU所采用。2.3.2基于掃描與修補(Scan-and-Patch)的全虛擬化(Fullvirtualization)主要思想:VMM會在VM運行每塊指令之前對其掃描,查找敏感指令補丁指令塊會在VMM中動態(tài)生成,通常每一個需要修補的指令會對應一塊補丁指令敏感指令被替換成一個外跳轉,從VM跳轉到VMM,在VMM中執(zhí)行動態(tài)生成的補丁指令塊當補丁指令塊執(zhí)行完后,執(zhí)行流再跳轉回VM的下一條指令處繼續(xù)執(zhí)行SUN之Virtualbox即采用該技術。2.3.2OS協(xié)助的類虛擬化(Paravirtualization)其基本思想是通過修改GuestOS的代碼,將含有敏感指令的操作,替換為對VMM的超調用(Hypercall,類似OS的系統(tǒng)調用,可將控制權轉移到VMM)。該技術的優(yōu)勢在于VM的性能能接近于物理機,缺點在于需要修改GuestOS.該技術因Xen項目而廣為人知。目前嵌入式領域的虛擬化,考慮到性能的因素,亦會在可以使用經典虛擬化方法實現(xiàn)全虛擬的體系結構上采用類虛擬化技術。2.3.3硬件協(xié)助的虛擬化鑒于x86在虛擬化上的缺陷,Intel和AMD都引入自己的硬件虛擬化技術來協(xié)助完成虛擬化。IntelVT-x(VirtualizationTechnologyforx86)IntelVT-i(VirtualizationTechnologyforItanium)IntelVT-d(VirtualizationTechnologyforDirectedI/O)AMD-V(AMDVirtualization)其基本思想就是引入新的處理器運行模式和新的指令,使得VMM和GuestOS運行于不同的模式下,GuestOS運行于受控模式,原來的一些敏感指令在受控模式下全部會陷入VMM。而且模式切換時上下文的保存恢復由硬件來完成。該技術的引入使x86可以很容易地實現(xiàn)完全虛擬化。其被KVM-x86,新版VMWareESXServer3,Xen3.0以及大量x86平臺上的虛擬化軟件所采用。2.4其它體系結構分析其它RISC之體系結構,如MIPS,PowerPC,SPARC等,似乎不存在有敏感指令為非特權指令的情形。即它們應該不存在虛擬化的困難。.2.5其它體系所采用之虛擬化方法目前可見的非x86體系的虛擬化產品,似乎都傾向于使用類虛擬化的技術手段。3虛擬化技術概要之內存虛擬化3.1概述因為VMM(VirtualMachineMonitor)掌控有所有系統(tǒng)資源,因此VMM握有整個內存資源,其負責頁式內存管理,維護虛擬地址到機器地址的映射關系。因GuestOS本身亦有頁式內存管理機制,則有VMM的整個系統(tǒng)就比正常系統(tǒng)多了一層映射:虛擬地址(VA),指GuestOS提供給其應用程序使用的線性地址空間物理地址(PA),經VMM抽象的、虛擬機看到的偽物理地址機器地址(MA),真實的機器地址,即地址總線上出現(xiàn)的地址信號映射關系如下:GuestOS:PA=f(VA)VMM:MA=g(PA)VMM維護一套頁表,負責PA到MA的映射。GuestOS維護一套頁表,負責VA到PA的映射。實際運行時,用戶程序訪問VA1,經GuestOS的頁表轉換得到PA1,再由VMM介入,使用VMM的頁表將PA1轉換為MA1.3.2頁表虛擬化基本思想普通MMU只能完成一次虛擬地址到物理地址的映射,在虛擬機環(huán)境下,經過MMU轉換所得到的“物理地址”并不是真正的機器地址。若需得到真正的機器地址,必須由VMM介入,再經過一次映射才能得到總線上使用的機器地址。顯然,如果虛擬機的每個內存訪問都需要VMM介入,并由軟件模擬地址轉換的效率是很低下的,幾乎不具有實際可用性,為實現(xiàn)虛擬地址到機器地址的高效轉換,現(xiàn)普遍采用的思想是:由VMM根據(jù)映射f和g生成復合的映射?甘,并直接將這個映射關系寫入MMU其可行性在于:VMM維護著映射gVMM能夠訪問GuestOS的內存,因此可以直接查詢GuestOS的頁表,從而獲得映射f計算復合映射fg能夠在恰當?shù)臅r候高效地進行3.3頁表虛擬化實現(xiàn)目前采用的頁表虛擬化方法主要有兩個:MMU類虛擬化(MMUParavirtualization)和影子頁表3.3.1MMUParavirtualization該技術為Xen所采用。其基本原理是:當GuestOS創(chuàng)建一個新的頁表時,會從它所維護的空閑內存中分配一個頁面,并向Xen注冊該頁面,Xen會剝奪GuestOS對該頁表的寫權限,之后GuestOS對該頁表的寫操作都會陷入到Xen加以驗證和轉換。Xen會檢查頁表中的每一項,確保他們只映射了屬于該虛擬機的機器頁面,而且不得包含對頁表頁面的可寫映射。后,Xen會根據(jù)自己所維護的映射關系g,將頁表項中的物理地址替換為相應的機器地址,最后再把修改過的頁表載入MMU。如此,MMU就可以根據(jù)修改過頁表直接完成虛擬地址到機器地址的轉換。3.3.2影子頁表類虛擬化需要修改GuestOS。對全虛擬化,則使用影子頁表(ShadowPageTable)技術來實現(xiàn)。VMWareWorkstation,VMWareESXServer和KVMforx86都是使用該技術。與類虛擬化類似,影子頁表技術也是采用將復合映射fg直接寫入MMU的思路。不同在于類虛擬化技術直接將fg更新到GuestOS的頁表項中,而影子頁表則是VMM為GuestOS的每個頁表維護一個“影子頁表“,并將合成后的映射關系寫入到”影子“中,GuestOS的頁表內容則保持不變。最后VMM將影子頁表寫入MMU影子頁表的實現(xiàn)挑戰(zhàn)在于其時間和空間的開銷很大。時間:由于GuestOS構造頁表時不會主動通知VMM,VMM必須等到GuestOS發(fā)生缺頁時通過分析缺頁原因,再為其補全影子頁表??臻g:VMM需要支持多個虛擬機同時運行,而每個虛擬機的GuestOS通常會為其上運行的每個進程都創(chuàng)建一套頁表系統(tǒng),因此影子頁表的空間開銷會隨著進程數(shù)量的增多而迅速增大。在時間開銷和空間開銷中做出權衡的方法是使用影子頁表緩存(ShadowPageTableCache),即VMM在內存中維護部分最近使用過的影子頁表,只有當影子頁表在緩存中找不到時,才構建一個新的,當前主要的全虛擬化都采用了影子頁表緩存技術。4虛擬化技術概要之VMM結構4.1概述當前主流的VMM(VirtualMachineMonitor)實現(xiàn)結構可以分為三類:宿主模型(OS-hostedVMMs)Hypervisor模型(HypervisorVMMs)混合模型(HybridVMMs)4.2宿主模型該結構的VMM,物理資源由HostOS(Windows,Linuxetc.)管理實際的虛擬化功能由VMM提供,其通常是HostOS的獨立內核模塊(有的實現(xiàn)還含用戶進程,如負責I/O虛擬化的用戶態(tài)設備模型)VMM通過調用HostOS的服務來獲得資源,實現(xiàn)CPU,內存和I/O設備的虛擬化VMM創(chuàng)建出VM后,通常將VM作為HostOS的一個進程參與調度如上圖所示,VMM模塊負責CPU和內存虛擬化,由ULM請求HostOS設備驅動,實現(xiàn)I/O設備的虛擬化。優(yōu)點:可以充分利用現(xiàn)有OS的設備驅動,VMM無需自己實現(xiàn)大量的設備驅動,輕松實現(xiàn)I/O設備的虛擬化。缺點:因資源受HostOS控制,VMM需調用HostOS的服務來獲取資源進行虛擬化,其效率和功能會受到一定影響。采用該結構的VMM有:VMwareWorkstation,VMWareServer(GSX),VirtualPC,VirtualServer,KVM(早期)4.3Hypervisor模型該結構中,VMM可以看作一個為虛擬化而生的完整OS,掌控有所有資源(CPU,內存,I/O設備)VMM承擔管理資源的重任,其還需向上提供VM用于運行GuestOS,因此VMM還負責虛擬環(huán)境的創(chuàng)建和管理。優(yōu)點:因VMM同時具有物理資源的管理功能和虛擬化功能,故虛擬化的效率會較高;安全性方面,VM的安全只依賴于VMM的安全缺點:因VMM完全擁有物理資源,因此,VMM需要進行物理資源的管理,包括設備的驅動,而設備驅動的開發(fā)工作量是很大的,這對VMM是個很大的挑戰(zhàn)。采用該結構的VMM有:VMWareESXServer,WindRiverHypervisor,KVM(后期)4.4混合模型該結構是上述兩種模式的混合體,VMM依然位于最底層,擁有所有物理資源,但VMM會主動讓出大部分I/O設備的控制權,將它們交由一個運行在特權VM上的特權OS來控制。VMM只負責CPU和內存的虛擬化,I/O設備的虛擬化由VMM和特權OS共同完成:優(yōu)點:可利用現(xiàn)有OS的I/O設備驅動;VMM直接

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論