專利名稱:雙層元數(shù)據(jù)處理系統(tǒng)及方法
技術(shù)領域:
本發(fā)明涉及計算機存儲系統(tǒng)體系結(jié)構(gòu)領域,特別是一種雙層元數(shù)據(jù)處理系 統(tǒng)及方法。
背景技術(shù):
隨著世界信息化的不斷推進,計算機已成為各行業(yè)中不可缺少的工具。在 計算機中,承載信息的存儲管理軟件隨著信息量的突增而日益受到了人們的重 視。存儲管理軟件的功能是將物理存儲介質(zhì)(如磁盤、盤陣等)組織成邏輯分 組,以實現(xiàn)各種功能和特性。操作系統(tǒng)可以通過調(diào)用存儲管理軟件的接口為上 層用戶提供存儲服務。在存儲系統(tǒng)中所進行處理的數(shù)據(jù)有兩類, 一類是用戶使用的普通數(shù)據(jù),另一類是存儲系統(tǒng)用于管理用戶數(shù)據(jù)的數(shù)據(jù),即元數(shù)據(jù)(Metadata)。普通數(shù)據(jù) 訪問的特點是IO量大、CPU利用率低以及對網(wǎng)絡帶寬的要求高;元數(shù)據(jù)訪問 的特點是IO量小、CPU利用率高以及對網(wǎng)絡延遲的要求高。由于上述兩類數(shù) 據(jù)間存在著差異,因此存儲系統(tǒng)將這兩類數(shù)據(jù)的信息和控制流區(qū)分,分別定義 了普通數(shù)據(jù)和元數(shù)據(jù)處理的功能操作,并將對上述兩類數(shù)據(jù)的管理分離到獨立 部件。其中,處理普通數(shù)據(jù)的部件稱為數(shù)據(jù)存儲服務器,處理元數(shù)據(jù)的部件稱 為元數(shù)據(jù)服務器。對于數(shù)據(jù)存儲服務器的設計主要有兩類第一類采用傳統(tǒng)的塊接口存儲設 計,即數(shù)據(jù)存儲服務器對數(shù)據(jù)塊進行管理;第二類采用面向?qū)ο蠼涌诘脑O計, 即數(shù)據(jù)存儲服務器對對象進行管理。對于第一類的設計,在國際上主要有兩種 基于塊的形式的網(wǎng)絡化存儲架構(gòu),這兩種架構(gòu)通過命令集來進行區(qū)分, 一種是 SAN (Storage Area Network)結(jié)構(gòu),其采用SCSI塊IO的命令集,通過在磁 盤或FC (Fiber Channel)級的數(shù)據(jù)訪問提供高性能的隨機I/O和數(shù)據(jù)吞吐率, SAN結(jié)構(gòu)具有高帶寬、低延遲的優(yōu)勢,在高性能計算中占有一席之地,但是,由于采用SAN結(jié)構(gòu)系統(tǒng)的價格較高且可擴展性較差,目前已不能滿足擁有成 千上萬個CPU規(guī)模的系統(tǒng)的需求。另一種第一類的設計是NAS (Network Attached Storage)結(jié)構(gòu),其采用NFS或CIFS命令集訪問數(shù)據(jù),以文件為傳 輸協(xié)議,通過TCP/IP實現(xiàn)網(wǎng)絡化存儲,具有可擴展性好、價格便宜、用戶易 管理等優(yōu)點,如目前在集群計算中應用較多的NFS文件系統(tǒng)就屬于NAS結(jié) 構(gòu),但是,由于NAS結(jié)構(gòu)的協(xié)議開銷高、帶寬低、延遲大,因此不利于在高 性能集群中應用。對于第二類的設計,其運用一個對象存儲設備存放對象,以 控制著從對象到物理介質(zhì)的映射圖,設備同時也跟蹤作為屬性的元數(shù)據(jù),例如 建立時間標記,從而允許在客戶端非常容易地共享數(shù)據(jù)元數(shù)據(jù),對象存儲技術(shù) 的最大優(yōu)點在于它結(jié)合了 SAN結(jié)構(gòu)的可擴展性以及NAS結(jié)構(gòu)的數(shù)據(jù)共享,它 將客戶端和OSD設備直接聯(lián)系起來,并不需要中間環(huán)節(jié)來管理元數(shù)據(jù)。元數(shù)據(jù)服務器的設計從系統(tǒng)構(gòu)成角度可以劃分為兩類一類是單元數(shù)據(jù)服 務器,另一類是多元數(shù)據(jù)服務器。單元數(shù)據(jù)服務器由一臺元數(shù)據(jù)服務器為整個 系統(tǒng)提供元數(shù)據(jù)服務,所有客戶端的請求都發(fā)送到一臺元數(shù)據(jù)服務器上并被執(zhí) 行。單元數(shù)據(jù)服務器的設計方式的優(yōu)點是元數(shù)據(jù)請求都在一臺服務器中完成, 不需要服務器之間進行交互操作,具有實現(xiàn)相對簡單、易于管理等特點,其缺 點是擴展性差,當分布式文件系統(tǒng)面對較大規(guī)模的密集元數(shù)據(jù)請求時,元數(shù)據(jù) 服務器會成為性能瓶頸,從而降低整個系統(tǒng)的處理性能。多元數(shù)據(jù)服務器是由 多臺元數(shù)據(jù)服務器為整個分布式文件系統(tǒng)共同提供元數(shù)據(jù)服務器。在這種元數(shù) 據(jù)服務器中,元數(shù)據(jù)請求劃分到其中一個元數(shù)據(jù)服務器進行處理。多元數(shù)據(jù)服 務器結(jié)構(gòu)的優(yōu)點是擴展性好,能夠適用于較大規(guī)模的機群運算環(huán)境,其缺點是 多元數(shù)據(jù)服務器之間的負載平衡難以維持,對元數(shù)據(jù)的一致性維護復雜,可靠 性實現(xiàn)復雜。在分布式文件系統(tǒng)領域中,元數(shù)據(jù)處理的重要性正越來越多的得到人們的 關注,提升元數(shù)據(jù)的處理性能也成為了當前元數(shù)據(jù)研究中的熱點問題之一。在 對元數(shù)據(jù)處理性能需求較高的應用領域中,單元數(shù)據(jù)服務器結(jié)構(gòu)由于性能受到 擴展性的限制而不能滿足應用中的需要,多元數(shù)據(jù)服務器結(jié)構(gòu)則由于其具有良 好的擴展性而得到了廣泛的關注。對于多元數(shù)據(jù)服務器結(jié)構(gòu),其需要解決的主要問題是多元數(shù)據(jù)服務器之間 的負載均衡問題?,F(xiàn)有的多元數(shù)據(jù)服務器一般采用兩種技術(shù)來解決該問題一種是動態(tài)遷移技術(shù),另一種是復本技術(shù)。動態(tài)遷移技術(shù)是指當其中一個服務器出現(xiàn)過載問題(由于客戶端對服務器中的數(shù)據(jù)所發(fā)出的讀取和修改請求過多,從而導致服務器的負載過大,進而影響服務器的正常工作)時,將該服務器中的熱點元數(shù)據(jù)(被客戶端頻繁進行讀取的元數(shù)據(jù))轉(zhuǎn)移到負載較輕的服務器上, 后續(xù)對熱點元數(shù)據(jù)的訪問請求將發(fā)送到轉(zhuǎn)移后的服務器。復本技術(shù)是指當其中一個服務器出現(xiàn)過載問題時,將該服務器中的熱點元數(shù)據(jù)復制一份到負載較輕 的服務器,后續(xù)對熱點元數(shù)據(jù)的訪問請求可以由原服務器和復本所在的服務器 共同處理。對于動態(tài)遷移技術(shù),由于確定負載較輕的元數(shù)據(jù)的時刻和后續(xù)的元 數(shù)據(jù)訪問是分離的,所以會造成元數(shù)據(jù)遷移后在轉(zhuǎn)移服務器形成新的訪問熱 點,因而這種技術(shù)并不能徹底解決負載均衡的問題。此外,由于元數(shù)據(jù)轉(zhuǎn)移會 使得原有的元數(shù)據(jù)與服務器之間的映射關系發(fā)生改變,因此會給元數(shù)據(jù)的管理 維護帶來困難。對于復本技術(shù),盡管增加元數(shù)據(jù)復本個數(shù)并將其放在不同服務 器上能夠解決只讀訪問的熱點問題,但是,由于對元數(shù)據(jù)進行修改操作時,需 要同步多個元數(shù)據(jù)復本的修改,因此在修改操作與只讀操作的交互模式下,多 個元數(shù)據(jù)復本之間的一致性維護開銷同樣會減弱系統(tǒng)由于平衡負載所帶來的 優(yōu)勢。發(fā)明內(nèi)容本發(fā)明的目的在于,提供一種雙層元數(shù)據(jù)處理系統(tǒng)及方法,以解決現(xiàn)有的 多元數(shù)據(jù)服務器結(jié)構(gòu)不能同時避免熱點問題和實現(xiàn)負載均衡的問題。為了實現(xiàn)上述目的,本發(fā)明提供了一種雙層元數(shù)據(jù)處理系統(tǒng),包括多個元 數(shù)據(jù)服務器以及客戶端,所述客戶端用于向所述元數(shù)據(jù)服務器發(fā)出讀取元數(shù)據(jù) 以及修改元數(shù)據(jù)的請求,所述元數(shù)據(jù)服務器用于接收所述客戶端發(fā)送而來的讀 取元數(shù)據(jù)以及修改元數(shù)據(jù)的請求,并按照請求類型的不同分別進行相應的元數(shù) 據(jù)讀取和元數(shù)據(jù)修改的操作。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述元數(shù)據(jù)服務器中,包括元數(shù) 據(jù)處理服務器模塊以及元數(shù)據(jù)對象存儲服務器模塊112;所述元數(shù)據(jù)處理服務器模塊用于處理由客戶端發(fā)送而來的元數(shù)據(jù)讀取請 求以及緩存元數(shù)據(jù),所述元數(shù)據(jù)對象存儲服務器模塊用于元數(shù)據(jù)的存儲以及處 理由客戶端發(fā)送而來的元數(shù)據(jù)修改請求。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,同一元數(shù)據(jù)分別緩存在多個元數(shù) 據(jù)處理服務器模塊中。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,同一元數(shù)據(jù)分別緩存在除存儲有 所述元數(shù)據(jù)的元數(shù)據(jù)服務器外的多個元數(shù)據(jù)服務器的元數(shù)據(jù)處理服務器模塊 中。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述元數(shù)據(jù)處理服務器模塊分別 具有不同的元數(shù)據(jù)處理服務器編號,所述元數(shù)據(jù)對象存儲服務器模塊分別具有 不同的元數(shù)據(jù)對象存儲服務器編號,所述元數(shù)據(jù)處理服務器編號和所述元數(shù)據(jù) 對象存儲服務器編號分別構(gòu)成元數(shù)據(jù)處理服務器編號數(shù)組和元數(shù)據(jù)對象存儲 服務器編號數(shù)組,并存儲在所述雙層元數(shù)據(jù)處理系統(tǒng)中。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述元數(shù)據(jù)處理服務器模塊中, 包括第一元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊,所述第一元數(shù)據(jù)對象存儲服務 器確定函數(shù)模塊用于,當客戶端向所述元數(shù)據(jù)處理服務器模塊發(fā)出讀取某個元 數(shù)據(jù)的請求,但所述元數(shù)據(jù)處理服務器模塊中沒有緩存所述元數(shù)據(jù)時,確定所 述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的元數(shù)據(jù)對象存儲服務器模塊中。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述第一元數(shù)據(jù)對象存儲服務器 確定函數(shù)模塊通過存儲在所述第一元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊中的 元數(shù)據(jù)對象存儲服務器確定函數(shù),確定需要進行操作的元數(shù)據(jù)存儲在哪個元數(shù) 據(jù)服務器的元數(shù)據(jù)對象存儲服務器模塊中。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述元數(shù)據(jù)對象存儲服務器模塊 中,包括元數(shù)據(jù)處理服務器存儲緩存表模塊,用于為存儲在所述元數(shù)據(jù)對象存 儲服務器模塊中的元數(shù)據(jù)提供元數(shù)據(jù)處理服務器存儲緩存表,所述元數(shù)據(jù)處理 服務器存儲緩存表用于存儲緩存有與所述元數(shù)據(jù)處理服務器存儲緩存表相對 應的元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述客戶端中,包括元數(shù)據(jù)處理 服務器獲取函數(shù)模塊、元數(shù)據(jù)處理服務器讀取緩存表模塊以及第二元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊;所述元數(shù)據(jù)處理服務器獲取函數(shù)模塊用于為所述客戶端提供一個供所述 客戶端發(fā)送讀取元數(shù)據(jù)的請求以讀取某一特定元數(shù)據(jù)的元數(shù)據(jù)處理服務器模 塊的元數(shù)據(jù)處理服務器編號;所述元數(shù)據(jù)處理服務器讀取緩存表模塊用于為存儲在所述雙層元數(shù)據(jù)處 理系統(tǒng)中的元數(shù)據(jù)提供元數(shù)據(jù)處理服務器讀取緩存表,所述元數(shù)據(jù)處理服務器 讀取緩存表用于存儲可供所述客戶端發(fā)送讀取元數(shù)據(jù)的請求以讀取與所述元 數(shù)據(jù)處理服務器存儲緩存表相對應的元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊的元數(shù) 據(jù)處理服務器編號及其訪問頻度;所述第二元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊用于當所述客戶端需要進 行元數(shù)據(jù)修改的操作時,確定所述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的元數(shù)據(jù)對 象存儲服務器模塊中。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述元數(shù)據(jù)處理服務器讀取緩存 表中的表項按照所述元數(shù)據(jù)處理服務器模塊的訪問頻度由小到大的順序進行 排列。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述第二元數(shù)據(jù)對象存儲服務器 確定函數(shù)模塊通過存儲在所述第二元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊中的 元數(shù)據(jù)對象存儲服務器確定函數(shù),確定所述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的 元數(shù)據(jù)對象存儲服務器模塊中。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述元數(shù)據(jù)具有元數(shù)據(jù)編號、元 數(shù)據(jù)名稱以及元數(shù)據(jù)路徑的屬性信息。較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述元數(shù)據(jù)編號,包含有與所述 元數(shù)據(jù)編號相對應的元數(shù)據(jù)的存儲位置信息,通過所述存儲位置信息可以得到 存儲有所述元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模塊的元數(shù)據(jù)對象存儲服務器編弓較佳的,在所述雙層元數(shù)據(jù)處理系統(tǒng)中,所述元數(shù)據(jù)名稱和元數(shù)據(jù)路徑,用于利用hash函數(shù)進行計算以獲得一 hash值,使用所述hash值作為索引,從 由所述雙層元數(shù)據(jù)處理系統(tǒng)中的所有元數(shù)據(jù)對象存儲服務器模塊的元數(shù)據(jù)對 象存儲服務器編號所構(gòu)成的數(shù)組中,搜索出存儲有所需進行操作的元數(shù)據(jù)的元 數(shù)據(jù)對象存儲服務器模塊的元數(shù)據(jù)對象存儲服務器編號。為了實現(xiàn)上述目的,本發(fā)明還公開了一種雙層元數(shù)據(jù)處理方法,包括以下 步驟步驟100,對雙層元數(shù)據(jù)處理系統(tǒng)進行初始化;步驟200,根據(jù)客戶端的操作,對存儲在雙層元數(shù)據(jù)處理系統(tǒng)中的元數(shù)據(jù)進行讀取或修改操作。較佳的,所述雙層元數(shù)據(jù)處理方法中,所述歩驟100中,包括以下步驟 步驟110,在所述雙層元數(shù)據(jù)處理系統(tǒng)中的元數(shù)據(jù)服務器中分別設置元數(shù) 據(jù)處理服務器模塊以及元數(shù)據(jù)對象存儲服務器模塊,為每個元數(shù)據(jù)處理服務器 模塊分別設置元數(shù)據(jù)處理服務器編號,為每個元數(shù)據(jù)對象存儲服務器模塊分別 設置元數(shù)據(jù)對象存儲服務器編號,為所有元數(shù)據(jù)處理服務器編號和所有元數(shù)據(jù) 對象存儲服務器編號分別設置存儲在所述雙層元數(shù)據(jù)處理系統(tǒng)中的元數(shù)據(jù)處 理服務器編號數(shù)組和元數(shù)據(jù)對象存儲服務器編號數(shù)組,為每個元數(shù)據(jù)處理服務 器模塊設置初始的訪問頻度以及最大訪問頻度;步驟120,在所述元數(shù)據(jù)處理服務器模塊中設置第一元數(shù)據(jù)對象存儲服務 器確定函數(shù)模塊以及在所述元數(shù)據(jù)對象存儲服務器模塊中設置元數(shù)據(jù)處理服務器存儲緩存表模塊;步驟130,在所述雙層元數(shù)據(jù)處理系統(tǒng)中的客戶端中設置元數(shù)據(jù)處理服務器獲取函數(shù)模塊、元數(shù)據(jù)處理服務器讀取緩存表模塊以及第二元數(shù)據(jù)對象存儲 服務器確定函數(shù)模塊。較佳的,所述雙層元數(shù)據(jù)處理方法中,所述元數(shù)據(jù)處理服務器模塊用于處 理由客戶端發(fā)送而來的元數(shù)據(jù)讀取請求以及緩存元數(shù)據(jù),所述元數(shù)據(jù)對象存儲 服務器模塊用于元數(shù)據(jù)的存儲以及處理由客戶端發(fā)送而來的元數(shù)據(jù)修改請求。較佳的,所述雙層元數(shù)據(jù)處理方法中,同一元數(shù)據(jù)分別緩存在多個元數(shù)據(jù) 處理服務器模塊中。較佳的,所述雙層元數(shù)據(jù)處理方法中,所述第一元數(shù)據(jù)對象存儲服務器確 定函數(shù)模塊用于,當客戶端向所述元數(shù)據(jù)處理服務器模塊發(fā)出讀取某個元數(shù)據(jù) 的請求,但所述元數(shù)據(jù)處理服務器模塊中沒有緩存所述元數(shù)據(jù)時,確定所述元 數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的元數(shù)據(jù)對象存儲服務器模塊中。較佳的,所述雙層元數(shù)據(jù)處理方法中,所述元數(shù)據(jù)處理服務器存儲緩存表 模塊,用于為存儲在所述元數(shù)據(jù)對象存儲服務器模塊中的元數(shù)據(jù)提供元數(shù)據(jù)處 理服務器存儲緩存表,所述元數(shù)據(jù)處理服務器存儲緩存表用于存儲緩存有與所 述元數(shù)據(jù)處理服務器存儲緩存表相對應的元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊的 元數(shù)據(jù)處理服務器編號。較佳的,所述雙層元數(shù)據(jù)處理方法中,所述元數(shù)據(jù)處理服務器獲取函數(shù)模塊用于為所述客戶端提供一個供所述客戶端發(fā)送讀取元數(shù)據(jù)的請求以讀取某 一特定元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號;所述元數(shù)據(jù)處理服務器讀取緩存表模塊用于為存儲在所述雙層元數(shù)據(jù)處 理系統(tǒng)中的元數(shù)據(jù)提供元數(shù)據(jù)處理服務器讀取緩存表,所述元數(shù)據(jù)處理服務器 讀取緩存表用于存儲可供所述客戶端發(fā)送讀取元數(shù)據(jù)的請求以讀取與所述元 數(shù)據(jù)處理服務器存儲緩存表相對應的元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號及其訪問頻度;所述第二元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊用于當所述客戶端需要進 行元數(shù)據(jù)修改的操作時,確定所述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的元數(shù)據(jù)對 象存儲服務器模塊中。較佳的,所述雙層元數(shù)據(jù)處理方法中,當所述客戶端進行讀取元數(shù)據(jù)的操 作時,所述步驟200中包括以下步驟步驟211,客戶端通過存儲在所述元數(shù)據(jù)處理服務器獲取函數(shù)模塊中的元 數(shù)據(jù)處理服務器獲取函數(shù),獲取到一個元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服 務器編號,并向所述元數(shù)據(jù)處理服務器編號所指定的元數(shù)據(jù)處理服務器模塊發(fā) 送元數(shù)據(jù)讀取請求,進入步驟212;步驟212,所述元數(shù)據(jù)處理服務器模塊接收到由所述客戶端發(fā)送來的元數(shù) 據(jù)讀取請求后,搜索在所述元數(shù)據(jù)處理服務器模塊的緩存設備中是否緩存有用 戶需要讀取的元數(shù)據(jù),如果所述元數(shù)據(jù)處理服務器模塊的緩存設備中緩存有所 需讀取的元數(shù)據(jù),則將所述元數(shù)據(jù)、所述元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理 服務器編號以及所述元數(shù)據(jù)處理服務器模塊的訪問頻度返回給所述客戶端,進 入步驟214,如果所述元數(shù)據(jù)處理服務器模塊的緩存設備中沒有緩存所需讀取 的元數(shù)據(jù),則將所述客戶端發(fā)送來的元數(shù)據(jù)讀取請求、所述元數(shù)據(jù)處理服務器 模塊的元數(shù)據(jù)處理服務器編號和所述元數(shù)據(jù)處理服務器模塊的訪問頻度發(fā)送 給存儲有所述元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模塊,進入步驟S213;步驟213,所述元數(shù)據(jù)對象存儲服務器模塊接收到由所述元數(shù)據(jù)處理服務 器模塊轉(zhuǎn)發(fā)來的所述客戶端發(fā)送的元數(shù)據(jù)讀取請求后,將與所述請求一同發(fā)送 而來的所述元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號記錄到存儲在所 述元數(shù)據(jù)對象存儲服務器模塊的元數(shù)據(jù)處理服務器存儲緩存表模塊中的,與所 述需要讀取的元數(shù)據(jù)相對應的所述元數(shù)據(jù)的元數(shù)據(jù)處理服務器存儲緩存表中,而后,將所述需要讀取的元數(shù)據(jù)及與所述請求一起發(fā)送至所述元數(shù)據(jù)對象存儲 服務器模塊的所述元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號與所述元 數(shù)據(jù)處理服務器模塊的訪問頻度一并發(fā)送給所述客戶端,同時,將所述需要讀 取的元數(shù)據(jù)發(fā)送給所述元數(shù)據(jù)處理服務器模塊,進入步驟214;步驟214,所述客戶端接收到由所述元數(shù)據(jù)處理服務器模塊或所述MOS模塊傳送而來的元數(shù)據(jù)后,將與所述元數(shù)據(jù)一起傳送而來的所述元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號以及所述元數(shù)據(jù)處理服務器模塊的訪問頻度記錄在所述客戶端的所述元數(shù)據(jù)處理服務器讀取緩存表模塊中所存儲的,與所述元數(shù)據(jù)相對應的元數(shù)據(jù)處理服務器讀取緩存表中,其中,若所述元數(shù)據(jù)處 理服務器讀取緩存表中沒有與所述元數(shù)據(jù)處理服務器模塊相對應的表項,則添加相應的表項,并按照訪問頻度由小到大的順序?qū)⑺砑拥谋眄棽迦氲剿鲈?數(shù)據(jù)處理服務器讀取緩存表中,若所述元數(shù)據(jù)處理服務器讀取緩存表中有與所 述元數(shù)據(jù)處理服務器模塊相對應的表項,則取下該表項,更新該表項中所記錄 的所述元數(shù)據(jù)處理服務器模塊的訪問頻度,并按照訪問頻度由小到大的順序?qū)?該表項插入到所述元數(shù)據(jù)處理服務器讀取緩存表中,操作結(jié)束。較佳的,所述雙層元數(shù)據(jù)處理方法中,所述元數(shù)據(jù)處理服務器獲取函數(shù)用以實現(xiàn)以下功能根據(jù)客戶端所需要讀取的元數(shù)據(jù)的元數(shù)據(jù)編號,或所述元數(shù) 據(jù)的元數(shù)據(jù)名稱和元數(shù)據(jù)路徑的信息組合,查詢存儲在客戶端的,與所述客戶 端需要讀取的元數(shù)據(jù)相對應的該元數(shù)據(jù)的元數(shù)據(jù)處理服務器讀取緩存表是否為空;如果所述元數(shù)據(jù)處理服務器讀取緩存表為空,則隨機選擇一個可以用于緩 存所述元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊,并將所述元數(shù)據(jù)處理服務器模塊的元 數(shù)據(jù)處理服務器編號和所述元數(shù)據(jù)處理服務器模塊的初始的訪問頻度加入到 所述元數(shù)據(jù)的元數(shù)據(jù)處理服務器讀取緩存表中,而后將所述元數(shù)據(jù)處理服務器 模塊的元數(shù)據(jù)處理服務器編號返回給客戶端;如果所述元數(shù)據(jù)處理服務器讀取緩存表不為空,則選取所述元數(shù)據(jù)處理服 務器讀取緩存表中的第一項,如果所述第一項中的元數(shù)據(jù)處理服務器模塊的訪 問頻度大于初始化時所設定的所述元數(shù)據(jù)處理服務器模塊的最大訪問頻度, 且所述元數(shù)據(jù)處理服務器讀取緩存表的總項數(shù)小于初始化時設定的所述元數(shù) 據(jù)處理服務器讀取緩存表的最大項數(shù),則隨機選擇未被該元數(shù)據(jù)的元數(shù)據(jù)處理服務器讀取緩存表所記錄的可以用于緩存所述元數(shù)據(jù)的元數(shù)據(jù)處理服務器模 塊中的一個,將該元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號和訪問頻度 加入到所述元數(shù)據(jù)處理服務器讀取緩存表中,并將該元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號返回給客戶端;否則,直接將所述元數(shù)據(jù)處理服務器讀取緩存表中第一項所記錄的元數(shù)據(jù) 處理服務器模塊的元數(shù)據(jù)處理服務器編號返回給客戶端。較佳的,所述雙層元數(shù)據(jù)處理方法中,所述客戶端向所述MPS模塊發(fā)送 元數(shù)據(jù)讀取請求中,包括所需讀取的元數(shù)據(jù)的元數(shù)據(jù)編號,或所述元數(shù)據(jù)的元 數(shù)據(jù)名稱和元數(shù)據(jù)路徑的信息組合。較佳的,所述雙層元數(shù)據(jù)處理方法中,在步驟212中,所述元數(shù)據(jù)處理服 務器模塊通過所述元數(shù)據(jù)處理服務器模塊中的元數(shù)據(jù)對象存儲服務器確定函 數(shù)模塊中的元數(shù)據(jù)對象存儲服務器確定函數(shù),以確定需要讀取的元數(shù)據(jù)存儲在 哪個元數(shù)據(jù)對象存儲服務器模塊中。較佳的,所述雙層元數(shù)據(jù)處理方法中,所述元數(shù)據(jù)對象存儲服務器確定函 數(shù)用以實現(xiàn)以下功能當從所述客戶端發(fā)送而來的元數(shù)據(jù)操作請求是INODE操作請求時,所述 元數(shù)據(jù)對象存儲服務器確定函數(shù)通過所述INODE操作請求中所包含的需要進 行操作的元數(shù)據(jù)的元數(shù)據(jù)編號,獲取與所述元數(shù)據(jù)編號相對應的元數(shù)據(jù)對象存 儲服務器編號信息,所述元數(shù)據(jù)對象存儲服務器編號即為存儲有需要進行操作 的元數(shù)據(jù)的MOS模塊的編號;當從所述客戶端發(fā)送而來的元數(shù)據(jù)操作請求是LOOKUP操作請求時,所 述元數(shù)據(jù)對象存儲服務器確定函數(shù)通過所述LOOKUP操作請求中所包含的需 要進行操作的元數(shù)據(jù)的元數(shù)據(jù)名稱以及元數(shù)據(jù)路徑,利用hash函數(shù)獲得一hash 值,并使用此hash值作為索引,從由所述雙層元數(shù)據(jù)處理系統(tǒng)中的所有元數(shù) 據(jù)對象存儲服務器模塊的元數(shù)據(jù)對象存儲服務器編號所構(gòu)成的數(shù)組中,搜索出 存儲有所需進行操作的元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模塊的元數(shù)據(jù)對象存 儲服務器編號。較佳的,所述雙層元數(shù)據(jù)處理方法中,當所述客戶端進行修改元數(shù)據(jù)的操 作時,所述步驟200中包括以下步驟步驟221,所述客戶端通過存儲在所述客戶端的第二元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊中的元數(shù)據(jù)對象存儲服務器確定函數(shù),確定存儲有需要進行修 改的元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模塊,并向所述元數(shù)據(jù)對象存儲服務器模 塊發(fā)送元數(shù)據(jù)修改請求,進入步驟222;步驟222,所述存儲有需要進行修改的元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模塊接收到所述元數(shù)據(jù)修改請求后,査詢存儲在所述元數(shù)據(jù)對象存儲服務器模塊 的元數(shù)據(jù)處理服務器存儲緩存表模塊中的與所要修改的元數(shù)據(jù)相對應的元數(shù) 據(jù)處理服務器存儲緩存表,并向與所述元數(shù)據(jù)處理服務器存儲緩存表中每一項 所對應的元數(shù)據(jù)處理服務器模塊發(fā)送修改后的元數(shù)據(jù)以及元數(shù)據(jù)替換請求,所 述元數(shù)據(jù)處理服務器模塊接收到所述修改后的元數(shù)據(jù)以及元數(shù)據(jù)替換請求后, 使用所述修改后的元數(shù)據(jù)替換緩存在所述元數(shù)據(jù)處理服務器模塊的緩存設備 中的相應的元數(shù)據(jù),并向所述元數(shù)據(jù)對象存儲服務器模塊返回更新成功的消 息,所述元數(shù)據(jù)對象存儲服務器模塊接收到所有更新成功的消息后,向所述客 戶端發(fā)送元數(shù)據(jù)更新成功的消息。本發(fā)明的有益效果是采取本發(fā)明中的雙層元數(shù)據(jù)處理系統(tǒng)及方法,對元 數(shù)據(jù)操作請求進行了合理的分流,使得不同類型的元數(shù)據(jù)操作請求在不同的層 次上進行處理,從而能夠針對元數(shù)據(jù)操作請求的類型進行優(yōu)化,同時,在處理 讀取元數(shù)據(jù)的操作請求時,可以根據(jù)請求創(chuàng)建多個元數(shù)據(jù)復本,以平衡對讀取 元數(shù)據(jù)操作的訪問負載。具體來講,本發(fā)明中的雙層元數(shù)據(jù)處理系統(tǒng)及方法, 其本質(zhì)是在客戶端與元數(shù)據(jù)存儲服務器之間增加了一級用于處理元數(shù)據(jù)讀取 操作請求的元數(shù)據(jù)處理服務器,采取這種兩級的元數(shù)據(jù)處理結(jié)構(gòu),第一,由于 讀取元數(shù)據(jù)的操作請求在元數(shù)據(jù)訪問中所占的比例相當大,因此允許元數(shù)據(jù)在 多個元數(shù)據(jù)處理服務器上保存復本,可以大大提高元數(shù)據(jù)訪問的處理性能;第 二,由于元數(shù)據(jù)的熱點訪問通常也是元數(shù)據(jù)的讀取訪問,因此,通過在多個元 數(shù)據(jù)處理服務器上有同一元數(shù)據(jù)的復本,可以解決元數(shù)據(jù)熱點訪問的問題;第 三,采取兩級結(jié)構(gòu),使元數(shù)據(jù)的修改操作訪問同讀取操作訪問分離,分別由元 數(shù)據(jù)對象存儲服務器和元數(shù)據(jù)處理服務器來處理,也可以有效減輕元數(shù)據(jù)對象 存儲服務器的負擔,有助于提高元數(shù)據(jù)修改訪問的處理性能;第四,通過對元 數(shù)據(jù)處理服務器和元數(shù)據(jù)對象存儲服務器的功能劃分,元數(shù)據(jù)處理服務器只處 理元數(shù)據(jù)讀取的訪問,元數(shù)據(jù)對象存儲服務器只處理元數(shù)據(jù)修改的訪問,有助 于兩者在實現(xiàn)過程中針對各自的功能進行性能優(yōu)化。
圖1為本發(fā)明的雙層元數(shù)據(jù)處理系統(tǒng)的結(jié)構(gòu)圖;圖2為本發(fā)明的雙層元數(shù)據(jù)處理系統(tǒng)的運作示意圖;圖3為本發(fā)明的雙層元數(shù)據(jù)處理方法的流程圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實 施例,對本發(fā)明的雙層元數(shù)據(jù)處理系統(tǒng)及方法進行進一步詳細說明。應當理解, 此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。元數(shù)據(jù)訪問熱點,指被客戶端頻繁進行操作的元數(shù)據(jù),其可以從屬性上分 為兩類, 一類是元數(shù)據(jù)只讀訪問熱點,另一類是元數(shù)據(jù)修改訪問熱點。本發(fā)明 主要解決第一類元數(shù)據(jù)只讀訪問熱點的問題。為了充分發(fā)揮所有元數(shù)據(jù)服務器的處理能力,將訪問負載能夠均衡地分布 到多個元數(shù)據(jù)服務器上,本技術(shù)方案將元數(shù)據(jù)的處理與元數(shù)據(jù)的存儲分離,采 用一種兩級的元數(shù)據(jù)服務器結(jié)構(gòu),這樣不僅有利于解決訪問負載均衡問題,而 且也有利于解決熱點訪問問題。請參照圖1 ,此為本發(fā)明的雙層元數(shù)據(jù)處理系統(tǒng)的結(jié)構(gòu)圖,本發(fā)明的雙 層元數(shù)據(jù)處理系統(tǒng)10中,包括多個元數(shù)據(jù)服務器11以及客戶端12,所述客 戶端12用于向所述元數(shù)據(jù)服務器11發(fā)出讀取元數(shù)據(jù)以及修改元數(shù)據(jù)的請求, 所述元數(shù)據(jù)服務器11用于接收所述客戶端12發(fā)送而來的讀取元數(shù)據(jù)以及修改 元數(shù)據(jù)的請求,并進行相應的元數(shù)據(jù)讀取和元數(shù)據(jù)修改操作。所述元數(shù)據(jù)服務器11中,包括元數(shù)據(jù)處理服務器(Metadata Processing Server,簡稱為MPS)模塊111 (第一級元數(shù)據(jù)處理設備)以及元數(shù)據(jù)對象存 儲服務器(Metadata Object Storage Server,簡稱為MOS)模塊112 (第二級元 數(shù)據(jù)處理設備)。所述MPS模塊111用于處理由客戶端12發(fā)送而來的元數(shù)據(jù) 讀取請求以及緩存元數(shù)據(jù),所述MOS模塊112用于元數(shù)據(jù)的存儲以及處理由 客戶端12發(fā)送而來的元數(shù)據(jù)修改請求,其中,同一個元數(shù)據(jù)可以分別緩存在 多個MPS模塊111中但只能存儲在一個MOS模塊112中,同時,如果某個 元數(shù)據(jù)服務器11的MOS模塊112中存儲了一個元數(shù)據(jù),則這個元數(shù)據(jù)服務器ll的MPS模塊lll中不能緩存同一個元數(shù)據(jù)。每個MPS模塊111都具有 一可唯一確定其身份的MPS編號(MPS—ID)。每個MOS模塊112都具有一 可唯一確定其身份的MOS編號(MOS—ID)。所有MPS—ID和所有MOS—ID 分別構(gòu)成MPS—ID數(shù)組和MOS_ID數(shù)組,并存儲在所述雙層元數(shù)據(jù)處理系統(tǒng) 10中。每個元數(shù)據(jù)服務器ll的MPS模塊lll中,都包括存儲有MOS確定函 數(shù)模塊的第一 MOS確定函數(shù)模塊1111,用于當客戶端向這個元數(shù)據(jù)服務器 11的MPS模塊111發(fā)出讀取某個元數(shù)據(jù)的請求,但這個元數(shù)據(jù)服務器11的 MPS模塊111中沒有緩存所述元數(shù)據(jù)時,通過MOS確定函數(shù)確定所述元數(shù)據(jù) 存儲在哪個元數(shù)據(jù)服務器11的MOS模塊112中。每個元數(shù)據(jù)服務器11的 MOS模塊112中,都包括MPS存儲緩存表模塊1121,用于為每個存儲在這 個元數(shù)據(jù)服務器11的MOS模塊112中的元數(shù)據(jù)提供MPS存儲緩存表,存儲 在MOS模塊112中的元數(shù)據(jù)與MPS存儲緩存表之間是一一對應關系。所述 MPS存儲緩存表用于存儲那些緩存有與所述MPS存儲緩存表相對應的元數(shù)據(jù) 的MPS模塊111的MPS—ID 。所述客戶端12中,包括存儲有MPS獲取函數(shù)的MPS獲取函數(shù)模塊121、 MPS讀取緩存表模塊122以及第二 MOS確定函數(shù)模塊123。所述MPS獲取 函數(shù)模塊121用于通過MPS獲取函數(shù)為所述客戶端12提供一個供所述客戶端 發(fā)送讀取元數(shù)據(jù)的請求以讀取某一特定元數(shù)據(jù)的MPS模塊111的MPS—ID。 所述MPS讀取緩存表模塊122用于為每個存儲在所述雙層元數(shù)據(jù)處理系統(tǒng)10 中的元數(shù)據(jù)提供MPS讀取緩存表,存儲在所述雙層元數(shù)據(jù)處理系統(tǒng)10中的元 數(shù)據(jù)與MPS讀取緩存表之間是一一對應關系。所述MPS讀取緩存表用于存儲 那些可供所述客戶端12發(fā)送讀取元數(shù)據(jù)的請求以讀取與所述MPS存儲緩存表 相對應的元數(shù)據(jù)的MPS模塊lll的MPS—ID及其訪問頻度f,所述MPS讀取 緩存表中的表項按照所述MPS模塊的訪問頻度f由小到大的順序進行排列。 所述第二 MOS確定函數(shù)模塊123中存儲有MOS確定函數(shù),所述第二 MOS確 定函數(shù)模塊123用于當所述客戶端12需要進行元數(shù)據(jù)修改的操作時,通過 MOS確定函數(shù)確定所述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器11的MOS模塊112 中。存儲在所述雙層元數(shù)據(jù)處理系統(tǒng)10中的每個元數(shù)據(jù),都具有元數(shù)據(jù)編號 I NUMBER,元數(shù)據(jù)名稱NAME以及元數(shù)據(jù)路徑DIR I NUMBER等屬性信息,通過I一NUMBER或通過NAME和DIR一I—NUMBER的信息組合,可以唯 一的確定一個特定的元數(shù)據(jù),因此,在所述雙層元數(shù)據(jù)處理系統(tǒng)10中,當需 要確定一個元數(shù)據(jù)時,可以通過將I一NUMBER或?qū)AME和DIR—I一NUMBER 的信息組合作為輸入信息以確定所述元數(shù)據(jù)。在本發(fā)明的具體實施例中,所述 I—NUMBER中,包含有與其相對應的元數(shù)據(jù)的存儲位置信息,通過所述存儲 位置信息可以得到存儲有與所述I—NUMBER相對應的元數(shù)據(jù)的MOS模塊的 MOS—ID,同時,當?shù)弥粋€元數(shù)據(jù)的NAME和DIRj一NUMBER后,可以使 用這兩個屬性信息,利用hash函數(shù)進行計算以獲得一 hash值,并使用此hash 值作為索引,從由所述雙層元數(shù)據(jù)處理系統(tǒng)中的所有MOS模塊的MOS—ID所 構(gòu)成的數(shù)組中,搜索出存儲有所需進行操作的元數(shù)據(jù)的MOS模塊的MOS—ID, 其中,所述hash函數(shù)可以使用如LINUX系統(tǒng)中的hash函數(shù)等hash函數(shù)。請參照圖2,此為本發(fā)明的雙層元數(shù)據(jù)處理系統(tǒng)的運作示意圖。在本發(fā)明 的雙層元數(shù)據(jù)處理系統(tǒng)10中,當所述客戶端12需要讀取元數(shù)據(jù)時,直接向緩 存有所述元數(shù)據(jù)的所述MPS模塊111 (即第一級元數(shù)據(jù)處理設備)發(fā)出讀取 元數(shù)據(jù)的請求,并從所述MPS模塊lll中的緩存設備中讀取所述元數(shù)據(jù);當 所述客戶端12需要修改元數(shù)據(jù)時,直接向存儲有所述元數(shù)據(jù)的所述MOS模 塊112 (即第二級元數(shù)據(jù)處理設備)發(fā)出修改元數(shù)據(jù)的請求,并直接修改存儲 在所述MOS模塊112中的所述元數(shù)據(jù)。本發(fā)明的雙層元數(shù)據(jù)處理系統(tǒng)10的運作過程,請參照下述的雙層元數(shù)據(jù) 處理方法。請參照圖3,此為本發(fā)明的雙層元數(shù)據(jù)處理方法的流程圖,本發(fā)明的雙層 元數(shù)據(jù)處理方法中,包括以下步驟步驟S100,對雙層元數(shù)據(jù)處理系統(tǒng)進行初始化。雙層元數(shù)據(jù)處理系統(tǒng)的基本組成設備是元數(shù)據(jù)服務器和客戶端,在初始化 的過程中,需要在所述元數(shù)據(jù)服務器中分別設置元數(shù)據(jù)處理服務器(MPS)模 塊以及元數(shù)據(jù)對象存儲服務器(MOS)模塊,根據(jù)配置文件信息為每個MPS 模塊分別設置MPS—ID和為每個MOS模塊設置MOS_ID,為所有MPS—ID和 所有MOS—ID分別設置存儲在所述雙層元數(shù)據(jù)處理系統(tǒng)中的MPS—ID數(shù)組和 MOS—ID數(shù)組,并為每個MPS模塊設置初始的訪問頻度f以及最大訪問頻度 MAX—FREQUENCY。所述MPS模塊用于處理由客戶端發(fā)送而來的元數(shù)據(jù)讀取請求以及緩存元數(shù)據(jù),所述MOS模塊用于元數(shù)據(jù)的存儲以及處理由客戶端 發(fā)送而來的元數(shù)據(jù)修改請求,同一個元數(shù)據(jù)可以分別緩存在多個MPS模塊中 但只能存儲在一個MOS模塊中,如果某個元數(shù)據(jù)服務器的MOS模塊中存儲 了一個元數(shù)據(jù),則這個元數(shù)據(jù)服務器的MPS模塊中不能緩存同一個元數(shù)據(jù)。在設置了所述元數(shù)據(jù)處理服務器(MPS)模塊以及所述元數(shù)據(jù)對象存儲服 務器(MOS)模塊后,在所述元數(shù)據(jù)處理服務器(MPS)模塊中設置第一MOS 確定函數(shù)模塊以及在所述元數(shù)據(jù)對象存儲服務器(MOS)模塊中設置MPS存 儲緩存表模塊。所述第一MOS確定函數(shù)模塊,用于當客戶端向某個元數(shù)據(jù)服 務器的MPS模塊發(fā)出讀取某個元數(shù)據(jù)的請求,但這個元數(shù)據(jù)服務器的MPS模 塊中沒有緩存所述元數(shù)據(jù)時,通過存儲在所述第一 MOS確定函數(shù)模塊中的 MOS確定函數(shù)確定所述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的MOS模塊中。所述 MPS存儲緩存表模塊,用于為每個存儲在同一 MOS模塊中的元數(shù)據(jù)提供MPS 存儲緩存表,存儲在MOS模塊中的元數(shù)據(jù)與MPS存儲緩存表之間是一一對 應關系。所述MPS存儲緩存表用于存儲那些緩存有與所述MPS存儲緩存表相 對應的元數(shù)據(jù)的MPS模塊的MPS一ID。在初始化過程中,還需要在每個客戶端中設置MPS獲取函數(shù)模塊、MPS 讀取緩存表模塊以及第二 MOS確定函數(shù)模塊。所述MPS獲取函數(shù)模塊用于 通過存儲在所述MPS獲取函數(shù)模塊中的MPS獲取函數(shù),為所述客戶端提供一 個供所述客戶端發(fā)送讀取元數(shù)據(jù)的請求以讀取某一特定元數(shù)據(jù)的MPS模塊的 MPS—ID。所述MPS讀取緩存表模塊用于為每個存儲在所述雙層元數(shù)據(jù)處理系 統(tǒng)中的元數(shù)據(jù)提供MPS讀取緩存表,存儲在所述雙層元數(shù)據(jù)處理系統(tǒng)中的元 數(shù)據(jù)與MPS讀取緩存表之間是一一對應關系。所述MPS讀取緩存表用于存儲 那些可供所述客戶端發(fā)送讀取元數(shù)據(jù)的請求以讀取與所述MPS存儲緩存表相 對應的元數(shù)據(jù)的MPS模塊的MPS—ID及其訪問頻度f,在初始化過程中,還 需要為每個元數(shù)據(jù)的MPS讀取緩存表設置一個最大項數(shù)MAX—MPS—NUM。 所述第二 MOS確定函數(shù)模塊用于當所述客戶端需要進行元數(shù)據(jù)修改的操作 時,通過存儲在所述第二 MOS確定函數(shù)模塊中的MOS確定函數(shù)以確定所述 元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的MOS模塊中。歩驟S200,根據(jù)客戶端的操作,對存儲在雙層元數(shù)據(jù)處理系統(tǒng)中的元數(shù) 據(jù)進行讀取或修改操作。在歩驟S200中,當客戶端進行讀取元數(shù)據(jù)的操作時,所述歩驟S200中包括以下步驟步驟S211,客戶端通過存儲在所述MPS獲取函數(shù)模塊中的MPS獲取函 數(shù),獲取到一個MPS模塊的MPS_ID,并向所述MPS一ID所指定的MPS模塊 發(fā)送元數(shù)據(jù)讀取請求,進入步驟S212。其中,所述MPS獲取函數(shù)用以實現(xiàn)以下功能根據(jù)客戶端所需要讀取的 元數(shù)據(jù)的I—NUMBER,或所述元數(shù)據(jù)的NAME和DIRJ—NUMBER的信息組 合,查詢存儲在客戶端的,與所述客戶端需要讀取的元數(shù)據(jù)相對應的該元數(shù)據(jù) 的MPS讀取緩存表是否為空;如果所述MPS讀取緩存表為空,則隨機選擇一 個可以用于緩存所述元數(shù)據(jù)的MPS模塊(即除存儲有所述元數(shù)據(jù)的元數(shù)據(jù)服 務器外的任一元數(shù)據(jù)服務器中的MPS模塊),并將所述MPS模塊的MPS一ID 和所述MPS模塊的初始的訪問頻度f加入到所述元數(shù)據(jù)的MPS讀取緩存表中, 而后將所述MPS模塊的MPS—ID返回給客戶端;如果所述MPS讀取緩存表不 為空,則選取所述MPS讀取緩存表中的第一項,如果所述第一項中的MPS模 塊的訪問頻度f大于初始化時所設定的所述MPS模塊的最大訪問頻度 MAX—FREQUENCY,且所述MPS讀取緩存表的總項數(shù)小于初始化時設定的 所述MPS讀取緩存表的最大項數(shù)MAX一MPS一NUM,則隨機選擇未被該元數(shù) 據(jù)的MPS讀取緩存表所記錄的可以用于緩存所述元數(shù)據(jù)的MPS模塊(即除存 儲有所述元數(shù)據(jù)的元數(shù)據(jù)服務器外的任一元數(shù)據(jù)服務器中的MPS模塊)中的 一個,將該MPS模塊的MPS—ID和訪問頻度f加入到所述MPS讀取緩存表中, 并將該MPS模塊的MPS一ID返回給客戶端;否貝lj,直接將所述MPS讀取緩存 表中第一項所記錄的MPS模塊的MPS—ID返回給客戶端。其中,所述客戶端向所述MPS模塊發(fā)送元數(shù)據(jù)讀取請求中,包括所需讀 取的元數(shù)據(jù)的I一NUMBER,或所述元數(shù)據(jù)的NAME和DIR—I_NUMBER的信 息組合。步驟S212,所述MPS模塊接收到由所述客戶端發(fā)送來的元數(shù)據(jù)讀取請求 后,搜索在所述MPS模塊的緩存設備中是否緩存有用戶需要讀取的元數(shù)據(jù), 如果所述MPS模塊的緩存設備中緩存有所需讀取的元數(shù)據(jù),則將所述元數(shù)據(jù)、 所述MPS模塊的MPS—ID以及所述MPS模塊的訪問頻度f返回給所述客戶端, 進入步驟S214;如果所述MPS模塊的緩存設備中沒有緩存所需讀取的元數(shù)據(jù),則將所述客戶端發(fā)送來的元數(shù)據(jù)讀取請求、所述MPS模塊的MPS—ID和所述 MPS模塊的訪問頻度f發(fā)送給存儲有所述元數(shù)據(jù)的MOS模塊,進入步驟S213, 其中,所述MPS模塊通過所述MPS模塊中的MOS確定函數(shù)模塊中的MOS 確定函數(shù),以確定需要讀取的元數(shù)據(jù)存儲在哪個MOS模塊中。其中,所述MOS確定函數(shù)用以實現(xiàn)以下功能當從所述客戶端發(fā)送而來 的元數(shù)據(jù)操作請求是INODE操作請求(元數(shù)據(jù)節(jié)點操作請求,即所述元數(shù)據(jù) 操作請求中包括所需操作的元數(shù)據(jù)的I—NUMBER)時,所述MOS確定函數(shù)通 過所述INODE操作請求中所包含的需要進行操作的元數(shù)據(jù)的I—NUMBER,獲 取與所述I—NUMBER相對應的MOS—ID信息,所述MOS—ID即為存儲有需要 進行操作的元數(shù)據(jù)的MOS模塊的編號;當從所述客戶端發(fā)送而來的元數(shù)據(jù)操 作請求是LOOKUP操作請求(元數(shù)據(jù)査找操作請求,即所述元數(shù)據(jù)操作請求 中包括所需操作的元數(shù)據(jù)的NAME以及DIR—I—NUMBER)時,所述MOS確 定函數(shù)通過所述LOOKUP操作請求中所包含的需要進行操作的元數(shù)據(jù)的 NAME以及DIR—I一NUMBER,利用hash函數(shù)獲得一 hash值,并使用此hash 值作為索引,從由所述雙層元數(shù)據(jù)處理系統(tǒng)中的所有MOS模塊的MOS—ID所 構(gòu)成的數(shù)組中,搜索出存儲有所需進行操作的元數(shù)據(jù)的MOS模塊的MOS一ID。 其中,所述hash函數(shù)可以使用如LINUX系統(tǒng)中的hash函數(shù)等hash函數(shù)。步驟S213,所述MOS模塊接收到由所述MPS模塊轉(zhuǎn)發(fā)來的所述客戶端 發(fā)送的元數(shù)據(jù)讀取請求后,將與所述請求一同發(fā)送而來的所述MPS模塊的 MPS—ID記錄到存儲在所述MOS模塊的MPS存儲緩存表模塊中的,與所述需 要讀取的元數(shù)據(jù)相對應的所述元數(shù)據(jù)的MPS存儲緩存表中,而后,將所述需 要讀取的元數(shù)據(jù)及與所述請求一起發(fā)送至所述MOS模塊的所述MPS模塊的 MPS一ID與所述MPS模塊的訪問頻度f一并發(fā)送給所述客戶端,同時,將所 述需要讀取的元數(shù)據(jù)發(fā)送給所述MPS模塊,迸入步驟S214。步驟S214,所述客戶端接收到由所述MPS模塊或所述MOS模塊傳送而 來的元數(shù)據(jù)后,將與所述元數(shù)據(jù)一起傳送而來的所述MPS模塊的MPS—ID以 及所述MPS模塊的訪問頻度f記錄在所述客戶端的所述MPS讀取緩存表模塊 中所存儲的,與所述元數(shù)據(jù)相對應的MPS讀取緩存表中,其中,若所述MPS 讀取緩存表中沒有與所述MPS模塊相對應的表項,則添加相應的表項,并按 照訪問頻度f由小到大的順序?qū)⑺砑拥谋眄棽迦氲剿鯩PS讀取緩存表中;若所述MPS讀取緩存表中有與所述MPS模塊相對應的表項,則取下該表項, 更新該表項中所記錄的所述MPS模塊的訪問頻度f,并按照訪問頻度f由小到 大的順序?qū)⒃摫眄棽迦氲剿鯩PS讀取緩存表中;操作結(jié)束。在步驟S200中,當客戶端進行修改元數(shù)據(jù)的操作時,所述步驟S200中包 括以下步驟步驟S221,所述客戶端通過存儲在所述客戶端的第二 MOS確定函數(shù)模塊 中的MOS確定函數(shù),確定存儲有需要進行修改的元數(shù)據(jù)的MOS模塊,并向 所述MOS模塊發(fā)送元數(shù)據(jù)修改請求,進入步驟S222。其中,所述MOS確定 函數(shù)的所實現(xiàn)的功能請參照前述,在此不再贅述。步驟S222,所述存儲有需要進行修改的元數(shù)據(jù)的MOS模塊接收到所述元 數(shù)據(jù)修改請求后,查詢存儲在所述MOS模塊的MPS存儲緩存表模塊中的與 所要修改的元數(shù)據(jù)相對應的MPS存儲緩存表,并向與所述MPS存儲緩存表中 每-一項所對應的MPS模塊發(fā)送修改后的元數(shù)據(jù)以及元數(shù)據(jù)替換請求,所述 MPS模塊接收到所述修改后的元數(shù)據(jù)以及元數(shù)據(jù)替換請求后,使用所述修改 后的元數(shù)據(jù)替換緩存在所述MPS模塊的緩存設備中的相應的元數(shù)據(jù),并向所 述MOS模塊返回更新成功的消息,所述MOS模塊接收到所有更新成功的消 息后,向所述客戶端發(fā)送元數(shù)據(jù)更新成功的消息。當然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情 況下,熟悉本領域的技術(shù)人員當可根據(jù)本發(fā)明作出各種相應的改變和變形,但 這些相應的改變和變形都應屬于本發(fā)明所附的權(quán)利要求的保護范圍。
權(quán)利要求
1、一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,包括多個元數(shù)據(jù)服務器以及客戶端,所述客戶端用于向所述元數(shù)據(jù)服務器發(fā)出讀取元數(shù)據(jù)以及修改元數(shù)據(jù)的請求,所述元數(shù)據(jù)服務器用于接收所述客戶端發(fā)送而來的讀取元數(shù)據(jù)以及修改元數(shù)據(jù)的請求,并按照請求類型的不同分別進行相應的元數(shù)據(jù)讀取和元數(shù)據(jù)修改的操作。
2、 根據(jù)權(quán)利要求1所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所述元數(shù)據(jù)服務器中,包括元數(shù)據(jù)處理服務器模塊以及元數(shù)據(jù)對象存儲服務器模塊112;所述元數(shù)據(jù)處理服務器模塊用于處理由客戶端發(fā)送而來的元數(shù)據(jù)讀取請 求以及緩存元數(shù)據(jù),所述元數(shù)據(jù)對象存儲服務器模塊用于元數(shù)據(jù)的存儲以及處 理由客戶端發(fā)送而來的元數(shù)據(jù)修改請求。
3、 根據(jù)權(quán)利要求2所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,同一 元數(shù)據(jù)分別緩存在多個元數(shù)據(jù)處理服務器模塊中。
4、 根據(jù)權(quán)利要求2所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,同一 元數(shù)據(jù)分別緩存在除存儲有所述元數(shù)據(jù)的元數(shù)據(jù)服務器外的多個元數(shù)據(jù)服務 器的元數(shù)據(jù)處理服務器模塊中。
5、 根據(jù)權(quán)利要求2所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所述 元數(shù)據(jù)處理服務器模塊分別具有不同的元數(shù)據(jù)處理服務器編號,所述元數(shù)據(jù)對 象存儲服務器模塊分別具有不同的元數(shù)據(jù)對象存儲服務器編號,所述元數(shù)據(jù)處 理服務器編號和所述元數(shù)據(jù)對象存儲服務器編號分別構(gòu)成元數(shù)據(jù)處理服務器 編號數(shù)組和元數(shù)據(jù)對象存儲服務器編號數(shù)組,并存儲在所述雙層元數(shù)據(jù)處理系 統(tǒng)中。
6、 根據(jù)權(quán)利要求2所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所述 元數(shù)據(jù)處理服務器模塊中,包括第一元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊,所 述第一元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊用于,當客戶端向所述元數(shù)據(jù)處理 服務器模塊發(fā)出讀取某個元數(shù)據(jù)的請求,但所述元數(shù)據(jù)處理服務器模塊中沒有 緩存所述元數(shù)據(jù)時,確定所述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的元數(shù)據(jù)對象存 儲服務器模塊中。
7.根據(jù)權(quán)利要求6所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所述第一元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊通過存儲在所述第一元數(shù)據(jù)對象存 儲服務器確定函數(shù)模塊中的元數(shù)據(jù)對象存儲服務器確定函數(shù),確定需要進行操 作的元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的元數(shù)據(jù)對象存儲服務器模塊中。
8、 根據(jù)權(quán)利要求2所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所述 元數(shù)據(jù)對象存儲服務器模塊中,包括元數(shù)據(jù)處理服務器存儲緩存表模塊,用于 為存儲在所述元數(shù)據(jù)對象存儲服務器模塊中的元數(shù)據(jù)提供元數(shù)據(jù)處理服務器 存儲緩存表,所述元數(shù)據(jù)處理服務器存儲緩存表用于存儲緩存有與所述元數(shù)據(jù) 處理服務器存儲緩存表相對應的元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處 理服務器編號。
9、 根據(jù)權(quán)利要求1所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所述 客戶端中,包括元數(shù)據(jù)處理服務器獲取函數(shù)模塊、元數(shù)據(jù)處理服務器讀取緩存 表模塊以及第二元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊;所述元數(shù)據(jù)處理服務器獲取函數(shù)模塊用于為所述客戶端提供一個供所述 客戶端發(fā)送讀取元數(shù)據(jù)的請求以讀取某一特定元數(shù)據(jù)的元數(shù)據(jù)處理服務器模 塊的元數(shù)據(jù)處理服務器編號;所述元數(shù)據(jù)處理服務器讀取緩存表模塊用于為存儲在所述雙層元數(shù)據(jù)處 理系統(tǒng)中的元數(shù)據(jù)提供元數(shù)據(jù)處理服務器讀取緩存表,所述元數(shù)據(jù)處理服務器 讀取緩存表用于存儲可供所述客戶端發(fā)送讀取元數(shù)據(jù)的請求以讀取與所述元 數(shù)據(jù)處理服務器存儲緩存表相對應的元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊的元數(shù) 據(jù)處理服務器編號及其訪問頻度;所述第二元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊用于當所述客戶端需要進 行元數(shù)據(jù)修改的操作時,確定所述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的元數(shù)據(jù)對 象存儲服務器模塊中。
10、 根據(jù)權(quán)利要求9所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所述 元數(shù)據(jù)處理服務器讀取緩存表中的表項按照所述元數(shù)據(jù)處理服務器模塊的訪 問頻度由小到大的順序進行排列。
11、 根據(jù)權(quán)利要求9所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所述 第二元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊通過存儲在所述第二元數(shù)據(jù)對象存 儲服務器確定函數(shù)模塊中的元數(shù)據(jù)對象存儲服務器確定函數(shù),確定所述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的元數(shù)據(jù)對象存儲服務器模塊中。
12、 根據(jù)權(quán)利要求5所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所述 元數(shù)據(jù)具有元數(shù)據(jù)編號、元數(shù)據(jù)名稱以及元數(shù)據(jù)路徑的屬性信息。
13、 根據(jù)權(quán)利要求12所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所述元數(shù)據(jù)編號,包含有與所述元數(shù)據(jù)編號相對應的元數(shù)據(jù)的存儲位置信息,通 過所述存儲位置信息可以得到存儲有所述元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模 塊的元數(shù)據(jù)對象存儲服務器編號。
14、 根據(jù)權(quán)利要求12所述的一種雙層元數(shù)據(jù)處理系統(tǒng),其特征在于,所 述元數(shù)據(jù)名稱和元數(shù)據(jù)路徑,用于利用hash函數(shù)進行計算以獲得一 hash值, 使用所述hash值作為索引,從由所述雙層元數(shù)據(jù)處理系統(tǒng)中的所有元數(shù)據(jù)對 象存儲服務器模塊的元數(shù)據(jù)對象存儲服務器編號所構(gòu)成的數(shù)組中,搜索出存儲 有所需進行操作的元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模塊的元數(shù)據(jù)對象存儲服 務器編號。
15、 一種雙層元數(shù)據(jù)處理方法,其特征在于,包括以下步驟 步驟IOO,對雙層元數(shù)據(jù)處理系統(tǒng)進行初始化;步驟200,根據(jù)客戶端的操作,對存儲在雙層元數(shù)據(jù)處理系統(tǒng)中的元數(shù)據(jù) 進行讀取或修改操作。
16、 根據(jù)權(quán)利要求15所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,所 述步驟100中,包括以下步驟步驟110,在所述雙層元數(shù)據(jù)處理系統(tǒng)中的元數(shù)據(jù)服務器中分別設置元數(shù) 據(jù)處理服務器模塊以及元數(shù)據(jù)對象存儲服務器模塊,為每個元數(shù)據(jù)處理服務器 模塊分別設置元數(shù)據(jù)處理服務器編號,為每個元數(shù)據(jù)對象存儲服務器模塊分別 設置元數(shù)據(jù)對象存儲服務器編號,為所有元數(shù)據(jù)處理服務器編號和所有元數(shù)據(jù) 對象存儲服務器編號分別設置存儲在所述雙層元數(shù)據(jù)處理系統(tǒng)中的元數(shù)據(jù)處 理服務器編號數(shù)組和元數(shù)據(jù)對象存儲服務器編號數(shù)組,為每個元數(shù)據(jù)處理服務 器模塊設置初始的訪問頻度以及最大訪問頻度;步驟120,在所述元數(shù)據(jù)處理服務器模塊中設置第一元數(shù)據(jù)對象存儲服務 器確定函數(shù)模塊以及在所述元數(shù)據(jù)對象存儲服務器模塊中設置元數(shù)據(jù)處理服 務器存儲緩存表模塊;步驟130,在所述雙層元數(shù)據(jù)處理系統(tǒng)中的客戶端中設置元數(shù)據(jù)處理服務器獲取函數(shù)模塊、元數(shù)據(jù)處理服務器讀取緩存表模塊以及第二元數(shù)據(jù)對象存儲 服務器確定函數(shù)模塊。
17、 根據(jù)權(quán)利要求16所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,所述元數(shù)據(jù)處理服務器模塊用于處理由客戶端發(fā)送而來的元數(shù)據(jù)讀取請求以及 緩存元數(shù)據(jù),所述元數(shù)據(jù)對象存儲服務器模塊用于元數(shù)據(jù)的存儲以及處理由客 戶端發(fā)送而來的元數(shù)據(jù)修改請求。
18、 根據(jù)權(quán)利要求17所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,同 一元數(shù)據(jù)分別緩存在多個元數(shù)據(jù)處理服務器模塊中。
19、 根據(jù)權(quán)利要求16所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,所 述第一元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊用于,當客戶端向所述元數(shù)據(jù)處理 服務器模塊發(fā)出讀取某個元數(shù)據(jù)的請求,但所述元數(shù)據(jù)處理服務器模塊中沒有 緩存所述元數(shù)據(jù)時,確定所述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的元數(shù)據(jù)對象存 儲服務器模塊中。
20、 根據(jù)權(quán)利要求16所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,所 述元數(shù)據(jù)處理服務器存儲緩存表模塊,用于為存儲在所述元數(shù)據(jù)對象存儲服務 器模塊中的元數(shù)據(jù)提供元數(shù)據(jù)處理服務器存儲緩存表,所述元數(shù)據(jù)處理服務器 存儲緩存表用于存儲緩存有與所述元數(shù)據(jù)處理服務器存儲緩存表相對應的元 數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號。
21、 根據(jù)權(quán)利要求16所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,所 述元數(shù)據(jù)處理服務器獲取函數(shù)模塊用于為所述客戶端提供一個供所述客戶端 發(fā)送讀取元數(shù)據(jù)的請求以讀取某一特定元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊的元 數(shù)據(jù)處理服務器編號;所述元數(shù)據(jù)處理服務器讀取緩存表模塊用于為存儲在所述雙層元數(shù)據(jù)處 理系統(tǒng)中的元數(shù)據(jù)提供元數(shù)據(jù)處理服務器讀取緩存表,所述元數(shù)據(jù)處理服務器 讀取緩存表用于存儲可供所述客戶端發(fā)送讀取元數(shù)據(jù)的請求以讀取與所述元 數(shù)據(jù)處理服務器存儲緩存表相對應的元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊的元數(shù) 據(jù)處理服務器編號及其訪問頻度;所述第二元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊用于當所述客戶端需要進 行元數(shù)據(jù)修改的操作時,確定所述元數(shù)據(jù)存儲在哪個元數(shù)據(jù)服務器的元數(shù)據(jù)對 象存儲服務器模塊中。
22、根據(jù)權(quán)利要求15所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,當所述客戶端進行讀取元數(shù)據(jù)的操作時,所述步驟200中包括以下步驟步驟211,客戶端通過存儲在所述元數(shù)據(jù)處理服務器獲取函數(shù)模塊中的元 數(shù)據(jù)處理服務器獲取函數(shù),獲取到一個元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服 務器編號,并向所述元數(shù)據(jù)處理服務器編號所指定的元數(shù)據(jù)處理服務器模塊發(fā)送元數(shù)據(jù)讀取請求,進入步驟212;步驟212,所述元數(shù)據(jù)處理服務器模塊接收到由所述客戶端發(fā)送來的元數(shù) 據(jù)讀取請求后,搜索在所述元數(shù)據(jù)處理服務器模塊的緩存設備中是否緩存有用 戶需要讀取的元數(shù)據(jù),如果所述元數(shù)據(jù)處理服務器模塊的緩存設備中緩存有所 需讀取的元數(shù)據(jù),則將所述元數(shù)據(jù)、所述元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理 服務器編號以及所述元數(shù)據(jù)處理服務器模塊的訪問頻度返回給所述客戶端,進 入步驟214,如果所述元數(shù)據(jù)處理服務器模塊的緩存設備中沒有緩存所需讀取 的元數(shù)據(jù),則將所述客戶端發(fā)送來的元數(shù)據(jù)讀取請求、所述元數(shù)據(jù)處理服務器 模塊的元數(shù)據(jù)處理服務器編號和所述元數(shù)據(jù)處理服務器模塊的訪問頻度發(fā)送 給存儲有所述元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模塊,進入步驟S213;步驟213,所述元數(shù)據(jù)對象存儲服務器模塊接收到由所述元數(shù)據(jù)處理服務 器模塊轉(zhuǎn)發(fā)來的所述客戶端發(fā)送的元數(shù)據(jù)讀取請求后,將與所述請求一同發(fā)送 而來的所述元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號記錄到存儲在所 述元數(shù)據(jù)對象存儲服務器模塊的元數(shù)據(jù)處理服務器存儲緩存表模塊中的,與所 述需要讀取的元數(shù)據(jù)相對應的所述元數(shù)據(jù)的元數(shù)據(jù)處理服務器存儲緩存表中, 而后,將所述需要讀取的元數(shù)據(jù)及與所述請求一起發(fā)送至所述元數(shù)據(jù)對象存儲 服務器模塊的所述元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號與所述元 數(shù)據(jù)處理服務器模塊的訪問頻度一并發(fā)送給所述客戶端,同時,將所述需要讀 取的元數(shù)據(jù)發(fā)送給所述元數(shù)據(jù)處理服務器模塊,進入步驟214;步驟214,所述客戶端接收到由所述元數(shù)據(jù)處理服務器模塊或所述MOS 模塊傳送而來的元數(shù)據(jù)后,將與所述元數(shù)據(jù)一起傳送而來的所述元數(shù)據(jù)處理服 務器模塊的元數(shù)據(jù)處理服務器編號以及所述元數(shù)據(jù)處理服務器模塊的訪問頻 度記錄在所述客戶端的所述元數(shù)據(jù)處理服務器讀取緩存表模塊中所存儲的,與 所述元數(shù)據(jù)相對應的元數(shù)據(jù)處理服務器讀取緩存表中,其中,若所述元數(shù)據(jù)處 理服務器讀取緩存表中沒有與所述元數(shù)據(jù)處理服務器模塊相對應的表項,則添加相應的表項,并按照訪問頻度由小到大的順序?qū)⑺砑拥谋眄棽迦氲剿鲈?數(shù)據(jù)處理服務器讀取緩存表中,若所述元數(shù)據(jù)處理服務器讀取緩存表中有與所 述元數(shù)據(jù)處理服務器模塊相對應的表項,則取下該表項,更新該表項中所記錄 的所述元數(shù)據(jù)處理服務器模塊的訪問頻度,并按照訪問頻度由小到大的順序?qū)?該表項插入到所述元數(shù)據(jù)處理服務器讀取緩存表中,操作結(jié)束。
23、 根據(jù)權(quán)利要求22所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,所 述元數(shù)據(jù)處理服務器獲取函數(shù)用以實現(xiàn)以下功能根據(jù)客戶端所需要讀取的元 數(shù)據(jù)的元數(shù)據(jù)編號,或所述元數(shù)據(jù)的元數(shù)據(jù)名稱和元數(shù)據(jù)路徑的信息組合,查 詢存儲在客戶端的,與所述客戶端需要讀取的元數(shù)據(jù)相對應的該元數(shù)據(jù)的元數(shù) 據(jù)處理服務器讀取緩存表是否為空;如果所述元數(shù)據(jù)處理服務器讀取緩存表為空,則隨機選擇一個可以用于緩 存所述元數(shù)據(jù)的元數(shù)據(jù)處理服務器模塊,并將所述元數(shù)據(jù)處理服務器模塊的元 數(shù)據(jù)處理服務器編號和所述元數(shù)據(jù)處理服務器模塊的初始的訪問頻度加入到 所述元數(shù)據(jù)的元數(shù)據(jù)處理服務器讀取緩存表中,而后將所述元數(shù)據(jù)處理服務器 模塊的元數(shù)據(jù)處理服務器編號返回給客戶端;如果所述元數(shù)據(jù)處理服務器讀取緩存表不為空,則選取所述元數(shù)據(jù)處理服 務器讀取緩存表中的第一項,如果所述第一項中的元數(shù)據(jù)處理服務器模塊的訪 問頻度大于初始化時所設定的所述元數(shù)據(jù)處理服務器模塊的最大訪問頻度, 且所述元數(shù)據(jù)處理服務器讀取緩存表的總項數(shù)小于初始化時設定的所述元數(shù) 據(jù)處理服務器讀取緩存表的最大項數(shù),則隨機選擇未被該元數(shù)據(jù)的元數(shù)據(jù)處理 服務器讀取緩存表所記錄的可以用于緩存所述元數(shù)據(jù)的元數(shù)據(jù)處理服務器模 塊中的一個,將該元數(shù)據(jù)處理服務器模塊的元數(shù)據(jù)處理服務器編號和訪問頻度 加入到所述元數(shù)據(jù)處理服務器讀取緩存表中,并將該元數(shù)據(jù)處理服務器模塊的 元數(shù)據(jù)處理服務器編號返回給客戶端;否則,直接將所述元數(shù)據(jù)處理服務器讀取緩存表中第一項所記錄的元數(shù)據(jù) 處理服務器模塊的元數(shù)據(jù)處理服務器編號返回給客戶端。
24、 根據(jù)權(quán)利要求22所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,所 述客戶端向所述MPS模塊發(fā)送元數(shù)據(jù)讀取請求中,包括所需讀取的元數(shù)據(jù)的 元數(shù)據(jù)編號,或所述元數(shù)據(jù)的元數(shù)據(jù)名稱和元數(shù)據(jù)路徑的信息組合。
25、 根據(jù)權(quán)利要求22所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,在步驟212中,所述元數(shù)據(jù)處理服務器模塊通過所述元數(shù)據(jù)處理服務器模塊中的元數(shù)據(jù)對象存儲服務器確定函數(shù)模塊中的元數(shù)據(jù)對象存儲服務器確定函數(shù),以 確定需要讀取的元數(shù)據(jù)存儲在哪個元數(shù)據(jù)對象存儲服務器模塊中。
26、 根據(jù)權(quán)利要求25所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,所 述元數(shù)據(jù)對象存儲服務器確定函數(shù)用以實現(xiàn)以下功能當從所述客戶端發(fā)送而來的元數(shù)據(jù)操作請求是INODE操作請求時,所述 元數(shù)據(jù)對象存儲服務器確定函數(shù)通過所述INODE操作請求中所包含的需要進 行操作的元數(shù)據(jù)的元數(shù)據(jù)編號,獲取與所述元數(shù)據(jù)編號相對應的元數(shù)據(jù)對象存 儲服務器編號信息,所述元數(shù)據(jù)對象存儲服務器編號即為存儲有需要進行操作 的元數(shù)據(jù)的MOS模塊的編號;當從所述客戶端發(fā)送而來的元數(shù)據(jù)操作請求是LOOKUP操作請求時,所 述元數(shù)據(jù)對象存儲服務器確定函數(shù)通過所述LOOKUP操作請求中所包含的需 要進行操作的元數(shù)據(jù)的元數(shù)據(jù)名稱以及元數(shù)據(jù)路徑,利用hash函數(shù)獲得一hash 值,并使用此hash值作為索引,從由所述雙層元數(shù)據(jù)處理系統(tǒng)中的所有元數(shù) 據(jù)對象存儲服務器模塊的元數(shù)據(jù)對象存儲服務器編號所構(gòu)成的數(shù)組中,搜索出 存儲有所需進行操作的元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模塊的元數(shù)據(jù)對象存 儲服務器編號。
27、 根據(jù)權(quán)利要求15所述的一種雙層元數(shù)據(jù)處理方法,其特征在于,當 所述客戶端進行修改元數(shù)據(jù)的操作時,所述步驟200中包括以下步驟步驟221,所述客戶端通過存儲在所述客戶端的第二元數(shù)據(jù)對象存儲服務 器確定函數(shù)模塊中的元數(shù)據(jù)對象存儲服務器確定函數(shù),確定存儲有需要進行修 改的元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模塊,并向所述元數(shù)據(jù)對象存儲服務器模 塊發(fā)送元數(shù)據(jù)修改請求,進入步驟222;步驟222,所述存儲有需要進行修改的元數(shù)據(jù)的元數(shù)據(jù)對象存儲服務器模 塊接收到所述元數(shù)據(jù)修改請求后,查詢存儲在所述元數(shù)據(jù)對象存儲服務器模塊 的元數(shù)據(jù)處理服務器存儲緩存表模塊中的與所要修改的元數(shù)據(jù)相對應的元數(shù) 據(jù)處理服務器存儲緩存表,并向與所述元數(shù)據(jù)處理服務器存儲緩存表中每一項 所對應的元數(shù)據(jù)處理服務器模塊發(fā)送修改后的元數(shù)據(jù)以及元數(shù)據(jù)替換請求,所 述元數(shù)據(jù)處理服務器模塊接收到所述修改后的元數(shù)據(jù)以及元數(shù)據(jù)替換請求后, 使用所述修改后的元數(shù)據(jù)替換緩存在所述元數(shù)據(jù)處理服務器模塊的緩存設備中的相應的元數(shù)據(jù),并向所述元數(shù)據(jù)對象存儲服務器模塊返回更新成功的消 息,所述元數(shù)據(jù)對象存儲服務器模塊接收到所有更新成功的消息后,向所述客 戶端發(fā)送元數(shù)據(jù)更新成功的消息。
全文摘要
本發(fā)明涉及計算機存儲系統(tǒng)體系結(jié)構(gòu)領域,公開了一種雙層元數(shù)據(jù)處理系統(tǒng)及方法。在本發(fā)明中,通過在元數(shù)據(jù)服務器中設置元數(shù)據(jù)處理服務器模塊和元數(shù)據(jù)對象存儲服務器模塊,將對元數(shù)據(jù)進行的讀取和修改操作請求進行了合理的分流,使得不同類型的元數(shù)據(jù)操作請求在不同的層次上進行處理,從而能夠針對元數(shù)據(jù)操作請求的類型進行優(yōu)化,同時,在處理讀取元數(shù)據(jù)的操作請求時,可以根據(jù)請求創(chuàng)建多個元數(shù)據(jù)復本,以平衡對讀取元數(shù)據(jù)操作的訪問負載。
文檔編號H04L29/08GK101247417SQ20081010152
公開日2008年8月20日 申請日期2008年3月7日 優(yōu)先權(quán)日2008年3月7日
發(fā)明者唐榮鋒, 勁 熊, 晶 邢 申請人:中國科學院計算技術(shù)研究所