專(zhuān)利名稱(chēng):在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì)算機(jī)系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)數(shù)據(jù)的共享訪問(wèn)技術(shù),確切地說(shuō),涉及一種在各個(gè) 域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì)算機(jī)系統(tǒng)和方法,屬于計(jì)算機(jī)虛擬化技術(shù)領(lǐng)域。
背景技術(shù):
計(jì)算機(jī)硬件(Hardware)和操作系統(tǒng)(Operating System)是計(jì)算機(jī)系統(tǒng)兩 個(gè)密不可分的部分。通常,業(yè)界廣泛應(yīng)用的現(xiàn)代計(jì)算機(jī)硬件主要是由中央處理 器(CPU , Central Processing Unit)、內(nèi)存(Main Memory )和輸入輸出設(shè)備(I/O Device )組成。中央處理器至少有兩個(gè)運(yùn)行特權(quán)級(jí)(Privilege Level):在高運(yùn)行 特權(quán)級(jí)上,中央處理器可以運(yùn)行所有的指令,控制和管理所有的計(jì)算機(jī)硬件資 源;而低運(yùn)行特權(quán)級(jí)是受限的運(yùn)行態(tài),不能直接運(yùn)行某些特權(quán)指令。輸入輸出 設(shè)備通常至少包括外部存儲(chǔ)設(shè)備(如硬盤(pán)、軟盤(pán)、閃存盤(pán),或者網(wǎng)絡(luò)存儲(chǔ)等), 其特點(diǎn)是在沒(méi)有電源供應(yīng)的情況下存儲(chǔ)的數(shù)據(jù)不會(huì)丟失。計(jì)算機(jī)操作系統(tǒng)則與 計(jì)算機(jī)硬件配合設(shè)計(jì),其中操作系統(tǒng)內(nèi)核(Kernel)運(yùn)行在中央處理器的高運(yùn) 行特權(quán)級(jí),管理著包括中央處理器、內(nèi)存和輸入輸出i殳備在內(nèi)的所有物理資源。 應(yīng)用(Application )運(yùn)行在低運(yùn)行特權(quán)級(jí),通過(guò)操作系統(tǒng)內(nèi)核提供的調(diào)用接口 對(duì)物理資源進(jìn)行訪問(wèn)。在凝:據(jù)管理方面,操:作系統(tǒng)內(nèi)核通過(guò)文件系統(tǒng)管理著存 儲(chǔ)設(shè)備上的數(shù)據(jù)。文件系統(tǒng)模型一般提供打開(kāi)文件、讀寫(xiě)文件、控制文件和關(guān) 閉文件等調(diào)用接口 ,應(yīng)用通過(guò)這些調(diào)用接口對(duì)文件系統(tǒng)進(jìn)4亍操作訪問(wèn)存取數(shù)據(jù)。 例如在Unix或類(lèi)Unix操作系統(tǒng)中,應(yīng)用通過(guò)open、 read、 write、 ioctl、 close 等調(diào)用接口與文件系統(tǒng)交互訪問(wèn)數(shù)據(jù)。
計(jì)算機(jī)虛擬化技術(shù)的出現(xiàn)打破了計(jì)算機(jī)硬件和操作系統(tǒng)之間的強(qiáng)耦合關(guān) 系。計(jì)算機(jī)虛擬化技術(shù)把多個(gè)操作系統(tǒng)復(fù)用到一個(gè)物理計(jì)算機(jī)上同時(shí)運(yùn)行,可 以大幅度提高計(jì)算機(jī)的使用效率和節(jié)省硬件支出。被稱(chēng)為虛擬機(jī)監(jiān)視器(VMM,
Virtual Machine Monitor)的軟件可以將物理計(jì)算機(jī)(包括中央處理器、內(nèi)存和 輸入輸出設(shè)備)虛擬為多個(gè)獨(dú)立的虛擬機(jī)(VM, Virtual Machine),每個(gè)虛擬 機(jī)都有自己的邏輯中央處理器、內(nèi)存和輸入輸出設(shè)備,可以支持一個(gè)操作系統(tǒng) 實(shí)例,這種運(yùn)行在虛擬機(jī)監(jiān)視器上的操作系統(tǒng)被稱(chēng)為客操作系統(tǒng)(GOS, Guest Operating System )。
計(jì)算機(jī)虛擬化技術(shù)最初出現(xiàn)和應(yīng)用于在大型主機(jī)上,現(xiàn)在,虛擬機(jī)監(jiān)視器 技術(shù)已經(jīng)發(fā)展了多種實(shí)現(xiàn)模型。就本發(fā)明相關(guān)聯(lián)的存儲(chǔ)資源和數(shù)據(jù)共享訪問(wèn)的 技術(shù)范疇,可以按客操作系統(tǒng)實(shí)現(xiàn)輸入輸出的模型分為三類(lèi)。下面分別簡(jiǎn)要說(shuō) 明之
參見(jiàn)圖1,第一種是基于主操作系統(tǒng)(HOS, Host Operating System)的模 型,計(jì)算機(jī)硬件上已配備有一個(gè)操作系統(tǒng),它被稱(chēng)為主操作系統(tǒng)。虛擬機(jī)監(jiān)視 器運(yùn)行在主操作系統(tǒng)上,并支撐著一個(gè)或多個(gè)虛擬機(jī)(圖示的結(jié)構(gòu)只有一個(gè)虛 擬機(jī))。虛擬機(jī)上運(yùn)行的操作系統(tǒng)被稱(chēng)為客操作系統(tǒng)。在圖示的模型中,虛擬機(jī) 監(jiān)視器分配主操作系統(tǒng)下的存儲(chǔ)巻或主操作系統(tǒng)文件系統(tǒng)下的文件作為虛擬存 儲(chǔ)設(shè)備提供給客操作系統(tǒng)使用??筒僮飨到y(tǒng)對(duì)虛擬存儲(chǔ)設(shè)備的輸入輸出操作是 通過(guò)虛擬機(jī)監(jiān)視器轉(zhuǎn)化為主操作系統(tǒng)對(duì)存儲(chǔ)巻或文件的訪問(wèn)操作來(lái)完成的。
參見(jiàn)圖2,第二種模型不依賴(lài)于一個(gè)主操作系統(tǒng),而是虛擬機(jī)監(jiān)視器直接 運(yùn)行在計(jì)算機(jī)硬件上,并通常配備有外部存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序、甚至文件系統(tǒng), 這樣的虛擬機(jī)監(jiān)視器又稱(chēng)為超級(jí)監(jiān)視器(Hypervisor)。因?yàn)槌?jí)監(jiān)視器直接運(yùn) 行在硬件上,所以也可稱(chēng)之為操作系統(tǒng)。在這個(gè)模型中,虛擬機(jī)監(jiān)視器分配存 儲(chǔ)巻或文件系統(tǒng)下的文件作為虛擬存儲(chǔ)設(shè)備提供給客操作系統(tǒng)使用??筒僮飨?統(tǒng)對(duì)虛擬存儲(chǔ)設(shè)備的輸入輸出操作是通過(guò)虛擬機(jī)監(jiān)視器直接對(duì)其存儲(chǔ)巻或文件 的訪問(wèn)操作來(lái)完成的。這種基于超級(jí)監(jiān)視器實(shí)現(xiàn)的虛擬化計(jì)算機(jī)系統(tǒng)可以獲得 比第 一種基于主操作系統(tǒng)實(shí)現(xiàn)的虛擬化計(jì)算機(jī)系統(tǒng)更好的性能,但是因?yàn)槌?jí) 監(jiān)視器包含外部存儲(chǔ)設(shè)備驅(qū)動(dòng)程序,實(shí)現(xiàn)過(guò)程比較復(fù)雜。因此,后來(lái)又研制了 能夠較好地解決這個(gè)問(wèn)題的第三種模型-混合模型。
參見(jiàn)圖3,介紹第三種混合模型的組成結(jié)構(gòu)虛擬機(jī)監(jiān)視器直接運(yùn)行在計(jì)
算機(jī)硬件上,負(fù)責(zé)虛擬機(jī)的監(jiān)控和管理,并指派具有存儲(chǔ)巻/文件系統(tǒng)和設(shè)備驅(qū) 動(dòng)程序的特權(quán)客操作系統(tǒng)對(duì)外部存儲(chǔ)設(shè)備進(jìn)行管理,這樣可以簡(jiǎn)化虛擬機(jī)監(jiān)視 器的設(shè)計(jì)。在這個(gè)模型中,虛擬機(jī)監(jiān)視器和特權(quán)客操作系統(tǒng)分配特權(quán)客操作系 統(tǒng)管理下的存儲(chǔ)巻或文件作為虛擬存儲(chǔ)設(shè)備提供給非特權(quán)客操作系統(tǒng)使用。非 特權(quán)客操作系統(tǒng)對(duì)虛擬存儲(chǔ)設(shè)備的輸入輸出操作則通過(guò)虛擬機(jī)監(jiān)視器轉(zhuǎn)化為特 權(quán)客操作系統(tǒng)對(duì)存儲(chǔ)巻或文件的訪問(wèn)操作來(lái)完成。
雖然上述三種模型在結(jié)構(gòu)組成和實(shí)現(xiàn)方式上有^f艮大的不同,但是,在本發(fā)
明技術(shù)范疇內(nèi),并不關(guān)心這些差異;而是將這三種模型的虛擬化計(jì)算機(jī)系統(tǒng)中 的軟件部分抽象為兩種部件主域和客域。在第一種基于主操作系統(tǒng)的模型里, 主操作系統(tǒng)和虛擬機(jī)監(jiān)視器控制著計(jì)算機(jī)硬件,管理著存儲(chǔ)設(shè)備,提供虛擬機(jī) 以支撐運(yùn)行客操作系統(tǒng),把存儲(chǔ)巻或文件系統(tǒng)管理下的文件作為虛擬機(jī)的虛擬 存儲(chǔ)設(shè)備分配給客操作系統(tǒng),本發(fā)明稱(chēng)主操作系統(tǒng)和虛擬機(jī)監(jiān)一見(jiàn)器為主域部件, 而客操作系統(tǒng)依賴(lài)于主域的輸入輸出實(shí)現(xiàn)對(duì)存儲(chǔ)數(shù)據(jù)的訪問(wèn),本發(fā)明稱(chēng)客操作 系統(tǒng)為客域部件。同樣地,在第二種基于超級(jí)監(jiān)視器的虛擬化環(huán)境中,超級(jí)監(jiān) 視器是主域部件,客操作系統(tǒng)是客域部件。在第三種混合模型中,虛擬機(jī)監(jiān)視 器和特權(quán)客操作系統(tǒng)組合在一起作為主域部件(以下本段落簡(jiǎn)稱(chēng)為主域),非特
權(quán)客操作系統(tǒng)為客域部件(以下本段落簡(jiǎn)稱(chēng)為客域)。在圖1、圖2和3中,粗 虛線的方框分別劃定了上述三種虛擬化計(jì)算機(jī)系統(tǒng)模型中主域的結(jié)構(gòu)組成范圍。
在三種虛擬化計(jì)算機(jī)模型的分類(lèi)之外,計(jì)算機(jī)虛擬化技術(shù)還有全虛擬化 (Full-virtualization )和半虛擬化(Para-virtualization)之分。在傳統(tǒng)的虛擬化 技術(shù)中,客操作系統(tǒng)不需要修改就可以直接運(yùn)行在虛擬機(jī)監(jiān)視器上,或者說(shuō),客 操作系統(tǒng)并不知道自己正運(yùn)行在虛擬機(jī)監(jiān)視器上,這樣的虛擬化實(shí)現(xiàn)稱(chēng)為全虛 擬化。與之對(duì)應(yīng)的是半虛擬化在半虛擬化中客操作系統(tǒng)和虛擬機(jī)監(jiān)視器通過(guò) 定義好的接口主動(dòng)交互客操作系統(tǒng)可以調(diào)用超級(jí)調(diào)用(Hypercall)陷入到虛 擬機(jī)監(jiān)視器,請(qǐng)求虛擬機(jī)監(jiān)視器完成相應(yīng)的服務(wù)操作;虛擬機(jī)監(jiān)視器也可以給 客操作系統(tǒng)發(fā)送異步消息,觸發(fā)客操作系統(tǒng)的操作。通過(guò)客操作系統(tǒng)與虛擬機(jī)
監(jiān)視器的主動(dòng)配合,半虛擬化可以獲得比全虛擬化更好的性能。半虛擬化的一
個(gè)重要應(yīng)用是內(nèi)存頁(yè)面重映射(Page-remapping)。在半虛擬化中,虛擬機(jī)監(jiān)牙見(jiàn) 器可以根據(jù)虛擬機(jī)監(jiān)視器本身需要或應(yīng)客操作系統(tǒng)超級(jí)調(diào)用的請(qǐng)求,把物理內(nèi) 存頁(yè)面映射到虛擬機(jī)監(jiān)視器或某個(gè)客操作系統(tǒng)的地址空間上。比如客操作系統(tǒng) A要向另 一個(gè)客操作系統(tǒng)B發(fā)送一個(gè)消息,客操作系統(tǒng)A先在自己的地址空間 上的內(nèi)存頁(yè)面上準(zhǔn)備數(shù)據(jù),調(diào)用超級(jí)調(diào)用陷入到虛擬機(jī)監(jiān)視器,要求虛擬機(jī)監(jiān) 視器把該內(nèi)存頁(yè)面重映射到客操作系統(tǒng)B,虛擬機(jī)監(jiān)視器響應(yīng)這一要求把該內(nèi) 存頁(yè)面映射到客操作系統(tǒng)B的地址空間,并通知客操作系統(tǒng)B ,客操作系統(tǒng)B 就可以通過(guò)訪問(wèn)自己地址空間中的內(nèi)存頁(yè)面訪問(wèn)客搡作系統(tǒng)A發(fā)送過(guò)來(lái)的數(shù)據(jù) 了 。因?yàn)榛诎胩摂M化的內(nèi)存頁(yè)面重映射機(jī)制而實(shí)現(xiàn)的域間通信通道能夠有效 地避免了數(shù)據(jù)在內(nèi)存中的拷貝,這樣不僅大大減少域間數(shù)據(jù)傳送的數(shù)據(jù)拷貝開(kāi) 銷(xiāo),還可以獲得非常高的域間通信速度,節(jié)省中央處理器的運(yùn)算資源。
虛擬化技術(shù)的傳統(tǒng)用途是計(jì)算機(jī)集成化(Consolidation),多個(gè)客操作系統(tǒng) 實(shí)例和應(yīng)用復(fù)用在一 臺(tái)物理計(jì)算機(jī)上同時(shí)運(yùn)行,可以提高計(jì)算機(jī)硬件使用率; 而且,各個(gè)客域之間以及客域與主域之間的數(shù)據(jù)是相互隔離的。然而,目前在 各個(gè)域間數(shù)據(jù)共享的需求正在變得越來(lái)越強(qiáng)烈。在數(shù)據(jù)中心,實(shí)現(xiàn)各個(gè)域間對(duì) 物理存儲(chǔ)資源的共享訪問(wèn),可以提高存儲(chǔ)資源的靈活使用,減少數(shù)據(jù)重復(fù),并 實(shí)現(xiàn)數(shù)據(jù)的統(tǒng)一管理。此外,更廣泛的需求來(lái)自個(gè)人計(jì)算機(jī),個(gè)人計(jì)算機(jī)上的 虛擬化主要是提高計(jì)算機(jī)的可管理性和安全性。通常整個(gè)個(gè)人計(jì)算機(jī)為同一組 用戶(hù)甚至一個(gè)用戶(hù)所使用,個(gè)人計(jì)算機(jī)用戶(hù)需要的是各個(gè)域間的配合和對(duì)數(shù)據(jù) 的共享訪問(wèn)。
在基于主操作系統(tǒng)模型下使用共享目錄(Shared folder)功能可以實(shí)現(xiàn)簡(jiǎn)單
的客域?qū)χ饔蛑袛?shù)據(jù)的共享訪問(wèn)。通過(guò)客域調(diào)用預(yù)先定義的某個(gè)特殊指令(例
如對(duì)虛擬機(jī)某特定的輸入輸出端口的操作)由虛擬機(jī)監(jiān)視器捕獲并響應(yīng)的方式,
建立起的主域-客域間的通信通道提供了主域和客域之間交互的基礎(chǔ),客域內(nèi)
核的文件重定向器通過(guò)這個(gè)通信通道向主域內(nèi)運(yùn)行的虛擬機(jī)監(jiān)視器發(fā)送文件訪
問(wèn)請(qǐng)求,虛擬機(jī)監(jiān)視器應(yīng)用響應(yīng)這些請(qǐng)求,并通過(guò)主操作系統(tǒng)執(zhí)行對(duì)本域內(nèi)文
件的訪問(wèn)操作,并把訪問(wèn)結(jié)果通過(guò)主域-客域間的通信通道回復(fù)給客域的文件 重定向器。在這種方式中,主域中的虛擬機(jī)監(jiān)視器應(yīng)用實(shí)現(xiàn)的是客域?qū)χ饔騼?nèi) 文件訪問(wèn)的代理的功能,因?yàn)樽鳛榇淼奶摂M機(jī)監(jiān)視器應(yīng)用運(yùn)行在主域的用戶(hù) 態(tài),數(shù)據(jù)的傳遞需要通過(guò)內(nèi)核空間與用戶(hù)空間的數(shù)據(jù)拷貝,性能比較差。
眾所周知,在計(jì)算機(jī)虛擬化技術(shù)中,通常主域?yàn)槊總€(gè)客域配置獨(dú)立的虛擬
存儲(chǔ)設(shè)備,而客域則獨(dú)占式地訪問(wèn)該屬于自己的獨(dú)立的虛擬存儲(chǔ)設(shè)備;這樣各 個(gè)域之間的數(shù)據(jù)相互獨(dú)立。這種彼此獨(dú)立的域間數(shù)據(jù)存在的缺點(diǎn)是首先主域 在創(chuàng)建虛擬機(jī)時(shí),給客域分配的虛擬存儲(chǔ)設(shè)備容量很難根據(jù)客域?qū)Υ鎯?chǔ)的需求 變化而對(duì)虛擬存儲(chǔ)設(shè)備做相應(yīng)的動(dòng)態(tài)變化。再者,多個(gè)域之間很難實(shí)現(xiàn)對(duì)存儲(chǔ) 數(shù)據(jù)的共享訪問(wèn)。如果兩個(gè)域運(yùn)行的是不同的操作泉統(tǒng),異構(gòu)的文件系統(tǒng)之間 根本無(wú)法互操作,那么一個(gè)域就不能對(duì)另一個(gè)域的(虛擬)存儲(chǔ)設(shè)備上的數(shù)據(jù) 直接進(jìn)行訪問(wèn)。即使兩個(gè)域運(yùn)行的是文件系統(tǒng)兼容的操作系統(tǒng),因?yàn)橹髁鞯奈?件系統(tǒng)(如Windows NTFS 、 Linux Ext2/Ext3等)都是按照對(duì)存儲(chǔ)設(shè)備進(jìn)行獨(dú) 占式訪問(wèn)設(shè)計(jì)的,在虛擬化的計(jì)算機(jī)系統(tǒng)中仍然很難實(shí)現(xiàn)多個(gè)域?qū)ν粋€(gè)(虛 擬)存儲(chǔ)設(shè)備的并發(fā)操作或?qū)υ摯鎯?chǔ)設(shè)備中的數(shù)據(jù)實(shí)現(xiàn)共享訪問(wèn)。因此,許多 業(yè)內(nèi)科技人員就開(kāi)始關(guān)注如何解決這個(gè)技術(shù)問(wèn)題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的是提供一種在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì) 算機(jī)系統(tǒng)和在該虛擬化計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)共享的方法,本發(fā)明能夠較好地 解決現(xiàn)有技術(shù)中存在的不同域之間不能有效共享數(shù)據(jù)的問(wèn)題,本發(fā)明系統(tǒng)中的 主域管理著存儲(chǔ)資源和數(shù)據(jù),客域通過(guò)域間通道在文件系統(tǒng)層次上和主域進(jìn)行 交互,對(duì)主域管理下的數(shù)據(jù)實(shí)現(xiàn)共享訪問(wèn)。而且,本發(fā)明實(shí)現(xiàn)各個(gè)域間高效共 享數(shù)據(jù)的虛擬化計(jì)算機(jī)系統(tǒng)和方法能夠適用于上述基于主操作系統(tǒng)的虛擬化、 基于超級(jí)監(jiān)視器的虛擬化和基于混合模型的虛擬化的三種模型,適用范圍廣。
為了達(dá)到上述目的,本發(fā)明提供了一種在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化 計(jì)算機(jī)系統(tǒng),該系統(tǒng)包括 一個(gè)計(jì)算機(jī)硬件裝置,該計(jì)算機(jī)硬件裝置設(shè)有一個(gè)或一組支持兩個(gè)或多個(gè)運(yùn)行特權(quán)級(jí)的中央處理器、設(shè)定容量的內(nèi)存和包括存 儲(chǔ)設(shè)備在內(nèi)的輸入輸出設(shè)備,所述存儲(chǔ)設(shè)備包括硬盤(pán)、軟盤(pán)、閃存盤(pán)、光盤(pán)、
直連式存儲(chǔ)設(shè)備、或網(wǎng)絡(luò)存儲(chǔ)設(shè)備;其特征在于該系統(tǒng)還包括在所迷計(jì)算機(jī) 硬件裝置上運(yùn)行的軟件單元,所述軟件單元包括 一個(gè)主域部件、 一個(gè)或多個(gè) 客域部件、以及在主域部件與客域部件之間的域間通道部件,其中
主域部件,直接運(yùn)行在計(jì)算機(jī)硬件裝置上,用于提供支撐虛擬機(jī)運(yùn)行的虛 擬機(jī)監(jiān)控器;主域部件的內(nèi)核包括文件系統(tǒng)模塊和共享數(shù)據(jù)服務(wù)器模塊,其 中文件系統(tǒng)模塊用于管理計(jì)算機(jī)的存儲(chǔ)設(shè)備及其中存儲(chǔ)的數(shù)據(jù),并完成對(duì)存儲(chǔ) 設(shè)備上的文件訪問(wèn);共享數(shù)據(jù)服務(wù)器模塊用于與客域部件的共享數(shù)據(jù)客戶(hù)端模 塊進(jìn)行交互,利用文件系統(tǒng)模塊的文件訪問(wèn)功能,完成客域部件中的共享數(shù)據(jù)
客域部件,運(yùn)行在主域部件的虛擬機(jī)監(jiān)視器所支撐的虛擬機(jī)上;客域部件 的內(nèi)核包括共享數(shù)據(jù)客戶(hù)端模塊,該模塊用做客域操作系統(tǒng)的文件系統(tǒng)重定 向器,以響應(yīng)來(lái)自該客域部件中的應(yīng)用和其他內(nèi)核子系統(tǒng)模塊對(duì)存儲(chǔ)設(shè)備上的 文件訪問(wèn)請(qǐng)求,并通過(guò)域間通道與主域部件的共享數(shù)據(jù)服務(wù)器模塊進(jìn)行交互, 利用主域部件的共享數(shù)據(jù)服務(wù)器模塊和文件系統(tǒng)模塊的文件訪問(wèn)功能,完成客
主域部件與客域部件之間的域間通道部件,該部件是基于半虛擬化的內(nèi)存 頁(yè)面重映射機(jī)制實(shí)現(xiàn)的域間通信通道,用于完成客域部件的共享數(shù)據(jù)客戶(hù)端模 塊和主域部件的共享數(shù)據(jù)服務(wù)器模塊之間的數(shù)據(jù)交互。
所述主域部件的共享數(shù)據(jù)服務(wù)器模塊和文件系統(tǒng)模塊都運(yùn)行在該主域部件 的操作系統(tǒng)的內(nèi)核態(tài);其中共享數(shù)據(jù)服務(wù)器模塊按照文件系統(tǒng)向上提供的接口 規(guī)范與文件系統(tǒng)模塊交互,并通過(guò)文件系統(tǒng)模塊管理存儲(chǔ)設(shè)備和其中存儲(chǔ)的數(shù) 據(jù);該共享數(shù)據(jù)服務(wù)器模塊的文件訪問(wèn)例程經(jīng)文件系統(tǒng)模塊通過(guò)執(zhí)行典型的"打 開(kāi)、包括讀、寫(xiě)、或控制的各項(xiàng)操作、關(guān)閉"文件的操作系統(tǒng)文件訪問(wèn)過(guò)程完 成對(duì)文件的訪問(wèn)。
所述文件系統(tǒng)^t塊還包括對(duì)各個(gè)文件系統(tǒng)進(jìn)行抽象的虛擬文件系統(tǒng)VFS才莫塊。
所述客域部件的操作系統(tǒng)是通用的搡作系統(tǒng),所述每個(gè)客域部件都有一個(gè) 運(yùn)行在該客域操作系統(tǒng)的內(nèi)核態(tài)的共享數(shù)據(jù)客戶(hù)端模塊;該共享數(shù)據(jù)客戶(hù)端模 塊在客域提供本地文件系統(tǒng)的功能,向客域部件中的應(yīng)用和其他內(nèi)核子系統(tǒng)模 塊提供本地文件系統(tǒng)的服務(wù)接口 ,通過(guò)域間通道部件與主域部件中的共享數(shù)據(jù) 服務(wù)器模塊進(jìn)行交互。
當(dāng)所述虛擬化計(jì)算機(jī)系統(tǒng)中有多個(gè)客域部件時(shí),所述主域部件和該多個(gè)客 域部件之間建立的域間通道部件呈一對(duì)多的星形拓樸結(jié)構(gòu),且其中每個(gè)客域部 件的共享數(shù)據(jù)客戶(hù)端模塊與主域部件的共享數(shù)據(jù)服務(wù)器模塊之間的交互是彼此 獨(dú)立的。
所述共享數(shù)據(jù)服務(wù)器模塊應(yīng)保證每個(gè)客域部件對(duì)主域部件直接管理的存儲(chǔ) 設(shè)備和其中存儲(chǔ)的數(shù)據(jù)的訪問(wèn)不能干涉其它客域部件對(duì)主域部件直接管理的存 儲(chǔ)設(shè)備和其中存儲(chǔ)的數(shù)據(jù)的訪問(wèn),以及某個(gè)客域部件的非法操作不能對(duì)主域部 件和其他客域部件產(chǎn)生不利影響。
所述主域部件的內(nèi)核數(shù)據(jù)訪問(wèn)棧的結(jié)構(gòu)由最底層向上的排列順序包括存 儲(chǔ)設(shè)備驅(qū)動(dòng)程序模塊,存儲(chǔ)巻管理模塊,文件系統(tǒng)模塊,共享數(shù)據(jù)服務(wù)器模塊; 內(nèi)核數(shù)據(jù)訪問(wèn)棧的另一種結(jié)構(gòu)包括文件系統(tǒng)模塊和共享數(shù)據(jù)服務(wù)器模塊,此時(shí) 的文件系統(tǒng)模塊是基于網(wǎng)絡(luò)的文件系統(tǒng)模塊或虛文件系統(tǒng)模塊。
所述共享數(shù)據(jù)服務(wù)器模塊設(shè)有兩類(lèi)數(shù)據(jù)結(jié)構(gòu)文件訪問(wèn)表和文件訪問(wèn)實(shí)例, 前者是分別為與該共享數(shù)據(jù)服務(wù)器模塊進(jìn)行交互的各個(gè)共享數(shù)據(jù)客戶(hù)端模塊單 獨(dú)、對(duì)應(yīng)地建立的,該文件訪問(wèn)表由多個(gè)節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)著所述共享 數(shù)據(jù)客戶(hù)端模塊與該共享數(shù)據(jù)服務(wù)器模塊之間的一個(gè)文件訪問(wèn)過(guò)程;后者用于 記錄每一個(gè)文件訪問(wèn)過(guò)程中的文件訪問(wèn)信息,對(duì)應(yīng)于某個(gè)文件訪問(wèn)過(guò)程的文件 訪問(wèn)表的節(jié)點(diǎn)直接含有或由指針間接指向?qū)?yīng)于同 一 個(gè)文件訪問(wèn)過(guò)程的文件訪 問(wèn)實(shí)例;所述文件訪問(wèn)表的節(jié)點(diǎn)和文件訪問(wèn)實(shí)例是在該共享數(shù)據(jù)客戶(hù)端模塊請(qǐng) 求共享數(shù)據(jù)服務(wù)器模塊打開(kāi)文件時(shí),由共享數(shù)據(jù)服務(wù)器模塊建立;并在該共享 數(shù)據(jù)客戶(hù)端模塊請(qǐng)求共享數(shù)據(jù)服務(wù)器模塊關(guān)閉文件時(shí),由共享數(shù)據(jù)服務(wù)器模塊拆除。
當(dāng)共享數(shù)據(jù)服務(wù)器模塊響應(yīng)某個(gè)共享數(shù)據(jù)客戶(hù)端模塊請(qǐng)求而打開(kāi)文件、建 立對(duì)應(yīng)本次文件訪問(wèn)過(guò)程的文件訪問(wèn)表節(jié)點(diǎn)時(shí)產(chǎn)生一個(gè)標(biāo)識(shí)符-^T索索引號(hào),
用于標(biāo)識(shí)該文件訪問(wèn)過(guò)程的文件訪問(wèn)表節(jié)點(diǎn),并回復(fù)給該共享數(shù)據(jù)客戶(hù)端模塊; 共享數(shù)據(jù)服務(wù)器模塊用該檢索索引號(hào)可以獲得對(duì)應(yīng)的文件訪問(wèn)實(shí)例,從而獲得 這次文件訪問(wèn)過(guò)程的文件訪問(wèn)信息;且在本次文件訪問(wèn)過(guò)程中,在共享數(shù)據(jù)服 務(wù)器模塊響應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的請(qǐng)求關(guān)閉文件,并拆除對(duì)應(yīng)這次文件訪 問(wèn)過(guò)程中的文件訪問(wèn)表節(jié)點(diǎn)和文件訪問(wèn)實(shí)例之前,標(biāo)識(shí)本次文件訪問(wèn)過(guò)程的檢 索索引號(hào)始終有效、且是唯一的。
為了達(dá)到上述目的,本發(fā)明還提供了 一種在上述各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的 虛擬化計(jì)算機(jī)系統(tǒng)中共享數(shù)據(jù)的方法,其特征在于在主域部件的共享數(shù)據(jù)服 務(wù)器模塊和客域部件的共享數(shù)據(jù)客戶(hù)端模塊之間,藉由主域部件與客域部件之
間的域間通道部件,通過(guò)基于半虛擬化的內(nèi)存頁(yè)面重映射機(jī)制實(shí)現(xiàn)文件訪問(wèn)過(guò) 程,所述方法在某個(gè)共享數(shù)據(jù)客戶(hù)端模塊和共享數(shù)據(jù)服務(wù)器模塊之間完成的一 個(gè)文件訪問(wèn)過(guò)程包括下列喿作步驟
步驟1、共享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送打開(kāi)文件的請(qǐng)求;
步驟2、共享數(shù)據(jù)服務(wù)器模塊收到該打開(kāi)文件的請(qǐng)求后,通過(guò)主域部件的 文件系統(tǒng)模塊打開(kāi)文件,并在對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表中建立 一個(gè)對(duì)應(yīng)本次文件訪問(wèn)過(guò)程的節(jié)點(diǎn)和一個(gè)文件訪問(wèn)實(shí)例,再將該節(jié)點(diǎn)的檢索索 引號(hào)回復(fù)給該共享數(shù)據(jù)客戶(hù)端模塊;
步驟3、該共享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送訪問(wèn)文件的請(qǐng) 求,該請(qǐng)求中含有本次文件訪問(wèn)過(guò)程中共享數(shù)據(jù)服務(wù)器模塊回復(fù)的檢索索引號(hào);
步驟4、共享數(shù)據(jù)服務(wù)器模塊收到該共享數(shù)據(jù)客戶(hù)端模塊發(fā)送的訪問(wèn)文件 的請(qǐng)求,獲悉該訪問(wèn)文件請(qǐng)求的操作類(lèi)型;
步驟5、共享數(shù)據(jù)服務(wù)器模塊先判斷該訪問(wèn)文件的操作請(qǐng)求是否為關(guān)閉文 件,若不是,順序執(zhí)行后續(xù)步驟;若是,則跳轉(zhuǎn)執(zhí)行步驟7;
步驟6、共享數(shù)據(jù)服務(wù)器模塊通過(guò)主域部件的文件系統(tǒng)模塊執(zhí)行文件訪問(wèn)
操作,并將對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表中對(duì)應(yīng)本次文件訪問(wèn)過(guò)程 的文件訪問(wèn)實(shí)例的文件訪問(wèn)信息進(jìn)行更新,再4巴含有本次文件訪問(wèn)過(guò)程的4企索
索引號(hào)的文件訪問(wèn)結(jié)果回復(fù)給該共享數(shù)據(jù)客戶(hù)端模塊,然后返回步驟3;
步驟7、共享數(shù)據(jù)服務(wù)器模塊通過(guò)主域部件的文件系統(tǒng)模塊關(guān)閉文件,并
件訪問(wèn)表節(jié)點(diǎn)和文件訪問(wèn)實(shí)例,結(jié)束本次文件訪問(wèn)過(guò)程。
所述方法在某個(gè)共享數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù)服務(wù)器模塊之間可以同時(shí) 并發(fā)運(yùn)行多個(gè)訪問(wèn)文件的操作,即每個(gè)共享數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù)服務(wù)器 模塊之間可以并行地運(yùn)行多個(gè)文件訪問(wèn)過(guò)程。
所述方法在每個(gè)文件訪問(wèn)過(guò)程中,共享數(shù)據(jù)客戶(hù)端模塊通過(guò)循環(huán)執(zhí)行步驟 3 ~步驟6的操作對(duì)共享數(shù)據(jù)服務(wù)器模塊所打開(kāi)的文件進(jìn)行多次訪問(wèn)。
所述方法在每個(gè)文件訪問(wèn)過(guò)程中,每個(gè)才喿作步驟都是基于當(dāng)前狀態(tài)的,共 享數(shù)據(jù)服務(wù)器模塊維護(hù)的對(duì)應(yīng)所述文件訪問(wèn)過(guò)程的數(shù)據(jù)結(jié)構(gòu)-文件訪問(wèn)實(shí)例 中,含有對(duì)應(yīng)該文件訪問(wèn)過(guò)程的狀態(tài)信息。
所述方法在共享數(shù)據(jù)客戶(hù)端模塊和共享數(shù)據(jù)服務(wù)器模塊之間實(shí)現(xiàn)文件訪問(wèn) 過(guò)程之前和之后分別包括下列兩個(gè)4喿作步驟
步驟0、在共享數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù)服務(wù)器模塊之間建立連接共 享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送建立連接的請(qǐng)求,共享數(shù)據(jù)服務(wù) 器模塊收到該建立連接的請(qǐng)求,建立一個(gè)對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端才莫塊的文件訪 問(wèn)表;
步驟8、拆除該共享數(shù)據(jù)客戶(hù)端與共享數(shù)據(jù)服務(wù)器之間的連接該共享數(shù) 據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送拆除連接的請(qǐng)求,共享數(shù)據(jù)服務(wù)器收 到該拆除連接的請(qǐng)求,拆除對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表。
本發(fā)明是一種在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì)算機(jī)系統(tǒng)和實(shí)現(xiàn)數(shù)據(jù)共 享的方法,它從兩個(gè)方面實(shí)現(xiàn)了高效的域間數(shù)據(jù)共享 一個(gè)是利用基于半虛擬 化的內(nèi)存頁(yè)面重映射機(jī)制,實(shí)現(xiàn)了高速通信的域間通道,減少域間數(shù)據(jù)拷貝的 開(kāi)銷(xiāo);另一個(gè)是把域間通信兩端的通信實(shí)體-主域部件的共享數(shù)據(jù)服務(wù)器模塊
和客域部件的共享數(shù)據(jù)客戶(hù)端模塊-分別實(shí)現(xiàn)在各自域的內(nèi)核態(tài),這樣可以減
少本域內(nèi)的數(shù)據(jù)拷貝開(kāi)銷(xiāo);這樣域間數(shù)據(jù)共享的系統(tǒng)開(kāi)銷(xiāo)得到最大限度的降低, 并藉此獲得高性能。本發(fā)明的另一優(yōu)勢(shì)是適應(yīng)型強(qiáng),能夠適用于基于主操作 系統(tǒng)的虛擬化、基于超級(jí)監(jiān)視器的虛擬化和基于混合模型的虛擬化的三種虛擬 化計(jì)算機(jī)系統(tǒng)模型。
本發(fā)明的其它優(yōu)點(diǎn)是計(jì)算機(jī)硬件裝置的存儲(chǔ)資源及其中存儲(chǔ)的數(shù)據(jù)都在 主域部件的統(tǒng)一管理下,有利于數(shù)據(jù)的維護(hù)。在客域部件中的應(yīng)用能夠如同訪 問(wèn)本地文件系統(tǒng)一樣透明地通過(guò)客4喿作系統(tǒng)的應(yīng)用編程4妄口訪問(wèn)主域部件直接 管理下的存儲(chǔ)資源和數(shù)據(jù)??陀虿考仨毻ㄟ^(guò)主域部件的監(jiān)控,才能完成對(duì)數(shù) 據(jù)的訪問(wèn),這樣可獲得比較高的數(shù)據(jù)安全性。
總之,本發(fā)明提供了一種適用于多種計(jì)算機(jī)虛擬化模型的、實(shí)現(xiàn)各個(gè)域間 存儲(chǔ)資源和數(shù)據(jù)共享的系統(tǒng)和方法,使用本發(fā)明可以實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)的統(tǒng)一管理, 減低維護(hù)成本,而且,性能好、效率高。因此,本發(fā)明有4艮好的推廣應(yīng)用前景。
圖1是基于主操作系統(tǒng)實(shí)現(xiàn)的虛擬化計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)組成示意圖。
圖2是基于超級(jí)監(jiān)視器實(shí)現(xiàn)的虛擬化計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)組成示意圖。
圖3是基于混合模型實(shí)現(xiàn)的虛擬化系統(tǒng)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)組成示意圖。
圖4是本發(fā)明在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)組成示意圖。
圖5是本發(fā)明實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì)算機(jī)系統(tǒng)中的共享數(shù)據(jù)客戶(hù)端模塊 與共享數(shù)據(jù)服務(wù)器模塊進(jìn)行信息交互時(shí)的結(jié)構(gòu)組成示意圖。
圖6是本發(fā)明在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)共 享的方法-基于文件訪問(wèn)過(guò)程安全完成數(shù)據(jù)訪問(wèn)的操作流程方框圖。
圖7是本發(fā)明包括建立連接和拆除連接的共享數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù) 服務(wù)器模塊之間基于文件訪問(wèn)過(guò)程完成數(shù)據(jù)訪問(wèn)的總體操作步驟方框圖。
圖8是基于主操作系統(tǒng)的虛擬化計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)共享的本發(fā)明實(shí)施例結(jié)構(gòu)組成示意圖。
圖9是基于超級(jí)監(jiān)視器的虛擬化計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)共享的本發(fā)明實(shí)施例 結(jié)構(gòu)組成示意圖。
圖10是基于混合模型的虛擬化計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)共享的本發(fā)明實(shí)施例 結(jié)構(gòu)組成示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對(duì)本發(fā)明作 進(jìn)一步的詳細(xì)描述。
參見(jiàn)圖4,介紹本發(fā)明在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì)算機(jī)系統(tǒng)的 硬件和軟件兩部分結(jié)構(gòu)組成,其中硬件包括 一個(gè)計(jì)算機(jī)硬件裝置300,該 計(jì)算機(jī)硬件裝置中設(shè)有一個(gè)或一組中央處理器301、設(shè)定容量的內(nèi)存302和 輸入輸出設(shè)備,在本發(fā)明范疇內(nèi),只關(guān)心輸入輸出設(shè)備中的存儲(chǔ)設(shè)備303 (如 圖4所示),它們通常是硬盤(pán)、軟盤(pán)、閃存盤(pán)、光盤(pán)、直連式存儲(chǔ)設(shè)備DAS (Direct Attached Storage )、或包括網(wǎng)絡(luò)連4妄存4諸NAS ( Network Attached Storage )、存儲(chǔ)區(qū)域網(wǎng)絡(luò)SAN ( Storage Area Network ) 、 iSCSI的網(wǎng)絡(luò)存儲(chǔ) 設(shè)備等。計(jì)算機(jī)硬件裝置300的功能是運(yùn)行軟件單元,該軟件單元包括主域 部件200、客域部件100、以及在主域部件(以下本,殳落簡(jiǎn)稱(chēng)為主域)200 與客域部件(以下本段落簡(jiǎn)稱(chēng)為客域)100之間的域間通道部件400 。 下面分別介紹這些軟件單元各個(gè)部件的功能和連接關(guān)系 一個(gè)主域200直接運(yùn)行在計(jì)算機(jī)硬件裝置300上,用于提供支撐虛擬機(jī)運(yùn) 行的虛擬機(jī)監(jiān)控器;主域200的內(nèi)核包括運(yùn)行在中央處理器高運(yùn)行特權(quán)級(jí)的 文件系統(tǒng)模塊202和共享數(shù)據(jù)服務(wù)器模塊201 ,其中文件系統(tǒng)模塊202管理著 計(jì)算機(jī)硬件裝置300的存儲(chǔ)設(shè)備303以及其中存儲(chǔ)的數(shù)據(jù),并完成對(duì)存儲(chǔ)設(shè)備 303上的文件訪問(wèn),即實(shí)現(xiàn)對(duì)文件訪問(wèn)的抽象。共享數(shù)據(jù)服務(wù)器模塊201主要 功能是與客域100的共享數(shù)據(jù)客戶(hù)端模塊102進(jìn)行交互,利用文件系統(tǒng)模塊202 的文件訪問(wèn)功能,完成客域100中的共享數(shù)據(jù)客戶(hù)端模塊102對(duì)主域200直接
管理的存儲(chǔ)設(shè)備303及其中存儲(chǔ)的數(shù)據(jù)的間接訪問(wèn)。
一個(gè)或多個(gè)客域100,客域100的操作系統(tǒng)是通用操作系統(tǒng),它運(yùn)行在主 域200的虛擬機(jī)監(jiān)視器所支撐的虛擬機(jī)上。每個(gè)客域100內(nèi)核包括有一個(gè)共享 數(shù)據(jù)客戶(hù)端模塊102和其它內(nèi)核子系統(tǒng)模塊103,其中共享數(shù)據(jù)客戶(hù)端模塊102 運(yùn)行在客域100操作系統(tǒng)的內(nèi)核態(tài),主要功能是作為客域操作系統(tǒng)的文件系統(tǒng) 重定向器(Redirector),在客域提供本地文件系統(tǒng)的功能,向客域部件中的應(yīng) 用101和其它內(nèi)核子系統(tǒng)模塊103提供本地文件系統(tǒng)的服務(wù)接口 ,響應(yīng)來(lái)自客 域中的應(yīng)用101和客域操作系統(tǒng)中其他內(nèi)核子系統(tǒng)103對(duì)文件的訪問(wèn)請(qǐng)求,并 通過(guò)域間通道400與主域的共享數(shù)據(jù)服務(wù)器模塊201交互,利用主域共享數(shù)據(jù) 服務(wù)器模塊201和文件系統(tǒng)模塊202的文件訪問(wèn)功能,完成客域100對(duì)主域200 直接管理的存儲(chǔ)設(shè)備303及其中存儲(chǔ)的數(shù)據(jù)的間接訪問(wèn)。
主域與客域之間的域間通道部件400,該域間通道是基于半虛擬化的內(nèi)存 頁(yè)面重映射機(jī)制實(shí)現(xiàn)的,用于實(shí)現(xiàn)客域的共享數(shù)據(jù)客戶(hù)端模塊102和主域的共 享數(shù)據(jù)服務(wù)器模塊201之間的數(shù)據(jù)交互。
本發(fā)明系統(tǒng)的重點(diǎn)部件是主域中的共享數(shù)據(jù)服務(wù)器模塊201、客域中的共 享數(shù)據(jù)客戶(hù)端模塊102、以及兩者之間利用基于半虛擬化的內(nèi)存頁(yè)面重映射機(jī) 制實(shí)現(xiàn)的域間通道部件400。下面參見(jiàn)圖5,詳細(xì)描述這三個(gè)組件。
在一個(gè)虛擬化的計(jì)算機(jī)系統(tǒng)中,通常有一個(gè)主域, 一個(gè)或多個(gè)客域。主域 和多個(gè)客域之間分別建立的多個(gè)域間通道部件則呈一對(duì)多的星形拓樸結(jié)構(gòu)。因 為其中每個(gè)客域的共享數(shù)據(jù)客戶(hù)端模塊與主域的共享數(shù)據(jù)服務(wù)器模塊之間的交 互都是彼此獨(dú)立的,因此,在圖5中只描述一個(gè)主域和一個(gè)客域的交互關(guān)系。
圖5中,主域的內(nèi)核數(shù)據(jù)訪問(wèn)棧的結(jié)構(gòu)通常包括共享數(shù)據(jù)服務(wù)器模塊201、 文件系統(tǒng)模塊202、存儲(chǔ)巻管理模塊203和存儲(chǔ)設(shè)備驅(qū)動(dòng)程序模塊204。最底層 的是存儲(chǔ)設(shè)備驅(qū)動(dòng)程序模塊204,向上依次是操作系統(tǒng)對(duì)存儲(chǔ)設(shè)備進(jìn)行邏輯抽 象的存儲(chǔ)巻管理模塊203,通過(guò)存儲(chǔ)巻管理模塊203,文件系統(tǒng)模塊202可以方 便地訪問(wèn)管理存儲(chǔ)巻而不用關(guān)心存儲(chǔ)設(shè)備的細(xì)節(jié)。有些計(jì)算機(jī)系統(tǒng)中沒(méi)有設(shè)置 獨(dú)立的存儲(chǔ)巻管理模塊203,因此圖5將該模塊203標(biāo)識(shí)為虛線框。有些主域
的文件系統(tǒng)模塊可以包括虛擬文件系統(tǒng)VFS (Virtual File System )模塊,用于 提供對(duì)多種文件系統(tǒng)的抽象。由于虛擬文件系統(tǒng)模塊是操作系統(tǒng)中的成熟技術(shù)。 在此不做贅述。在本發(fā)明范疇內(nèi),將文件系統(tǒng)和虛擬文件系統(tǒng)都^L為文件系統(tǒng)。 還有一種可能的主域的內(nèi)核數(shù)據(jù)訪問(wèn)棧則主要包括共享數(shù)據(jù)服務(wù)器模塊201和
文件系統(tǒng)模塊202,此時(shí)的文件系統(tǒng)模塊通常是基于網(wǎng)絡(luò)的文件系統(tǒng)(比如 NFS 、 CIFS等)或者虛文件系統(tǒng)(Pseudo File System )。
主域中的共享數(shù)據(jù)服務(wù)器模塊201與文件系統(tǒng)模塊202運(yùn)行在計(jì)算機(jī)中央 處理器的高運(yùn)行特權(quán)級(jí),它們之間的數(shù)據(jù)交互完全遵守文件系統(tǒng)向上提供的接 口規(guī)范。共享數(shù)據(jù)服務(wù)器模塊201的文件訪問(wèn)例程經(jīng)文件系統(tǒng)模塊202通過(guò)執(zhí) 行典型的"打開(kāi)文件、包括讀、寫(xiě)、或控制的各項(xiàng)文件操作、關(guān)閉文件"的操 作系統(tǒng)完成文件的訪問(wèn)過(guò)程。
每個(gè)客域都有一個(gè)運(yùn)行在客域內(nèi)核態(tài)的共享數(shù)據(jù)客戶(hù)端模塊102。 一方面 共享數(shù)據(jù)客戶(hù)端102在客域提供的是本地文件系統(tǒng)的功能,它向客域中的應(yīng)用 模塊101和其他內(nèi)核子系統(tǒng)模塊103提供文件系統(tǒng)重定向器的服務(wù);另一方面 共享數(shù)據(jù)客戶(hù)端模塊102通過(guò)域間通道400與主域中的共享數(shù)據(jù)服務(wù)器模塊 201進(jìn)行交互,間接地利用主域的文件系統(tǒng)模塊202完成對(duì)數(shù)據(jù)的訪問(wèn),真實(shí) 地完成其對(duì)客域提供的文件系統(tǒng)重定向器服務(wù)功能。
本發(fā)明客域的共享數(shù)據(jù)客戶(hù)端模塊102與主域的共享數(shù)據(jù)服務(wù)器模塊201 之間的交互是由一個(gè)個(gè)的文件訪問(wèn)過(guò)程組成,并且客域的共享數(shù)據(jù)客戶(hù)端模塊 102與主域的共享數(shù)據(jù)服務(wù)器模塊201之間通過(guò)基于半虛擬化的內(nèi)存頁(yè)面重映 射機(jī)制實(shí)現(xiàn)的域間通道進(jìn)行數(shù)據(jù)交互。針對(duì)客域?qū)γ恳粋€(gè)存儲(chǔ)文件的"打開(kāi)-讀/寫(xiě)/控制/...-關(guān)閉"文件的訪問(wèn)過(guò)程,共享數(shù)據(jù)客戶(hù)端模塊102與共享數(shù)據(jù) 服務(wù)器模塊201之間也需要同步完成一個(gè)文件訪問(wèn)過(guò)程。
在現(xiàn)代操作系統(tǒng)中,每個(gè)"打開(kāi)文件-讀/寫(xiě)/控制/...文件-關(guān)閉文件"的 文件訪問(wèn)過(guò)程都是有狀態(tài)的。例如下面所示的 一個(gè)簡(jiǎn)單的文件訪問(wèn)過(guò)程
char buf[64];
int fd = open("/abc.txt", ...); /*打開(kāi)一個(gè)文件*/
read(fd, buf, 64); /*從打開(kāi)的文件頭讀出64個(gè)字節(jié)*/
/*當(dāng)前的讀文件指針在文件偏移的64個(gè)字節(jié)處*/ read(fd, buf, 64); /*從當(dāng)前的讀文件指針處讀出64個(gè)字節(jié)*/
close(fd); /*關(guān)閉一個(gè)文件*/
它的每一步操作都是基于當(dāng)前狀態(tài),比如第一個(gè)read操作是基于open完 成后的狀態(tài),當(dāng)前的讀文件指針是在從文件開(kāi)始的0字節(jié)偏移處,read讀出來(lái) 的是該文件的第0到第63個(gè)字節(jié);第二個(gè)read操作則是基于第一個(gè)read完成 后的狀態(tài),當(dāng)前的讀文件指針是在從文件開(kāi)始的64字節(jié)偏移處,所以第二個(gè)read 讀出來(lái)的是文件的第64到第127個(gè)字節(jié)。反映到共享數(shù)據(jù)客戶(hù)端模塊102與共 享數(shù)據(jù)服務(wù)器模塊201的交互上,共享數(shù)據(jù)服務(wù)器模塊201必須要有相應(yīng)的數(shù) 據(jù)結(jié)構(gòu)來(lái)記錄文件訪問(wèn)過(guò)程的不同狀態(tài)信息。此外,由于本發(fā)明系統(tǒng)支持多個(gè) 客域?qū)χ饔蚬芾淼奈募牟l(fā)訪問(wèn),從整個(gè)系統(tǒng)的安全角度出發(fā),共享數(shù)據(jù)服 務(wù)器模塊201必須保證每個(gè)客域的訪問(wèn)不能干涉到其它客域的訪問(wèn),并且任何 一個(gè)客域的非法操作不能威脅到主域和其他客域的正常運(yùn)行。
為了滿足上述要求,本發(fā)明系統(tǒng)在主域的共享數(shù)據(jù)服務(wù)器模塊201為文件 訪問(wèn)過(guò)程設(shè)置和維護(hù)兩類(lèi)數(shù)據(jù)結(jié)構(gòu)-文件訪問(wèn)表201A和文件訪問(wèn)實(shí)例201B。 通過(guò)文件訪問(wèn)實(shí)例201B,系統(tǒng)可以支持客域100對(duì)主域200直接管理的文件l丸 行有狀態(tài)的文件訪問(wèn)過(guò)程。通過(guò)文件訪問(wèn)表201A,系統(tǒng)可以保證不同客域?qū)χ?域直接管理的文件的訪問(wèn)不會(huì)干涉到別的客域?qū)χ饔蛑苯庸芾淼奈募脑L問(wèn)。
參見(jiàn)圖5,具體介紹共享數(shù)據(jù)服務(wù)器模塊201的兩類(lèi)數(shù)據(jù)結(jié)構(gòu)文件訪問(wèn) 表201A和文件訪問(wèn)實(shí)例201B。前者201A是共享數(shù)據(jù)服務(wù)器201為與其交互 的每個(gè)共享數(shù)據(jù)客戶(hù)端模塊102單獨(dú)、對(duì)應(yīng)地建立的,圖5中只畫(huà)出一個(gè)客域 的共享數(shù)據(jù)客戶(hù)端模塊102,共享數(shù)據(jù)服務(wù)器201中的文件訪問(wèn)表201A就是與 該共享客戶(hù)端102相對(duì)應(yīng)的。如果系統(tǒng)中有多個(gè)客域,就會(huì)存在對(duì)應(yīng)的多個(gè)共 享數(shù)據(jù)客戶(hù)端模塊和文件訪問(wèn)表。雖然圖5中只描述了存在一個(gè)客域的情形, 但本發(fā)明不局限于一個(gè)客域,存在多個(gè)客域的概念是同樣的。
文件訪問(wèn)表201A由多個(gè)節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)著共享數(shù)據(jù)客戶(hù)端模塊
102與共享數(shù)據(jù)服務(wù)器模塊201之間的一個(gè)文件訪問(wèn)過(guò)程。共享數(shù)據(jù)服務(wù)器模
塊201還用文件訪問(wèn)實(shí)例201B記錄著每一個(gè)文件訪問(wèn)過(guò)程的文件訪問(wèn)信息, 文件訪問(wèn)表201A的節(jié)點(diǎn)直接含有或由指針間接指向?qū)?yīng)的文件訪問(wèn)過(guò)程中的 文件訪問(wèn)實(shí)例201B。圖中只描述了文件訪問(wèn)表201A的節(jié)點(diǎn)通過(guò)指針指向文件 訪問(wèn)實(shí)例201B的情形,但本發(fā)明不局限于此。在每一個(gè)"打開(kāi)-讀/寫(xiě)/控制/... -關(guān)閉"的文件訪問(wèn)過(guò)程中,共享數(shù)據(jù)客戶(hù)端模塊102與共享數(shù)據(jù)服務(wù)器模塊 201通常會(huì)有多次交互,共享數(shù)據(jù)服務(wù)器模塊201的文件訪問(wèn)表201A的節(jié)點(diǎn)的 檢索索引號(hào)有重要作用。共享數(shù)據(jù)服務(wù)器模塊201在響應(yīng)共享數(shù)據(jù)客戶(hù)端模塊 102的請(qǐng)求打開(kāi)文件、建立對(duì)應(yīng)這次文件訪問(wèn)過(guò)程的文件訪問(wèn)表節(jié)點(diǎn)時(shí),共享 數(shù)據(jù)服務(wù)器模塊201同時(shí)產(chǎn)生一個(gè)標(biāo)識(shí)符-檢索索引號(hào),用于標(biāo)識(shí)該文件訪問(wèn) 過(guò)程中的文件訪問(wèn)表節(jié)點(diǎn),并回復(fù)給該共享數(shù)據(jù)客戶(hù)端模塊102。共享數(shù)據(jù)服
問(wèn)表節(jié)點(diǎn),再通過(guò)該文件訪問(wèn)表節(jié)點(diǎn),共享數(shù)據(jù)服務(wù)器模塊201可以獲得對(duì)應(yīng) 的文件訪問(wèn)實(shí)例,從而獲得這次文件訪問(wèn)過(guò)程的文件訪問(wèn)信息。且在本次文件 訪問(wèn)過(guò)程中,這個(gè)檢索索引號(hào)作為在共享數(shù)據(jù)客戶(hù)端模塊102與共享數(shù)據(jù)服務(wù) 器模塊201交互過(guò)程中,標(biāo)識(shí)這次文件訪問(wèn)過(guò)程的標(biāo)識(shí)符,在共享數(shù)據(jù)服務(wù)器 模塊201響應(yīng)共享數(shù)據(jù)客戶(hù)端模塊102請(qǐng)求關(guān)閉文件,并拆除對(duì)應(yīng)這次文件訪 問(wèn)過(guò)程中的文件訪問(wèn)表節(jié)點(diǎn)和文件訪問(wèn)實(shí)例之前,這個(gè)標(biāo)識(shí)這次文件訪問(wèn)過(guò)程 的檢索索引號(hào)始終有效、且是唯一的。
舉例來(lái)說(shuō),共享數(shù)據(jù)客戶(hù)端模塊102通過(guò)域間通道400發(fā)送讀耳又64個(gè)字節(jié) 的請(qǐng)求消息給共享數(shù)據(jù)服務(wù)器模塊201,該請(qǐng)求消息中含有共享數(shù)據(jù)服務(wù)器模 塊201在處理共享數(shù)據(jù)客戶(hù)端模塊102打開(kāi)文件請(qǐng)求時(shí)所回復(fù)的4全索索引號(hào)。 共享數(shù)據(jù)服務(wù)器模塊102收到這個(gè)讀文件請(qǐng)求后,根據(jù)該請(qǐng)求消息中的檢索索 引號(hào)可以確定找到對(duì)應(yīng)的文件訪問(wèn)實(shí)例,^v而獲得對(duì)應(yīng)這次文件訪問(wèn)過(guò)程的文 件訪問(wèn)信息,接下來(lái)就可以通過(guò)文件系統(tǒng)模塊202訪問(wèn)文件了 。
本發(fā)明系統(tǒng)中,主域部件共享數(shù)據(jù)服務(wù)器模塊201管理的文件訪問(wèn)表201A 與共享數(shù)據(jù)客戶(hù)端102是一一對(duì)應(yīng)的,每個(gè)客域的共享數(shù)據(jù)客戶(hù)端模塊102通過(guò)含有檢索索引號(hào)的訪問(wèn)請(qǐng)求消息的技術(shù)手段,只觸發(fā)共享數(shù)據(jù)服務(wù)器模塊 201在為自己對(duì)應(yīng)建立的文件訪問(wèn)表201A的范圍內(nèi)進(jìn)行檢索,并取得自身發(fā)起
的文件訪問(wèn)過(guò)程所對(duì)應(yīng)的文件訪問(wèn)實(shí)例201B,而不能看到或影響到其他客域與 主域的文件訪問(wèn)過(guò)程,這樣就能夠保證各個(gè)客域與主域之間訪問(wèn)的獨(dú)立性,共 享數(shù)據(jù)服務(wù)器模塊201也就保證了每個(gè)客域?qū)χ饔蛑苯庸芾淼拇鎯?chǔ)設(shè)備和其中 存儲(chǔ)的數(shù)據(jù)的訪問(wèn)不能干涉其它客域?qū)χ饔蛑苯庸芾淼拇鎯?chǔ)設(shè)備和其中存儲(chǔ)的 數(shù)據(jù)的訪問(wèn),以及某個(gè)客域的非法操作不能對(duì)主域和其他客域產(chǎn)生不利影響。
再者,本發(fā)明方法在每個(gè)文件訪問(wèn)過(guò)程中,每個(gè)操作步驟都是基于當(dāng)前狀 態(tài)的,共享數(shù)據(jù)服務(wù)器模塊維護(hù)的對(duì)應(yīng)該文件訪問(wèn)過(guò)程的數(shù)據(jù)結(jié)構(gòu)-文件訪問(wèn) 實(shí)例,含有該文件訪問(wèn)過(guò)程的狀態(tài)信息。
基于如上所述,本發(fā)明還提供了 一種基于文件訪問(wèn)過(guò)程實(shí)現(xiàn)共享數(shù)據(jù)客戶(hù) 端模塊與共享數(shù)據(jù)服務(wù)器模塊之間安全地完成數(shù)據(jù)訪問(wèn)的方法(參見(jiàn)圖6),它 是在主域的共享數(shù)據(jù)服務(wù)器模塊和客域的共享數(shù)據(jù)客戶(hù)端模塊之間,藉由主域 與客域之間的域間通道,通過(guò)基于半虛擬化的內(nèi)存頁(yè)面重映射機(jī)制實(shí)現(xiàn)文件訪 問(wèn)過(guò)程,該方法在某個(gè)共享數(shù)據(jù)客戶(hù)端模塊和共享數(shù)據(jù)服務(wù)器模塊之間完成的 每一個(gè)文件訪問(wèn)過(guò)程包括下列操作步驟
步驟i、共享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送打開(kāi)文件的請(qǐng)求;
步驟2、共享數(shù)據(jù)服務(wù)器模塊收到該打開(kāi)文件的請(qǐng)求后,通過(guò)主域部件的 文件系統(tǒng)模塊打開(kāi)文件,并在對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表中建立 對(duì)應(yīng)這次文件訪問(wèn)過(guò)程的節(jié)點(diǎn)和文件訪問(wèn)實(shí)例,再將該節(jié)點(diǎn)的檢索索引號(hào)回復(fù) 給該共享數(shù)據(jù)客戶(hù)端模塊;
步驟3、該共享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送訪問(wèn)文件的請(qǐng) 求,該請(qǐng)求中含有這次文件訪問(wèn)過(guò)程中共享數(shù)據(jù)服務(wù)器模塊回復(fù)的檢索索引號(hào);
步驟4、共享數(shù)據(jù)服務(wù)器模塊收到該共享數(shù)據(jù)客戶(hù)端模塊發(fā)送的訪問(wèn)文件 的請(qǐng)求,獲悉該訪問(wèn)文件請(qǐng)求的操作類(lèi)型;
步驟5、共享數(shù)據(jù)服務(wù)器模塊先判斷該訪問(wèn)文件的操作請(qǐng)求是否為關(guān)閉文 件,若不是,順序執(zhí)行后續(xù)步驟;若是,則跳轉(zhuǎn)執(zhí)行步驟7; 步驟6、共享數(shù)據(jù)服務(wù)器模塊通過(guò)主域部件的文件系統(tǒng)模塊執(zhí)行文件訪問(wèn) 操作,并將對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表中對(duì)應(yīng)這次文件訪問(wèn)過(guò)程 的文件訪問(wèn)實(shí)例的文件訪問(wèn)信息進(jìn)行更新,再把包含這次文件訪問(wèn)過(guò)程的4企索
索引號(hào)的文件訪問(wèn)結(jié)果回復(fù)給該共享數(shù)據(jù)客戶(hù)端模塊,然后返回步驟3;
步驟7、共享數(shù)據(jù)服務(wù)器通過(guò)主域的文件系統(tǒng)關(guān)閉文件,并在對(duì)應(yīng)這個(gè)共
文件訪問(wèn)實(shí)例,結(jié)束本次文件訪問(wèn)過(guò)程。
圖6中的步驟1 -步驟7是一個(gè)共享數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù)服務(wù)器模 塊之間執(zhí)行的一個(gè)文件訪問(wèn)過(guò)程,實(shí)際上,在一個(gè)共享數(shù)據(jù)客戶(hù)端模塊與共享 數(shù)據(jù)服務(wù)器模塊之間可以同時(shí)并發(fā)運(yùn)行多個(gè)訪問(wèn)文件的操作,也就是一個(gè)共享 數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù)服務(wù)器模塊之間可以同時(shí)并行地運(yùn)行多個(gè)文件訪問(wèn) 過(guò)程。而在每一個(gè)文件訪問(wèn)過(guò)程中,共享數(shù)據(jù)客戶(hù)端模塊通過(guò)循環(huán)執(zhí)行步驟3 ~ 步驟6的操作對(duì)共享數(shù)據(jù)服務(wù)器模塊所打開(kāi)的文件進(jìn)行多次訪問(wèn)。
需要說(shuō)明的是,主域中共享數(shù)據(jù)服務(wù)器模塊管理的文件訪問(wèn)表與共享數(shù)據(jù) 客戶(hù)端模塊是一一對(duì)應(yīng)的關(guān)系,共享數(shù)據(jù)服務(wù)器模塊可以預(yù)先分配文件訪問(wèn)表, 更好的設(shè)計(jì)是根據(jù)共享數(shù)據(jù)客戶(hù)端模塊的需要,動(dòng)態(tài)建立和拆除文件訪問(wèn)表, 以?xún)?yōu)化資源使用。也就是,共享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送建 立連接的請(qǐng)求時(shí),共享數(shù)據(jù)服務(wù)器模塊才建立一個(gè)對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊 的文件訪問(wèn)表;共享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送拆除連接的請(qǐng) 求時(shí),共享數(shù)據(jù)服務(wù)器模塊就拆除對(duì)應(yīng)這個(gè)共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表。 參見(jiàn)圖7,本發(fā)明在共享數(shù)據(jù)客戶(hù)端模塊和共享數(shù)據(jù)服務(wù)器模塊之間實(shí)現(xiàn)文件 訪問(wèn)過(guò)程之前和之后還可以分別包括建立連接和拆除連接的操作步驟
步驟0、在共享數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù)服務(wù)器模塊之間建立連接共 享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送建立連接的請(qǐng)求,共享數(shù)據(jù)服務(wù) 器模塊收到該建立連接的請(qǐng)求,建立一個(gè)對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端才莫塊的文件訪 問(wèn)表。
步驟l ~步驟7、在該共享數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù)服務(wù)器模塊之間進(jìn)行
交互,通過(guò)基于半虛擬化的內(nèi)存頁(yè)面重映射機(jī)制實(shí)現(xiàn)的域間通道完成文件訪問(wèn) 過(guò)程。
步驟8、拆除該共享數(shù)據(jù)客戶(hù)端與共享數(shù)據(jù)服務(wù)器之間的連接該共享數(shù) 據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送拆除連接的請(qǐng)求,共享數(shù)據(jù)服務(wù)器收 到該拆除連接的請(qǐng)求,拆除對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表。
本發(fā)明已經(jīng)進(jìn)行了實(shí)施試驗(yàn),由于本發(fā)明在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬 化計(jì)算機(jī)系統(tǒng)和方法能夠適用于三種計(jì)算機(jī)虛擬化模型,因此,根據(jù)計(jì)算機(jī)的 虛擬化模型的不同,本發(fā)明采用三個(gè)實(shí)施例分別進(jìn)行試驗(yàn)實(shí)施,下面分別介紹 之
參見(jiàn)圖8,在基于主操作系統(tǒng)的虛擬化計(jì)算機(jī)系統(tǒng)模型中,本發(fā)明的共享 數(shù)據(jù)客戶(hù)端模塊實(shí)現(xiàn)在客操作系統(tǒng)的內(nèi)核態(tài),而主域的共享數(shù)據(jù)服務(wù)器模塊實(shí) 現(xiàn)在主操作系統(tǒng)的內(nèi)核態(tài);共享數(shù)據(jù)客戶(hù)端模塊和共享數(shù)據(jù)服務(wù)器模塊通過(guò)基 于半虛擬化實(shí)現(xiàn)的內(nèi)存頁(yè)面重映射機(jī)制實(shí)現(xiàn)的域間通道相互之間交換數(shù)據(jù)。
參見(jiàn)圖9,在基于超級(jí)監(jiān)視器的虛擬化計(jì)算機(jī)系統(tǒng)中,本發(fā)明的共享數(shù)據(jù) 客戶(hù)端模塊也是實(shí)現(xiàn)在客操作系統(tǒng)的內(nèi)核態(tài),共享數(shù)據(jù)服務(wù)器模塊與虛擬機(jī)監(jiān) 視器都運(yùn)行在中央處理器的高運(yùn)行特權(quán)級(jí),共享數(shù)據(jù)客戶(hù)端模塊和共享數(shù)據(jù)服 務(wù)器模塊通過(guò)基于半虛擬化實(shí)現(xiàn)的內(nèi)存頁(yè)面重映射機(jī)制實(shí)現(xiàn)的域間通道相互之 間交換數(shù)據(jù)。
參見(jiàn)圖10,在基于混合模型的虛擬化計(jì)算機(jī)系統(tǒng)中,本發(fā)明的共享數(shù)據(jù)客 戶(hù)端模塊實(shí)現(xiàn)在非特權(quán)客操作系統(tǒng)的內(nèi)核態(tài),共享數(shù)據(jù)服務(wù)器模塊實(shí)現(xiàn)在特權(quán) 客操作系統(tǒng)的內(nèi)核態(tài),共享數(shù)據(jù)客戶(hù)端和共享數(shù)據(jù)服務(wù)器通過(guò)基于半虛擬化的 內(nèi)存頁(yè)面重映射機(jī)制實(shí)現(xiàn)的域間通道相互之間交換數(shù)據(jù)。
試驗(yàn)實(shí)施的情況證明,本發(fā)明系統(tǒng)中的主域?qū)Υ鎯?chǔ)資源和數(shù)據(jù)進(jìn)行管理, 客域通過(guò)域間通道在文件系統(tǒng)層次上和主域進(jìn)行交互,對(duì)主域管理下的數(shù)據(jù)實(shí) 現(xiàn)了高速共享訪問(wèn)。而且,本發(fā)明能適用于上述三種^f莫型,適用范圍廣,實(shí)現(xiàn) 了發(fā)明目的。
權(quán)利要求
1、一種在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì)算機(jī)系統(tǒng),該系統(tǒng)包括:一個(gè)計(jì)算機(jī)硬件裝置,該計(jì)算機(jī)硬件裝置設(shè)有:一個(gè)或一組支持兩個(gè)或多個(gè)運(yùn)行特權(quán)級(jí)的中央處理器、設(shè)定容量的內(nèi)存和包括存儲(chǔ)設(shè)備在內(nèi)的輸入輸出設(shè)備,所述存儲(chǔ)設(shè)備包括硬盤(pán)、軟盤(pán)、閃存盤(pán)、光盤(pán)、直連式存儲(chǔ)設(shè)備、或網(wǎng)絡(luò)存儲(chǔ)設(shè)備;其特征在于:該系統(tǒng)還包括在所述計(jì)算機(jī)硬件裝置上運(yùn)行的軟件單元,所述軟件單元包括:一個(gè)主域部件、一個(gè)或多個(gè)客域部件、以及在主域部件與客域部件之間的域間通道部件,其中:主域部件,直接運(yùn)行在計(jì)算機(jī)硬件裝置上,用于提供支撐虛擬機(jī)運(yùn)行的虛擬機(jī)監(jiān)控器;主域部件的內(nèi)核包括:文件系統(tǒng)模塊和共享數(shù)據(jù)服務(wù)器模塊,其中文件系統(tǒng)模塊用于管理計(jì)算機(jī)的存儲(chǔ)設(shè)備及其中存儲(chǔ)的數(shù)據(jù),并完成對(duì)存儲(chǔ)設(shè)備上的文件訪問(wèn);共享數(shù)據(jù)服務(wù)器模塊用于與客域部件的共享數(shù)據(jù)客戶(hù)端模塊進(jìn)行交互,利用文件系統(tǒng)模塊的文件訪問(wèn)功能,完成客域部件中的共享數(shù)據(jù)客戶(hù)端模塊對(duì)主域部件直接管理的存儲(chǔ)設(shè)備及其中存儲(chǔ)的數(shù)據(jù)的訪問(wèn);客域部件,運(yùn)行在主域部件的虛擬機(jī)監(jiān)視器所支撐的虛擬機(jī)上;客域部件的內(nèi)核包括:共享數(shù)據(jù)客戶(hù)端模塊,該模塊用做客域操作系統(tǒng)的文件系統(tǒng)重定向器,以響應(yīng)來(lái)自該客域部件中的應(yīng)用和其他內(nèi)核子系統(tǒng)模塊對(duì)存儲(chǔ)設(shè)備上的文件訪問(wèn)請(qǐng)求,并通過(guò)域間通道與主域部件的共享數(shù)據(jù)服務(wù)器模塊進(jìn)行交互,利用主域部件的共享數(shù)據(jù)服務(wù)器模塊和文件系統(tǒng)模塊的文件訪問(wèn)功能,完成客域部件對(duì)主域部件直接管理的存儲(chǔ)設(shè)備及其中存儲(chǔ)的數(shù)據(jù)的間接訪問(wèn);主域部件與客域部件之間的域間通道部件,該部件是基于半虛擬化的內(nèi)存頁(yè)面重映射機(jī)制實(shí)現(xiàn)的域間通信通道,用于完成客域部件的共享數(shù)據(jù)客戶(hù)端模塊和主域部件的共享數(shù)據(jù)服務(wù)器模塊之間的數(shù)據(jù)交互。
2、 根據(jù)權(quán)利要求1所述的虛擬化計(jì)算機(jī)系統(tǒng),其特征在于所述主域部件 的共享數(shù)據(jù)服務(wù)器模塊和文件系統(tǒng)模塊都運(yùn)行在該主域部件的操作系統(tǒng)的內(nèi)核 態(tài);其中共享數(shù)據(jù)服務(wù)器模塊按照文件系統(tǒng)向上提供的接口規(guī)范與文件系統(tǒng)模塊交互,并通過(guò)文件系統(tǒng)模塊管理存儲(chǔ)設(shè)備和其中存儲(chǔ)的數(shù)據(jù);該共享數(shù)據(jù)服務(wù)器模塊的文件訪問(wèn)例程經(jīng)文件系統(tǒng)模塊通過(guò)執(zhí)行典型的"打開(kāi)、包括讀、寫(xiě)、 或控制的各項(xiàng)搡作、關(guān)閉"文件的操作系統(tǒng)文件訪問(wèn)過(guò)程完成對(duì)文件的訪問(wèn)。
3、 根據(jù)權(quán)利要求1所述的虛擬化計(jì)算機(jī)系統(tǒng),其特征在于所述文件系統(tǒng) 模塊還包括對(duì)各個(gè)文件系統(tǒng)進(jìn)行抽象的虛擬文件系統(tǒng)VFS模塊。
4、 根據(jù)權(quán)利要求1所述的虛擬化計(jì)算機(jī)系統(tǒng),其特征在于所述客域部件 的操作系統(tǒng)是通用的操作系統(tǒng),所述每個(gè)客域部件都有一個(gè)運(yùn)行在該客域操作 系統(tǒng)的內(nèi)核態(tài)的共享數(shù)據(jù)客戶(hù)端模塊;該共享數(shù)據(jù)客戶(hù)端才莫塊在客域提供本地 文件系統(tǒng)的功能,向客域部件中的應(yīng)用和其他內(nèi)核子系統(tǒng)才莫塊提供本地文件系 統(tǒng)的服務(wù)接口 ,通過(guò)域間通道部件與主域部件中的共享數(shù)據(jù)服務(wù)器模塊進(jìn)行交 互。
5 根據(jù)權(quán)利要求1所述的虛擬化計(jì)算機(jī)系統(tǒng),其特征在于當(dāng)所述虛擬化 計(jì)算機(jī)系統(tǒng)中有多個(gè)客域部件時(shí),所述主域部件和該多個(gè)客域部件之間建立的 域間通道部件呈一對(duì)多的星形拓樸結(jié)構(gòu),且其中每個(gè)客域部件的共享數(shù)據(jù)客戶(hù) 端模塊與主域部件的共享數(shù)據(jù)服務(wù)器模塊之間的交互是彼此獨(dú)立的。
6、 根據(jù)權(quán)利要求1或5所述的虛擬化計(jì)算機(jī)系統(tǒng),其特征在于所述共享 數(shù)據(jù)服務(wù)器模塊應(yīng)保證每個(gè)客域部件對(duì)主域部件直接管理的存儲(chǔ)設(shè)備和其中存 儲(chǔ)的數(shù)據(jù)的訪問(wèn)不能干涉其它客域部件對(duì)主域部件直接管理的存儲(chǔ)設(shè)備和其中 存儲(chǔ)的數(shù)據(jù)的訪問(wèn),以及某個(gè)客域部件的非法操作不能對(duì)主域部件和其他客域 部件產(chǎn)生不利影響。
7、 根據(jù)權(quán)利要求1所述的虛擬化計(jì)算機(jī)系統(tǒng),其特征在于所述主域部件 的內(nèi)核數(shù)據(jù)訪問(wèn)棧的結(jié)構(gòu)由最底層向上的排列順序包括存儲(chǔ)設(shè)備驅(qū)動(dòng)程序模 塊,存儲(chǔ)巻管理模塊,文件系統(tǒng)模塊,共享數(shù)據(jù)服務(wù)器^t塊;內(nèi)核數(shù)據(jù)訪問(wèn)棧 的另 一種結(jié)構(gòu)包括文件系統(tǒng)模塊和共享數(shù)據(jù)服務(wù)器模塊,此時(shí)的文件系統(tǒng)模塊 是基于網(wǎng)絡(luò)的文件系統(tǒng)模塊或虛文件系統(tǒng)模塊。
8、 根據(jù)權(quán)利要求1所述的虛擬化計(jì)算機(jī)系統(tǒng),其特征在于所述共享數(shù)據(jù) 服務(wù)器模塊設(shè)有兩類(lèi)數(shù)據(jù)結(jié)構(gòu)文件訪問(wèn)表和文件訪問(wèn)實(shí)例,前者是分別為與該共享數(shù)據(jù)服務(wù)器模塊進(jìn)行交互的各個(gè)共享數(shù)據(jù)客戶(hù)端模塊單獨(dú)、對(duì)應(yīng)地建立 的,該文件訪問(wèn)表由多個(gè)節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)著所述共享數(shù)據(jù)客戶(hù)端模塊與該共享數(shù)據(jù)服務(wù)器模塊之間的一個(gè)文件訪問(wèn)過(guò)程;后者用于記錄每一個(gè)文件 訪問(wèn)過(guò)程中的文件訪問(wèn)信息,對(duì)應(yīng)于某個(gè)文件訪問(wèn)過(guò)程的文件訪問(wèn)表的節(jié)點(diǎn)直 接含有或由指針間接指向?qū)?yīng)于同 一個(gè)文件訪問(wèn)過(guò)程的文件訪問(wèn)實(shí)例;所述文 件訪問(wèn)表的節(jié)點(diǎn)和文件訪問(wèn)實(shí)例是在該共享數(shù)據(jù)客戶(hù)端^^莫塊請(qǐng)求共享數(shù)據(jù)服務(wù) 器模塊打開(kāi)文件時(shí),由共享數(shù)據(jù)服務(wù)器模塊建立;并在該共享數(shù)據(jù)客戶(hù)端模塊 請(qǐng)求共享數(shù)據(jù)服務(wù)器模塊關(guān)閉文件時(shí),由共享數(shù)據(jù)服務(wù)器模塊拆除。
9、 根據(jù)權(quán)利要求8所述的虛擬化計(jì)算機(jī)系統(tǒng),其特征在于當(dāng)共享數(shù)據(jù)服 務(wù)器模塊響應(yīng)某個(gè)共享數(shù)據(jù)客戶(hù)端模塊請(qǐng)求而打開(kāi)文件、建立對(duì)應(yīng)本次文件訪 問(wèn)過(guò)程的文件訪問(wèn)表節(jié)點(diǎn)時(shí)產(chǎn)生一個(gè)標(biāo)識(shí)符-4企索索引號(hào),用于標(biāo)識(shí)該文件訪 問(wèn)過(guò)程的文件訪問(wèn)表節(jié)點(diǎn),并回復(fù)給該共享數(shù)據(jù)客戶(hù)端^t塊;共享數(shù)據(jù)服務(wù)器 模塊用該檢索索引號(hào)可以獲得對(duì)應(yīng)的文件訪問(wèn)實(shí)例,從而獲得這次文件訪問(wèn)過(guò) 程的文件訪問(wèn)信息;且在本次文件訪問(wèn)過(guò)程中,在共享數(shù)據(jù)服務(wù)器模塊響應(yīng)該 共享數(shù)據(jù)客戶(hù)端模塊的請(qǐng)求關(guān)閉文件,并拆除對(duì)應(yīng)這次文件訪問(wèn)過(guò)程中的文件 訪問(wèn)表節(jié)點(diǎn)和文件訪問(wèn)實(shí)例之前,標(biāo)識(shí)本次文件訪問(wèn)過(guò)程的檢索索引號(hào)始終有 效、且是唯一的。
10、 一種在權(quán)利要求1所述的在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì)算機(jī)系 統(tǒng)中共享數(shù)據(jù)的方法,其特征在于在主域部件的共享數(shù)據(jù)服務(wù)器模塊和客域 部件的共享數(shù)據(jù)客戶(hù)端模塊之間,藉由主域部件與客域部件之間的域間通道部件,通過(guò)基于半虛擬化的內(nèi)存頁(yè)面重映射機(jī)制實(shí)現(xiàn)文件訪問(wèn)過(guò)程,所述方法在 某個(gè)共享數(shù)據(jù)客戶(hù)端模塊和共享數(shù)據(jù)服務(wù)器模塊之間完成的一個(gè)文件訪問(wèn)過(guò)程包括下列操作步驟步驟1、共享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送打開(kāi)文件的請(qǐng)求; 步驟2、共享數(shù)據(jù)服務(wù)器模塊收到該打開(kāi)文件的請(qǐng)求后,通過(guò)主域部件的 文件系統(tǒng)模塊打開(kāi)文件,并在對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表中建立 一個(gè)對(duì)應(yīng)本次文件訪問(wèn)過(guò)程的節(jié)點(diǎn)和一個(gè)文件訪問(wèn)實(shí)例,再將該節(jié)點(diǎn)的檢索索引號(hào)回復(fù)給該共享數(shù)據(jù)客戶(hù)端模塊;步驟3、該共享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送訪問(wèn)文件的請(qǐng) 求,該請(qǐng)求中含有本次文件訪問(wèn)過(guò)程中共享數(shù)據(jù)服務(wù)器模塊回復(fù)的檢索索引號(hào);步驟4、共享數(shù)據(jù)服務(wù)器模塊收到該共享數(shù)據(jù)客戶(hù)端模塊發(fā)送的訪問(wèn)文件 的請(qǐng)求,獲悉該訪問(wèn)文件請(qǐng)求的搡作類(lèi)型;步驟5、共享數(shù)據(jù)服務(wù)器模塊先判斷該訪問(wèn)文件的操作請(qǐng)求是否為關(guān)閉文 件,若不是,順序執(zhí)行后續(xù)步驟;若是,則跳轉(zhuǎn)執(zhí)行步驟7;步驟6、共享數(shù)據(jù)服務(wù)器模塊通過(guò)主域部件的文件系統(tǒng)模塊執(zhí)行文件訪問(wèn) 操作,并將對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表中對(duì)應(yīng)本次文件訪問(wèn)過(guò)程 的文件訪問(wèn)實(shí)例的文件訪問(wèn)信息進(jìn)行更新,再把含有本次文件訪問(wèn)過(guò)程的檢索 索引號(hào)的文件訪問(wèn)結(jié)果回復(fù)給該共享數(shù)據(jù)客戶(hù)端模塊,然后返回步驟3;步驟7、共享數(shù)據(jù)服務(wù)器模塊通過(guò)主域部件的文件系統(tǒng)模塊關(guān)閉文件,并件訪問(wèn)表節(jié)點(diǎn)和文件訪問(wèn)實(shí)例,結(jié)束本次文件訪問(wèn)過(guò)程。
11、 根據(jù)權(quán)利要求IO所述的虛擬化計(jì)算機(jī)系統(tǒng)中共享數(shù)據(jù)的方法,其特征 在于所述方法在某個(gè)共享數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù)服務(wù)器模塊之間可以同 時(shí)并發(fā)運(yùn)行多個(gè)訪問(wèn)文件的操作,即每個(gè)共享數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù)服務(wù) 器^t塊之間可以并行地運(yùn)行多個(gè)文件訪問(wèn)過(guò)程。
12、 根據(jù)權(quán)利要求10或11所述的虛擬化計(jì)算機(jī)系統(tǒng)中共享數(shù)據(jù)的方法, 其特征在于所述方法在每個(gè)文件訪問(wèn)過(guò)程中,共享數(shù)據(jù)客戶(hù)端模塊通過(guò)循環(huán) 執(zhí)行步驟3 ~步驟6的操作,對(duì)共享數(shù)據(jù)服務(wù)器模塊所打開(kāi)的文件進(jìn)行多次訪 問(wèn)。
13、 根據(jù)權(quán)利要求IO所述的虛擬化計(jì)算機(jī)系統(tǒng)中共享數(shù)據(jù)的方法,其特征 在于所述方法在每個(gè)文件訪問(wèn)過(guò)程中,每個(gè)操作步驟都是基于當(dāng)前狀態(tài)的, 共享數(shù)據(jù)服務(wù)器模塊維護(hù)的對(duì)應(yīng)所述文件訪問(wèn)過(guò)程的數(shù)據(jù)結(jié)構(gòu)-文件訪問(wèn)實(shí)例中,含有對(duì)應(yīng)該文件訪問(wèn)過(guò)程的狀態(tài)信息。
14、 根據(jù)權(quán)利要求IO所述的虛擬化計(jì)算機(jī)系統(tǒng)中共享數(shù)據(jù)的方法,其特征 在于所述方法在共享數(shù)據(jù)客戶(hù)端^f莫塊和共享數(shù)據(jù)服務(wù)器^^莫塊之間實(shí)現(xiàn)文件訪 問(wèn)過(guò)程之前和之后分別包括下列兩個(gè)操作步驟步驟0、在共享數(shù)據(jù)客戶(hù)端模塊與共享數(shù)據(jù)服務(wù)器模塊之間建立連接共 享數(shù)據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送建立連接的請(qǐng)求,共享數(shù)據(jù)服務(wù) 器模塊收到該建立連接的請(qǐng)求,建立一個(gè)對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表;步驟8、拆除該共享數(shù)據(jù)客戶(hù)端與共享數(shù)據(jù)服務(wù)器之間的連接該共享數(shù) 據(jù)客戶(hù)端模塊給共享數(shù)據(jù)服務(wù)器模塊發(fā)送拆除連接的請(qǐng)求,共享數(shù)據(jù)服務(wù)器收 到該拆除連接的請(qǐng)求,拆除對(duì)應(yīng)該共享數(shù)據(jù)客戶(hù)端模塊的文件訪問(wèn)表。
全文摘要
一種在各個(gè)域間實(shí)現(xiàn)數(shù)據(jù)共享的虛擬化計(jì)算機(jī)系統(tǒng),包括計(jì)算機(jī)硬件裝置和在該計(jì)算機(jī)硬件裝置上運(yùn)行的軟件單元,軟件單元包括主域、客域、在主域與客域之間的域間通道。其中主域的內(nèi)核有文件系統(tǒng)模塊和共享數(shù)據(jù)服務(wù)器模塊,客域的內(nèi)核有共享數(shù)據(jù)客戶(hù)端模塊,域間通道用于實(shí)現(xiàn)共享數(shù)據(jù)客戶(hù)端模塊和共享數(shù)據(jù)服務(wù)器模塊之間的數(shù)據(jù)交互。本發(fā)明共享數(shù)據(jù)的方法是在共享數(shù)據(jù)服務(wù)器模塊和共享數(shù)據(jù)客戶(hù)端模塊之間,藉由它們之間的域間通道,通過(guò)基于半虛擬化的內(nèi)存頁(yè)面重映射機(jī)制實(shí)現(xiàn)文件訪問(wèn)過(guò)程。本發(fā)明解決了現(xiàn)有技術(shù)不同域之間不能有效共享數(shù)據(jù)的問(wèn)題,實(shí)現(xiàn)了存儲(chǔ)數(shù)據(jù)的統(tǒng)一管理,減低維護(hù)成本,性能好,效率高,適用范圍廣。
文檔編號(hào)G06F9/455GK101377745SQ200710120868
公開(kāi)日2009年3月4日 申請(qǐng)日期2007年8月28日 優(yōu)先權(quán)日2007年8月28日
發(fā)明者張玉昆 申請(qǐng)人:張玉昆