客戶端起源信息關(guān)聯(lián)感知的元數(shù)據(jù)預(yù)取方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及一種元數(shù)據(jù)預(yù)取方法及系統(tǒng),尤其是一種客戶端起源信息關(guān)聯(lián)感知的 元數(shù)據(jù)預(yù)取方法及系統(tǒng),屬于起源信息收集與元數(shù)據(jù)關(guān)聯(lián)性的挖掘技術(shù)W及元數(shù)據(jù)預(yù)取技 術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 隨著數(shù)據(jù)的不斷增長,高性能計算環(huán)境下的存儲系統(tǒng)的數(shù)據(jù)量變得越來越龐大, 數(shù)據(jù)存儲量達(dá)到了TB級別乃至PB級別。例如,F(xiàn)acebook已經(jīng)擁有了 200M個數(shù)據(jù)對象,占 據(jù)了 21PB的存儲空間。為了提高存儲系統(tǒng)的I/O性能,現(xiàn)今大多數(shù)分布式文件系統(tǒng)通常將 文件數(shù)據(jù)和元數(shù)據(jù)分離,即數(shù)據(jù)流與控制流分離,從而獲得更高的系統(tǒng)擴(kuò)展性和I/O并發(fā) 性。元數(shù)據(jù)單獨存儲在一個或多個元數(shù)據(jù)服務(wù)器中,為客戶端提供元數(shù)據(jù)服務(wù)。隨著客戶 端的數(shù)量的增加,客戶端對元數(shù)據(jù)服務(wù)器的訪問將會越來越頻繁,元數(shù)據(jù)服務(wù)器將會成為 整個系統(tǒng)的性能瓶頸,導(dǎo)致系統(tǒng)響應(yīng)時間變長,降低系統(tǒng)的吞吐量。
[0003] 由于數(shù)據(jù)分布的時間局部性和空間局部性特性,在大型分布式文件系統(tǒng)中,利用 預(yù)取技術(shù)和緩存機(jī)制,是提升元數(shù)據(jù)服務(wù)處理效率的有效方法。然而,現(xiàn)有的緩存和預(yù)取方 法大多針對普通的文件數(shù)據(jù),沒有考慮元數(shù)據(jù)的特性,不適用于元數(shù)據(jù)的緩存與預(yù)取。由于 普通文件數(shù)據(jù)的容量大,預(yù)取不命中將對I/O帶來比較大的性能懲罰,所W針對普通數(shù)據(jù) 的傳統(tǒng)預(yù)取機(jī)制比較保守,只預(yù)取了一兩個文件。相比于普通數(shù)據(jù),元數(shù)據(jù)的一個非常重要 的特性是容量比較小。對于塊大小為4K時,65%的元數(shù)據(jù)小于128字節(jié),接近98%的元數(shù) 據(jù)小于4224字節(jié)。因此預(yù)取不命中的元數(shù)據(jù)并不會占據(jù)緩存(Cache)的太多空間,使得預(yù) 取不命中的性能懲罰不明顯。因此,傳統(tǒng)的緩存與預(yù)測方法并不適用于元數(shù)據(jù)的緩存與預(yù) 取。
[0004] 目前針對大規(guī)模分布式文件系統(tǒng)的元數(shù)據(jù)預(yù)取方法的相關(guān)研究大多是通過分析 文件數(shù)據(jù)請求的歷史訪問模式,采用數(shù)據(jù)挖掘的技術(shù)去挖掘文件之間的關(guān)聯(lián)規(guī)則,從而預(yù) 測未來的元數(shù)據(jù)訪問請求。文獻(xiàn)[ANovelWei曲ted-Graph-BasedGroupingAlgorithm 化rMetadataPrefetching]利用一個可移動的歷史窗口對歷史訪問序列進(jìn)行關(guān)聯(lián)性統(tǒng) 計,存儲在圖數(shù)據(jù)結(jié)構(gòu)中,進(jìn)行元數(shù)據(jù)預(yù)取,提高了元數(shù)據(jù)服務(wù)的1/0性能;但是,運種方法 只是簡單地文件1/0的歷史訪問模式進(jìn)行分析,并沒有應(yīng)用元數(shù)據(jù)豐富的語義信息。此外, 文南犬[FARMER:曰novelapproachtofileaccesscorrel曰tionminin邑曰ndevaluation referencemodelforoptimizingpeta-scalefilesystemperformance]計算文件語義 距離,結(jié)合歷史的訪問序列,有效地提高了預(yù)取的準(zhǔn)確率,但是運個方法只是對文件屬性進(jìn) 行相似度計算,也沒有考慮到文件被操作的歷史進(jìn)程行為信息,即客戶端的起源信息。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的是為了解決上述現(xiàn)有技術(shù)的缺陷,提供了一種客戶端起源信息關(guān)聯(lián) 感知的元數(shù)據(jù)預(yù)取方法,該方法通過在客戶端收集與進(jìn)程相關(guān)的起源信息,W加強(qiáng)歷史訪 問序列的時間局部性,并且利用了一種隨時間衰減的關(guān)聯(lián)性計算技術(shù)來提高客戶端元數(shù)據(jù) 預(yù)取的準(zhǔn)確度W及預(yù)取的客戶端元數(shù)據(jù)緩存命中率,減少對元數(shù)據(jù)服務(wù)器的訪問次數(shù),從 而提高元數(shù)據(jù)服務(wù)的性能。
[0006] 本發(fā)明的另一目的在于提供一種客戶端起源信息關(guān)聯(lián)感知的元數(shù)據(jù)預(yù)取系統(tǒng)。
[0007] 本發(fā)明的目的可W通過采取如下技術(shù)方案達(dá)到:
[0008] 客戶端起源信息關(guān)聯(lián)感知的元數(shù)據(jù)預(yù)取方法,所述方法包括W下步驟:
[0009] S1、在客戶端的內(nèi)核空間實時收集起源信息日志記錄,采用化tlink協(xié)議從內(nèi)核 空間傳輸?shù)接脩艨臻g,并存儲到起源信息數(shù)據(jù)庫中;其中,所述起源信息包括進(jìn)程開始與結(jié) 束時間的進(jìn)程起源信息和進(jìn)程操作文件的I/O請求起源信息;其中,所述起源信息包括進(jìn) 程開始與結(jié)束時間的進(jìn)程起源信息和進(jìn)程操作文件的I/O請求起源信息;
[0010] S2、在客戶端選取一部分已收集的起源信息日志記錄,作為元數(shù)據(jù)的關(guān)聯(lián)性訓(xùn)練 數(shù)據(jù),采用隨時間衰減的關(guān)聯(lián)度計算技術(shù)計算元數(shù)據(jù)兩兩之間的關(guān)聯(lián)分?jǐn)?shù),對于每個元數(shù) 據(jù),選取關(guān)聯(lián)分?jǐn)?shù)較高的關(guān)聯(lián)關(guān)系,得到最初的強(qiáng)關(guān)聯(lián)列表;
[0011] S3、當(dāng)客戶端發(fā)生文件訪問請求時,查詢所述文件的元數(shù)據(jù)是否在客戶端本地的 元數(shù)據(jù)緩存中,若是,則執(zhí)行步驟S5,若否,則執(zhí)行步驟S4 ;
[0012] S4、在客戶端的強(qiáng)關(guān)聯(lián)列表中,預(yù)取多個與所述文件的元數(shù)據(jù)強(qiáng)關(guān)聯(lián)的元數(shù)據(jù),一 并打包向元數(shù)據(jù)服務(wù)器發(fā)送請求,從元數(shù)據(jù)服務(wù)器下載相應(yīng)的元數(shù)據(jù),更新客戶端本地的 元數(shù)據(jù)緩存;
[0013] S5、從客戶端本地的元數(shù)據(jù)緩存中讀取相應(yīng)的元數(shù)據(jù)信息;
[0014] S6、根據(jù)新增的起源信息日志記錄,采用隨時間衰減的關(guān)聯(lián)度計算技術(shù)定時計算 元數(shù)據(jù)兩兩之間的關(guān)聯(lián)分?jǐn)?shù),對于每個元數(shù)據(jù),按照關(guān)聯(lián)分?jǐn)?shù)排序,選取關(guān)聯(lián)分?jǐn)?shù)最高的幾 個關(guān)聯(lián)元數(shù)據(jù),更新元數(shù)據(jù)強(qiáng)關(guān)聯(lián)列表,為W后的元數(shù)據(jù)預(yù)取提供選擇。
[0015] 作為一種優(yōu)選方案,步驟S1中,所述在客戶端的內(nèi)核空間實時收集起源信息日志 記錄,具體為:
[0016] 在客戶端的內(nèi)核空間,攔截exit、exit_g;roup系統(tǒng)調(diào)用,收集進(jìn)程開始與結(jié)束時 間的進(jìn)程起源信息日志記錄;攔截〇pen、read、w;rite、stat、lstat、readdi;r系統(tǒng)調(diào)用,收集 進(jìn)程操作文件的I/O起源信息日志記錄。
[0017] 作為一種優(yōu)選方案,所述進(jìn)程起源信息日志記錄規(guī)范為一個Ξ元組,如下:
[0018] ProcProv(processID,sta;rt_time,end_time);其中,ProcProv表不進(jìn)程號為 processID的進(jìn)程,其生命周期區(qū)間為[sta;rt_time,end_time];
[0019] 所述1/0請求起源信息日志記錄規(guī)范為一個五元組,如下:
[0020] lOProv(time,processID,userlD,operationID,fid);其中,time表示記錄發(fā)生 的時間,processID表示進(jìn)程的pid號,userlD表示操作進(jìn)程的用戶的ID號,operationID 表示系統(tǒng)調(diào)用的唯一識別號,fid表示每個文件路徑分配該文件的的唯一識別號。
[0021] 作為一種優(yōu)選方案,步驟S1中,所述起源信息數(shù)據(jù)庫為TokyoC油inet鍵值數(shù) 據(jù)庫;其中,存儲ProcProv記錄的數(shù)據(jù)為B+樹形結(jié)構(gòu)的鍵值數(shù)據(jù),主鍵為<sta;rt_time, processID〉;存儲lOProv記錄的數(shù)據(jù)為B+樹形結(jié)構(gòu)的鍵值數(shù)據(jù),主鍵為〈time,fid〉。
[0022] 作為一種優(yōu)選方案,步驟S2和S6中,所述計算元數(shù)據(jù)兩兩之間的關(guān)聯(lián)分?jǐn)?shù),具體 包括:
[0023] 1)根據(jù)ProcProv記錄,提取起源信息窗口列表Plist;
[0024] 2)對于起源信息窗口列表Plist的每個起源信息窗口,從lOProv記錄中讀取I/O 請求的記錄列表;
[0025] 3)計算I/O請求的記錄列表中兩兩fid的關(guān)聯(lián)分?jǐn)?shù)。
[00%] 作為一種優(yōu)選方案,步驟1)中所述根據(jù)ProcProv記錄,提取起源信息窗口列表 Plist,具體為:
[0027] 根據(jù)ProcProv記錄的進(jìn)程開始與結(jié)束時間,每當(dāng)兩個進(jìn)程的生命周期相交,則合 并成一個更大的進(jìn)程生命周期,直到?jīng)]有相交的進(jìn)程的生命周期,則運個進(jìn)程生命周期為 一個起源信息窗口,最后得到一個起源信息窗口列表Plist。
[002引作為一種優(yōu)選方案,步驟3)中所述計算1/0請求的記錄列表中兩兩fid的關(guān)聯(lián)分 數(shù),具體為:
[0029] 在一個起源信息窗口中,對于一個lOProv與其若干個后驅(qū)lOProv的關(guān)聯(lián)分?jǐn)?shù),給 定一個初始關(guān)聯(lián)分?jǐn)?shù)S,經(jīng)過與后驅(qū)lOProv的時間差衰減,得到新的關(guān)聯(lián)分?jǐn)?shù)S作為兩個 fid的關(guān)聯(lián)分?jǐn)?shù),一直與后驅(qū)lOProv的時間衰減,直至S小于或等于0才停止。
[0030] 作為一種優(yōu)選方案,步驟S6中,所述更新元數(shù)據(jù)強(qiáng)關(guān)聯(lián)列表,具體為:
[0031] 采用離線定時更新的策略,在系統(tǒng)閑時計算關(guān)聯(lián)分?jǐn)?shù),將更新后的強(qiáng)關(guān)聯(lián)列表傳 輸?shù)絻?nèi)核空間,釋放其他的弱關(guān)聯(lián)關(guān)系,將其他的弱關(guān)聯(lián)關(guān)系存儲到關(guān)聯(lián)分?jǐn)?shù)數(shù)據(jù)庫中;其 中,所述關(guān)聯(lián)分?jǐn)?shù)數(shù)據(jù)庫為化sh結(jié)構(gòu)的鍵值數(shù)據(jù)庫,主鍵為<f 化om,fW_to〉,存儲的值 為相應(yīng)的關(guān)聯(lián)分?jǐn)?shù)。
[0032] 本發(fā)明的另一目的可W通過采取如下技術(shù)方案達(dá)到:
[0033] 客戶端起源信息關(guān)聯(lián)感知的元數(shù)據(jù)預(yù)取系統(tǒng),所述系統(tǒng)包括:
[0034] 起源信息收集模塊,用于在客戶端的內(nèi)核空間實時收集起源信息日志記錄,采用 Netlink協(xié)議從內(nèi)核空間傳輸?shù)接脩艨臻g,并存儲到起源信息數(shù)據(jù)庫中;
[0035] 關(guān)聯(lián)分?jǐn)?shù)計算模塊,用于在客戶端選取一部分已收集的起源信息日志記錄,作為 元數(shù)據(jù)的關(guān)聯(lián)性訓(xùn)練數(shù)據(jù),采用隨時間衰減的關(guān)聯(lián)度計算技術(shù)計算元數(shù)據(jù)兩兩之間的關(guān)聯(lián) 分?jǐn)?shù),對于每個元數(shù)據(jù),選取關(guān)聯(lián)分?jǐn)?shù)較高的關(guān)聯(lián)關(guān)系,得到最初的強(qiáng)關(guān)聯(lián)列表;W及用于 根據(jù)新增的起源