Xen虛擬化系統(tǒng)的全映射方法及裝置的制造方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及Xen虛擬化系統(tǒng)領(lǐng)域,特別是涉及一種Xen虛擬化系統(tǒng)的全映射方法及裝置?!?br>背景技術(shù):
】[0002]隨著硬件虛擬化技術(shù)的發(fā)展,中央處理器(CentralProcessingUnit,簡稱為CPU)虛擬化已經(jīng)比較成熟,不會成為虛擬化系統(tǒng)性能的瓶頸了。但是,對于輸入/輸出(Input/Output,簡稱為I/O)設(shè)備虛擬化來說,在很多場景下仍然是制約虛擬化系統(tǒng)性能的瓶頸。I/O設(shè)備虛擬化主要包括虛擬網(wǎng)絡(luò)設(shè)備和虛擬磁盤設(shè)備。[0003]研究表明,Xen虛擬化系統(tǒng)中域(Domain)之間的內(nèi)存映射是耗費(fèi)時間和資源較多的操作,而現(xiàn)有虛擬網(wǎng)絡(luò)設(shè)備和磁盤設(shè)備在工作過程中存在著大量的授權(quán)表操作及內(nèi)存映射,因此減少Domain間內(nèi)存映射次數(shù)可極大提高Xen虛擬化系統(tǒng)的性能。[0004]圖1是現(xiàn)有技術(shù)中Xen虛擬化系統(tǒng)中I/O虛擬化前后端交互的示意圖,因為虛擬網(wǎng)絡(luò)設(shè)備和磁盤設(shè)備在前后端進(jìn)行通信時具有類似的步驟,描述簡潔起見,下面只針對虛擬磁盤設(shè)備進(jìn)行介紹,如圖1所示:[0005]當(dāng)客戶操作系統(tǒng)(DomainU,簡稱為DomU)的文件系統(tǒng)中有1/0請求時,現(xiàn)有技術(shù)流程是:步驟1,前端驅(qū)動收到1/0請求;步驟2,首先分配授權(quán)表(granttable)的授權(quán)引用(grantreference);步驟3,DomU通過事件通道通知給宿主操作系統(tǒng)(Domain0,簡稱為DomO);步驟4,DomO從共享1/0環(huán)中取出前端設(shè)備發(fā)來的讀寫請求。然后對于每個段(segment),通過page_to_pfn、pfn_to_mfn將頁(page)轉(zhuǎn)換為物理頁框(MachineFrameNumber,以下簡稱mfn),取出一個空閑的授權(quán)引用,授權(quán)后端訪問該page。當(dāng)1/0請求完成后,刪除之前對該page的授權(quán)。步驟5,DomO后端收到1/0請求后,根據(jù)請求類型,映射(map)到DomO自己的內(nèi)存空間,然后根據(jù)請求建立b1請求,最后將b1請求提交給真實的物理設(shè)備進(jìn)行處理。其中,b1用來描述單一的1/0請求,它記錄了一次1/0操作所必需的相關(guān)信息,例如,用于1/0操作的數(shù)據(jù)緩存位置、1/0操作的塊設(shè)備起始扇區(qū)、是讀操作還是寫操作等等。在上述處理過程中,后端映射和解映射前端的共享頁面是一個非常消耗時間及資源的操作。因此,急需解決現(xiàn)有的Xen虛擬化系統(tǒng)中半虛擬化磁盤驅(qū)動和半虛擬化網(wǎng)絡(luò)驅(qū)動中Domain間內(nèi)存映射帶來的較大開銷,而導(dǎo)致的虛擬化系統(tǒng)性能不高的問題。[0006]鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明要解決的問題是提供一種虛擬網(wǎng)絡(luò)設(shè)備和磁盤設(shè)備的全映射的方法,以減少Domain間內(nèi)存映射的次數(shù),提高Xen虛擬化系統(tǒng)的性能?!?br/>發(fā)明內(nèi)容】[0007]鑒于現(xiàn)有技術(shù)中Xen虛擬化系統(tǒng)中半虛擬化磁盤驅(qū)動和半虛擬化網(wǎng)絡(luò)驅(qū)動中Domain間內(nèi)存映射帶來的較大開銷,而導(dǎo)致的虛擬化系統(tǒng)性能不高的問題,提出了本發(fā)明以便提供一種Xen虛擬化系統(tǒng)的全映射方法及裝置。[0008]本發(fā)明提供一種Xen虛擬化系統(tǒng)的全映射方法,包括:[0009]在宿主操作系統(tǒng)初始化時,建立物理頁框與宿主操作系統(tǒng)虛擬地址的對應(yīng)關(guān)系,將所有機(jī)器物理內(nèi)存地址映射到自己的虛擬地址空間;[0010]接收前端輸入/輸出請求,通過對應(yīng)關(guān)系獲取相應(yīng)物理頁框?qū)?yīng)的頁面,并進(jìn)行輸入/輸出請求提交。[0011]優(yōu)選地,在宿主操作系統(tǒng)初始化時,建立物理頁框與宿主操作系統(tǒng)虛擬地址的對應(yīng)關(guān)系,將所有機(jī)器物理內(nèi)存地址映射到自己的虛擬地址空間具體包括:[0012]在宿主操作系統(tǒng)初始化時,遍歷所有的內(nèi)存塊,對于隨機(jī)存取存儲器類型的內(nèi)存塊,將每個內(nèi)存塊的起始物理地址對應(yīng)的物理頁框和結(jié)束物理地址對應(yīng)的物理頁框保存在一個數(shù)組中,建立物理頁框物理頁框與宿主操作系統(tǒng)虛擬地址的對應(yīng)關(guān)系;[0013]將所有機(jī)器物理內(nèi)存地址映射到操作系統(tǒng)內(nèi)核的虛擬地址空間,更新映射需要的配置結(jié)構(gòu)。[0014]優(yōu)選地,接收前端輸入/輸出請求,通過對應(yīng)關(guān)系獲取相應(yīng)物理頁框?qū)?yīng)的頁面,并進(jìn)行輸入/輸出請求提交具體包括:[0015]當(dāng)客戶操作系統(tǒng)的文件系統(tǒng)中有輸入/輸出請求時,通過超級調(diào)用獲取段所在頁面的物理頁框,并將物理頁框放置到輸入/輸出共享環(huán)的seg結(jié)構(gòu)中;[0016]宿主操作系統(tǒng)前端驅(qū)動通過事件通道告知宿主操作系統(tǒng)后端由輸入/輸出請求到來;[0017]宿主操作系統(tǒng)后端取出存放在seg結(jié)構(gòu)中的物理頁框,根據(jù)對應(yīng)關(guān)系獲取物理頁框?qū)?yīng)的頁面,并進(jìn)行輸入/輸出請求提交。[0018]優(yōu)選地,通過超級調(diào)用獲取段所在頁面的mfn具體包括:[0019]在Xen中增加一個超級調(diào)用號,其中,Xen是一個開放源代碼虛擬機(jī)監(jiān)視器;[0020]客戶操作系統(tǒng)通過頁幀號獲取函數(shù)(page_to_pfn())調(diào)用獲取頁面的頁幀號(PageFrameNumber,簡稱為pfn),通過調(diào)用請求函數(shù)(HYPERVISOR_hvm_op())向Xen發(fā)起超級調(diào)用請求,并將頁面對應(yīng)的pfn發(fā)送給Xen;[0021]Xen根據(jù)超級調(diào)用請求,利用超級調(diào)用處理函數(shù)判斷是否調(diào)用超級調(diào)用號,在判斷為是的情況下,根據(jù)客戶操作系統(tǒng)發(fā)送的pfn,從客戶物理頁面到機(jī)器頁面的映射(PhysicalToMachine,簡稱為P2M)中獲取該pfn對應(yīng)的mfn,并將該mfn通過通知函數(shù)(copy_to_guest())通知客戶操作系統(tǒng)。[0022]優(yōu)選地,上述方法進(jìn)一步包括:[0023]在宿主操作系統(tǒng)和客戶操作系統(tǒng)中分別保存一個預(yù)定變量,在宿主操作系統(tǒng)和客戶操作系統(tǒng)中的預(yù)定變量均設(shè)置為采用全映射方式的情況下,確定采用全映射方式。[0024]本發(fā)明還提供了一種Xen虛擬化系統(tǒng)的全映射裝置,包括:[0025]對應(yīng)關(guān)系建立模塊,用于在宿主操作系統(tǒng)初始化時,建立物理頁框與宿主操作系統(tǒng)虛擬地址的對應(yīng)關(guān)系,將所有機(jī)器物理內(nèi)存地址映射到自己的虛擬地址空間;[0026]輸入/輸出請求處理模塊,用于接收前端輸入/輸出請求,通過對應(yīng)關(guān)系獲取相應(yīng)物理頁框?qū)?yīng)的頁面,并進(jìn)行輸入/輸出請求提交。[0027]優(yōu)選地,對應(yīng)關(guān)系建立模塊具體用于:[0028]在宿主操作系統(tǒng)初始化時,遍歷所有的內(nèi)存塊,對于隨機(jī)存取存儲器類型的內(nèi)存塊,將每個內(nèi)存塊的起始物理地址對應(yīng)的物理頁框和結(jié)束物理地址對應(yīng)的物理頁框保存在一個數(shù)組中,建立物理頁框物理頁框與宿主操作系統(tǒng)虛擬地址的對應(yīng)關(guān)系;[0029]將所有機(jī)器物理內(nèi)存地址映射到操作系統(tǒng)內(nèi)核的虛擬地址空間,更新映射需要的配置結(jié)構(gòu)。[0030]優(yōu)選地,輸入/輸出請求處理模塊具體用于:[0031]當(dāng)客戶操作系統(tǒng)的文件系統(tǒng)中有輸入/輸出請求時,通過超級調(diào)用獲取段所在頁面的物理頁框,并將物理頁框放置到輸入/輸出共享環(huán)的seg結(jié)構(gòu)中;[0032]宿主操作系統(tǒng)前端驅(qū)動通過事件通道告知宿主操作系統(tǒng)后端由輸入/輸出請求到來;[0033]宿主操作系統(tǒng)后端取出存放在seg結(jié)構(gòu)中的物理頁框,根據(jù)對應(yīng)關(guān)系獲取物理頁框?qū)?yīng)的頁面,并進(jìn)行輸入/輸出請求提交。[0034]優(yōu)選地,輸入/輸出請求處理模塊具體用于:[0035]在Xen中增加一個超級調(diào)用號;[0036]通過客戶操作系統(tǒng)通過頁幀號獲取函數(shù)調(diào)用獲取頁面的頁幀號,通過調(diào)用請求函數(shù)向Xen發(fā)起超級調(diào)用請求,并將頁面對應(yīng)的頁幀號發(fā)送給Xen;[0037]通過Xen根據(jù)超級調(diào)用請求,利用超級調(diào)用處理函數(shù)判斷是否調(diào)用超級調(diào)用號,在判斷為是的情況下,根據(jù)客戶操作系統(tǒng)發(fā)送的頁幀號,從客戶物理頁面到機(jī)器頁面的當(dāng)前第1頁1 2 3 4