一種分布式文件系統(tǒng)中目錄項異步預(yù)讀的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分布式文件系統(tǒng)客戶端與服務(wù)器端的交互技術(shù),特別涉及一種目錄項異步預(yù)讀的方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)等信息技術(shù)的高速發(fā)展,全球數(shù)據(jù)信息總量呈現(xiàn)爆炸式增長,根據(jù)IDC的預(yù)測,從現(xiàn)在到2020年,數(shù)據(jù)量會每兩年翻一番,到2020年時,產(chǎn)生的數(shù)據(jù)量將達到40ZB,因此,對海量數(shù)據(jù)存儲的需求日益迫切。
[0003]對于滿足存儲海量數(shù)據(jù)的分布式文件系統(tǒng),元數(shù)據(jù)與數(shù)據(jù)分離的結(jié)構(gòu)已成為一種主流架構(gòu),元數(shù)據(jù)和數(shù)據(jù)分別保存在專有的元數(shù)據(jù)存儲設(shè)備和數(shù)據(jù)存儲設(shè)備中,服務(wù)器端負責管理所有的元數(shù)據(jù)信息,采用帶外訪問方式,客戶端根據(jù)先獲取的元數(shù)據(jù)信息,可以直接訪問專有的數(shù)據(jù)存儲設(shè)備來讀取信息。
[0004]目錄項讀取操作,目的是獲取該目錄下所有的目錄項的名稱、索引節(jié)點號、類型等元數(shù)據(jù)信息,以提供給用戶該目錄下的目錄項列表。
[0005]目前的并行網(wǎng)絡(luò)文件系統(tǒng)(pNFS)在目錄項讀取時,先在本地頁面緩存中查找保存目錄項信息的一頁,如果本地頁面緩存中沒有,則同步向服務(wù)器端發(fā)送讀目錄請求獲取該頁,等待服務(wù)器端返回給客戶端所請求的一頁,客戶端才能逐個解析該頁中的目錄項,但對于有大量目錄項的大目錄,客戶端讀目錄時,每次發(fā)送讀目錄請求只能獲取一頁,一頁只能包含若干個目錄項,導(dǎo)致讀大目錄時需要多次發(fā)送讀目錄請求,每次還要等待據(jù)服務(wù)器端返回所請求的頁,客戶端才能開始解析頁中的目錄項,增加了目錄項讀取的執(zhí)行時間,降低了目錄項讀取的性能。
[0006]發(fā)明專利“一種分布式文件系統(tǒng)中目錄的存取方法”,在該發(fā)明中,目錄的內(nèi)容使用文件來存儲,對于目錄中的目錄項,通過對目錄項名稱進行哈希,將目錄項分為若干子集。對于不同的子集,其在目錄文件中按照條帶化的方式進行存儲,條帶的大小相對較大,以使讀取磁盤時能夠充分利用底層文件系統(tǒng)的預(yù)讀功能。對于每個子集的條帶塊中的所有目錄項,采用二叉樹的方式進行存儲,以避免初次讀取時需要建立二叉樹。對于所有的條帶塊,采用內(nèi)存映射(mmap)的方式進行訪問,避免每次訪問磁盤數(shù)據(jù)時進行內(nèi)存分配、調(diào)用系統(tǒng)文件讀寫系統(tǒng)調(diào)用所帶來的開銷。但本發(fā)明涉及一種分布式文件系統(tǒng)客戶端與服務(wù)器端的交互技術(shù),客戶端異步預(yù)讀目錄項到本地頁面緩存,不同點在于該專利是提供一種目錄項存取的方法,并未涉及客戶端與服務(wù)器端的交互技術(shù)。
[0007]發(fā)明專利“一種分布式文件系統(tǒng)中客戶端目錄緩存的組織方法”,在該發(fā)明中,分布式文件系統(tǒng)采用多元數(shù)據(jù)服務(wù)器架構(gòu),即單個目錄的內(nèi)容分布在多個元數(shù)據(jù)服務(wù)器上。之所以選用多元數(shù)據(jù)的架構(gòu),主要是為了分散元數(shù)據(jù)訪問的壓力,提高并發(fā)度。針對網(wǎng)絡(luò)應(yīng)用寫少讀多的特性,該發(fā)明在客戶端的緩存中保留目錄項的內(nèi)容以及對應(yīng)的索引節(jié)點,以避免客戶端多次讀取時需要和服務(wù)器進行多次通信;同時,在初次訪問一個目錄時,對分布在不同元數(shù)據(jù)服務(wù)器上的該目錄的目錄項進行并行預(yù)讀,同時,根據(jù)默認的預(yù)讀策略或應(yīng)用程序下發(fā)的預(yù)讀策略,對文件索引節(jié)點和文件內(nèi)容進行預(yù)讀。這樣以來,當應(yīng)用程序需要訪問目錄項的某個文件時,該文件的元數(shù)據(jù)和數(shù)據(jù)可能已經(jīng)預(yù)讀進客戶端本地緩存中,因而能夠大大加速應(yīng)用程序的執(zhí)行速率。但是本發(fā)明適用于單MDS環(huán)境,客戶端在首次讀目錄過程中,異步預(yù)讀保存目錄項的下一頁,讀取到下一頁中的目錄項時,客戶端可以在本地緩存直接讀取,不需要再同步獲取目錄項。不同點在于該專利適用于多MDS環(huán)境,該目錄下的目錄項保存在多個MDS上,客戶端向多個MDS并行獲取目錄項,保存在本地緩存,而且如果該專利應(yīng)用在單MDS環(huán)境中,并沒有預(yù)讀保存目錄項的下一頁,客戶端首次讀目錄時,讀取不在本地緩存中的目錄項時,仍需要向MDS端同步獲取,所以兩個專利是不同的。
【發(fā)明內(nèi)容】
[0008]針對現(xiàn)有技術(shù)的不足,本發(fā)明提出一種分布式文件系統(tǒng)中目錄項異步預(yù)讀的方法及系統(tǒng)。
[0009]本發(fā)明提出一種分布式文件系統(tǒng)中目錄項異步預(yù)讀的方法,包括:
[0010]步驟1,客戶端獲取所述目錄項的頁索引號,根據(jù)所述頁索引號查找本地頁面緩存中所述目錄項的第一頁,若存在,則執(zhí)行步驟2,否則向服務(wù)器端同步發(fā)送讀目錄請求,所述服務(wù)器端將所述第一頁發(fā)送給所述客戶端,所述客戶端將所述第一頁保存在本地頁面緩存中;
[0011]所述步驟2,所述客戶端解析所述第一頁首部中保存的最后一個所述目錄項的結(jié)尾標志eof與cookie值,判斷所述結(jié)尾標志eof是否為I,若是,則所述客戶端讀取所述第一頁中的目錄項,否則所述客戶端根據(jù)所述頁索引號與所述cookie值,向所述服務(wù)器端異步發(fā)送讀目錄請求,預(yù)讀保存所述目錄項的下一頁。
[0012]所述的分布式文件系統(tǒng)中目錄項異步預(yù)讀的方法,還包括所述客戶端解析在當前頁的目錄項,并顯示給用戶。
[0013]所述的分布式文件系統(tǒng)中目錄項異步預(yù)讀的方法,還包括當所述客戶端解析到所述當前頁的首部保存的最后一個目錄項的結(jié)尾標志eof和cookie值時,如果所述最后一個目錄項的結(jié)尾標志eof為1,則不需要預(yù)讀保存所述目錄項的下一頁,否則,所述頁索引號加1,所述客戶端根據(jù)所述頁索引號在所述本地頁面緩存查找下一頁,如果有下一頁,則所述客戶端已經(jīng)向服務(wù)器端異步發(fā)送讀目錄請求,否則所述客戶端向所述服務(wù)器端異步發(fā)送讀目錄請求,預(yù)讀保存所述目錄項的下一頁。
[0014]所述的分布式文件系統(tǒng)中目錄項異步預(yù)讀的方法,還包括所述客戶端在所述本地頁面緩存找到下一頁,查看所述下一頁的更新標志位,如果所述更新標志位已經(jīng)置位,則所述客戶端收到保存所述目錄項的下一頁,如果所述更新標志位未置位,則所述客戶端繼續(xù)等待,直到所述服務(wù)器端返回所述下一頁,并更新所述本地頁面緩存的一頁。
[0015]所述的分布式文件系統(tǒng)中目錄項異步預(yù)讀的方法,還包括讀取所述一頁的所述目錄項,直到當前頁首部保存的最后一個目錄項的結(jié)尾標志eof為1,否則繼續(xù)向所述服務(wù)器端異步發(fā)送讀目錄請求,預(yù)讀保存所述目錄項的下一頁。
[0016]本發(fā)明還提出一種分布式文件系統(tǒng)中目錄項異步預(yù)讀的系統(tǒng),包括:
[0017]客戶端模塊,用于客戶端獲取所述目錄項的頁索引號,根據(jù)所述頁索引號查找本地頁面緩存中所述目錄項的第一頁,若存在,則讀取所述頁中的目錄項,否則向服務(wù)器端同步發(fā)送讀目錄請求,所述服務(wù)器端將所述第一頁發(fā)送給所述客戶端,所述客戶端將所述第一頁保存在本地頁面緩存中;
[0018]所述客戶端解析所述第一頁首部中保存的最后一個所述目錄項的結(jié)尾標志eof與cookie值,判斷所述結(jié)尾標志eof是否為I,若是,則所述客戶端讀取所述頁中的目錄項,否則所述客戶端根據(jù)所述頁索引號與所述cookie值,向所述服務(wù)器端異步發(fā)送讀目錄請求,預(yù)讀保存所述目錄項的下一頁。
[0019]所述的分布式文件系統(tǒng)中目錄項異步預(yù)讀的系統(tǒng),還包括所述客戶端解析在當前頁的目錄項,并顯示給用戶。
[0020]所述的分布式文件系統(tǒng)中目錄項異步預(yù)讀的系統(tǒng),還包括當所述客戶端解析到所述當前頁的首部保存的最后一個目錄項的結(jié)尾標志eof和cookie值時,如果所述最后一個目錄項的結(jié)尾標志eof為1,則不需要預(yù)讀保存所述目錄項的下一頁,否則,所述頁索引號加1,所述客戶端根據(jù)所述頁索引號在所述本地頁面緩存查找下一頁,如果有下一頁,則所述客戶端已經(jīng)向服務(wù)器端異步發(fā)送讀目錄請求,否則所述客戶端向所述服務(wù)器端異步發(fā)送讀目錄請求,預(yù)讀保存所述目錄項的下一頁。
[0021]所述的分布式文件系統(tǒng)中目錄項異步預(yù)讀的系統(tǒng),還包括所述客戶端在所述本地頁面緩存找到下一頁,查看所述下一頁的更新標志位,如果所述更新標志位已經(jīng)置位,則所述客戶端收到保存所述目錄項的下一頁,如果所述更新標志位未置位,則所述客戶端繼續(xù)等待,直到所述服務(wù)器端返回所述下一頁,并更新所述本地頁面緩存的一頁。
[0022]所述的分布式文件系統(tǒng)中目錄項異步預(yù)讀的系統(tǒng),還包括讀取所述一頁的所述目錄項,直到當前頁首部保存的最后一個目錄項的結(jié)尾標志eof為1,否則繼續(xù)向所述服務(wù)器端異步發(fā)送讀目錄請求,預(yù)讀保存所述目錄項的下一頁。
[0023]由以上發(fā)明可知,本發(fā)明的優(yōu)點在于:
[0024]本發(fā)明提出的一種目錄項異步預(yù)讀的方法及系統(tǒng),采用空間換取時間的方式,占用少量本地頁面緩存來保存異步預(yù)讀的頁面,客戶端在首次讀目錄時,除了保存目錄項的第一頁是同步獲取,第二頁之后的各個頁面都是逐個異步預(yù)讀并保存在本地頁面緩存,目