專利名稱:一種分布式文件系統(tǒng)中客戶端目錄緩存的組織方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式文件系統(tǒng)中目錄項(xiàng)管理,具體來說,涉及一種分布式文件系統(tǒng)中客戶端目錄緩存的組織方法。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,各種應(yīng)用對于存儲的需求越來越大,這其中,以網(wǎng)絡(luò)的應(yīng)用最為典型。網(wǎng)絡(luò)應(yīng)用的存儲需求大致分為兩種,一種是大文件為主的存儲需求,如視音頻網(wǎng)絡(luò)應(yīng)用,這類應(yīng)用的特點(diǎn)是文件數(shù)目不多,但是單個(gè)文件的大小通常是GB甚至TB級別;另外一種以小文件為主的存儲需求,如網(wǎng)上商城、門戶網(wǎng)站等,這類需求的特點(diǎn)是單個(gè)文件不大,但是文件數(shù)量巨大,通常單個(gè)目錄下存放上千萬個(gè)文件,并且此類文件通常只寫入一次,以后以讀取為主。
在大部分網(wǎng)絡(luò)應(yīng)用中,為了滿足存儲的需求,分布式文件系統(tǒng)被引入到各種網(wǎng)絡(luò)應(yīng)用中,這其中具有代表性的是NFS、lustre, GPFS等。這類分布式文件系統(tǒng)的特點(diǎn)是對于大文件的操作有比較好的性能,但是如果單個(gè)目錄下有數(shù)量巨大的小文件,則此類文件系統(tǒng)的檢索目錄項(xiàng)的效率則很難令人滿意。因此,很多網(wǎng)絡(luò)公司,如淘寶、網(wǎng)易、騰訊等,為了滿足自己的需求,紛紛針對小文件存儲設(shè)計(jì)了適合自己需求的存儲架構(gòu)。
在目前見到的針對小文件存儲進(jìn)行優(yōu)化的并行文件系統(tǒng)中,絕大部分采用單組元數(shù)據(jù)架構(gòu),并且客戶端在進(jìn)行元數(shù)據(jù)訪問時(shí),通常在需要時(shí)才去元數(shù)據(jù)服務(wù)器上讀取。這樣的以來,網(wǎng)絡(luò)的延遲就會對客戶端的響應(yīng)速度照成很大的影響,并且如果客戶端需要訪問的數(shù)據(jù)不在元數(shù)據(jù)服務(wù)器的內(nèi)存中,則還需要訪問磁盤,這就使得應(yīng)用程序的訪問時(shí)間有很大一部分浪費(fèi)在IO上面,影響了應(yīng)用的實(shí)時(shí)性。發(fā)明內(nèi)容
本發(fā)明旨在公開一種分布式文件系統(tǒng)中客戶端目錄項(xiàng)緩存的組織方法,該方法可以有效地解決網(wǎng)絡(luò)應(yīng)用中單目錄下海量小文件訪問效率低下的問題。
一種分布式文件系統(tǒng)中客戶端目錄緩存的組織方法,
根據(jù)需要劃分目錄子集,將單個(gè)目錄中的目錄項(xiàng)進(jìn)行哈希運(yùn)算,存儲到每個(gè)目錄子集中,每個(gè)目錄子集分布在一臺元數(shù)據(jù)服務(wù)器上,客戶端上的目錄項(xiàng)緩存結(jié)構(gòu)按照目錄子集進(jìn)行組織。
優(yōu)選的,當(dāng)有應(yīng)用需要遍歷所述目錄時(shí),客戶端首先查詢本地緩存是否存在,如果存在,則直接返回給客戶;如果不存在,則向元數(shù)據(jù)服務(wù)器讀取,讀取完成后,客戶端將其存放在本地緩存,然后返回給應(yīng)用。
優(yōu)選的,所述讀取采用并行方式進(jìn)行讀取。
優(yōu)選的,所述客戶端在第一次讀取目錄后,會對該目錄下的文件進(jìn)行預(yù)取。
優(yōu)選的,所述預(yù)取的策略為將該目錄下的所有目錄項(xiàng)對應(yīng)到元數(shù)據(jù)服務(wù)器上讀取相應(yīng)的索引節(jié)點(diǎn)。
優(yōu)選的,所述預(yù)取的命令可以由應(yīng)喲能發(fā)出,客戶端在接收到預(yù)取請求時(shí),將該批文件的索引節(jié)點(diǎn)從元數(shù)據(jù)服務(wù)器上讀回,然后再去數(shù)據(jù)服務(wù)器預(yù)取數(shù)據(jù)。
在本發(fā)明中,分布式文件系統(tǒng)采用多元數(shù)據(jù)服務(wù)器架構(gòu),即單個(gè)目錄的內(nèi)容分布在多個(gè)元數(shù)據(jù)服務(wù)器上。之所以選用多元數(shù)據(jù)的架構(gòu),主要是為了分散元數(shù)據(jù)訪問的壓力, 提高并發(fā)度。針對網(wǎng)絡(luò)應(yīng)用寫少讀多的特性,本發(fā)明在客戶端的緩存中保留目錄項(xiàng)的內(nèi)容以及對應(yīng)的索引節(jié)點(diǎn),以避免客戶端多次讀取時(shí)需要和服務(wù)器進(jìn)行多次通信;同時(shí),在初次訪問一個(gè)目錄時(shí),對分布在不同元數(shù)據(jù)服務(wù)器上的該目錄的目錄項(xiàng)進(jìn)行并行預(yù)讀,同時(shí),根據(jù)默認(rèn)的預(yù)讀策略或應(yīng)用程序下發(fā)的預(yù)讀策略,對文件索引節(jié)點(diǎn)和文件內(nèi)容進(jìn)行預(yù)讀。這樣以來,當(dāng)應(yīng)用程序需要訪問目錄項(xiàng)的某個(gè)文件時(shí),該文件的元數(shù)據(jù)和數(shù)據(jù)可能已經(jīng)預(yù)讀進(jìn)客戶端本地緩存中,因而能夠大大加速應(yīng)用程序的執(zhí)行速率。
具體實(shí)施方式
下面結(jié)合實(shí)施例做詳細(xì)說明
(1)本發(fā)明中,單個(gè)目錄中的目錄項(xiàng),先根據(jù)其名字進(jìn)行哈希,將其分成若干子集, 每個(gè)子集分布在一臺元數(shù)據(jù)服務(wù)器上。
(2)客戶端上的目錄項(xiàng)緩存結(jié)構(gòu)按照目錄項(xiàng)子集進(jìn)行組織,即對分布在各個(gè)元數(shù)據(jù)上的目錄項(xiàng)分別進(jìn)行管理,相互之間保持獨(dú)立。
(3)當(dāng)應(yīng)用需要遍歷某個(gè)目錄時(shí),客戶端先查詢本地緩存是否存在,如果存在,則直接返回給用戶。如果緩存不存在,則需要向元數(shù)據(jù)服務(wù)器讀取。讀取時(shí),由于單個(gè)目錄的所有目錄項(xiàng)按照子集存放在不同的元數(shù)據(jù)服務(wù)器上,因此發(fā)明中采用并行的方式進(jìn)行讀取,這樣能夠加速目錄項(xiàng)讀取的速率。目錄項(xiàng)讀取回來之后,客戶端先將其存放在本地緩存,然后給應(yīng)用程序返回。
(4)通常應(yīng)用程序訪問一個(gè)目錄的最終目的是訪問其下的文件,因此在目錄項(xiàng)遍歷之后,緊接著會陸續(xù)有訪問該目錄下各個(gè)文件的請求下發(fā)給文件系統(tǒng)的客戶端。為了充分利用應(yīng)用程序業(yè)務(wù)自身處理的時(shí)間,本發(fā)明中,文件系統(tǒng)客戶端在第一次讀取目錄后,會對該目錄下的文件進(jìn)行預(yù)取。預(yù)取的默認(rèn)策略是,對該目錄下的所有目錄項(xiàng)對應(yīng)到元數(shù)據(jù)服務(wù)器上讀取相應(yīng)的索引節(jié)點(diǎn)信息。應(yīng)用程序也可以根據(jù)自身的特點(diǎn),給客戶端下發(fā)預(yù)讀的策略,如需要預(yù)讀某一批文件,客戶端在接收到預(yù)讀策略請求后,會將該批文件的索引節(jié)點(diǎn)從元數(shù)據(jù)服務(wù)器上讀回,然后再去數(shù)據(jù)服務(wù)器上預(yù)取數(shù)據(jù)。這樣以來,當(dāng)應(yīng)用程序需要訪問具體的文件時(shí),可能其需要的數(shù)據(jù)已經(jīng)通過預(yù)讀進(jìn)入到了客戶端的本地緩存,因而能大大減少應(yīng)用程序的響應(yīng)時(shí)間。
權(quán)利要求
1.一種分布式文件系統(tǒng)中客戶端目錄緩存的組織方法,其特征在于根據(jù)需要劃分目錄子集,將單個(gè)目錄中的目錄項(xiàng)進(jìn)行哈希運(yùn)算,存儲到每個(gè)目錄子集中,每個(gè)目錄子集分布在一臺元數(shù)據(jù)服務(wù)器上,客戶端上的目錄項(xiàng)緩存結(jié)構(gòu)按照目錄子集進(jìn)行組織。
2.如權(quán)利要求1所述的方法,其特征在于當(dāng)有應(yīng)用需要遍歷所述目錄時(shí),客戶端首先查詢本地緩存是否存在,如果存在,則直接返回給客戶;如果不存在,則向元數(shù)據(jù)服務(wù)器讀取,讀取完成后,客戶端將其存放在本地緩存,然后返回給應(yīng)用。
3.如權(quán)利要求2所述的方法,其特征在于所述讀取采用并行方式進(jìn)行讀取。
4.如權(quán)利要求1所述的方法,其特征在于優(yōu)選的,所述客戶端在第一次讀取目錄后, 會對該目錄下的文件進(jìn)行預(yù)取。
5.如權(quán)利要求4所述的方法,其特征在于所述預(yù)取的策略為將該目錄下的所有目錄項(xiàng)對應(yīng)到元數(shù)據(jù)服務(wù)器上讀取相應(yīng)的索引節(jié)點(diǎn)。
6.如權(quán)利要求4所述的方法,其特征在于,所述預(yù)取的命令可以由應(yīng)喲能發(fā)出,客戶端在接收到預(yù)取請求時(shí),將該批文件的索引節(jié)點(diǎn)從元數(shù)據(jù)服務(wù)器上讀回,然后再去數(shù)據(jù)服務(wù)器預(yù)取數(shù)據(jù)。
全文摘要
在本發(fā)明中,分布式文件系統(tǒng)采用多元數(shù)據(jù)服務(wù)器架構(gòu),即單個(gè)目錄的內(nèi)容分布在多個(gè)元數(shù)據(jù)服務(wù)器上。之所以選用多元數(shù)據(jù)的架構(gòu),主要是為了分散元數(shù)據(jù)訪問的壓力,提高并發(fā)度。針對網(wǎng)絡(luò)應(yīng)用寫少讀多的特性,本發(fā)明在客戶端的緩存中保留目錄項(xiàng)的內(nèi)容以及對應(yīng)的索引節(jié)點(diǎn),以避免客戶端多次讀取時(shí)需要和服務(wù)器進(jìn)行多次通信;同時(shí),在初次訪問一個(gè)目錄時(shí),對分布在不同元數(shù)據(jù)服務(wù)器上的該目錄的目錄項(xiàng)進(jìn)行并行預(yù)讀,同時(shí),根據(jù)默認(rèn)的預(yù)讀策略或應(yīng)用程序下發(fā)的預(yù)讀策略,對文件索引節(jié)點(diǎn)和文件內(nèi)容進(jìn)行預(yù)讀。這樣以來,當(dāng)應(yīng)用程序需要訪問目錄項(xiàng)的某個(gè)文件時(shí),該文件的元數(shù)據(jù)和數(shù)據(jù)可能已經(jīng)預(yù)讀進(jìn)客戶端本地緩存中,因而能夠大大加速應(yīng)用程序的執(zhí)行速率。
文檔編號G06F17/30GK102541985SQ201110326448
公開日2012年7月4日 申請日期2011年10月25日 優(yōu)先權(quán)日2011年10月25日
發(fā)明者劉新春, 呂明強(qiáng), 常濤, 楊浩, 王勇, 苗艷超, 邵宗有 申請人:曙光信息產(chǎn)業(yè)(北京)有限公司