專利名稱:分布式i/o資源虛擬化技術(shù)的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及計(jì)算機(jī)虛擬化技術(shù)中的i/o虛擬化領(lǐng)域。主要采用最新的硬 件和軟件相結(jié)合的虛擬化技術(shù),將分布于多主機(jī)的i/o資源進(jìn)行虛擬化和整合,
為上層客戶操作系統(tǒng)構(gòu)建一個全局虛擬I/0空間,實(shí)現(xiàn)客戶操作系統(tǒng)對分布式1/0
資源的全局管理和使用。屬于計(jì)算機(jī)技術(shù)領(lǐng)域。
背景技術(shù):
虛擬化的關(guān)鍵問題是如何處理客戶(Guest)操作系統(tǒng)中的敏感指令。不同的虛 擬化方法采取不同的處理方式,目前廣泛研究和使用的有三種方法-
全虛擬化(Full-Virtualization)方法該方法提供了物理硬件的完整模擬, 采用軟件模擬技術(shù)處理敏感指令,在虛擬層中完整地構(gòu)造一個和物理硬件相當(dāng)?shù)?環(huán)境,Guest操作系統(tǒng)可以不加任何修改地運(yùn)行于虛擬環(huán)境中。該方法的優(yōu)點(diǎn)是 很明顯的,即Guest操作系統(tǒng)可以不加任何修改地在虛擬機(jī)上直接運(yùn)行,同時也 具有很好的靈活性和擴(kuò)展性。然而這種技術(shù)的缺陷也很明顯,最大的問題就是每 條特權(quán)指令的執(zhí)行都要引起用戶模式與特權(quán)模式的切換,導(dǎo)致虛擬機(jī)的運(yùn)行效率 很低。典型的服務(wù)器虛擬化系統(tǒng)VMwareESXServer和IBM system/370都采用了 全虛擬化方法。
半虛擬化(Para-Vi加alization)方法該方法通過修改Guest源代碼中涉及 到的敏感指令,用超級調(diào)用(hypercall)來代替特權(quán)指令,讓盡可能多的指令直 接運(yùn)行在物理處理器上。典型的服務(wù)器虛擬化系統(tǒng)XEN成功地使用了部分虛擬化 方法。Xen通過用超級調(diào)用來"包裝"多條特權(quán)指令的執(zhí)行,Guest操作系統(tǒng)通 過超級調(diào)用讓VMM執(zhí)行特權(quán)指令,這樣就可以減少模式切換,提高執(zhí)行效率。 這個方法的效率可達(dá)到非虛擬化的常規(guī)執(zhí)行效率的90%以上,但是,為之付出的 代價也很大,需對Guest操作系統(tǒng)代碼進(jìn)行相當(dāng)大范圍的修改,移植成本較高, 而且隨著Guest操作系統(tǒng)的升級,其維護(hù)成本也很高。此外,將新處理器特性集 成到hypervisor API的代價也比完全虛擬化方法要大得多。
預(yù)虛擬化(Pre-Virtualization)方法德國Karlsruhe大學(xué)、澳大利亞新南威
3爾士大學(xué)和IBM共同提出了預(yù)虛擬化方法。這是一種提供工具支持的半自動 Guest系統(tǒng)構(gòu)造方法,利用匯編器的支持,對Guest系統(tǒng)的代碼進(jìn)行掃描,將其 中的部分特權(quán)指令進(jìn)行靜態(tài)替換,對無法靜態(tài)處理的指令采用profile方法動態(tài) 地尋找并手工替換。這個方法的指導(dǎo)思想是采用編譯工具支持,盡可能地增加可 以直接執(zhí)行的指令,減少需要模擬的指令。采用這個方法基于微內(nèi)核操作系統(tǒng) L4或者開源Linux構(gòu)造虛擬機(jī),可以運(yùn)行經(jīng)過靜態(tài)翻譯和人工修改的Linux Guest OS,其運(yùn)行效率也可達(dá)到非虛擬化的常規(guī)執(zhí)行效率的90%以上。該方法中 Guest代碼需要人工干預(yù)的匯編級半自動掃描和替換修改,也就是說依然需要獲 得源代碼,至少是匯編代碼。
近年來服務(wù)器取得了巨大的發(fā)展,從服務(wù)器體系結(jié)構(gòu)的角度來看,商用服務(wù) 器呈現(xiàn)出兩個主流的發(fā)展方向,艮Pscale-up (向上擴(kuò)展)和scale-out (向外擴(kuò)展)。 所謂scale-up,通常是指將多個處理器和存儲器等系統(tǒng)資源緊密耦合在單個服務(wù) 器中,對其整體系統(tǒng)能力的擴(kuò)展是通過在單個服務(wù)器中增加處理器和內(nèi)存等資源 來實(shí)現(xiàn)。scale-up系統(tǒng)一般具有較大的共享內(nèi)存空間、緊密耦合的內(nèi)部連接等基 本特征,適于支持具有多個依賴性線程或進(jìn)程的應(yīng)用,如數(shù)據(jù)庫應(yīng)用等。代表性 的體系結(jié)構(gòu)包括SMP (Symmetric Multiprocessor) 、 NUMA(Non UniformMemory Access Architecture)及CC-NUMA(Coherent-CacheNUMA)等,典型的產(chǎn)品包括 IBM的p系列服務(wù)器、HP的Superdome系列服務(wù)器以及SUN的Fire E20K/E25K系列服務(wù)器等。 一般來說,scale-up系統(tǒng)可提供較高的性能和整機(jī) 效率、簡單易用的編程模型以及單一系統(tǒng)映像,具有較高的可編程性,易于管理 和維護(hù),但存在成本偏高、可擴(kuò)展性有限等缺點(diǎn)。
所謂scale-out,通常是指將多臺小規(guī)模的中低端服務(wù)器松散連接成一個服務(wù) 器系統(tǒng),對其整體系統(tǒng)能力的擴(kuò)展是通過在系統(tǒng)中增加相同或類似配置的中低端 服務(wù)器結(jié)點(diǎn)來實(shí)現(xiàn)。Scale-out系統(tǒng)一般具有分布的非共享內(nèi)存空間、松散耦合 的外部連接等基本特征,適于支持具有多個非依賴性線程或進(jìn)程的應(yīng)用,如Web 應(yīng)用等。代表性的體系結(jié)構(gòu)包括Cluster (機(jī)群)、MPP (Massively ParallelProcessing)等,典型的產(chǎn)品主要是以低端X86服務(wù)器為結(jié)點(diǎn),通過以太 網(wǎng)或Infiniband等商用網(wǎng)絡(luò)互連而成的機(jī)群服務(wù)器,如IBM的Cluster1350、深騰 6800及天梭10K/20K等。 一般來說,scale-out系統(tǒng)具有實(shí)現(xiàn)成本低、可擴(kuò)展性 好等優(yōu)勢,但不支持單一系統(tǒng)映像,存在整機(jī)應(yīng)用效率偏低、編程相對復(fù)雜、管 理和維護(hù)成本較高等問題。
目前,從服務(wù)器體系結(jié)構(gòu)的角度來看,服務(wù)器I/0虛擬化技術(shù)的發(fā)展也是基 于scale-up和scale-out這兩種趨勢,同時虛擬化技術(shù)目前是通過兩個方向來幫助服 務(wù)器更加合理地分配資源 一個方向是"分",即把一個物理的服務(wù)器虛擬成若干個獨(dú)立的邏輯服務(wù)器;另一個方向是"合",就是把若干個分散的物理服務(wù)器虛擬 為一個大的邏輯服務(wù)器。
VMware和Xen分別采用全虛擬化(Full-Virtualization)和半虛擬化 (Para-Virtualization)技術(shù)。全虛擬化是在虛擬層中采用軟件完全模擬物理1/0 設(shè)備,但對每條特權(quán)指令的執(zhí)行都會引起用戶模式和特權(quán)模式的切換,導(dǎo)致1/0 訪問效率低下。半虛擬化通過修改Guest源代碼,用超級調(diào)用(hypercall)來代 替特權(quán)指令,讓盡可能多的指令直接運(yùn)行在處理器上。這種方式雖然提高了1/0 訪問的效率,但卻需要對Guest操作系統(tǒng)代碼進(jìn)行大范圍修改。VMware和Xen均 是虛擬單個物理I/0設(shè)備成多個邏輯I/0設(shè)備,與本論文的方向不同,但其為客戶 操作系統(tǒng)提供虛擬I/0設(shè)備信息的方式可以借鑒。同時,近期在Xen模型下進(jìn)行直 接I/0訪問的研究也比較多,雖處于理論研究階段,本論文也可以借鑒。
Virtual Multiprocessor項(xiàng)目是東京大學(xué)開發(fā)的基于IA-32機(jī)群的分布式 VMM, Virtual Multiprocessor采用了半虛擬化的技術(shù),通過對客戶操作系統(tǒng)的修 改使其與Virtual Multiprocessor協(xié)作完成任務(wù)。Virtual Multiprocessor運(yùn)行于用戶 態(tài),客戶操作系統(tǒng)的I/O設(shè)備均以文件的形式存放在宿主操作系統(tǒng)中。若要對物 理I/0設(shè)備進(jìn)行訪問,則需要執(zhí)行宿主操作系統(tǒng)的系統(tǒng)調(diào)用,因而效率低下。整 個項(xiàng)目仍處于實(shí)驗(yàn)室階段。
vNUMA項(xiàng)目vNUMA是澳大利亞新南威爾士大學(xué)開發(fā)的基于IA-64機(jī)群的 分布式VMM,其直接運(yùn)行于硬件層之上??蛻舨僮飨到y(tǒng)(Linux)通過半虛擬化的 方式與vNUMA協(xié)作。vNUMA的主要目標(biāo)在于提供透明的分布式共享存儲用于 科學(xué)計(jì)算。vNUMA只能對啟動節(jié)點(diǎn)進(jìn)行I/0操作,大大限制了其對大量I/0資 源的利用率,使得整個系統(tǒng)I/0能力低下。目前仍處于實(shí)驗(yàn)室階段。
硬件虛擬化技術(shù)隨著虛擬化技術(shù)研究的蓬勃興起和虛擬機(jī)應(yīng)用快速普及, 為了占領(lǐng)此技術(shù)領(lǐng)域的優(yōu)勢地位,兩大處理器廠商Intel和AMD針對IA-32體系 架構(gòu)的處理器進(jìn)行了擴(kuò)展,從硬件上支持虛擬化技術(shù)。Intel針對IA-32架構(gòu)的硬 件虛擬化技術(shù)稱為VT-x (Virtual Technology), AMD針對IA-32架構(gòu)的硬件虛擬 化技術(shù)稱為SVC (Safe Virtual Machine)。
以Intel的VT-x為例,它對IA32體系結(jié)構(gòu)進(jìn)行了如下擴(kuò)展。
1、 增加了一種新的處理器工作模式,稱為VMX (Virtual Machine Extensions) 模式,用于運(yùn)行虛擬機(jī)系統(tǒng)。其中又分為兩個子操作模式,即VMX根(root) 操作模式和VMX非根(not root)操作模式,VMX根操作模式用于運(yùn)行VMM, VMX非根操作模式用于運(yùn)行虛擬機(jī)VM,這兩種模式都能夠支持四個特權(quán)級
(ring0-ring3)。
2、 定義了兩種模式切換。由根模式進(jìn)入非根模式的切換,稱為VM entry由非根模式進(jìn)入根模式的切換,稱為VMexit。
3、 增加一個控制結(jié)構(gòu)VMCS (Virtual Machine Control Structure),用于保存 根模式和非根模式的上下文、控制虛擬機(jī)運(yùn)行的相關(guān)信息以及控制VM entry和 VMexit過程的相關(guān)信息。
4、 增加IO條用于控制虛擬機(jī)的新指令。
通過配置VMCS可以實(shí)現(xiàn)所需的虛擬化策略,使得客戶軟件在執(zhí)行敏感指令 或發(fā)生異常時能夠切換到虛擬機(jī)監(jiān)控器VMM,由VMM根據(jù)退出原因相應(yīng)地做 出處理。
在VT-x技術(shù)支持下,可以簡化VMM的設(shè)計(jì),可以在不使用二進(jìn)制動態(tài)翻 譯技術(shù)的情況下,實(shí)現(xiàn)全虛擬化,即客戶操作系統(tǒng)和應(yīng)用軟件可以不經(jīng)修改地運(yùn) 行于虛擬機(jī)中。
發(fā)明內(nèi)容
1目的
本發(fā)明的目的是提供一種分布式I/0資源虛擬化技術(shù)的實(shí)現(xiàn)方法,它是針對 近年來大規(guī)模計(jì)算機(jī)系統(tǒng)I/0資源管理復(fù)雜,使用效率低等局限因素,提出一種 有效管理和使用分布式I/O資源的方法。
2技術(shù)方案
本發(fā)明一種分布式I/0資源虛擬化技術(shù)的實(shí)現(xiàn)方法,其技術(shù)方案如下 分布式I/0資源虛擬化技術(shù)實(shí)現(xiàn)的是分布式虛擬機(jī)監(jiān)控(Distributed Virtual Machine Monitor)(簡稱DVMM)的一個子模塊。DVMM的整體邏輯視圖如圖l 所示,DVMM直接運(yùn)行于向外擴(kuò)展(scale-out)架構(gòu)的硬件之上,為上層客戶操 作系統(tǒng)呈現(xiàn)具有向外擴(kuò)展(scale-up)架構(gòu)特性的虛擬機(jī)。DVMM的模塊結(jié)構(gòu)圖 如圖2所示,DVMM的結(jié)構(gòu)圖如圖2所示,圖中以兩個節(jié)點(diǎn)為例。DVMM主要包 括如下模塊初始化模塊,eBIOS模塊,指令集虛擬化模塊,1/0虛擬化模塊,中 斷虛擬化模塊,內(nèi)存虛擬化模塊和通信模塊。
.本發(fā)明主要實(shí)現(xiàn)DVMM中的I/0虛擬化模塊。1/0虛擬化模塊通過I/0虛擬化 技術(shù),實(shí)現(xiàn)分布式I/0資源的整合,為客戶操作系統(tǒng)提供全局的虛擬I/0環(huán)境。同 時客戶操作系統(tǒng)不需要做任何修改。
下面介紹分布式I/0資源虛擬化技術(shù)的具體實(shí)現(xiàn)方法,以后簡稱分布式I/0資 源虛擬化技術(shù)為系統(tǒng)。系統(tǒng)的實(shí)現(xiàn)用到了DVMM其他模塊的輔助,包括分布式共享內(nèi)存(DSM)技術(shù)、DVMM的通信模塊和VT-x技術(shù)。DSM是DVMM的內(nèi)存 虛擬化模塊實(shí)現(xiàn)的技術(shù),通信模塊是建立在裸機(jī)之上的跨物理節(jié)點(diǎn)的通信機(jī)制, VT-x技術(shù)是指令集虛擬化模塊的所應(yīng)用的技術(shù),具體請見Intel技術(shù)手冊。
系統(tǒng)的邏輯示意圖如圖3所示,圖中以兩個物理節(jié)點(diǎn)為例。系統(tǒng)中各個物理 節(jié)點(diǎn)機(jī)在邏輯上存在主次之分,圖3中左側(cè)為主節(jié)點(diǎn),右側(cè)為從節(jié)點(diǎn),主節(jié)點(diǎn)提 供虛擬的I/0設(shè)備模型,I/0設(shè)備模型用欽件模擬I/0設(shè)備資源呈現(xiàn)給上層客戶操作 系統(tǒng),同時通過設(shè)備驅(qū)動訪問主節(jié)點(diǎn)的物理I/0設(shè)備。系統(tǒng)在各個節(jié)點(diǎn)的實(shí)現(xiàn)架 構(gòu)完全相同,僅是邏輯上存在主次之分,故系統(tǒng)可任選一物理節(jié)點(diǎn)設(shè)為主節(jié)點(diǎn), 其它節(jié)點(diǎn)為從節(jié)點(diǎn)。
在客戶操作系統(tǒng)運(yùn)行過程中,當(dāng)客戶操作系統(tǒng)在主節(jié)點(diǎn)執(zhí)行I/0指令時,直 接訪問主節(jié)點(diǎn)的I/0設(shè)備模型,當(dāng)戶操作系統(tǒng)在從節(jié)點(diǎn)執(zhí)行I/0指令時,需要跨 節(jié)點(diǎn)訪問主節(jié)點(diǎn)的I/O設(shè)備模型。DSM技術(shù)掌控系統(tǒng)所有的訪存過程,根據(jù)這 種需求系統(tǒng)將對I/O設(shè)備的訪問分為以下三種指令
(1) 非訪存類I/0指令即IN, OUT這兩種基于I/0端口訪問的非字符串 I/O指令,不需要訪存。通過DVMM通信模塊將指令發(fā)送到主節(jié)點(diǎn)執(zhí)行并返回 結(jié)果這種方式實(shí)現(xiàn)。
(2) 訪存類I/O指令即INS, OUTS這兩種字符串I/O指令,以及對MMIO 進(jìn)行訪問的需要訪問物理內(nèi)存的匯編指令。通過DVMM的DSM模塊和通信模 塊輔助實(shí)現(xiàn)。
G)DMA指令DMA控制指令是非字符串I/0指令,DMA指令執(zhí)行時存 在大量的訪存操作。故通過DVMM的DSM模塊和通信模塊輔助實(shí)現(xiàn)。 2.1分布式I/0資源虛擬化技術(shù) 本節(jié)介紹系統(tǒng)的具體實(shí)現(xiàn)結(jié)構(gòu)。圖4以兩個物理節(jié)點(diǎn)為例介紹系統(tǒng)的整體實(shí) 現(xiàn)結(jié)構(gòu)。
如圖4所示,左側(cè)為主節(jié)點(diǎn),右側(cè)為從節(jié)點(diǎn)。主從節(jié)點(diǎn)的模塊構(gòu)件完全一樣, 只是執(zhí)行的具體流程不同。當(dāng)客戶操作系統(tǒng)的設(shè)備驅(qū)動程序在主節(jié)點(diǎn)引起虛擬機(jī) 退出后,處理器進(jìn)入根模式,虛擬機(jī)退出模塊保存虛擬機(jī)退出時的CPU狀態(tài)信 息,然后進(jìn)行指令解析,將解析后的I/0操作指令信息保存在I/0請求(ioreq) 數(shù)據(jù)結(jié)構(gòu)中。然后將ioreq直接交給主節(jié)點(diǎn)的I/O設(shè)備模型模塊,主節(jié)點(diǎn)的I/O 設(shè)備模型模塊根據(jù)ioreq中的信息對這個I/O指令進(jìn)行模擬執(zhí)行,并且將指令返 回的信息保存在ioreq結(jié)構(gòu)中,然后虛擬機(jī)進(jìn)入模塊將ioreq結(jié)構(gòu)中的信息更新 到虛擬機(jī)退出時的CPU狀態(tài)信息中,隨后進(jìn)入虛擬機(jī),處理器進(jìn)入非根模式, 客戶操作系統(tǒng)繼續(xù)運(yùn)行。
當(dāng)客戶操作系統(tǒng)在從節(jié)點(diǎn)引起虛擬機(jī)退出后,I/O虛擬化模塊將此I/O指令分成三類分別進(jìn)行處理非訪存類I/O指令,訪存類I/O指令,DMA指令。后面 將會講到從節(jié)點(diǎn)處理這三類I/O指令的具體實(shí)現(xiàn)方式。 以下部分是各個子模塊的功能說明
(1) 虛擬機(jī)退出
當(dāng)客戶操作系統(tǒng)執(zhí)行VT-x所定義的特權(quán)指令時,會引起VT-x陷入,處理器 從非根模式進(jìn)入根模式。對于I/O虛擬化模塊,這些特權(quán)指令包括所有的對I/O 設(shè)備的訪問指令。PIO指令通過設(shè)置VT-x的捕獲指令條件來完成,MMIO訪問 指令通過影子頁表機(jī)制引發(fā)缺頁來進(jìn)入根模式。VMCS結(jié)構(gòu)會保存根操作和非根 操作的上下文、控制虛擬機(jī)運(yùn)行的信息以及控制VM entry和VM exit的信息。 但這時需要對VM的cpu通用寄存器狀態(tài)信息進(jìn)行保存。虛擬機(jī)退出模塊就是保 存cpu通用寄存器狀態(tài)信息到特定數(shù)據(jù)結(jié)構(gòu)中。
(2) 虛擬機(jī)進(jìn)入
虛擬機(jī)進(jìn)入是虛擬機(jī)退出的一個相反過程,處理器從根模式返回到非根模式 時,需要將根模式運(yùn)行中對cpu通用寄存器狀態(tài)信息進(jìn)行的拷貝回客戶操作系統(tǒng) 中。具體實(shí)現(xiàn)與虛擬機(jī)退出模塊相同。
(3) 指令解析
指令解析模塊根據(jù)VT-x中虛擬機(jī)退出時所保存的VMCS結(jié)構(gòu)和保存的cpu 通用寄存器狀態(tài)信息。從中讀取此次I/0操作指令的相關(guān)標(biāo)志位,對此I/0指令 進(jìn)行解析,并保存在ioreq數(shù)據(jù)結(jié)構(gòu)中。ioreq結(jié)構(gòu)包含一條I/O指令的基本信息, 具體結(jié)構(gòu)與XEN3.2.0中ioreq數(shù)據(jù)結(jié)構(gòu)相同。
(4) 判斷主節(jié)點(diǎn)
主節(jié)點(diǎn)和從節(jié)點(diǎn)DVMM 1/0虛擬化模塊的結(jié)構(gòu)完全相同,僅是處理某些I/0 指令的執(zhí)行過程不同,故需要判斷節(jié)點(diǎn)是否為主節(jié)點(diǎn),從而采取不同的處理方式 來處理I/0指令。
判斷主節(jié)點(diǎn)是依據(jù)DVMM系統(tǒng)中eBIOS模塊在客戶操作系統(tǒng)啟動時提供的 全局資源表來完成的。
(5) 1/0設(shè)備模型
I/O設(shè)備模型模塊是用軟件完全模擬真實(shí)的物理設(shè)備,本系統(tǒng)中僅模擬一些最 基本的I/0設(shè)備,這包括BIOS, ACPI, APIC,硬盤,顯示器,鼠標(biāo),鍵盤, DMA控制器等設(shè)備??蛻舨僮飨到y(tǒng)可以向?qū)φ鎸?shí)物理設(shè)備訪問那樣訪問這些虛 擬設(shè)備??蛻舨僮飨到y(tǒng)僅能訪問到這些虛擬設(shè)備。同時I/0設(shè)備模型模塊還通過 設(shè)備驅(qū)動完成虛擬設(shè)備到真實(shí)物理設(shè)備的訪問過程。這個模塊主要借鑒了 XEN 設(shè)備模型的實(shí)現(xiàn)技術(shù)。
下面介紹系統(tǒng)中三種I/O指令訪問模式的具體實(shí)現(xiàn)方式。2. 1.1非訪存類I/O指令訪問模式
非訪存類I/O指令即IN, OUT這兩種基于I/O端口訪問的I/O指令。對于從 節(jié)點(diǎn)發(fā)起的i/o端口訪問,論文采用指令傳輸、遠(yuǎn)程執(zhí)行、結(jié)果返回這種方式實(shí) 現(xiàn)從節(jié)點(diǎn)對主節(jié)點(diǎn)虛擬設(shè)備I/O端口的訪問。
以兩個物理節(jié)點(diǎn)系統(tǒng)為例,非訪存類I/O指令訪問模式實(shí)現(xiàn)方案如圖5所示
如上圖所示,左側(cè)為主節(jié)點(diǎn),右側(cè)為從節(jié)點(diǎn),從節(jié)點(diǎn)為請求節(jié)點(diǎn)。當(dāng)客戶操 作系統(tǒng)引起從節(jié)點(diǎn)虛擬機(jī)退出后,將此指令解析并保存到ioreq結(jié)構(gòu)中,然后調(diào) 用DVMM通信模塊將此ioreq結(jié)構(gòu)發(fā)送到主節(jié)點(diǎn)。同時置遠(yuǎn)程操作位。遠(yuǎn)程操 作位的作用是,如果從節(jié)點(diǎn)未從主節(jié)點(diǎn)接收到此處理后ioreq結(jié)構(gòu),則從節(jié)點(diǎn)此 次I/0操作不能完成,虛擬機(jī)不能進(jìn)入。
主節(jié)點(diǎn)運(yùn)行一個跨節(jié)點(diǎn)I/O請求服務(wù)例程,這個例程處理來自于各個從節(jié)點(diǎn) 的ioreq請求,并對不同的ioreq請求采取不同的處理措施,如非訪存類I/O指令 的ioreq請求和DMA的ioreq請求。
對于非訪存類I/O指令的ioreq,主節(jié)點(diǎn)處理非訪存ioreq程序?qū)Υ薸oreq進(jìn)行 模擬執(zhí)行,即對I/0設(shè)備模型中虛擬設(shè)備I/0端口進(jìn)行訪問操作。將返回的數(shù)據(jù) 寫到ioreq結(jié)構(gòu)中,同時將此ioreq結(jié)構(gòu)發(fā)回請求節(jié)點(diǎn)。
請求節(jié)點(diǎn)接受到此ioreq結(jié)構(gòu)后,將此ioreq結(jié)構(gòu)中客戶操作系統(tǒng)需要的信息 寫到CPU狀態(tài)信息保存結(jié)構(gòu)中,然后引起虛擬機(jī)進(jìn)入。此次從節(jié)點(diǎn)發(fā)起的非訪 存類I/0指令就執(zhí)行完成。
2丄2訪存類I/O指令訪問模式
訪存類I/O指令即INS, OUTS這兩種字符串I/O指令,以及以MMIO方 式進(jìn)行訪問時需要訪問MMIO物理內(nèi)存的匯編指令。
因?yàn)橄到y(tǒng)中所有對于內(nèi)存的訪問均由DSM統(tǒng)籌處理,所以訪存類I/O指令執(zhí) 行時必須經(jīng)過DSM。圖6為從節(jié)點(diǎn)發(fā)起的一個訪存類I/O指令的執(zhí)行過程
如圖6所示,當(dāng)客戶操作系統(tǒng)引起從節(jié)點(diǎn)虛擬機(jī)退出后,解析此訪存類I/O 指令。發(fā)送DSM請求,此請求主要是讓DSM將所要訪問的頁面定住(pin), 防止DSM將此頁面遷往其他節(jié)點(diǎn),或者其他節(jié)點(diǎn)的程序訪問此頁面。
當(dāng)DSM模塊pin住此頁面之后,處理訪存ioreq模塊會執(zhí)行此訪存I/O指令, 訪問I/O設(shè)備模型的虛擬設(shè)備I/O內(nèi)存,同樣將對cpu狀態(tài)信息的修改保存在ioreq 結(jié)構(gòu)中,然后請求DSM執(zhí)行unpin操作,解除對頁面的pin。隨后將ioreq結(jié)構(gòu) 中的信息更新到CPU狀態(tài)信息保存結(jié)構(gòu)中,然后引起虛擬機(jī)進(jìn)入。這次訪存I/0 指令就執(zhí)行完畢。
DSM在pin和unpin頁面的過程中,有可能需要訪問的頁面不在本地,如圖 5所示,DSM需要pin的虛擬內(nèi)存的頁面在主節(jié)點(diǎn)物理內(nèi)存上。對于這種情況,DSM會調(diào)用DVMM通信模塊,將主節(jié)點(diǎn)物理內(nèi)存的目標(biāo)頁面拷貝到請求節(jié)點(diǎn) 物理內(nèi)存中,然后I/O設(shè)備模型就可以對此頁面進(jìn)行訪問了。這個過程是由DSM 完成的,論文實(shí)現(xiàn)模塊不需要關(guān)心這個過程,只需要調(diào)用DSM定義的接口就行。
因?yàn)閷τ诳绻?jié)點(diǎn)物理內(nèi)存的訪問等問題均由DSM解決,所以對于訪存類1/0 指令的執(zhí)行過程來說,主節(jié)點(diǎn)和從節(jié)點(diǎn)均一樣。
2丄3 DMA指令訪問模式I/O指令
本文所指的DMA指令主要是IDE硬盤的DMA指令。DMA控制指令也是非 字符串I/O指令,DMA執(zhí)行過程中需要大量訪存操作。圖7示意了從節(jié)點(diǎn)發(fā)起 的一個IDE DMA指令的執(zhí)行過程
如圖示從節(jié)點(diǎn)發(fā)起一個IDEDMA指令,主節(jié)點(diǎn)的跨節(jié)點(diǎn)I/0請求服務(wù)例程 接收到這個DMA ioreq之后,調(diào)用主節(jié)點(diǎn)處理DMA ioreq模塊進(jìn)行處理。然后 IDE DMA處理模塊被調(diào)用執(zhí)行。
IDE DMA處理模塊訪問I/O設(shè)備模型,將主節(jié)點(diǎn)物理IDE硬盤的目標(biāo)數(shù)據(jù)拷 貝到I/O設(shè)備模型的虛擬IDE硬盤DMA緩沖區(qū)中,然后將此緩沖區(qū)中的數(shù)據(jù)拷 貝到客戶操作系統(tǒng)運(yùn)行的虛擬內(nèi)存的目標(biāo)區(qū)域中。隨后發(fā)送此DMA ioreq發(fā)送 回請求節(jié)點(diǎn),更新CPU相關(guān)信息。隨后引起請求節(jié)點(diǎn)虛擬機(jī)進(jìn)入,結(jié)束此次跨 節(jié)點(diǎn)的IDE DMA指令操作。
IDE DMA處理模塊在將虛擬IDE硬盤DMA緩沖區(qū)中的數(shù)據(jù)拷貝到虛擬內(nèi)存 的過程中,需要請求DSM模塊pin住目標(biāo)虛擬內(nèi)存區(qū)域,此操作完成之后,同 樣需要unpin此虛擬內(nèi)存區(qū)域。
綜上所述,本發(fā)明一種分布式I/0資源虛擬化技術(shù)的實(shí)現(xiàn)方法,其具體步驟
如下-
步驟一實(shí)現(xiàn)分布式虛擬機(jī)監(jiān)視器系統(tǒng)DVMM中的I/0虛擬化模塊??傮w系統(tǒng)的 實(shí)現(xiàn)平臺是聯(lián)想萬全R510服務(wù)器,處理器為Xeon3230。
步驟二總體結(jié)構(gòu)中的基本功能模塊包括虛擬機(jī)退出,虛擬機(jī)進(jìn)入,指令解析, 判斷主節(jié)點(diǎn),I/O設(shè)備模型。這些模塊實(shí)現(xiàn)過程中用到的現(xiàn)有技術(shù)如VT-x, DSM, XEN虛擬化技術(shù);輔助技術(shù)為可以在裸機(jī)之上的跨物理節(jié)點(diǎn)的通信機(jī)制。 步驟三在以上基本功能模塊的基礎(chǔ)上實(shí)現(xiàn)三種基本的I/0訪問方式非訪存類 1/0指令,訪存類I/0指令,DMA指令。主要技術(shù)點(diǎn)在這三種訪問方式的跨節(jié)點(diǎn) 過程是怎么完成的。
步驟四三種基本的I/0指令訪問的跨節(jié)點(diǎn)實(shí)現(xiàn)方式 *非訪存類I/0指令主要技術(shù)步驟為請求節(jié)點(diǎn)將指令通過底層通信傳輸?shù)侥繕?biāo)節(jié)點(diǎn),然后在目
標(biāo)節(jié)點(diǎn)執(zhí)行指令,隨后將執(zhí)行結(jié)果返回給請求節(jié)點(diǎn)。 *訪存類I/0指令
主要技術(shù)步驟為解析訪存類I/0指令,分析出需要訪問的內(nèi)存地址,如果
此次訪存需要跨節(jié)點(diǎn),則調(diào)用DSM將需要訪問的內(nèi)存遷移到請求節(jié)點(diǎn),這
樣進(jìn)行節(jié)點(diǎn)內(nèi)部訪問 * DMA指令
主要技術(shù)步驟為對于DMA控制器的訪問指令為非訪存類I/0指令,請求
節(jié)點(diǎn)采用上述方法將指令傳輸?shù)侥繕?biāo)節(jié)點(diǎn)執(zhí)行并返回結(jié)果;控制指令給
DMA控制器發(fā)出內(nèi)存訪問操作命令,DMA控制器需要從設(shè)備向內(nèi)存寫大量 數(shù)據(jù),這個過程同樣需要調(diào)用DSM進(jìn)行內(nèi)存的操作,方式與上述訪存類1/0 指令相同。
本發(fā)明主要實(shí)現(xiàn)DVMM中的I/0虛擬化模塊。1/0虛擬化模塊通過I/0虛擬化 技術(shù),實(shí)現(xiàn)分布式I/0資源的整合,為客戶操作系統(tǒng)提供全局的虛擬I/0環(huán)境。同 時客戶操作系統(tǒng)不需要做任何修改。
3優(yōu)點(diǎn)與功效
有效的管理和利用大規(guī)模的計(jì)算機(jī)系統(tǒng)的I/O資源,可以提高系統(tǒng)的整體性 能,減少系統(tǒng)I/0資源浪費(fèi),同時減輕系統(tǒng)的運(yùn)行和維護(hù)成本,提高系統(tǒng)可用性。 本文所述分布式I/O資源訪問的方法,可以實(shí)現(xiàn)客戶操作系統(tǒng)對分布式I/O資源 對全局的、有效的管理和利用,同時探索一條未來服務(wù)器中I/0技術(shù)發(fā)展的可行 道路。
圖l整個系統(tǒng)結(jié)構(gòu)示意圖
圖2兩節(jié)點(diǎn)的DVMM模塊示意圖
圖3分布式I/0資源虛擬化邏輯示意圖
圖4分布式I/0資源虛擬化實(shí)現(xiàn)結(jié)構(gòu)示意圖
圖5非訪存類I/O指令訪問模式實(shí)現(xiàn)方案示意圖
圖6訪存類I/O指令訪問模式實(shí)現(xiàn)方案示意圖
圖7 DMA指令訪問模式實(shí)現(xiàn)方案示意圖具體實(shí)施例方式
見圖l、圖2、圖3、圖4、圖5、圖6、圖7所示,其具體實(shí)施步驟如下-步驟一實(shí)現(xiàn)分布式虛擬機(jī)監(jiān)視器系統(tǒng)DVMM中的I/0虛擬化模塊,總體系統(tǒng) 的實(shí)現(xiàn)平臺是聯(lián)想萬全R510服務(wù)器,處理器為Xeon3230。 步驟二總體結(jié)構(gòu)中的基本功能模塊包括虛擬機(jī)退出,虛擬機(jī)進(jìn)入,指令解析, 判斷主節(jié)點(diǎn),I/O設(shè)備模型。這些模塊實(shí)現(xiàn)過程中用到的現(xiàn)有技術(shù)如VT-x, DSM, XEN虛擬化技術(shù);輔助技術(shù)為可以在裸機(jī)之上的跨物理節(jié)點(diǎn)的通信機(jī)制。 步驟三在以上基本功能模塊的基礎(chǔ)上實(shí)現(xiàn)三種基本的I/0訪問方式非訪存類 1/0指令,訪存類I/0指令,DMA指令。主要技術(shù)點(diǎn)在這三種訪問方式的跨節(jié)點(diǎn) 過程是怎么完成的。
步驟四三種基本的I/0指令訪問的跨節(jié)點(diǎn)實(shí)現(xiàn)方式 *非訪存類I/0指令
主要技術(shù)步驟為請求節(jié)點(diǎn)將指令通過底層通信傳輸?shù)侥繕?biāo)節(jié)點(diǎn),然后在目
標(biāo)節(jié)點(diǎn)執(zhí)行指令,隨后將執(zhí)行結(jié)果返回給請求節(jié)點(diǎn)。 *訪存類I/0指令
主要技術(shù)步驟為解析訪存類I/0指令,分析出需要訪問的內(nèi)存地址,如果
此次訪存需要跨節(jié)點(diǎn),則調(diào)用DSM將需要訪問的內(nèi)存遷移到請求節(jié)點(diǎn),這
樣進(jìn)行節(jié)點(diǎn)內(nèi)部訪問 * DMA指令
主要技術(shù)步驟為對于DMA控制器的訪問指令為非訪存類I/0指令,請求 節(jié)點(diǎn)采用上述方法將指令傳輸?shù)侥繕?biāo)節(jié)點(diǎn)執(zhí)行并返回結(jié)果;控制指令給 DMA控制器發(fā)出內(nèi)存訪問操作命令,DMA控制器需要從設(shè)備向內(nèi)存寫大量 數(shù)據(jù),這個過程同樣需要調(diào)用DSM進(jìn)行內(nèi)存的操作,方式與上述訪存類1/0 指令相同。
權(quán)利要求
1. 一種分布式I/O資源虛擬化技術(shù)的實(shí)現(xiàn)方法,其特征在于該方法步驟如下步驟一實(shí)現(xiàn)分布式虛擬機(jī)監(jiān)視器系統(tǒng)DVMM中的I/O虛擬化模塊,總體系統(tǒng)的實(shí)現(xiàn)平臺是聯(lián)想萬全R510服務(wù)器,處理器為Xeon3230;步驟二總體結(jié)構(gòu)中的基本功能模塊包括虛擬機(jī)退出,虛擬機(jī)進(jìn)入,指令解析,判斷主節(jié)點(diǎn),I/O設(shè)備模型,這些模塊實(shí)現(xiàn)過程中用到的現(xiàn)有技術(shù)如VT-x,DSM,XEN虛擬化技術(shù);輔助技術(shù)為可以在裸機(jī)之上的跨物理節(jié)點(diǎn)的通信機(jī)制;步驟三在以上基本功能模塊的基礎(chǔ)上實(shí)現(xiàn)三種基本的I/O訪問方式非訪存類I/O指令,訪存類I/O指令,DMA指令,主要技術(shù)點(diǎn)在這三種訪問方式的跨節(jié)點(diǎn)過程是怎么完成的;步驟四三種基本的I/O指令訪問的跨節(jié)點(diǎn)實(shí)現(xiàn)方式;●非訪存類I/O指令主要技術(shù)步驟為請求節(jié)點(diǎn)將指令通過底層通信傳輸?shù)侥繕?biāo)節(jié)點(diǎn),然后在目標(biāo)節(jié)點(diǎn)執(zhí)行指令,隨后將執(zhí)行結(jié)果返回給請求節(jié)點(diǎn);●訪存類I/O指令主要技術(shù)步驟為解析訪存類I/O指令,分析出需要訪問的內(nèi)存地址,如果此次訪存需要跨節(jié)點(diǎn),則調(diào)用DSM將需要訪問的內(nèi)存遷移到請求節(jié)點(diǎn),這樣進(jìn)行節(jié)點(diǎn)內(nèi)部訪問;●DMA指令主要技術(shù)步驟為對于DMA控制器的訪問指令為非訪存類I/O指令,請求節(jié)點(diǎn)采用上述方法將指令傳輸?shù)侥繕?biāo)節(jié)點(diǎn)執(zhí)行并返回結(jié)果;控制指令給DMA控制器發(fā)出內(nèi)存訪問操作命令,DMA控制器需要從設(shè)備向內(nèi)存寫大量數(shù)據(jù),這個過程同樣需要調(diào)用DSM進(jìn)行內(nèi)存的操作,方式與上述訪存類I/O指令相同。
全文摘要
本發(fā)明是提供一種分布式I/O資源虛擬化技術(shù)的實(shí)現(xiàn)方法,它是針對近年來大規(guī)模計(jì)算機(jī)系統(tǒng)I/O資源管理復(fù)雜,使用效率低等局限因素,提出一種有效地管理和使用分布式I/O資源的方法。本發(fā)明的要點(diǎn)就是實(shí)現(xiàn)分布式虛擬機(jī)監(jiān)視器系統(tǒng)DVMM中的I/O虛擬化模塊,I/O虛擬化模塊通過I/O虛擬化技術(shù),對三種I/O指令訪問跨節(jié)點(diǎn)的實(shí)現(xiàn),從而實(shí)現(xiàn)了分布式I/O資源的整合,為客戶操作系統(tǒng)提供全局的虛擬I/O環(huán)境。本發(fā)明探索出一條未來服務(wù)器中I/O技術(shù)發(fā)展的可行道路。
文檔編號G06F13/10GK101425046SQ200810225089
公開日2009年5月6日 申請日期2008年10月28日 優(yōu)先權(quán)日2008年10月28日
發(fā)明者劉忠麟, 蕭 張, 彭近兵, 李響山, 簫 王, 祝明發(fā), 肖利民 申請人:北京航空航天大學(xué)