虛擬機(jī)技術(shù)簡介_第1頁
虛擬機(jī)技術(shù)簡介_第2頁
虛擬機(jī)技術(shù)簡介_第3頁
虛擬機(jī)技術(shù)簡介_第4頁
虛擬機(jī)技術(shù)簡介_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

近年來,虛擬機(jī)技術(shù)已經(jīng)逐漸成為人們關(guān)注的熱點(diǎn),正受到越來越多的關(guān)注和重視,如VMware已經(jīng)被80%以上的全球百強(qiáng)企業(yè)所采納。隨著多年來研究的深入,虛擬機(jī)技術(shù)已經(jīng)在企業(yè)計(jì)算、災(zāi)難恢復(fù)、分布式計(jì)算和系統(tǒng)安全領(lǐng)域得到了廣泛應(yīng)用。現(xiàn)在對虛擬機(jī)技術(shù)有很多種分類方式,本文認(rèn)為虛擬機(jī)的本質(zhì)特征是利用下次應(yīng)用(或系統(tǒng))的支持為上層應(yīng)用(或系統(tǒng))提供不同的接口,因此按照接口來分類應(yīng)該更能反映虛擬機(jī)的特點(diǎn)。按照虛擬機(jī)系統(tǒng)對上層應(yīng)用所提供接口的不同(如圖1所示),形成了不同層次的虛擬機(jī)技術(shù),主要包括硬件抽象層虛擬機(jī)、操作系統(tǒng)層虛擬機(jī)、API(應(yīng)用程序編程接口,ApplicationProgrammingInterface)層虛擬機(jī),以及編程語言層虛擬機(jī)等四類。技統(tǒng)軟件運(yùn)行環(huán)境語言虎擬機(jī)指令用戶進(jìn)程燥作系統(tǒng)用戶態(tài)運(yùn)行再燥作系統(tǒng)硬件殖象層虛擬機(jī)燥作系統(tǒng)用戶態(tài)API技統(tǒng)軟件運(yùn)行環(huán)境語言虎擬機(jī)指令用戶進(jìn)程燥作系統(tǒng)用戶態(tài)運(yùn)行再燥作系統(tǒng)硬件殖象層虛擬機(jī)燥作系統(tǒng)用戶態(tài)API系統(tǒng)調(diào)用{JSyshHinCall)■+H——處理器指令-tit——圖1層次化的虛擬機(jī)分類硬件抽象層的虛擬機(jī)。對上層軟件(即客戶操作系統(tǒng))而言,硬件抽象層的虛擬機(jī)構(gòu)造了一個(gè)完整的計(jì)算機(jī)硬件系統(tǒng),這種虛擬機(jī)與客戶操作系統(tǒng)的接口即為處理器指令。操作系統(tǒng)層的虛擬機(jī)。通過在動態(tài)復(fù)制操作系統(tǒng)環(huán)境,此類虛擬機(jī)能夠創(chuàng)建多個(gè)虛擬運(yùn)行容器。而對運(yùn)行在每個(gè)容器之上的軟件而言,此類虛擬機(jī)均提供了一個(gè)完整的操作系統(tǒng)運(yùn)行環(huán)境,而它與上層軟件的接口即為系統(tǒng)調(diào)用接口。API層的虛擬機(jī)。此類虛擬機(jī)為上層應(yīng)用軟件提供了特定操作系統(tǒng)運(yùn)行環(huán)境的模擬,但這種模擬并不是對處理器指令的仿真,而是模擬實(shí)現(xiàn)該操作系統(tǒng)的各類用戶態(tài)API。編程語言層虛擬機(jī)。此類虛擬機(jī)通過解釋或即時(shí)編譯技術(shù)(Just-In-Time,JIT)來運(yùn)行語言虛擬機(jī)指令,從而實(shí)現(xiàn)軟件的跨平臺特性。硬件抽象層的虛擬機(jī)技術(shù)早在上世紀(jì)70年代,IBMSystem360、370、CP-40、CP-67Z]等系統(tǒng)就已經(jīng)實(shí)現(xiàn)了硬件抽象層的虛擬機(jī)技術(shù),它最初是為了彌補(bǔ)系統(tǒng)架構(gòu)上的不足而發(fā)展起來的,而隨著技術(shù)的發(fā)展和對虛擬機(jī)需求的增加,硬件抽象層虛擬機(jī)在強(qiáng)隔離功能和安全控制方面得到了長足發(fā)展和廣泛應(yīng)用。如前所述,運(yùn)行在硬件抽象層虛擬機(jī)之上的軟件即為客戶操作系統(tǒng),硬件抽象層的虛擬機(jī)技術(shù)利用客戶系統(tǒng)環(huán)境和虛擬機(jī)宿主平臺的相似性來減少執(zhí)行客戶系統(tǒng)指令的延遲。目前,大多數(shù)的商業(yè)服務(wù)器虛擬化產(chǎn)品,都是通過使用這種技術(shù)來實(shí)現(xiàn)高效、實(shí)用的虛擬化系統(tǒng)。這種技術(shù)利用虛擬機(jī)監(jiān)視器(VirtualMachineMonitor,VMM)作為隔離代碼運(yùn)行環(huán)境的中間層。這類虛擬機(jī)通過VMM提供了一個(gè)物理機(jī)器的抽象,它允許操作系統(tǒng)假設(shè)自身可以直接在硬件上運(yùn)行,VMM為其上運(yùn)行的客戶操作系統(tǒng)提供硬件映射。從操作系統(tǒng)的角度看,運(yùn)行在虛擬機(jī)上與運(yùn)行在其對應(yīng)的物理計(jì)算機(jī)系統(tǒng)上一樣。虛擬機(jī)曲擬機(jī)計(jì)算機(jī)系統(tǒng)TypeII虛擬機(jī)監(jiān)視器(TypeIIVMM)操作系統(tǒng)Type1慮擬機(jī)監(jiān)視器虛擬機(jī)曲擬機(jī)計(jì)算機(jī)系統(tǒng)TypeII虛擬機(jī)監(jiān)視器(TypeIIVMM)操作系統(tǒng)Type1慮擬機(jī)監(jiān)視器(Type1VMM)it算機(jī)系統(tǒng)操作系統(tǒng)操#乍系統(tǒng)虛擬機(jī)操作系統(tǒng)焜拉機(jī)操柞系統(tǒng)圖1TypeIVMM與TypeIIVMM體系結(jié)構(gòu)按照Goldberg的定義[5],虛擬機(jī)監(jiān)視器是能夠?yàn)橛?jì)算機(jī)系統(tǒng)創(chuàng)建高效、隔離的副本的軟件。這些副本即為虛擬機(jī)(VirtualMachine,VM),在虛擬機(jī)內(nèi)虛擬處理器的指令集的一個(gè)子集能夠直接在物理處理器上執(zhí)行。根據(jù)VMM在整個(gè)物理系統(tǒng)中的實(shí)現(xiàn)位置和實(shí)現(xiàn)方法的不同,Goldberg定義了兩種虛擬機(jī)監(jiān)視器模型,即TypeIVMM和TypeIIVMM,具體結(jié)構(gòu)如圖1所示。TypeIVMM在操作系統(tǒng)之前預(yù)先安裝,然后在此虛擬機(jī)監(jiān)視器之上安裝客戶操作系統(tǒng),它可以在硬件支持下?lián)碛凶罴研阅埽鏘BMVM/370H3],VMwareESXServer?,Xen79],Denalia-12]等均屬于這樣的虛擬機(jī)。TypeIVMM通常都是以一個(gè)輕量級操作系統(tǒng)的形式實(shí)現(xiàn)oTypeIIVMM則是安裝在已有的主機(jī)操作系統(tǒng)(宿主操作系統(tǒng))之上,此類虛擬機(jī)監(jiān)視器通過宿主主操作系統(tǒng)來管理和訪問各類資源(如文件和各類I/O設(shè)備等),如VMwareWorkstation】13】、ParallelWorkstation】14]等。從實(shí)現(xiàn)的角度,VMM實(shí)現(xiàn)從虛擬資源到物理資源的映射,并利用本地物理計(jì)算機(jī)系統(tǒng)進(jìn)行實(shí)際計(jì)算。當(dāng)客戶操作系統(tǒng)通過特權(quán)指令訪問關(guān)鍵系統(tǒng)資源時(shí),VMM將接管其請求,并進(jìn)行相應(yīng)的模擬處理。為了使這種機(jī)制能夠有效地工作,每條特權(quán)指令的執(zhí)行都需要產(chǎn)生自陷(Trap)以便VMM能夠捕獲該指令,從而使得VMM能夠進(jìn)行相應(yīng)的指令模擬執(zhí)行。VMM通過模擬特權(quán)指令的執(zhí)行,并返回處理結(jié)果給指定的客戶虛擬系統(tǒng)的方式,實(shí)現(xiàn)了不同虛擬機(jī)的運(yùn)行上下文保護(hù)與切換,從而能夠虛擬出多個(gè)硬件系統(tǒng),保證了各個(gè)客戶虛擬系統(tǒng)的有效隔離。然而,Intelx86體系結(jié)構(gòu)的處理器并不是完全支持虛擬化的[⑸,因?yàn)槟承﹛86特權(quán)指令在低特權(quán)級上下文執(zhí)行執(zhí)行時(shí),不能產(chǎn)生自陷,導(dǎo)致VMM無法直接捕獲特權(quán)指令的執(zhí)行。目前,針對這一問題的解決方案主要有三種:基于動態(tài)指令轉(zhuǎn)換(DynamicInstructionTranslation)的完全虛擬化(Full-virtualization)技術(shù),半虛擬化(Para-virtualization)技術(shù)和硬件輔助(HardwareAssisted)技術(shù)。許多商業(yè)的虛擬化產(chǎn)品都采用了基于動態(tài)指令轉(zhuǎn)換的完全虛擬化技術(shù),例如EMC公司的VMwareESXServer、VMwareWorkstation和Microsoft的VirtualServer系列產(chǎn)品?;趧討B(tài)指令轉(zhuǎn)換的完全虛擬化技術(shù)通過在運(yùn)行時(shí)動態(tài)執(zhí)行指令掃描以發(fā)現(xiàn)特權(quán)指令,然后依據(jù)VMM狀態(tài)執(zhí)行指令轉(zhuǎn)換,使得特權(quán)指令的執(zhí)行跳轉(zhuǎn)到等價(jià)模擬代碼段處,從而實(shí)現(xiàn)與自陷相同的目標(biāo)。由于完全虛擬化不需要修改客戶操作系統(tǒng),因此具有很好的兼容性,而完全虛擬化技術(shù)的性能也主要依賴于動態(tài)指令轉(zhuǎn)換引擎的設(shè)計(jì)和實(shí)現(xiàn)。與完全虛擬化技術(shù)技術(shù)不同,半虛擬化技術(shù)通過修改操作系統(tǒng)代碼使特權(quán)指令產(chǎn)生自陷。半虛擬化技術(shù)最初由Denali[i0]和Xen項(xiàng)目[7]在x86體系架構(gòu)上實(shí)現(xiàn)。Denali最先提出半虛擬化技術(shù),Xen是由劍橋大學(xué)計(jì)算機(jī)實(shí)驗(yàn)室發(fā)起的開源虛擬機(jī)項(xiàng)目。它的開發(fā)得到了Intel、HP、IBM等公司的支持。Xen是在x86平臺上支持同時(shí)運(yùn)行多個(gè)虛擬系統(tǒng)的高性能VMM,它支持x86_32、x86_64、IA64等多種平臺。Xen采用半虛擬化技術(shù),通過對客戶操作系統(tǒng)的內(nèi)核進(jìn)行適當(dāng)?shù)男薷模蛊淠軌蛟赩MM的管理下盡可能地直接訪問本地硬件平臺。Xen利用半虛擬化技術(shù)降低了由于虛擬化而引入的系統(tǒng)性能損失。如圖2所示,Xen的半虛擬化技術(shù)的主要實(shí)現(xiàn)思路是:對于內(nèi)存分段管理的虛擬化,要求客戶操作系統(tǒng)對硬件分段描述符的更新由Xen進(jìn)行驗(yàn)證,這也就要求客戶操作系統(tǒng)不能有高于Xen的特權(quán)級別和不允許訪問Xen的保留地址空間;對于內(nèi)存分頁管理的虛擬化,要求客戶操作系統(tǒng)可以直接讀取硬件頁表,但對頁表的更新需要Xen進(jìn)行驗(yàn)證和處理,Xen支持客戶虛擬系統(tǒng)可以分布在不連續(xù)的物理內(nèi)存上;對于客戶虛擬系統(tǒng),其只能運(yùn)行在低于Xen的特權(quán)級別上;客戶虛擬系統(tǒng)需要注冊一個(gè)異常(Exception)處理函數(shù)的描述符表,直接支持Xen的虛擬化;客戶虛擬系統(tǒng)的硬件中斷機(jī)制被Xen中的Event處理機(jī)制代替;每個(gè)客戶虛擬系統(tǒng)都有自己的時(shí)鐘接口,并且可以了解真實(shí)的時(shí)間和虛擬的時(shí)間;客戶虛擬系統(tǒng)通過異步I/Orings的內(nèi)存區(qū)域和外部設(shè)備(網(wǎng)絡(luò)、硬盤)來傳遞數(shù)據(jù),采用事件處理機(jī)制代替硬件中斷通知機(jī)制。

