本發(fā)明涉及分布式文件系統(tǒng)中起源數(shù)據(jù)收集技術(shù)領(lǐng)域,具體涉及一種分布式起源數(shù)據(jù)收集與存儲(chǔ)系統(tǒng),更具體的說涉及了一種適用于任意POSIX標(biāo)準(zhǔn)分布式文件系統(tǒng)的高性能起源數(shù)據(jù)收集與存儲(chǔ)系統(tǒng)。
背景技術(shù):
隨著云存儲(chǔ)平臺(tái)的數(shù)據(jù)量不斷增長,人們不滿足于僅僅對海量數(shù)據(jù)的存儲(chǔ),而且希望能從海量數(shù)據(jù)中挖掘出更多的價(jià)值。另外,對于用戶來說,數(shù)據(jù)的可靠性也變得越來越重要。比如,當(dāng)用戶在分布式文件系統(tǒng)中獲取一個(gè)文件時(shí),用戶可能會(huì)問,這個(gè)文件是怎么來的,與其他文件存在什么聯(lián)系,可靠性和安全性如何?顯然,存儲(chǔ)系統(tǒng)所收集的普通日志無法從根本上回答這些問題。起源(Provenance)信息作為一種描述數(shù)據(jù)對象演化歷史的特殊元數(shù)據(jù),正好可以用來回答上述問題。通過利用起源信息,用戶可以更準(zhǔn)確地表達(dá)分布式存儲(chǔ)中數(shù)據(jù)的特征,進(jìn)一步挖掘數(shù)據(jù)的價(jià)值,充分提升分布式存儲(chǔ)系統(tǒng)中復(fù)雜數(shù)據(jù)的分析和應(yīng)用。
目前,大部分的起源收集存儲(chǔ)系統(tǒng)只適用于本地存儲(chǔ)或特定云服務(wù)(如AWS),不能滿足主流分布式文件系統(tǒng)的需求。文獻(xiàn)[Transparent result caching]、文獻(xiàn)[Lineage file system]以及文獻(xiàn)[Provenance-aware storage systems]通過修改系統(tǒng)內(nèi)核,從而達(dá)到在本地系統(tǒng)收集起源數(shù)據(jù)的目的,這不僅對原系統(tǒng)產(chǎn)生安全隱患,而且不能直接適用于分布式環(huán)境。中國專利公開號為CN104092755A的專利以及文獻(xiàn)[Provenance for the cloud]設(shè)計(jì)了專門的服務(wù)攔截協(xié)議收集云端的起源數(shù)據(jù),但這兩個(gè)起源收集裝置只適用于特定的與服務(wù),不能普遍適用于任意支持POSIX標(biāo)準(zhǔn)的分布式文件系統(tǒng)。
另外為分布式文件系統(tǒng)而設(shè)計(jì)的起源收集存儲(chǔ)系統(tǒng)在用戶態(tài)收集起源信息,性能上無法比肩在內(nèi)核態(tài)收集起源。文獻(xiàn)[Story book:An efficient extensible provenance framework]和[Towards a provenance-aware distributed filesystem]在用戶態(tài)采用FUSE文件系統(tǒng)接口來收集起源數(shù)據(jù),從而獲得高可移植性,能普遍適用于主流的分布式文件系統(tǒng),然而產(chǎn)生的性能開銷較大。
針對以上問題,目前亟待提出一種普遍適用于主流分布式文件系統(tǒng)的高性能起源數(shù)據(jù)收集存儲(chǔ)系統(tǒng)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中的上述缺陷,提供一種分布式起源數(shù)據(jù)收集與存儲(chǔ)系統(tǒng)。
本發(fā)明的目的可以通過采取如下技術(shù)方案達(dá)到:
一種分布式起源數(shù)據(jù)收集與存儲(chǔ)系統(tǒng),該系統(tǒng)包括:內(nèi)核態(tài)的起源信息收集模塊(provfs)、用戶態(tài)的起源記錄生成模塊以及存儲(chǔ)層模塊,其中,
所述起源信息收集模塊處于內(nèi)核態(tài),通過wrapfs堆疊式文件系統(tǒng)技術(shù)以及劫持系統(tǒng)調(diào)用,分別收集分布式文件系統(tǒng)客戶端的文件操作記錄與進(jìn)程行為記錄,緩沖在一個(gè)環(huán)形緩沖隊(duì)列中,異步將緩沖隊(duì)列的起源日志持久化到日志文件中;
所述起源記錄生成模塊處于用戶態(tài),用于批量處理起源日志,生成文件、進(jìn)程的起源關(guān)系記錄,并調(diào)用所述存儲(chǔ)層模塊接口持久化起源關(guān)系記錄到鍵值型起源數(shù)據(jù)庫;
所述存儲(chǔ)層模塊包括起源日志文件以及存儲(chǔ)起源日志記錄的鍵值型起源數(shù)據(jù)庫,以分布式文件系統(tǒng)作為存儲(chǔ)后端提供存儲(chǔ)服務(wù),并將起源記錄持久化到鍵值型起源數(shù)據(jù)庫中。
進(jìn)一步地,所述起源信息收集模塊包括IO攔截子模塊、進(jìn)程攔截子模塊、起源信息收集器以及起源信息記錄器;
其中,所述IO攔截子模塊基于wrapfs堆棧式文件系統(tǒng),處于虛擬文件系統(tǒng)與具體文件系統(tǒng)之間,通過修改IO操作接口,完成對虛擬文件系統(tǒng)下發(fā)IO的攔截監(jiān)控;所述進(jìn)程攔截子模塊是在Linux系統(tǒng)環(huán)境的客戶端下,當(dāng)文件系統(tǒng)掛載時(shí),開啟監(jiān)控進(jìn)程相關(guān)系統(tǒng)調(diào)用exit和exit_group,當(dāng)文件系統(tǒng)卸載時(shí),關(guān)閉監(jiān)控進(jìn)程相關(guān)系統(tǒng)調(diào)用;所述起源信息收集器用于收集分布式文件系統(tǒng)客戶端的文件操作記錄與進(jìn)程行為記錄;所述起源信息記錄器用于將緩沖隊(duì)列的起源日志持久化到日志文件中。
進(jìn)一步地,所述起源信息收集器收集的IO起源記錄包含以下信息:記錄類型(讀/寫)、進(jìn)程PID、進(jìn)程啟動(dòng)時(shí)間stime、文件的inode號、操作時(shí)間、用戶UID、文件絕對路徑的長度、文件絕對路徑。
進(jìn)一步地,所述起源信息收集器收集的進(jìn)程起源記錄包含以下信息:記錄類型、用戶UID、進(jìn)程PID、父進(jìn)程PID、進(jìn)程啟動(dòng)時(shí)間stime、進(jìn)程結(jié)束時(shí)間etime、父進(jìn)程啟動(dòng)時(shí)間、程序路徑長度、環(huán)境信息長度、程序路徑和環(huán)境信息,其中,所述進(jìn)程PID與所述進(jìn)程啟動(dòng)時(shí)間stime作為標(biāo)識一個(gè)進(jìn)程的唯一標(biāo)識。
進(jìn)一步地,所述起源信息收集模塊采用一個(gè)暫存起源記錄的環(huán)形緩沖池,所述環(huán)形緩沖池采用kfifo數(shù)據(jù)結(jié)構(gòu),并具有一個(gè)內(nèi)核線程作為起源日志異步刷寫線程。
進(jìn)一步地,所述起源記錄生成模塊包括任務(wù)提取器和起源記錄生成器;其中,
所述任務(wù)提取器分析進(jìn)程起源記錄,把相互關(guān)聯(lián)的多個(gè)進(jìn)程組合成任務(wù),輸出進(jìn)程到任務(wù)的哈希映射表P2TM;
所述起源記錄生成器結(jié)合所述進(jìn)程到任務(wù)的哈希映射表P2TM與文件操作記錄生成起源關(guān)系記錄,并調(diào)用所述存儲(chǔ)層模塊接口持久化起源關(guān)系記錄到所述存儲(chǔ)層模塊的鍵值型起源數(shù)據(jù)庫中。
進(jìn)一步地,所述起源關(guān)系的描述模型采用開放起源模型,描述Used、wasGeneratedBy、wasTriggerBy三種關(guān)系,分別表示某個(gè)進(jìn)程/任務(wù)使用過某文件、某文件由某進(jìn)程/任務(wù)所產(chǎn)生以及某進(jìn)程被某任務(wù)所觸發(fā)。
進(jìn)一步地,所述任務(wù)提取器中任務(wù)提取方法的具體步驟如下:
S1、將起源信息收集模塊收集的進(jìn)程信息列表加載入哈希映射表P2TM中,以進(jìn)程的父進(jìn)程PID作為初始值;
S2、遍歷哈希映射表P2TM,過濾未知的父節(jié)點(diǎn),若其父進(jìn)程不存在P2TM的進(jìn)程,將父進(jìn)程PID改成自身PID,完成初始化;
S3、遍歷哈希映射表P2TM的進(jìn)程,回溯找到根節(jié)點(diǎn),每一個(gè)進(jìn)程在第一次找到自身的根節(jié)點(diǎn)時(shí),更新為新的父進(jìn)程PID,減少后續(xù)的重復(fù)查找,以達(dá)到路徑壓縮的效果,最后生成進(jìn)程到任務(wù)的哈希映射表P2TM。
進(jìn)一步地,所述鍵值型起源數(shù)據(jù)庫采用Tokyo Cabinet數(shù)據(jù)庫作為存儲(chǔ)起源記錄的數(shù)據(jù)庫,包含F(xiàn)2N、N2F、ARGV2N、N2ARGV、TASK、WTB、WGB、USED、GENERATED九個(gè)數(shù)據(jù)庫,并構(gòu)建起源記錄索引,提供鍵值型起源數(shù)據(jù)庫的查詢接口,包含起源記錄單點(diǎn)查詢、Top-k查詢和范圍查詢。
進(jìn)一步地,所述F2N、所述N2F、所述ARGV2N、所述N2ARGV作為優(yōu)化起源關(guān)系存儲(chǔ)的數(shù)據(jù)庫,所述F2N是文件絕對路徑到一個(gè)起源對象號pnum的索引數(shù)據(jù)庫,所述N2F是所述F2N的逆,即從一個(gè)pnum得到文件的路徑看,所述ARGV2N和所述N2ARGV數(shù)據(jù)庫是為了建立進(jìn)程的參數(shù)信息的索引;
所述WTB、所述WGB、所述USED、所述GENERATED作為主要存儲(chǔ)起源關(guān)系的數(shù)據(jù)庫,所述WTB數(shù)據(jù)庫存放WTB起源記錄,以進(jìn)程PID,啟動(dòng)時(shí)間為鍵,存儲(chǔ)所屬任務(wù)的pnum、啟動(dòng)時(shí)間,以及進(jìn)程的啟動(dòng)時(shí)間、結(jié)束時(shí)間、進(jìn)程的可執(zhí)行程序的絕對路徑pnum,所述WGB數(shù)據(jù)庫以文件路徑pnum、操作時(shí)間optime作為鍵,存儲(chǔ)WGB起源記錄,所述USED和所述GENERATED數(shù)據(jù)庫分別存儲(chǔ)任務(wù)pnum所讀寫過的文件信息;
所述TASK數(shù)據(jù)庫存放任務(wù),鍵為任務(wù)程序絕對路徑的pnum號和進(jìn)程啟動(dòng)時(shí)間,存放的任務(wù)相關(guān)信息包括:根進(jìn)程pid,任務(wù)結(jié)束時(shí)間etime,宿主用戶uid以及任務(wù)執(zhí)行時(shí)的參數(shù)信息。
本發(fā)明相對于現(xiàn)有技術(shù)具有如下的優(yōu)點(diǎn)及效果:
(1)本發(fā)明采用了堆棧式文件系統(tǒng)技術(shù),能夠像FUSE文件系統(tǒng)那樣易于開發(fā),可移植性高,適用于任意POSIX標(biāo)準(zhǔn)的分布式文件系統(tǒng)。
(2)本發(fā)明在內(nèi)核態(tài)收集起源數(shù)據(jù),能獲得比用戶態(tài)的FUSE文件系統(tǒng)更低的性能開銷。
(3)本發(fā)明的起源記錄生成模塊中的任務(wù)提取器提出一種全新的任務(wù)提取算法,該算法通過把具有相同目的的進(jìn)程提取成任務(wù),以任務(wù)代替進(jìn)程作為文件操作的對象,不僅更加準(zhǔn)確地描述分布式文件系統(tǒng)中的起源關(guān)系,而且降低了起源數(shù)據(jù)的存儲(chǔ)空間。
(4)本發(fā)明采用最廣泛使用的開發(fā)起源模型描述起源記錄,并高效存儲(chǔ)到鍵值型起源數(shù)據(jù)庫中,提供多個(gè)起源記錄查詢接口,使得收集的起源信息具有易用性。
附圖說明
圖1是本發(fā)明公開的一種分布式起源數(shù)據(jù)收集與存儲(chǔ)系統(tǒng)的結(jié)構(gòu)原理圖;
圖2是本發(fā)明的IO起源記錄的存儲(chǔ)結(jié)構(gòu)圖;
圖3是本發(fā)明的進(jìn)程起源記錄的存儲(chǔ)結(jié)構(gòu)圖;
圖4是本發(fā)明中任務(wù)提取器的工作流程圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例
如圖1所示,本實(shí)施例公開了一種分布式起源數(shù)據(jù)收集與存儲(chǔ)系統(tǒng),包括內(nèi)核態(tài)的起源信息收集模塊(provfs)、用戶態(tài)的起源記錄生成模塊以及存儲(chǔ)層模塊。
一、起源信息收集模塊
起源信息收集模塊處于內(nèi)核態(tài),通過堆疊式文件系統(tǒng)技術(shù)wrapfs以及劫持系統(tǒng)調(diào)用,分別收集分布式文件系統(tǒng)客戶端的文件操作記錄與進(jìn)程行為記錄,緩沖在一個(gè)環(huán)形緩沖隊(duì)列中,再通過起源信息記錄器(Logger)將緩沖隊(duì)列的起源日志持久化到日志文件中。其不修改內(nèi)核以及分布式文件系統(tǒng)的組件,從而獲得高可移植性,同時(shí)保障分布式文件系統(tǒng)能夠穩(wěn)定運(yùn)行。
起源信息收集模塊用于在客戶端的內(nèi)核空間收集IO起源記錄和進(jìn)程起源記錄,包括IO攔截子模塊、進(jìn)程攔截子模塊、起源信息收集器以及起源信息記錄器。
其中,IO攔截子模塊基于wrapfs堆棧式文件系統(tǒng),修改open,read,write,aio_read,aio_write這幾個(gè)IO操作接口,從而完成IO攔截監(jiān)控。IO攔截子模塊位于虛擬文件系統(tǒng)與具體文件系統(tǒng)之間,通過正常轉(zhuǎn)發(fā)用戶從虛擬文件系統(tǒng)下發(fā)的IO,在不影響用戶正常IO的前提下,進(jìn)行收集用戶IO的起源信息。進(jìn)程攔截子模塊是在Linux系統(tǒng)環(huán)境的客戶端下,當(dāng)文件系統(tǒng)掛載時(shí),開啟監(jiān)控進(jìn)程相關(guān)系統(tǒng)調(diào)用exit和exit_group。當(dāng)文件系統(tǒng)卸載時(shí),關(guān)閉監(jiān)控進(jìn)程相關(guān)系統(tǒng)調(diào)用。起源信息收集器用于收集分布式文件系統(tǒng)客戶端的文件操作記錄與進(jìn)程行為記錄。起源信息記錄器(Logger)用于將緩沖隊(duì)列的起源日志持久化到日志文件中。
起源信息收集器收集的IO起源記錄的存儲(chǔ)結(jié)構(gòu)如圖2所示,包含以下信息:記錄類型(讀/寫)、進(jìn)程PID、進(jìn)程啟動(dòng)時(shí)間stime、文件的inode號、操作時(shí)間、用戶UID、文件絕對路徑的長度、文件絕對路徑。
此外,起源信息收集器收集的進(jìn)程起源記錄的存儲(chǔ)結(jié)構(gòu)如圖3所示,包含以下信息:記錄類型、用戶UID、進(jìn)程PID、父進(jìn)程PID、進(jìn)程啟動(dòng)時(shí)間stime、進(jìn)程結(jié)束時(shí)間etime、父進(jìn)程啟動(dòng)時(shí)間、程序路徑長度、環(huán)境信息長度、程序路徑和環(huán)境信息。其中,進(jìn)程PID與進(jìn)程啟動(dòng)時(shí)間stime作為標(biāo)識一個(gè)進(jìn)程的唯一標(biāo)識。
在內(nèi)核態(tài)收集完IO起源記錄和進(jìn)程起源記錄后,起源信息收集模塊(provfs)將這些記錄存儲(chǔ)為起源日志,以供后續(xù)起源信息的分析與生成。起源信息收集模塊(provfs)采用了一個(gè)暫存起源記錄的環(huán)形緩沖池,環(huán)形緩沖池采用kfifo數(shù)據(jù)結(jié)構(gòu),并具有一個(gè)內(nèi)核線程作為起源日志異步刷寫線程。基于典型的消費(fèi)者-生產(chǎn)者模型,起源信息收集器向緩沖池加入起源記錄,起源信息記錄器(Logger)則異步地從緩沖隊(duì)列讀取起源記錄,寫到存儲(chǔ)層的起源日志文件中。
二、起源記錄生成模塊
起源記錄生成模塊處于用戶態(tài),用于批量處理起源日志,生成文件、進(jìn)程的起源關(guān)系記錄。先通過任務(wù)提取器分析進(jìn)程行為,把多個(gè)進(jìn)程組合成任務(wù),再結(jié)合任務(wù)與文件操作記錄生成Used,WGB,WTB等起源關(guān)系記錄,并調(diào)用存儲(chǔ)層模塊接口持久化起源關(guān)系記錄到鍵值型起源數(shù)據(jù)庫。
起源記錄生成模塊包括任務(wù)提取器和起源記錄生成器,
其中,任務(wù)提取器分析進(jìn)程起源記錄,把相互關(guān)聯(lián)的多個(gè)進(jìn)程組合成任務(wù),輸出進(jìn)程到任務(wù)的哈希映射表P2TM。
任務(wù)提取器中任務(wù)提取方法的流程如圖4所示,具體步驟如下:
S1、將起源信息收集模塊(provfs)收集的進(jìn)程信息列表加載入哈希映射表P2TM中,以進(jìn)程的父進(jìn)程PID作為初始值;
S2、遍歷哈希映射表P2TM,過濾未知的父節(jié)點(diǎn),若其父進(jìn)程不存在P2TM的進(jìn)程,將父進(jìn)程PID改成自身PID,完成初始化;
S3、遍歷哈希映射表P2TM的進(jìn)程,回溯找到根節(jié)點(diǎn),每一個(gè)進(jìn)程在第一次找到自身的根節(jié)點(diǎn)時(shí),更新為新的父進(jìn)程PID,減少后續(xù)的重復(fù)查找,以達(dá)到路徑壓縮的效果,最后生成進(jìn)程到任務(wù)的哈希映射表P2TM。
其中,起源記錄生成器結(jié)合進(jìn)程到任務(wù)的哈希映射表P2TM與文件操作記錄生成Used,WGB,WTB三種起源關(guān)系記錄,并調(diào)用存儲(chǔ)層模塊接口持久化起源關(guān)系記錄到存儲(chǔ)層模塊的鍵值型起源數(shù)據(jù)庫中。
本實(shí)施例中,起源關(guān)系的描述模型采用開放起源模型,描述Used,wasGeneratedBy(WGB),wasTriggerBy(WTB)三種關(guān)系,分別表示某個(gè)進(jìn)程/任務(wù)使用過某文件,某文件由某進(jìn)程/任務(wù)所產(chǎn)生,以及某進(jìn)程被某任務(wù)所觸發(fā)。
三、存儲(chǔ)層模塊
存儲(chǔ)層模塊為其他兩個(gè)模塊提供存儲(chǔ)服務(wù)并將起源記錄持久化到鍵值型起源數(shù)據(jù)庫中。存儲(chǔ)層模塊以分布式文件系統(tǒng)作為存儲(chǔ)后端,包括起源日志文件以及存儲(chǔ)起源日志記錄的鍵值型數(shù)據(jù)庫。其中鍵值型數(shù)據(jù)庫為Tokyo Cabinet,鍵值型起源數(shù)據(jù)庫設(shè)計(jì)如下表所示:
表1.鍵值型數(shù)據(jù)庫
鍵值型數(shù)據(jù)庫采用Tokyo Cabinet數(shù)據(jù)庫作為存儲(chǔ)起源記錄的數(shù)據(jù)庫,包含F(xiàn)2N、N2F、ARGV2N、N2ARGV、TASK、WTB、WGB、USED、GENERATED九個(gè)數(shù)據(jù)庫。
其中,F(xiàn)2N、N2F、ARGV2N、N2ARGV作為優(yōu)化起源關(guān)系存儲(chǔ)的數(shù)據(jù)庫。F2N是文件絕對路徑到一個(gè)起源對象號pnum(provenance number)的索引數(shù)據(jù)庫,N2F是F2N的逆,即從一個(gè)pnum得到文件的路徑。同樣,ARGV2N和N2ARGV數(shù)據(jù)庫是為了建立進(jìn)程的參數(shù)信息的索引。
其中,WTB、WGB、USED、GENERATED作為主要存儲(chǔ)起源關(guān)系的數(shù)據(jù)庫。WTB數(shù)據(jù)庫存放WTB起源記錄,以進(jìn)程PID,啟動(dòng)時(shí)間為鍵,存儲(chǔ)所屬任務(wù)的pnum、啟動(dòng)時(shí)間,以及進(jìn)程的啟動(dòng)時(shí)間、結(jié)束時(shí)間、進(jìn)程的可執(zhí)行程序的絕對路徑pnum。WGB數(shù)據(jù)庫以文件路徑pnum、操作時(shí)間optime作為鍵,存儲(chǔ)WGB起源記錄(任務(wù)pnum,啟動(dòng)時(shí)間)。USED和GENERATED數(shù)據(jù)庫分別存儲(chǔ)任務(wù)pnum所讀寫過的文件信息。
為了提升存儲(chǔ)與查詢起源信息的效率,存儲(chǔ)層為文件或者程序的絕對路徑以及進(jìn)程參數(shù)信息建立了索引信息。F2N是文件絕對路徑到一個(gè)起源對象號pnum(provenance number)的索引數(shù)據(jù)庫,N2F是F2N的逆,即從一個(gè)pnum得到文件的路徑。同樣,ARGV2N和N2ARGV數(shù)據(jù)庫是為了建立進(jìn)程的參數(shù)信息的索引。
TASK數(shù)據(jù)庫存放任務(wù),鍵為任務(wù)程序絕對路徑的pnum號和進(jìn)程啟動(dòng)時(shí)間,存放的任務(wù)相關(guān)信息包括:根進(jìn)程pid,任務(wù)結(jié)束時(shí)間etime,宿主用戶uid以及任務(wù)執(zhí)行時(shí)的參數(shù)信息(命令行)。
WTB數(shù)據(jù)庫存放WTB起源記錄,以進(jìn)程PID,啟動(dòng)時(shí)間為鍵,存儲(chǔ)所屬任務(wù)的pnum、啟動(dòng)時(shí)間,以及進(jìn)程的啟動(dòng)時(shí)間、結(jié)束時(shí)間、進(jìn)程的可執(zhí)行程序的絕對路徑pnum。
WGB數(shù)據(jù)庫以文件路徑pnum、操作時(shí)間optime作為鍵,存儲(chǔ)WGB起源記錄(任務(wù)pnum,啟動(dòng)時(shí)間)。USED和GENERATED數(shù)據(jù)庫分別存儲(chǔ)任務(wù)pnum所讀寫過的文件信息。
Used,wasGeneratedBy(WGB),wasTriggerBy(WTB)三種起源關(guān)系記錄分別存儲(chǔ)在USED,WGB,WTB鍵值型起源數(shù)據(jù)庫。
存儲(chǔ)層模塊以被監(jiān)控分布式文件系統(tǒng)為存儲(chǔ)后端,包含F(xiàn)2N、N2F、ARGV2N、N2ARGV、TASK、WTB、WGB、USED、GENERATED九個(gè)數(shù)據(jù)庫。并構(gòu)建起源記錄索引,提供鍵值型起源數(shù)據(jù)庫的查詢接口,主要包含起源記錄單點(diǎn)查詢、Top-k查詢和范圍查詢。
綜上所述,本實(shí)施例公開了一種普遍適用于主流分布式文件系統(tǒng)的高性能起源數(shù)據(jù)收集存儲(chǔ)系統(tǒng),即ProDFS(Provenance for Distributed File System)。ProDFS通過實(shí)現(xiàn)一個(gè)輕量級的provfs堆棧式文件系統(tǒng)收集起源信息,不修改內(nèi)核以及分布式文件系統(tǒng)的組件,從而獲得高可移植性,同時(shí)保障分布式文件系統(tǒng)能夠穩(wěn)定運(yùn)行。其次,為解決以進(jìn)程粒度無法準(zhǔn)確描述分布式文件系統(tǒng)的起源關(guān)系問題,本發(fā)明的起源記錄生成模塊中的任務(wù)提取器采用一種全新的任務(wù)提取算法,該算法通過把具有相同目的的進(jìn)程提取成任務(wù),以任務(wù)代替進(jìn)程作為文件操作的對象,從而更加準(zhǔn)確描述分布式文件系統(tǒng)中的起源關(guān)系。另外,ProDFS采用最廣泛使用的開發(fā)起源模型描述起源記錄,并高效存儲(chǔ)到鍵值型起源數(shù)據(jù)庫中,提供多個(gè)起源記錄查詢接口,使得收集的起源信息具有易用性。此發(fā)明具有靈活性高、可移植性高特點(diǎn),適用于任意支持POSIX標(biāo)準(zhǔn)的分布式文件系統(tǒng),且具有在用戶態(tài)收集起源信息所不可比擬的低性能開銷。
上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。