欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法及其系統(tǒng)的制作方法

文檔序號:7870128閱讀:260來源:國知局
專利名稱:一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及分布式文件系統(tǒng)客戶端與服務(wù)器端的交互技術(shù),特別涉及一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法及其系統(tǒng)。
背景技術(shù)
隨著信息技術(shù)飛速發(fā)展,數(shù)據(jù)信息迅猛增長,非結(jié)構(gòu)化數(shù)據(jù)越來越多。據(jù)Gartner統(tǒng)計,2010全球數(shù)據(jù)信息總量達到1.2ZB,并預計以每年至少50%的增長率持續(xù)高速增長,其中85%由各種非結(jié)構(gòu)化數(shù)據(jù)組成,非結(jié)構(gòu)化數(shù)據(jù)多以文件形式存儲在文件系統(tǒng)中。在Web2.0、社交網(wǎng)絡(luò)等新興應(yīng)用中,數(shù)據(jù)信息主要以小文件的形式存在,文件尺寸較小,然而小文件數(shù)量越來越多,迫切需要分布式文件系統(tǒng)有效管理海量小文件,提供高性能、低延時的小文件訪問服務(wù)。在大規(guī)模分布式文件系統(tǒng)中,元數(shù)據(jù)與數(shù)據(jù)服務(wù)分離結(jié)構(gòu)已經(jīng)成為了一種趨勢。元數(shù)據(jù)服務(wù)器負責維護文件系統(tǒng)全局命名空間,管理文件邏輯位置與磁盤物理位置的映射關(guān)系,為文件分配物理存儲資源。客戶端文件數(shù)據(jù)訪問不必通過元數(shù)據(jù)服務(wù)器,而是采用帶外方式直接訪問存儲設(shè)備,從而獲取較高的數(shù)據(jù)訪問性能。分布式文件系統(tǒng)采用元數(shù)據(jù)和數(shù)據(jù)分離結(jié)構(gòu)對于大文件訪問十分有效。然而對于小文件訪問的情況,數(shù)據(jù)訪問比率減少,元數(shù)據(jù)訪問比率增大,而每次客戶端訪問文件數(shù)據(jù)時,都需要通過網(wǎng)絡(luò)交互同步獲取元數(shù)據(jù),導致單個小文件操作延遲過大。特別是小文件首次寫情況下,客戶端首先需要同步訪問元數(shù)據(jù)服務(wù)器進行文件創(chuàng)建,然后同步獲取文件布局,以進行數(shù)據(jù)的讀寫;最后需要同步關(guān)閉文件,以使得文件更新能夠及時被其他客戶端獲取,這對于系統(tǒng)性能造成了很大影響。因此,在海量小文件應(yīng)用環(huán)境中,盡量降低同步訪問元數(shù)據(jù)網(wǎng)絡(luò)交互開銷,減少獲取元數(shù)據(jù)的網(wǎng)絡(luò)交互次數(shù),可以大幅提升海量小文件應(yīng)用性能。針對客戶端與元數(shù)據(jù)服務(wù)器同步網(wǎng)絡(luò)交互開銷大的問題,已經(jīng)提出了一些解決方法。小文件聚集方法把大量的小文件聚集成一個大文件,將分散的小粒度數(shù)據(jù)塊聚合成一個大的塊。在批量寫入小文件的時候,不僅可以避免與元數(shù)據(jù)服務(wù)器的大量同步交互操作,同時通過批量回刷使得磁盤帶寬利用率也得到較大提升。但是小文件聚集方法難以維護文件系統(tǒng)語義,需要對應(yīng)用程序進行修改,通常需要定制開發(fā),實現(xiàn)復雜度較高。NFS v4的文件授權(quán)機制,保證客戶端在文件關(guān)閉時,不必同步與元數(shù)據(jù)服務(wù)器交互,文件數(shù)據(jù)也不必同步刷新。NFS v4的文件授權(quán)機制是采用異步方式與元數(shù)據(jù)服務(wù)器交互,文件數(shù)據(jù)也采用異步刷新機制,有效隱藏網(wǎng)絡(luò)交互延時,有效解決了文件關(guān)閉時的同步操作開銷,提高了小文件訪問性能??蛻舳舜鎯Y源延遲分配方法,在客戶端本地完成文件布局的存儲資源分配,不必同步與元數(shù)據(jù)服務(wù)器交互創(chuàng)建文件布局信息,文件布局采用異步方式提交到元數(shù)據(jù)服務(wù)器,有效解決了在數(shù)據(jù)訪問過程中同步獲取文件布局的操作開銷,提高了小文件訪問性能。然而,客戶端在文件創(chuàng)建時,仍然必須同步與元數(shù)據(jù)服務(wù)器交互以創(chuàng)建元數(shù)據(jù)信息,對小文件訪問性能影響較大。因此,針對現(xiàn)有技術(shù)的不足,本發(fā)明提出了一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法和系統(tǒng),能夠有效降低文件創(chuàng)建時同步訪問元數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)交互開銷,有效提升小文件訪問性能。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法及其系統(tǒng),用于解決海量小文件應(yīng)用場景中分布式文件系統(tǒng)現(xiàn)有技術(shù)無法有效減少文件創(chuàng)建時與元數(shù)據(jù)服務(wù)器同步網(wǎng)絡(luò)交互開銷的問題。為了實現(xiàn)上述目的,本發(fā)明提供一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法,其特征在于,包括:步驟I,客戶端從元數(shù)據(jù)服務(wù)器獲取目錄寫授權(quán);步驟2,客戶端在本地緩存中創(chuàng)建文件;步驟3,客戶端異步提交所創(chuàng)建文件至元數(shù)據(jù)服務(wù)器。所述的方法,其中,所述步驟I中,包括:步驟11,客戶端向元數(shù)據(jù)服務(wù)器發(fā)送獲取目錄寫授權(quán)請求;步驟12,元數(shù)據(jù)服務(wù)器接收目錄寫授權(quán)請求,授予客戶端目錄寫授權(quán);步驟13,客戶端記錄所述目錄寫授權(quán)。所述的方法,其中,所述步驟2中,包括:步驟21,客戶端檢查目錄下是否存在與所創(chuàng)建文件同名的文件;若不存在同名的文件,則執(zhí)行后續(xù)步驟;步驟22,客戶端在緩存中進行目錄下的文件創(chuàng)建,在緩存中為所創(chuàng)建文件分配臨時索引節(jié)點inode,并為所述inode分配一索引節(jié)點編號ino,將所述inode添加到客戶端本地inode緩存元數(shù)據(jù)中,將所創(chuàng)建文件的目錄項dentry添加到客戶端本地目錄的讀取目錄內(nèi)容緩存readdir cache中;步驟23,為緩存中所述inode設(shè)置未完成標志位,表明所創(chuàng)建文件是在客戶端緩存中創(chuàng)建的,還未提交到元數(shù)據(jù)服務(wù)器。所述的方法,其中,所述步驟21中,包括:步驟211,客戶端檢查本地目錄的readdir cache是否具有一致標志,若不具有該一致標志,表示客戶端本地目錄的readdir cache信息與元數(shù)據(jù)服務(wù)器端不一致,客戶端向元數(shù)據(jù)服務(wù)器發(fā)送目錄讀取請求,獲取元數(shù)據(jù)服務(wù)器端所述目錄最新的所有目錄項信息,緩存在目錄的readdir cache中,設(shè)置目錄的readdircache的一致標志;步驟212,遍歷目錄的readdir cache中的目錄項,檢查目錄的readdir cache中是否有與所創(chuàng)建文件同文件名的目錄項。所述的方法,其中,所述步驟3中,包括:步驟31,客戶端進行后臺異步提交,將客戶端緩存中創(chuàng)建文件的元數(shù)據(jù)發(fā)送到元數(shù)據(jù)服務(wù)器端;步驟32,元數(shù)據(jù)服務(wù)器端收到客戶端文件提交請求后,進行文件的真正創(chuàng)建;在目錄下創(chuàng)建所述文件的目錄項dentry和inode,為所述文件分配真正的索引節(jié)點inode和編號ino,將客戶端的inode元數(shù)據(jù)信息更新到元數(shù)據(jù)服務(wù)器真正的編號ino對應(yīng)的inode結(jié)構(gòu)中,并將所述文件真正的編號ino返回給客戶端;步驟33,客戶端接收到真正的編號ino后,更新緩存中所述文件的inode,設(shè)置所述inode的編號為元數(shù)據(jù)服務(wù)器端返回的真正的編號ino,將所述文件的inode元數(shù)據(jù)設(shè)置完成標志位,表明客戶端緩存中創(chuàng)建的文件已經(jīng)提交到元數(shù)據(jù)服務(wù)器端,客戶端的所述inode已經(jīng)成為真正的inode。為了實現(xiàn)上述目的,本發(fā)明還提供一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建系統(tǒng),其特征在于,包括:客戶端緩存文件創(chuàng)建模塊,設(shè)置于客戶端,用于獲取目錄寫授權(quán),在客戶端緩存中進行文件創(chuàng)建,對于緩存中創(chuàng)建完成且沒有提交到元數(shù)據(jù)服務(wù)器的文件進行本地讀、寫、刪除處理,異步提交所創(chuàng)建文件; 元數(shù)據(jù)服務(wù)器管理模塊,設(shè)置于元數(shù)據(jù)服務(wù)器,用于管理目錄授權(quán),管理客戶端緩存中所創(chuàng)建文件的元數(shù)據(jù),并與所述客戶端緩存文件創(chuàng)建模塊交互,向所述客戶端緩存文件創(chuàng)建模塊返回文件真正的inode編號,完成客戶端緩存文件創(chuàng)建。所述的系統(tǒng),其中,所述客戶端緩存文件創(chuàng)建模塊進一步包括:目錄授權(quán)獲取模塊,用于檢查客戶端是否持有目錄的寫授權(quán),如果沒有則向所述元數(shù)據(jù)服務(wù)器管理模塊發(fā)送獲取目錄寫授權(quán)請求,目錄寫授權(quán)獲取成功后記錄獲取的目錄與授權(quán);及緩存文件創(chuàng)建模塊,用于客戶端緩存中文件的創(chuàng)建,如果目錄下沒有與創(chuàng)建文件同名的文件,則執(zhí)行緩存中文件創(chuàng)建操作,在緩存中創(chuàng)建文件的元數(shù)據(jù),設(shè)置創(chuàng)建文件的未完成標志位。所述的系統(tǒng),其中,所述客戶端緩存文件創(chuàng)建模塊進一步包括:緩存文件刪除模塊,用于對客戶端緩存中創(chuàng)建文件執(zhí)行刪除操作;如果文件是客戶端緩存中創(chuàng)建的文件,且沒有提交到所述元數(shù)據(jù)服務(wù)器管理模塊,則在客戶端緩存中刪除所述文件;否則發(fā)送刪除文件請求到所述元數(shù)據(jù)服務(wù)器管理模塊,由所述元數(shù)據(jù)服務(wù)器管理模塊完成所述文件的刪除;和/或緩存文件寫模塊,用于對客戶端緩存中創(chuàng)建文件執(zhí)行寫操作;如果文件是客戶端緩存中創(chuàng)建的文件,且沒有提交到所述元數(shù)據(jù)服務(wù)器管理模塊,則在客戶端緩存中為所述文件分配布局,然后進行文件數(shù)據(jù)寫操作;否則向元數(shù)據(jù)服務(wù)器管理模塊發(fā)送請求獲取布局或直接采用客戶端存儲資源延遲分配方法分配布局,然后進行文件數(shù)據(jù)寫操作;和/或緩存文件讀模塊,用于對客戶端緩存中創(chuàng)建文件執(zhí)行讀操作;如果文件是客戶端緩存中創(chuàng)建的文件,且沒有提交到所述元數(shù)據(jù)服務(wù)器管理模塊,則從本地緩存中獲取文件布局,然后根據(jù)文件布局進行文件數(shù)據(jù)的讀??;否則向所述元數(shù)據(jù)服務(wù)器管理模塊發(fā)送RPC請求以獲取文件布局,根據(jù)文件布局進行文件數(shù)據(jù)讀取。所述的系統(tǒng),其中,所述客戶端緩存文件創(chuàng)建模塊進一步包括:緩存異步提交模塊,用于根據(jù)客戶端緩存文件創(chuàng)建的寫回策略,將客戶端本地緩存中創(chuàng)建文件的元數(shù)據(jù)發(fā)送到所述元數(shù)據(jù)服務(wù)器管理模塊,以實現(xiàn)后臺異步提交,在收到元數(shù)據(jù)服務(wù)器管理模塊返回的真正的inode編號后,更新inode編號為真正的inode編號,并設(shè)置文件創(chuàng)建完成標志位。所述的系統(tǒng),其中,所述元數(shù)據(jù)服務(wù)器管理模塊進一步包括:
目錄授權(quán)管理模塊,用于接收獲取目錄寫授權(quán)請求,根據(jù)目錄寫授權(quán)授予機制授予客戶端目錄寫授權(quán),記錄目錄授權(quán)授予情況;元數(shù)據(jù)管理模塊,用于管理客戶端緩存中創(chuàng)建文件的元數(shù)據(jù)信息;收到客戶端文件提交請求后,進行文件的真正創(chuàng)建,在目錄下創(chuàng)建文件目錄項,為文件分配真正的inode編號,將客戶端的fake inode元數(shù)據(jù)信息更新到真正inode中,并將真正的inode編號返回給所述客戶端緩存文件創(chuàng)建模塊。與現(xiàn)有技術(shù)相比,本發(fā)明的有益技術(shù)效果是:本發(fā)明針對海量小文件應(yīng)用場景中分布式文件系統(tǒng)現(xiàn)有技術(shù)無法有效減少文件創(chuàng)建時與元數(shù)據(jù)服務(wù)器同步網(wǎng)絡(luò)交互開銷的問題,提出了一種客戶端緩存中文件創(chuàng)建的方法。客戶端首先在緩存中創(chuàng)建文件,之后把新創(chuàng)建文件元數(shù)據(jù)信息異步提交到元數(shù)據(jù)服務(wù)器,不必同步與元數(shù)據(jù)服務(wù)器進行網(wǎng)絡(luò)交互,避免了文件創(chuàng)建時的同步網(wǎng)絡(luò)交互開銷,有效降低了文件創(chuàng)建延時。并且,提供了一種在客戶端緩存中進行文件創(chuàng)建的系統(tǒng)。