VM3VM3圖2Xen3.0體系結(jié)構(gòu)目前,Xen的最新的3.x版本已經(jīng)支持IntelVT和AMDPacifica技術(shù),基于IntelVT技術(shù)避免了對客戶操作系統(tǒng)內(nèi)核的修改[8,16],這一技術(shù)將使得能夠在Xen之上運(yùn)行各種非開源操作系統(tǒng)(如Windows等)。Xen作為高性能的虛擬機(jī)軟件[8],越來越受到業(yè)界的關(guān)注,并在企業(yè)計(jì)算和計(jì)算機(jī)安全領(lǐng)域都得到了廣泛的應(yīng)用[9,17-28]。第三種方案是通過修改x86CPU指令的語義使其直接支持虛擬化,也就是Intel的VT(VirtualizationTechnology)技術(shù)[29-3i]和AMD的Pacifica】32]技術(shù)的目標(biāo)。Intel公司推出了VT-i(支持Ltanium架構(gòu))和VT-x(支持X86架構(gòu))引入新的處理器操作,稱為VMX(VirtualMachineExtensions)來支持虛擬化。AMD推出了新的處理器模式和新的內(nèi)存管理模式支持虛擬化技術(shù)。VT的核心思想是給x86CPU的各種特權(quán)指令的執(zhí)行,都增加可以進(jìn)行trap的可能。AMD在虛擬化技術(shù)方面的Pacifica技術(shù)規(guī)范,是AMD計(jì)劃用于其64位產(chǎn)品中的虛擬化技術(shù)。該技術(shù)將用于基于x86架構(gòu)的服務(wù)器、臺式機(jī)和筆記本電腦等系列產(chǎn)品。從技術(shù)角度看,不論是VT技術(shù)外部架構(gòu)規(guī)范,還是Pacifica技術(shù)規(guī)范,它們強(qiáng)調(diào)的核心功能都是RISC處理器早就實(shí)現(xiàn)了分區(qū)(Partition)功能,即基于該技術(shù)平臺實(shí)現(xiàn)在獨(dú)立分區(qū)中高效運(yùn)行多個(gè)操作系統(tǒng)和應(yīng)用程序,使一個(gè)計(jì)算機(jī)系統(tǒng)像多個(gè)虛擬系統(tǒng)一樣運(yùn)行。除了基于VMM的硬件抽象層的虛擬機(jī)技術(shù),還有一種基于軟件模擬指令集方式實(shí)現(xiàn)的所謂ISA(InstructionSetArchitecture)層虛擬機(jī)系統(tǒng)。一個(gè)典型的計(jì)算機(jī)系統(tǒng)由處理器、內(nèi)存、總線、硬盤控制器、時(shí)鐘、各種I/O設(shè)備組成。ISA層的虛擬化軟件的實(shí)現(xiàn)方式是截獲客戶操作系統(tǒng)發(fā)出的指令,并把它們“翻譯”成宿主平臺上的可用指令進(jìn)行執(zhí)行(包括處理器內(nèi)部指令和I/O指令)。由于這種指令的模擬方式,ISA層的虛擬化技術(shù)可以完全模擬一臺真實(shí)機(jī)器,這種實(shí)現(xiàn)方式的好處在于,分離了操作系統(tǒng)和硬件平臺的緊綁定關(guān)系。這方面具有代表性的系統(tǒng)有很多。Bochse]是用C++語言編寫的開源的x86平臺的PC模擬器,可以方便地在多種平臺上模擬IA32PC系統(tǒng)。它能夠模擬多種版本的x86系統(tǒng),如386、486、Pentium、PentiumPro、SSE、SSE2等指令。Bochs解釋客戶系統(tǒng)從開機(jī)到關(guān)機(jī)的全部指令,模擬了Intelx86CPU、BIOS以及PC設(shè)備。因此,在客戶操作系統(tǒng)看來,就好像是運(yùn)行在一臺真實(shí)的機(jī)器上一樣。雖然Bochs系統(tǒng)的性能問題,使其很難有廣泛的應(yīng)用,但它也在某些方面有著重要的應(yīng)用價(jià)值,如在非x86平臺上運(yùn)行Windows系統(tǒng),進(jìn)行新開發(fā)的操作系統(tǒng)的debug工作,進(jìn)行老式x86系統(tǒng)的兼容性測試等。QEMU[34]是一個(gè)采用動態(tài)指令轉(zhuǎn)換技術(shù)的快速的模擬器,它支持兩種工作模式:用戶空間模擬和全系統(tǒng)模擬。在用戶空間模式下,QEMU可以在物理CPU上執(zhí)行為其他CPU編譯的程序。在全系統(tǒng)模擬的模式下,它支持模擬x86、ARM、PowerPC、Sparc等結(jié)構(gòu)。它可以快速地把客戶操作系統(tǒng)的指令動態(tài)地翻譯成本地指令進(jìn)行執(zhí)行。QEMU進(jìn)行動態(tài)指令轉(zhuǎn)換的基本思想是把每條指令分解成少量的簡單指令。每條簡單指令由一段C代碼實(shí)現(xiàn),通過動態(tài)代碼生成器把這些簡單指令的目標(biāo)文件連接起來,構(gòu)建指定的功能。與基于VMM的硬件抽象層虛擬機(jī)不同,ISA層的虛擬機(jī)技術(shù)模擬運(yùn)行所有客戶操作系統(tǒng)執(zhí)行的處理器指令。因此,這種虛擬機(jī)技術(shù)最大的不足就是性能問題,它的性能遠(yuǎn)遠(yuǎn)低于硬件抽象層的虛擬機(jī),所以主要應(yīng)用于動態(tài)指令轉(zhuǎn)換等研究領(lǐng)域。硬件抽象層的虛擬化技術(shù)有著高度的客戶虛擬系統(tǒng)的隔離性(包括客戶操作系統(tǒng)之間,客戶操作系統(tǒng)和宿主操作系統(tǒng)之間)。這種隔離性使得在同一個(gè)物理平臺上,可以同時(shí)運(yùn)行不同類型的操作系統(tǒng),而且它們的重啟等操作不會互相影響。在用戶看來,隔離性使得物理平臺被劃分成不同虛擬機(jī)器。由于用戶面對的是虛擬機(jī)器,用戶需要更多的系統(tǒng)安裝和配置工作。操作系統(tǒng)層虛擬機(jī)技術(shù)一個(gè)典型的應(yīng)用程序運(yùn)行環(huán)境包括:操作系統(tǒng)、用戶函數(shù)庫、文件系統(tǒng)、環(huán)境設(shè)置等。如果一個(gè)運(yùn)行環(huán)境包含了所有這些關(guān)鍵組件,應(yīng)用程序自身是無法區(qū)分是運(yùn)行在物理系統(tǒng)內(nèi),還是運(yùn)行在虛擬系統(tǒng)中。操作系統(tǒng)層虛擬化技術(shù)的主要思想就在于此,即在宿主操作系統(tǒng)上動態(tài)復(fù)制軟件運(yùn)行環(huán)境,以此來創(chuàng)建多個(gè)虛擬系統(tǒng)。Jail[1,2]是FreeBSD上的操作系統(tǒng)層虛擬機(jī)技術(shù)。它把操作系統(tǒng)劃分成多個(gè)獨(dú)立的環(huán)境,稱之為Jail。每個(gè)Jail都可以獨(dú)立管理典型的操作系統(tǒng)資源,如進(jìn)程、文件系統(tǒng)、網(wǎng)絡(luò)資源等。而用戶對資源的訪問范圍則被限制在該用戶所在Jail的內(nèi)部。Jail是通過Jail系統(tǒng)調(diào)用創(chuàng)建的,Jail內(nèi)的第一個(gè)進(jìn)程的所有子進(jìn)程都屬于該Jail,任何一個(gè)進(jìn)程不能同時(shí)屬于多個(gè)Jail。Jail虛擬化技術(shù)在隔離應(yīng)用程序方面有一定的應(yīng)用價(jià)值。Solaris操作系統(tǒng)提供的區(qū)域(Zone)技術(shù)34]也采用了類似的機(jī)制。區(qū)域是指在Solaris操作系統(tǒng)的單個(gè)實(shí)例中創(chuàng)建的一個(gè)虛擬的操作系統(tǒng)環(huán)境,是一種用于虛擬化操作系統(tǒng)服務(wù)的分區(qū)技術(shù),目的是提供安全的隔離環(huán)境以便承載和運(yùn)行各種應(yīng)用程序。區(qū)域有兩種類型:全局區(qū)域(globalzone)和非全局區(qū)域(non-globalzone)。通過系統(tǒng)硬件引導(dǎo)的Solaris安裝過程所安裝的即是全局區(qū)域,一個(gè)系統(tǒng)中只能運(yùn)行一個(gè)全局區(qū)域。全局區(qū)域管理員可使用zonecfg和zoneadm來創(chuàng)建非全局區(qū)域。全局區(qū)域控制所有非全局區(qū)域的安裝、維護(hù)、操作和損毀。Solaris區(qū)域功能可為在非全局區(qū)域中運(yùn)行的進(jìn)程提供虛擬服務(wù)和名稱空間隔離。它可以將在某個(gè)非全局區(qū)域中運(yùn)行的進(jìn)程與在其他區(qū)域中運(yùn)行的進(jìn)程隔離開,這種隔離可防止在某個(gè)非全局區(qū)域中運(yùn)行的進(jìn)程監(jiān)視或影響在其他區(qū)域中運(yùn)行的進(jìn)程。對于在非全局區(qū)域中運(yùn)行的進(jìn)程,即使具有超級用戶權(quán)限也不能查看或影

溫馨提示

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

最新文檔

評論

0/150

提交評論