一種并行網(wǎng)絡(luò)文件系統(tǒng)中預(yù)讀小文件后忙等的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及并行網(wǎng)絡(luò)文件系統(tǒng)中文件間數(shù)據(jù)預(yù)讀取后的緩存命中機(jī)制,特別涉及一種并行網(wǎng)絡(luò)文件系統(tǒng)中預(yù)讀小文件后忙等的系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)時(shí)代的來(lái)臨,全球數(shù)據(jù)信息量迅猛增長(zhǎng)。在電子商務(wù)、社交網(wǎng)絡(luò)、科學(xué)計(jì)算等領(lǐng)域中存在越來(lái)越多的小尺寸的文件。創(chuàng)下紐約交易所最大規(guī)模IPO的阿里巴巴集團(tuán),其旗下重要電商交易平臺(tái)一一淘寶,在2010年就已保存了約286億張圖片,平均大小僅為17.45KB,8KB以下圖片占總量的61%。從某種意義上來(lái)說(shuō),當(dāng)前并不存在純粹的大文件應(yīng)用。人類逐步邁入“海量小文件的時(shí)代”。
[0003]并行網(wǎng)絡(luò)文件系統(tǒng)(pNFS)采用元數(shù)據(jù)與數(shù)據(jù)服務(wù)分離結(jié)構(gòu),客戶端通過(guò)帶外訪問(wèn)模式直接訪問(wèn)存儲(chǔ)設(shè)備,在大文件訪問(wèn)過(guò)程中性能極佳,同時(shí),又因其廣泛的兼容性和擴(kuò)展性,得到工業(yè)界和學(xué)術(shù)界的支持,逐漸成為事實(shí)上的分布式文件系統(tǒng)標(biāo)準(zhǔn)。在文件“小而多”的發(fā)展趨勢(shì)下,并行網(wǎng)絡(luò)文件系統(tǒng)越來(lái)越多地承擔(dān)了小文件管理的重任。然而,由于缺乏針對(duì)小文件的訪問(wèn)優(yōu)化,小文件的性能較差。
[0004]小文件數(shù)據(jù)訪問(wèn)時(shí),數(shù)據(jù)訪問(wèn)隨機(jī)性強(qiáng)、1粒度小、磁盤吞吐量低。圖1測(cè)試了在單線程隨機(jī)訪問(wèn)時(shí),1粒度對(duì)磁盤吞吐量的影響。對(duì)于4KB粒度的隨機(jī)1訪問(wèn),其磁盤吞吐量?jī)H為6.56MBps ;對(duì)于IMB粒度的隨機(jī)1訪問(wèn),其磁盤吞吐量可達(dá)到75.09MBps。4KB和IMB數(shù)據(jù)訪問(wèn)的磁盤吞吐量相差達(dá)11倍以上。對(duì)于大于IMB粒度的隨機(jī)1訪問(wèn),磁盤吞吐量保持高量穩(wěn)定。磁盤“善于順序讀,不善于隨機(jī)讀”、“善于大粒度10,不善于小粒度10”的特性,與小文件訪問(wèn)過(guò)程中“大量的隨機(jī)、小粒度10”的特點(diǎn)形成了難以逾越的鴻溝,磁盤吞吐量低的問(wèn)題暴露無(wú)遺。
[0005]在先前的技術(shù)研究中,提出一種基于分布式文件系統(tǒng)的數(shù)據(jù)預(yù)讀裝置及其方法(張軍偉、楊洪章、邵冰清等,申請(qǐng)?zhí)?01410108037.6),該種方法同步地預(yù)讀文件間的數(shù)據(jù),在數(shù)據(jù)頁(yè)面尚未從磁盤返回之前,數(shù)據(jù)頁(yè)面處于加鎖狀態(tài),即使后續(xù)的數(shù)據(jù)頁(yè)面已在緩存中,應(yīng)用程序也需要等待當(dāng)前數(shù)據(jù)頁(yè)面解鎖后才能讀取內(nèi)容,這對(duì)于系統(tǒng)性能產(chǎn)生了很大的影響。
[0006]針對(duì)現(xiàn)實(shí)需求以及當(dāng)前相關(guān)研究的不足有必要提出一種并行網(wǎng)絡(luò)文件系統(tǒng)中預(yù)讀文件間數(shù)據(jù)后讀取忙等的系統(tǒng)及方法,以有效隱藏加鎖頁(yè)面的等待時(shí)延,能夠從根本上克服原有技術(shù)“閑等”的弊端,對(duì)于系統(tǒng)性能會(huì)有十分顯著的正面影響。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的在于提供一種并行網(wǎng)絡(luò)文件系統(tǒng)中預(yù)讀小文件后忙等的系統(tǒng)及方法,用于有效隱藏加鎖頁(yè)面的等待時(shí)延,以從根本上克服“閑等”的弊端。
[0008]為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種并行網(wǎng)絡(luò)文件系統(tǒng)中預(yù)讀小文件后忙等的系統(tǒng),包括:
[0009]客戶端,用于根據(jù)當(dāng)前訪問(wèn)文件的文件布局確定當(dāng)前訪問(wèn)文件的數(shù)據(jù)頁(yè)面數(shù)量,并訪問(wèn)磁盤中當(dāng)前訪問(wèn)文件的數(shù)據(jù)頁(yè)面;
[0010]服務(wù)器端,用于獲取當(dāng)前訪問(wèn)文件的文件布局并發(fā)送給客戶端;
[0011]客戶端當(dāng)上層應(yīng)用在緩存中查找到被加鎖的當(dāng)前數(shù)據(jù)頁(yè)面時(shí),將該當(dāng)前數(shù)據(jù)頁(yè)面標(biāo)記為“未訪問(wèn)”,跳過(guò)該當(dāng)前數(shù)據(jù)頁(yè)面,訪問(wèn)下一個(gè)數(shù)據(jù)頁(yè)面,待全部數(shù)據(jù)頁(yè)面訪問(wèn)完成后,對(duì)該當(dāng)前數(shù)據(jù)頁(yè)面進(jìn)行再次訪問(wèn)。
[0012]所述的系統(tǒng),其中,客戶端在匿名頁(yè)緩存中通過(guò)雙向鏈表的方式組織匿名頁(yè),該雙向鏈表的組織方式為二級(jí)索引,通過(guò)檢查該雙向鏈表中是否有相應(yīng)頁(yè)面的方式判斷匿名頁(yè)緩存中是否有該當(dāng)前數(shù)據(jù)頁(yè)面。
[0013]所述的系統(tǒng),其中,客戶端根據(jù)該文件布局判定頁(yè)面緩存中是否有該當(dāng)前數(shù)據(jù)頁(yè)面,當(dāng)頁(yè)面緩存中有該當(dāng)前數(shù)據(jù)頁(yè)面時(shí),進(jìn)一步判定該當(dāng)前數(shù)據(jù)頁(yè)面是否為最后一個(gè)數(shù)據(jù)頁(yè)面;當(dāng)頁(yè)面緩存中無(wú)該當(dāng)前數(shù)據(jù)頁(yè)面時(shí),則進(jìn)一步判定匿名頁(yè)緩存中是否有該當(dāng)前數(shù)據(jù)頁(yè)面;
[0014]客戶端當(dāng)判定該當(dāng)前數(shù)據(jù)頁(yè)面為最后一個(gè)數(shù)據(jù)頁(yè)面時(shí),進(jìn)一步判定當(dāng)前訪問(wèn)文件的加鎖頁(yè)面數(shù)量是否為0,若為0,則進(jìn)一步判斷當(dāng)前訪問(wèn)文件是否為最后一個(gè)文件,若不為0,則判斷當(dāng)前數(shù)據(jù)頁(yè)面是否標(biāo)記為“未訪問(wèn)”:若是,則等待被解鎖,并在解鎖后刪除標(biāo)記,將文件的加鎖頁(yè)面數(shù)量減I并將數(shù)據(jù)頁(yè)面返回給上層應(yīng)用,若否,將數(shù)據(jù)頁(yè)面返回給上層應(yīng)用;
[0015]客戶端當(dāng)判定匿名頁(yè)緩存中有該當(dāng)前數(shù)據(jù)頁(yè)面時(shí),在匿名頁(yè)緩存中將數(shù)據(jù)頁(yè)面返回給上層應(yīng)用;當(dāng)判定匿名頁(yè)緩存中無(wú)該當(dāng)前數(shù)據(jù)頁(yè)面時(shí),向磁盤發(fā)出讀盤請(qǐng)求,將讀盤訪問(wèn)所涉及的數(shù)據(jù)頁(yè)面加鎖,并將當(dāng)前數(shù)據(jù)頁(yè)面設(shè)置為“未訪問(wèn)”,將該當(dāng)前訪問(wèn)文件的加鎖頁(yè)面數(shù)量加1,并判定該當(dāng)前數(shù)據(jù)頁(yè)面是否為最后一個(gè)數(shù)據(jù)頁(yè)面。
[0016]所述的系統(tǒng),其中,客戶端向磁盤發(fā)出讀盤請(qǐng)求后,擴(kuò)展該文件布局,并根據(jù)擴(kuò)展后的文件布局向磁盤發(fā)送大粒度讀盤請(qǐng)求;
[0017]磁盤處理該大粒度讀盤請(qǐng)求,并根據(jù)擴(kuò)展后的文件布局,將被請(qǐng)求大粒度數(shù)據(jù)發(fā)送給客戶端;
[0018]客戶端將大粒度數(shù)據(jù)的數(shù)據(jù)頁(yè)面拷貝到所創(chuàng)建的匿名頁(yè)鏈表中的空白匿名頁(yè)中。
[0019]所述的系統(tǒng),其中,所述擴(kuò)展后的文件布局中擴(kuò)展部分的文件布局大小等于一次大粒度請(qǐng)求頁(yè)面數(shù)減去原始文件布局。
[0020]為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種并行網(wǎng)絡(luò)文件系統(tǒng)中預(yù)讀小文件后忙等的方法,包括:
[0021]步驟一,服務(wù)器端獲取當(dāng)前訪問(wèn)文件的文件布局并發(fā)送給客戶端;
[0022]步驟二,客戶端根據(jù)當(dāng)前訪問(wèn)文件的文件布局確定當(dāng)前訪問(wèn)文件的數(shù)據(jù)頁(yè)面數(shù)量,并訪問(wèn)磁盤中當(dāng)前訪問(wèn)文件的數(shù)據(jù)頁(yè)面;
[0023]步驟三,客戶端當(dāng)上層應(yīng)用在緩存中查找到被加鎖的當(dāng)前數(shù)據(jù)頁(yè)面時(shí),將該當(dāng)前數(shù)據(jù)頁(yè)面標(biāo)記為“未訪問(wèn)”,跳過(guò)該當(dāng)前數(shù)據(jù)頁(yè)面,訪問(wèn)下一個(gè)數(shù)據(jù)頁(yè)面,待全部數(shù)據(jù)頁(yè)面訪問(wèn)完成后,對(duì)該當(dāng)前數(shù)據(jù)頁(yè)面進(jìn)行再次訪問(wèn)。
[0024]所述的方法,其中,所述步驟三中,包括:
[0025]客戶端在匿名頁(yè)緩存中通過(guò)雙向鏈表的方式組織匿名頁(yè),該雙向鏈表的組織方式為二級(jí)索引,通過(guò)檢查該雙向鏈表中是否有相應(yīng)頁(yè)面的方式判斷匿名頁(yè)緩存中是否有該當(dāng)前數(shù)據(jù)頁(yè)面。
[0026]所述的方法,其中,所述步驟三中,包括:
[0027]客戶端根據(jù)該文件布局判定頁(yè)面緩存中是否有該當(dāng)前數(shù)據(jù)頁(yè)面,當(dāng)頁(yè)面緩存中有該當(dāng)前數(shù)據(jù)頁(yè)面時(shí),進(jìn)一步判定該當(dāng)前數(shù)據(jù)頁(yè)面是否為最后一個(gè)數(shù)據(jù)頁(yè)面;當(dāng)頁(yè)面緩存中無(wú)該當(dāng)前數(shù)據(jù)頁(yè)面時(shí),則進(jìn)一步判定匿名頁(yè)緩存中是否有該當(dāng)前數(shù)據(jù)頁(yè)面;
[0028]客戶端當(dāng)判定該當(dāng)前數(shù)據(jù)頁(yè)面為最后一個(gè)數(shù)據(jù)頁(yè)面時(shí),進(jìn)一步判定當(dāng)前訪問(wèn)文件的加鎖頁(yè)面數(shù)量是否為0,若為0,則進(jìn)一步判斷當(dāng)前訪問(wèn)文件是否為最后一個(gè)文件,若不為0,則判斷當(dāng)前數(shù)據(jù)頁(yè)面是否標(biāo)記為“未訪問(wèn)”:若是,則等待被解鎖,并在解鎖后刪除標(biāo)記,將文件的加鎖頁(yè)面數(shù)量減I并將數(shù)據(jù)頁(yè)面返回給上層應(yīng)用,若否,將數(shù)據(jù)頁(yè)面返回給上層應(yīng)用;
[0029]客戶端當(dāng)判定匿名頁(yè)緩存中有該當(dāng)前數(shù)據(jù)頁(yè)面時(shí),在匿名頁(yè)緩存中將數(shù)據(jù)頁(yè)面返回給上層應(yīng)用;當(dāng)判定匿名頁(yè)緩存中無(wú)該當(dāng)前數(shù)據(jù)頁(yè)面時(shí),向磁盤發(fā)出讀盤請(qǐng)求,將讀盤訪問(wèn)所涉及的數(shù)據(jù)頁(yè)面加鎖,并將當(dāng)前數(shù)據(jù)頁(yè)面設(shè)置為“未訪問(wèn)”,將該當(dāng)前訪問(wèn)文件的加鎖頁(yè)面數(shù)量加1,并判定該當(dāng)前數(shù)據(jù)頁(yè)面是否為最后一個(gè)數(shù)據(jù)頁(yè)面。
[0030]所述的方法,其中,所述步驟三中,包括:
[0031]客戶端向磁盤發(fā)出讀盤請(qǐng)求后,擴(kuò)展該文件布局,并根據(jù)擴(kuò)展后的文件布局向磁盤發(fā)送大粒度讀盤請(qǐng)求;
[0032]磁盤處理該大粒度讀盤請(qǐng)求,并根據(jù)擴(kuò)展后的文件布局,將被請(qǐng)求大粒度數(shù)據(jù)發(fā)送給客戶端;
[0033]客戶端將大粒度數(shù)據(jù)的數(shù)據(jù)頁(yè)面拷貝到所創(chuàng)建的匿名頁(yè)鏈表中的空白匿名頁(yè)中。
[0034]所述的方法,其中,所述步驟三中,包括:
[0035]所述擴(kuò)展后的文件布局中擴(kuò)展部分的文件布局大小等于一次大粒度請(qǐng)求頁(yè)面數(shù)減去原始文件布局。
[0036]與現(xiàn)有技術(shù)相比,本發(fā)明的有益技術(shù)效果是:
[0037]本發(fā)明提出了一種并行網(wǎng)絡(luò)文件系統(tǒng)中預(yù)讀文件間數(shù)據(jù)后讀取忙等的系統(tǒng)及方法,以提高海量小文件讀訪問(wèn)性能。本發(fā)明提出的讀取忙等的系統(tǒng)及方法是基于先前發(fā)明一一數(shù)據(jù)預(yù)讀裝置及其方法的改進(jìn)。
【附圖說(shuō)明】
[0038]圖1是不同1粒度的磁盤吞吐量。
[0039]圖2是讀取忙等的方法流程圖。
[0040]圖3是本發(fā)明并行網(wǎng)絡(luò)文件系統(tǒng)中預(yù)讀小文件后忙等的系統(tǒng)結(jié)構(gòu)圖;
[0041]圖4是雙向鏈表的組織方式示意圖;
[0042]圖5是本發(fā)明并行網(wǎng)絡(luò)文件系統(tǒng)中預(yù)讀小文件后忙等的方法流程圖。
[0043]圖6是具體而形象的優(yōu)化效果。
【具體實(shí)施方式】
[0044]以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述,但不作為對(duì)本發(fā)明的限定。
[0045]如圖2所示,是讀取忙等的方法流程圖。
[0046]速度再快