圖1是本發(fā)明分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法流程圖;圖2是本發(fā)明的一具體實施例;圖3是本發(fā)明分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建系統(tǒng)結(jié)構(gòu)圖。
具體實施例方式以下結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述,但不作為對本發(fā)明的限定。如圖1所示,是本發(fā)明分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法流程圖。該流程描述了在目錄下創(chuàng)建文件的過程,具體步驟包括:步驟101,客戶端目錄寫授權(quán)獲取步驟;步驟102,客戶端本地緩存中創(chuàng)建文件步驟;步驟103,客戶端異步提交步驟。在上述技術(shù)方案中,進一步地,所述步驟101,具體包括如下步驟:11)如果持有目錄寫授權(quán),則不必執(zhí)行后續(xù)步驟;如果未持有目錄寫授權(quán),則執(zhí)行后續(xù)步驟;12)客戶端通過RPC協(xié)議向元數(shù)據(jù)服務(wù)器發(fā)送獲取目錄寫授權(quán)請求;13)元數(shù)據(jù)服務(wù)器接收到獲取目錄寫授權(quán)請求,根據(jù)目錄寫授權(quán)授予機制授予客戶端目錄寫授權(quán);14)客戶端記錄獲取目錄寫授權(quán)。在上述技術(shù)方案中,進一步地,所述步驟13,具體包括如下步驟:13.1)如果有其他客戶端持有目錄的沖突授權(quán),則元數(shù)據(jù)服務(wù)器首先召回沖突授權(quán);13.2)元數(shù)據(jù)服務(wù)器授予客戶端目錄寫授權(quán),并記錄目錄授權(quán)情況;在上述技術(shù)方案中,進一步地,所述步驟102,具體包括如下步驟:21)客戶端首先檢查所述目錄下是否存在與新創(chuàng)建文件同名的文件;22)如果存在同名文件,則不必創(chuàng)建,只需要對已經(jīng)存在的同名文件進行open操作即可。如果不存在同名文件,則執(zhí)行后續(xù)步驟;23)客戶端執(zhí)行緩存中文件創(chuàng)建操作,客戶端在緩存中為新創(chuàng)建文件分配臨時的索引節(jié)點,即fake inode,為該fake inode分配一個客戶端唯一的索引節(jié)點編號ino。將fake inode添加到客戶端本地inode緩存元數(shù)據(jù)中,將新創(chuàng)建文件的目錄項dentry添加到客戶端本地目錄的讀取目錄內(nèi)容緩存readdir cache中。24)將緩存中新創(chuàng)建文件的fake inode設(shè)置未完成標志位uncompletion,表明該文件是在客戶端的緩存中創(chuàng)建的,還未提交到元數(shù)據(jù)服務(wù)器端,后續(xù)可以對客戶端的fakeinode進行正常訪問。在上述技術(shù)方案中,進一步地,所述步驟21),具體包括如下步驟:21.1)客戶端檢查本地目錄的readdir cache是否最新,即目錄readdir cache是否具有consistency —致標志;目錄readdir cache在客戶端首次獲取目錄的inode元數(shù)據(jù)信息時,由于還沒有獲取目錄的所有目錄項并將其緩存在本地的目錄readdir cache中,因此設(shè)置目錄readdir cache為unconsistency標志,表示客戶端的目錄readdir cache中的目錄項與元數(shù)據(jù)服務(wù)器端的所述目錄的目錄項不一致。21.2)如果目錄readdir cache不具有consistency標志,表示客戶端的目錄readdir cache信息與元數(shù)據(jù)服務(wù)器端中的不一致,客戶端向元數(shù)據(jù)服務(wù)器發(fā)送目錄讀取請求即readdir請求,獲取元數(shù)據(jù)服務(wù)器端目錄最新的所有目錄項信息,緩存在客戶端的目錄 readdir cache 中,設(shè)置目錄 readdir cache 的 consistency 標志;21.3)遍歷目錄readdir cache中的目錄項,檢查目錄readdir cache中是否有與新創(chuàng)建文件同名的文件目錄項;在上述技術(shù)方案中,進一步地,所述步驟103,具體包括如下步驟:31)根據(jù)客戶端緩存文件創(chuàng)建的寫回策略,客戶端在一定條件下將創(chuàng)建的一個或多個文件進行后臺異步提交,通過協(xié)議將客戶端本地緩存中創(chuàng)建文件的元數(shù)據(jù)發(fā)送到元數(shù)據(jù)服務(wù)器端。32)元數(shù)據(jù)服務(wù)器端收到客戶端文件提交請求后,進行文件的真正創(chuàng)建。在目錄下創(chuàng)建文件目錄項,為文件分配真正的索引節(jié)點inode和inode編號,將客戶端的fake inode元數(shù)據(jù)信息更新到真正的inode中,并將文件真正的inode編號返回給客戶端;33)客戶端接收到元數(shù)據(jù)服務(wù)器端的真正inode編號后,更新緩存中所述文件的fake inode,設(shè)置fake inode的inode編號為兀數(shù)據(jù)服務(wù)器端返回的真正inode編號,將所述文件fake inode設(shè)置完成標志位completion,表明客戶端緩存中創(chuàng)建的文件已經(jīng)提交到元數(shù)據(jù)服務(wù)器端,客戶端的fake inode已經(jīng)成為真正的inode。本發(fā)明還提出一種客戶端緩存中文件刪除方法,包括如下步驟:(Al)客戶端刪除文件時,首先檢查客戶端緩存中所述文件inode的標志位。如果為uncompletion,則表明所述文件是客戶端緩存中創(chuàng)建的文件,并且還沒有提交到元數(shù)據(jù)服務(wù)器端。因此,客戶端在緩存中刪除該inode,刪除客戶端本地的目錄readdir cache中的目錄項即可,不需要與元數(shù)據(jù)服務(wù)器端進行RPC網(wǎng)絡(luò)交互;(A2)如果客戶端緩存中所述文件inode標志位為completion,貝U表明所述文件信息已經(jīng)提交到元數(shù)據(jù)服務(wù)器端。因此,客戶端需要通過RPC發(fā)送刪除所述文件請求到元數(shù)據(jù)服務(wù)器端,由元數(shù)據(jù)服務(wù)器端完成所述文件的刪除;
本發(fā)明還提出了一種客戶端緩存中文件的寫方法,包括如下步驟:(BI)客戶端在寫文件時,首先檢查客戶端緩存中所述文件inode的標志位。如果為uncompletion,則表明所述文件是客戶端緩存中創(chuàng)建的文件,并且還沒有提交到元數(shù)據(jù)服務(wù)器端。因此,采用客戶端存儲資源延遲分配方法在客戶端緩存中為所述文件分配布局。然后進行文件數(shù)據(jù)寫操作;(B2)如果客戶端緩存中所述文件inode標志位為completion,貝U表明所述文件信息已經(jīng)提交到元數(shù)據(jù)服務(wù)器端。因此,客戶端可以向元數(shù)據(jù)服務(wù)器發(fā)送請求獲取布局,或者直接采用客戶端存儲資源延遲分配方法分配布局。然后進行文件數(shù)據(jù)寫操作;(B3)對于采用客戶端存儲資源延遲分配方法新創(chuàng)建的文件布局,需要根據(jù)策略異步提交到元數(shù)據(jù)服務(wù)器。如果所述文件inode標志位為uncompletion,則在提交所述文件布局之前,需要首先提交所述文件inode的元數(shù)據(jù)信息。保證元數(shù)據(jù)服務(wù)器接收到文件布局提交時,元數(shù)據(jù)服務(wù)器已經(jīng)具有所述文件inode的元數(shù)據(jù)信息。本發(fā)明還提出了一種客戶端緩存中文件的讀取方法,包括如下步驟:(Cl)客戶端讀取文件時,首先檢查客戶端緩存中所述文件inode的標志位。如果為uncompletion,則表明所述文件是客戶端緩存中創(chuàng)建的文件,并且還沒有提交到元數(shù)據(jù)服務(wù)器端。因此,客戶端只需要從本地緩存中獲取文件布局,然后根據(jù)文件布局進行文件數(shù)據(jù)的讀取,而不需要向元數(shù)據(jù)服務(wù)器發(fā)送RPC請求來獲取文件布局;(C2)如果客戶端緩存中所述文件inode標志位為completion,貝U表明所述文件信息已經(jīng)提交到元數(shù)據(jù)服務(wù)器端。因此,客戶端需要向元數(shù)據(jù)服務(wù)器發(fā)送RPC請求以獲取文件布局。然后,根據(jù)文件布局進行文件數(shù)據(jù)讀取。刪除、寫、讀是針對客戶端緩存創(chuàng)建文件進行的相應(yīng)后續(xù)操作,如果采用客戶端文件創(chuàng)建,則對于所創(chuàng)建文件的刪除、寫、讀操作需要按照上面所述的操作來執(zhí)行。如圖2所示,是本發(fā)明的一具體實施例。該實施例描述了一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建的方法。在圖2中,客戶端Clientl期望在目錄A下創(chuàng)建文件filel,目錄A下已經(jīng)存在文件file2、file3、file4 ;除Clientl之外,還有另外的客戶端Client2,元數(shù)據(jù)服務(wù)器是Server。具體包括如下步驟:(一)、客戶端目錄寫授權(quán)獲取步驟1.客戶端檢查是否擁有目錄寫授權(quán)。(I)客戶端Clientl在接收到應(yīng)用程序在目錄A下創(chuàng)建文件filel的請求后,首先獲取父目錄A的inode。如果父目錄A的inode已經(jīng)在客戶端本地緩存中存在,貝U直接獲取即可;如果父目錄A的inode沒有在客戶端本地緩存中,則向元數(shù)據(jù)服務(wù)器Server發(fā)送請求獲取目錄A元數(shù)據(jù)信息,然后客戶端根據(jù)獲取的目錄A元數(shù)據(jù)信息在緩存中建立目錄A 的 inode,并設(shè)置目錄 A 的 readdir cache 為 unconsistency 標志;(2)然后檢查客戶端Clientl是否持有目錄A的寫授權(quán)。如果已經(jīng)持有寫授權(quán),則直接使用已經(jīng)持有的寫授權(quán)即可;2.客戶端Clientl向元數(shù)據(jù)服務(wù)器Server發(fā)送獲取目錄A寫授權(quán)請求如果客戶端Clientl沒有持有目錄A寫授權(quán),則需要向元數(shù)據(jù)服務(wù)器Server發(fā)送獲取目錄A寫授權(quán)的GET_WRITE_DELEGAT10N請求。3.元數(shù)據(jù)服務(wù)器端Server授予Clientl目錄A寫授權(quán)
Server端接收到Clientl發(fā)送的GET_WRITE_DELEGATION請求后,在目錄授權(quán)鏈表Dir_delegation_list中檢索是否存在目錄A寫授權(quán)給其他客戶端的沖突。(3.1)如果在Dir_delegation_list中沒有檢索到目錄A寫授權(quán)給其他客戶端,貝丨JServer端把目錄A寫授權(quán)給Clientl,并在Dir_delegation_list中添加記錄。(3.2)如果在Dir_delegation_list中檢索到目錄A的寫授權(quán)給其他客戶端的沖突,比如Client2,則Server端首先向Client2發(fā)送授權(quán)召回請求;Client2接收到授權(quán)召回請求后,把本地緩存中目錄A下未提交的元數(shù)據(jù)和數(shù)據(jù)進行提交;提交完成后,釋放目錄A授權(quán),返回給Server端目錄A授權(quán)釋放成功響應(yīng);Server端接收到Client2授權(quán)釋放成功響應(yīng)消息后,在Dir_delegation_list中撤銷目錄A寫授權(quán)給Client2的記錄。然后Server把目錄A寫授權(quán)給Clientl,并在Dir_delegation_list中添加目錄A授權(quán)給Clientl的記錄。4.客戶端Clientl記錄獲取的目錄A寫授權(quán)客戶端Clientl收到Server返回的目錄A寫授權(quán)響應(yīng)后,在目錄A的inode中,設(shè)置持有寫授權(quán)的標志位Dir_Delegation。(二)、客戶端緩存中創(chuàng)建文件filel步驟1.客戶端檢查目錄A下是否有與filel的重名文件客戶端緩存中創(chuàng)建文件之前,需要檢查應(yīng)用程序要創(chuàng)建的文件filel是否與目錄A中的文件重名。(I)客戶端Clientl獲取目錄A寫授權(quán)后,首先檢查本地目錄A的readdir cache是否已經(jīng)更新到最新的狀態(tài),如果目錄A的readdir cache具有consistency標志,則說明目錄A的readdir cache獲取了元數(shù)據(jù)服務(wù)器端目錄A的最新目錄項,已經(jīng)是最新狀態(tài),即Clientl中的目錄A的readdir cache中包含file2、f ile3、file4的目錄項,與元數(shù)據(jù)服務(wù)器端目錄A下的目錄項信息相同。(2)如果目錄A的readdir cache不具有consistency標志,貝U需要更新客戶端本地readdir cache??蛻舳薈lientl向元數(shù)據(jù)服務(wù)器端發(fā)送readdir請求,將目錄A及目錄A中的所有目錄項緩存到客戶端Clientl本地的readdir cache中,包括file2、file3、file4,并且設(shè)置目錄A的readdircache的consistency標志,表明客戶端緩存是最新狀態(tài),其獲取的目錄內(nèi)容與元數(shù)據(jù)服務(wù)器端是一致的。(3)客戶端Clientl遍歷目錄A下readdir cache中的目錄項信息,判定目錄A中是否存在與要創(chuàng)建文件filel同名的文件。2.目錄下存在同名文件如果目錄A下有與filel同名的文件,說明文件filel已經(jīng)存在,則不必執(zhí)行客戶端緩存文件創(chuàng)建流程,文件filel的元數(shù)據(jù)已經(jīng)緩存在客戶端本地,只需要在客戶端本地對文件filel進行open打開操作即可。3.客戶端緩存創(chuàng)建文件如果目錄A下沒有與filel重名的文件,則執(zhí)行客戶端緩存中文件創(chuàng)建流程??蛻舳薈lientl執(zhí)行open創(chuàng)建操作,在緩存中創(chuàng)建目錄A下的文件filel??蛻舳嗽趦?nèi)存中分配文件filel元數(shù)據(jù)信息,包括文件filel的inode、目錄項等信息,該inode是客戶端本地為文件filel暫時分配的,記為fake inodel,并且為fake inodel分配客戶端唯一的inode編號inol,將fake inode I添加到客戶端inode緩存中,將filel目錄項添加到目錄A的readdir cache中。4.設(shè)置客戶端緩存中創(chuàng)建文件的標志位客戶端Clientl將緩存中新創(chuàng)建的filel的fake inodel元數(shù)據(jù)設(shè)置標志位uncompletion,表明該文件是客戶端緩存中創(chuàng)建的,還未提交到元數(shù)據(jù)服務(wù)器端,后續(xù)可以對客戶端創(chuàng)建的filel的fake inodel進行正常訪問。(三)、客戶端異步提交文件filel元數(shù)據(jù)步驟1.客戶端異步提交文件filel元數(shù)據(jù)信息(I)客戶端Clientl根據(jù)提交策略,采用異步方式提交客戶端緩存中創(chuàng)建文件filel的元數(shù)據(jù)信息??蛻舳嗽谥付l件下,會觸發(fā)異步提交文件filel元數(shù)據(jù)過程,比如當文件關(guān)閉后提交文件的元數(shù)據(jù)、當客戶端緩存資源緊張后選擇性的提交多個文件的元數(shù)據(jù)、當超過一定時間后提交多個文件的元數(shù)據(jù)等策略。(2)客戶端Clientl向元數(shù)據(jù)服務(wù)器發(fā)送文件filel元數(shù)據(jù)信息提交的RPC請求消息,請求消息參數(shù)中包括目錄A的inode元數(shù)據(jù)信息,filel的目錄項元數(shù)據(jù)信息,filel的fake inodel元數(shù)據(jù)信息。(3)作為一種優(yōu)化的實現(xiàn)方法,客戶端可以采用批量的方式,在一次網(wǎng)絡(luò)交互操作中提交多個文件的元數(shù)據(jù)信息。2.元數(shù)據(jù)服務(wù)器處理提交的filel元數(shù)據(jù)信息(I)元數(shù)據(jù)服務(wù)器端Server收到客戶端Clientl提交文件filel元數(shù)據(jù)信息的消息后,對消息按照協(xié)議進行解析,解析出文件的元數(shù)據(jù)信息。(2)元數(shù)據(jù)服務(wù)器在目錄A下創(chuàng)建filel的目錄項元數(shù)據(jù),并且為filel分配真正的inode,為該inode分配在元數(shù)據(jù)服務(wù)器端的唯一標識inode編號,把從Clientl請求消息中獲取的filel的fake inodel元數(shù)據(jù)信息更新到filel的真正inode中。(3)元數(shù)據(jù)服務(wù)器將真正inode的編號返回給客戶端。(4)作為一種優(yōu)化的實現(xiàn)方式,元數(shù)據(jù)服務(wù)器可采用批量方式,通過一次網(wǎng)絡(luò)交互把多個文件提交的響應(yīng)消息返回給客戶端。3.客戶端更新緩存中filel元數(shù)據(jù)信息(I)客戶端Clientl接收到元數(shù)據(jù)服務(wù)器端返回的響應(yīng)消息后,對響應(yīng)消息按照協(xié)議進行解析,解析出filel的真正inode編號。(2)客戶端Clientl將緩存中文件filel的inode元數(shù)據(jù)信息中inode編號更新為元數(shù)據(jù)服務(wù)器端分配的真正inode編號,并且修改客戶端緩存中文件filel的inode元數(shù)據(jù)的標志位為completion,表明客戶端緩存中創(chuàng)建的文件已經(jīng)提交到元數(shù)據(jù)服務(wù)器端,并且客戶端獲取了文件filel真正的inode,文件創(chuàng)建已經(jīng)完成。結(jié)合圖2所述的實施例,進一步描述客戶端緩存刪除文件的方法,包括如下步驟:(Al)客戶端Clientl接收應(yīng)用程序的刪除文件filel請求后,首先檢查客戶端緩存中文件filel的inode元數(shù)據(jù)標志位,如果為uncompletion,則表明filel是客戶端緩存創(chuàng)建的文件,并且沒有提交到元數(shù)據(jù)服務(wù)器端,客戶端在本地緩存中刪除文件filel即可。不需要與元數(shù)據(jù)服務(wù)器端進行RPC網(wǎng)絡(luò)交互,只需要進行客戶端存儲資源回收操作,包括釋放filel的布局,釋放filel的inode,在目錄A的readdir cache中清除filel的目錄項。(A2)如果客戶端Clientl緩存中文件filel的inode元數(shù)據(jù)的標志位為completion,表明客戶端緩存中創(chuàng)建的文件已經(jīng)提交到元數(shù)據(jù)服務(wù)器端,需要發(fā)送請求到元數(shù)據(jù)服務(wù)器進行filel的刪除??蛻舳薈lientl向元數(shù)據(jù)服務(wù)器發(fā)送filel刪除請求消息,請求消息中參數(shù)包括目錄A inode元數(shù)據(jù)信息,刪除目標文件filel的目錄項;元數(shù)據(jù)服務(wù)器端收到刪除請求消息后,在目錄A中刪除filel的目錄項,釋放filel的布局,釋放filel 的 inode。結(jié)合圖2所述的實施例,進一步描述客戶端緩存中文件的寫操作,包括如下步驟:B1.客戶端為文件filel分配文件布局(I)客戶端Clientl接收到應(yīng)用程序?qū)懳募ilel的請求后,首先檢查客戶端緩存中文件filel的inode元數(shù)據(jù)標志位,如果為uncompletion,則表明filel是客戶端緩存創(chuàng)建的文件,并且沒有提交到元數(shù)據(jù)服務(wù)器端,采用客戶端存儲資源延遲分配方法分配文件布局。Clientl首先采用批量方式從元數(shù)據(jù)服務(wù)器申請空閑存儲資源,然后Clientl在本地緩存中為filel分配所述空閑存儲資源,并組裝為文件布局。(2)如果客戶端Clientl緩存中文件filel的inode元數(shù)據(jù)的標志位為completion,表明客戶端緩存中創(chuàng)建的文件已經(jīng)提交到元數(shù)據(jù)服務(wù)器端,需要向元數(shù)據(jù)服務(wù)器發(fā)送請求以獲取文件布局,由元數(shù)據(jù)服務(wù)器完成文件布局的創(chuàng)建,并返回給Clientl端。作為一種優(yōu)化的實現(xiàn),也可以采用客戶端存儲資源延遲分配方法在客戶端緩存中分配文件布局。B2.客戶端寫文件數(shù)據(jù)客戶端Clientl根據(jù)filel已經(jīng)分配的文件布局,把filel的文件數(shù)據(jù)寫入到文件布局所描述的物理存儲位置。B3.客戶端布局提交在采用客戶端存儲資源延遲分配方法的文件布局創(chuàng)建后,當布局提交時,首先檢查客戶端Clientl緩存中文件filel的inode元數(shù)據(jù)標志位,如果為uncompletion,貝U需要首先提交文件filel的元數(shù)據(jù)信息,再提交filel的文件布局信息。作為一種優(yōu)化的實現(xiàn)方法,filel的文件布局可以和filel的元數(shù)據(jù)信息組裝在一個RPC網(wǎng)絡(luò)交互中同時提交。結(jié)合圖2所述的實施例,進一步描述客戶端緩存文件的讀取方法,包括如下步驟:(Cl)客戶端Clientl接收到應(yīng)用程序讀取文件filel的請求后,首先檢查客戶端Clientl緩存中文件filel的inode元數(shù)據(jù)的標志位,如果為uncompletion,則表明客戶端Clientl緩存中創(chuàng)建的文件filel沒有提交到元數(shù)據(jù)服務(wù)器端,需要直接在本地緩存中獲取文件布局。如果客戶端緩存中存在filel對應(yīng)位置的文件布局,則直接使用該緩存布局;如果在客戶端緩存中filel的對應(yīng)讀取位置沒有文件布局,則直接表示所述讀取位置沒有分配過文件布局,而不必再請求元數(shù)據(jù)服務(wù)器獲取文件布局;(C2)如果客戶端Clientl緩存中文件filel元數(shù)據(jù)的標志位為completion,表明客戶端緩存中創(chuàng)建的文件filel已經(jīng)提交到元數(shù)據(jù)服務(wù)器端。如果客戶端緩存中存在filel對應(yīng)位置的文件布局,由于Clientl持有目錄授權(quán),保證其他客戶端不會對filel的文件布局進行修改,則直接使用該緩存布局;如果客戶端緩存中不存在filel對應(yīng)讀取位置的文件布局時,由于客戶端不知道元數(shù)據(jù)服務(wù)器端是否存在對應(yīng)讀取位置的文件布局,因此客戶端還需要請求元數(shù)據(jù)服務(wù)器以獲取對應(yīng)位置的文件布局;(C3)當獲取文件布局后,客戶端可以讀取文件布局描述的物理存儲位置,獲取文件數(shù)據(jù)。如圖3所示,本發(fā)明還公開一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建系統(tǒng),該系統(tǒng)是與圖1所述的方法、圖2所述實施例中方法相對應(yīng)的系統(tǒng),該方法和實施例中的全部內(nèi)容都適應(yīng)于本系統(tǒng),本系統(tǒng)包括:客戶端緩存文件創(chuàng)建模塊10,設(shè)置于客戶端,用于客戶端獲取目錄授權(quán),實現(xiàn)緩存中文件創(chuàng)建,對于緩存中創(chuàng)建完成且沒有提交到元數(shù)據(jù)服務(wù)器的文件進行本地讀、寫、刪除操作,最后進行創(chuàng)建文件的異步提交。元數(shù)據(jù)服務(wù)器管理模塊20,設(shè)置于元數(shù)據(jù)服務(wù)器,用于管理目錄授權(quán),管理客戶端緩存中創(chuàng)建文件的元數(shù)據(jù),并與客戶端緩存文件創(chuàng)建模塊10交互,向客戶端緩存文件創(chuàng)建模塊10返回文件真正的inode編號ino,完成客戶端緩存文件創(chuàng)建。進一步地,客戶端緩存文件創(chuàng)建模塊10包括:目錄授權(quán)獲取模塊110,用于檢查客戶端是否持有目錄的寫授權(quán),如果沒有則向元數(shù)據(jù)服務(wù)器管理模塊20發(fā)送獲取目錄寫授權(quán)請求,并記錄獲取的目錄寫授權(quán)。緩存文件創(chuàng)建模塊120,用于客戶端緩存中文件的創(chuàng)建,如果目錄下沒有與創(chuàng)建文件同名的文件,則執(zhí)行緩存中文件創(chuàng)建操作,在緩存中創(chuàng)建文件的元數(shù)據(jù),設(shè)置創(chuàng)建文件的未完成標志位。緩存文件刪除模塊130,用于對客戶端緩存中創(chuàng)建文件執(zhí)行刪除操作;如果文件是客戶端緩存中創(chuàng)建的文件,且沒有提交到元數(shù)據(jù)服務(wù)器管理模塊20,則在客戶端緩存中刪除文件元數(shù)據(jù)信息即可,不需要與元數(shù)據(jù)服務(wù)器管理模塊20進行RPC網(wǎng)絡(luò)交互;否則需要通過RPC發(fā)送刪除所述文件請求到元數(shù)據(jù)服務(wù)器管理模塊20,由元數(shù)據(jù)服務(wù)器管理模塊20完成所述文件的刪除。緩存文件寫模塊140,用于對客戶端緩存中創(chuàng)建文件執(zhí)行寫操作;如果文件是在客戶端緩存中創(chuàng)建的文件,且沒有提交到元數(shù)據(jù)服務(wù)器管理模塊20,采用客戶端存儲資源延遲分配方法在客戶端緩存中為所述文件分配布局,然后進行文件數(shù)據(jù)寫操作;否則可以向元數(shù)據(jù)服務(wù)器管理模塊20發(fā)送請求獲取布局,或者直接采用客戶端存儲資源延遲分配方法分配布局,然后進行文件數(shù)據(jù)寫操作。緩存文件讀模塊150,用于對客戶端緩存中創(chuàng)建文件執(zhí)行讀操作;如果文件是在客戶端緩存中創(chuàng)建的文件,且沒有提交到元數(shù)據(jù)服務(wù)器管理模塊20,則從本地緩存中獲取文件布局,然后根據(jù)文件布局進行文件數(shù)據(jù)的讀取,而不需要向元數(shù)據(jù)服務(wù)器管理模塊20發(fā)送RPC請求來獲取文件布局;否則需要向元數(shù)據(jù)服務(wù)器管理模塊20發(fā)送RPC請求以獲取文件布局,根據(jù)文件布局進行文件數(shù)據(jù)讀取。緩存異步提交模塊160,用于將在客戶端緩存中創(chuàng)建的文件提交到元數(shù)據(jù)服務(wù)器管理模塊20(即元數(shù)據(jù)管理模塊220);根據(jù)客戶端緩存文件創(chuàng)建的寫回策略,在一定條件下將創(chuàng)建的一個或多個文件進行后臺異步提交,通過協(xié)議將客戶端本地緩存中創(chuàng)建文件的元數(shù)據(jù)發(fā)送到元數(shù)據(jù)服務(wù)器管理模塊20,在收到元數(shù)據(jù)服務(wù)器管理模塊20返回的真正inode編號ino后,更新inode編號為該真正的inode編號ino,并設(shè)直文件創(chuàng)建完成標志位。進一步地,元數(shù)據(jù)服務(wù)器管理模塊20包括:
目錄授權(quán)管理模塊210,用于接收獲取目錄寫授權(quán)請求,根據(jù)目錄寫授權(quán)授予機制授予客戶端目錄寫授權(quán),記錄目錄授權(quán)授予情況;元數(shù)據(jù)管理模塊220,用于管理客戶端緩存中創(chuàng)建文件的元數(shù)據(jù)信息;收到客戶端文件提交請求后,進行文件的真正創(chuàng)建,在目錄下創(chuàng)建文件目錄項,為文件分配真正的inode編號ino,將客戶端的fake inode元數(shù)據(jù)信息更新到真正inode中,并將文件真正的inode編號ino返回給客戶端緩存文件創(chuàng)建模塊10。本發(fā)明針對在大規(guī)模分布式文件系統(tǒng)中現(xiàn)有技術(shù)無法有效減少客戶端文件創(chuàng)建時與元數(shù)據(jù)服務(wù)器的同步網(wǎng)絡(luò)交互開銷的問題,提供了一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法和系統(tǒng),能夠有效降低文件創(chuàng)建時同步訪問元數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)交互開銷,有效提升小文件訪問性能。其在客戶端緩存中創(chuàng)建文件,然后把新創(chuàng)建文件元數(shù)據(jù)信息異步提交到服務(wù)器,避免了文件創(chuàng)建時的同步網(wǎng)絡(luò)交互開銷。此外,提供了客戶端緩存中文件的刪除、寫入、讀取方法。當然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當可根據(jù)本發(fā)明做出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
權(quán)利要求
1.一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法,其特征在于,包括: 步驟I,客戶端從元數(shù)據(jù)服務(wù)器獲取目錄寫授權(quán); 步驟2,客戶端在本地緩存中創(chuàng)建文件; 步驟3,客戶端異步提交所創(chuàng)建文件至元數(shù)據(jù)服務(wù)器。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟I中,包括: 步驟11,客戶端向元數(shù)據(jù)服務(wù)器發(fā)送獲取目錄寫授權(quán)請求; 步驟12,元數(shù)據(jù)服務(wù)器接收目錄寫授權(quán)請求,授予客戶端目錄寫授權(quán); 步驟13,客戶端記錄所述目錄寫授權(quán)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟2中,包括: 步驟21,客戶端檢查目錄下是否存在與所創(chuàng)建文件同名的文件;若不存在同名的文件,則執(zhí)行后續(xù)步驟; 步驟22,客戶端在緩存中進行目錄下的文件創(chuàng)建,在緩存中為所創(chuàng)建文件分配臨時索引節(jié)點inode,并為所述inode分配一索引節(jié)點編號ino,將所述inode添加到客戶端本地inode緩存元數(shù)據(jù)中,將所創(chuàng)建文件的目錄項dentry添加到客戶端本地目錄的讀取目錄內(nèi)容緩存 readdir cache 中; 步驟23,為緩存中所述inode設(shè)置未完成標志位,表明所創(chuàng)建文件是在客戶端緩存中創(chuàng)建的,還未提交到元數(shù)據(jù)服務(wù)器。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟21中,包括: 步驟211,客戶端檢查本地目錄的readdir cache是否具有一致標志,若不具有該一致標志,表示客戶端本地目錄的readdir cache信息與元數(shù)據(jù)服務(wù)器端不一致,客戶端向元數(shù)據(jù)服務(wù)器發(fā)送目錄讀取請求,獲取元數(shù)據(jù)服務(wù)器端所述目錄最新的所有目錄項信息,緩存在目錄的readdir cache中,設(shè)置目錄的readdir cache的一致標志; 步驟212,遍歷目錄的readdir cache中的目錄項,檢查目錄的readdir cache中是否有與所創(chuàng)建文件同文件名的目錄項。
5.根據(jù)權(quán)利要求1、2、3或4所述的方法,其特征在于,所述步驟3中,包括: 步驟31,客戶端進行后臺異步提交,將客戶端緩存中創(chuàng)建文件的元數(shù)據(jù)發(fā)送到元數(shù)據(jù)服務(wù)器端; 步驟32,元數(shù)據(jù)服務(wù)器端收到客戶端文件提交請求后,進行文件的真正創(chuàng)建;在目錄下創(chuàng)建所述文件的目錄項dentry和inode,為所述文件分配真正的索引節(jié)點inode和編號ino,將客戶端的inode元數(shù)據(jù)信息更新到元數(shù)據(jù)服務(wù)器真正的編號ino對應(yīng)的inode結(jié)構(gòu)中,并將所述文件真正的編號ino返回給客戶端; 步驟33,客戶端接收到真正的編號ino后,更新緩存中所述文件的inode,設(shè)置所述inode的編號為元數(shù)據(jù)服務(wù)器端返回的真正的編號ino,將所述文件的inode元數(shù)據(jù)設(shè)置完成標志位,表明客戶端緩存中創(chuàng)建的文件已經(jīng)提交到元數(shù)據(jù)服務(wù)器端,客戶端的所述inode已經(jīng)成為真正的inode。
6.一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建系統(tǒng),其特征在于,包括: 客戶端緩存文件創(chuàng)建模塊,設(shè)置于客戶端,用于獲取目錄寫授權(quán),在客戶端緩存中進行文件創(chuàng)建,對于緩存中創(chuàng)建完成且沒有提交到元數(shù)據(jù)服務(wù)器的文件進行本地讀、寫、刪除處理,異步提交所創(chuàng)建文件;元數(shù)據(jù)服務(wù)器管理模塊,設(shè)置于元數(shù)據(jù)服務(wù)器,用于管理目錄授權(quán),管理客戶端緩存中所創(chuàng)建文件的元數(shù)據(jù),并與所述客戶端緩存文件創(chuàng)建模塊交互,向所述客戶端緩存文件創(chuàng)建模塊返回文件真正的inode編號,完成客戶端緩存文件創(chuàng)建。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述客戶端緩存文件創(chuàng)建模塊進一步包括: 目錄授權(quán)獲取模塊,用于檢查客戶端是否持有目錄的寫授權(quán),如果沒有則向所述元數(shù)據(jù)服務(wù)器管理模塊發(fā)送獲取目錄寫授權(quán)請求,目錄寫授權(quán)獲取成功后記錄獲取的目錄寫授權(quán);及 緩存文件創(chuàng)建模塊,用于客戶端緩存中文件的創(chuàng)建,如果目錄下沒有與創(chuàng)建文件同名的文件,則執(zhí)行緩存中文件創(chuàng)建操作,在緩存中創(chuàng)建文件的元數(shù)據(jù),設(shè)置創(chuàng)建文件的未完成標志位。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述客戶端緩存文件創(chuàng)建模塊進一步包括: 緩存文件刪除模塊,用于對客戶端緩存中創(chuàng)建文件執(zhí)行刪除操作;如果文件是客戶端緩存中創(chuàng)建的文件,且沒有提交到所述元數(shù)據(jù)服務(wù)器管理模塊,則在客戶端緩存中刪除所述文件;否則發(fā)送 刪除文件請求到所述元數(shù)據(jù)服務(wù)器管理模塊,由所述元數(shù)據(jù)服務(wù)器管理模塊完成所述文件的刪除;和/或 緩存文件寫模塊,用于對客戶端緩存中創(chuàng)建文件執(zhí)行寫操作;如果文件是客戶端緩存中創(chuàng)建的文件,且沒有提交到所述元數(shù)據(jù)服務(wù)器管理模塊,則在客戶端緩存中為所述文件分配布局,然后進行文件數(shù)據(jù)寫操作;否則向元數(shù)據(jù)服務(wù)器管理模塊發(fā)送請求獲取布局或直接采用客戶端存儲資源延遲分配方法分配布局,然后進行文件數(shù)據(jù)寫操作;和/或 緩存文件讀模塊,用于對客戶端緩存中創(chuàng)建文件執(zhí)行讀操作;如果文件是客戶端緩存中創(chuàng)建的文件,且沒有提交到所述元數(shù)據(jù)服務(wù)器管理模塊,則從本地緩存中獲取文件布局,然后根據(jù)文件布局進行文件數(shù)據(jù)的讀取;否則向所述元數(shù)據(jù)服務(wù)器管理模塊發(fā)送RPC請求以獲取文件布局,根據(jù)文件布局進行文件數(shù)據(jù)讀取。
9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述客戶端緩存文件創(chuàng)建模塊進一步包括: 緩存異步提交模塊,用于根據(jù)客戶端緩存文件創(chuàng)建的寫回策略,將客戶端本地緩存中創(chuàng)建文件的元數(shù)據(jù)發(fā)送到所述元數(shù)據(jù)服務(wù)器管理模塊,以實現(xiàn)后臺異步提交,在收到元數(shù)據(jù)服務(wù)器管理模塊返回的真正的inode編號后,更新inode編號為真正的inode編號,并設(shè)置文件創(chuàng)建完成標志位。
10.根據(jù)權(quán)利要求6、7、8或9所述的系統(tǒng),其特征在于,所述元數(shù)據(jù)服務(wù)器管理模塊進一步包括: 目錄授權(quán)管理模塊,用于接收獲取目錄寫授權(quán)請求,根據(jù)目錄寫授權(quán)授予機制授予客戶端目錄寫授權(quán),記錄目錄授權(quán)授予情況; 元數(shù)據(jù)管理模塊,用于管理客戶端緩存中創(chuàng)建文件的元數(shù)據(jù)信息;收到客戶端文件提交請求后,進行文件的真正創(chuàng)建,在目錄下創(chuàng)建文件目錄項,為文件分配真正的inode編號,將客戶端的fake inode元數(shù)據(jù)信息更新到真正inode中,并將真正的inode編號返回給所述客戶端緩存文件創(chuàng)建模塊。
全文摘要
本發(fā)明公開了一種分布式文件系統(tǒng)客戶端緩存中文件創(chuàng)建方法及其系統(tǒng),其中該方法包括步驟1,客戶端從元數(shù)據(jù)服務(wù)器獲取目錄寫授權(quán);步驟2,客戶端在本地緩存中創(chuàng)建文件;步驟3,客戶端異步提交所創(chuàng)建文件至元數(shù)據(jù)服務(wù)器。本發(fā)明方法解決了海量小文件應(yīng)用場景中分布式文件系統(tǒng)現(xiàn)有技術(shù)無法有效減少文件創(chuàng)建時與元數(shù)據(jù)服務(wù)器同步網(wǎng)絡(luò)交互開銷的問題。
文檔編號H04L29/08GK103179185SQ201210570089
公開日2013年6月26日 申請日期2012年12月25日 優(yōu)先權(quán)日2012年12月25日
發(fā)明者張軍偉, 齊穎, 邵冰清, 劉振軍 申請人:中國科學院計算技術(shù)研究所, 天津中科藍鯨信息技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
乃东县| 尉犁县| 前郭尔| 哈巴河县| 东莞市| 寻乌县| 浙江省| 博爱县| 张掖市| 吉水县| 灵石县| 姜堰市| 麻城市| 九龙城区| 安福县| 夏邑县| 遂昌县| 缙云县| 固阳县| 花莲市| 渝北区| 桂平市| 乡宁县| 南京市| 河北省| 江陵县| 鄂托克旗| 井研县| 和平区| 霞浦县| 两当县| 定边县| 泰宁县| 崇阳县| 南江县| 涿州市| 吴川市| 廊坊市| 龙岩市| 峨边| 固原市|