;
[0055]所述第一確定模塊,還用于根據(jù)所述第一對(duì)應(yīng)關(guān)系,確定與所述第一目錄項(xiàng)標(biāo)識(shí)對(duì)應(yīng)的第一對(duì)象;
[0056]所述第二確定模塊,還用于根據(jù)所述第二對(duì)應(yīng)關(guān)系,確定與所述第一目錄項(xiàng)標(biāo)識(shí)對(duì)應(yīng)的第一位置;
[0057]所述裝置還包括:
[0058]刪除模塊,用于刪除所述第一對(duì)象中的第一位置處的所述第一反向索引記錄。
[0059]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第二方面的第三種可能的實(shí)現(xiàn)方式中的任意一種,所述第一對(duì)應(yīng)關(guān)系為:
[0060]Idobject= (fid/S)*M+fid% S% M ;
[0061]其中,1‘_為反向索引表中對(duì)象的標(biāo)識(shí),fid為目錄項(xiàng)標(biāo)識(shí),M為系統(tǒng)在寫(xiě)入數(shù)據(jù)時(shí)的下盤(pán)時(shí)延內(nèi)的并發(fā)操作數(shù),S = M*K,K為一個(gè)對(duì)象能夠存儲(chǔ)的反向索引記錄個(gè)數(shù),%為取余運(yùn)算;
[0062]所述第二對(duì)應(yīng)關(guān)系為:
[0063]index = (fid% S)/M ;
[0064]其中,index為反向索引記錄在對(duì)象中的存儲(chǔ)位置的偏移量。
[0065]本發(fā)明實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
[0066]本發(fā)明實(shí)施例技術(shù)方案中,分布式文件系統(tǒng)的服務(wù)器在新建目錄項(xiàng)之后,會(huì)對(duì)應(yīng)在反向索引表中寫(xiě)入該目錄項(xiàng)的反向索引記錄。具體實(shí)施時(shí),根據(jù)該目錄項(xiàng)的第一目錄項(xiàng)標(biāo)識(shí)確定存儲(chǔ)目錄項(xiàng)的第一反向索引記錄的第一對(duì)象,以及確定具體在第一對(duì)象中的哪個(gè)存儲(chǔ)位置記錄第一反向索引記錄,最后在確定出的第一對(duì)象的第一位置處寫(xiě)入第一反向索引記錄。由于目錄項(xiàng)標(biāo)識(shí)(fid)的離散性要遠(yuǎn)小于fid的哈希值的離散性,因此,與現(xiàn)有技術(shù)中根據(jù)fid的哈希值將反向索引記錄映射至反向索引表中相比,本發(fā)明實(shí)施例中根據(jù)fid值將反向索引記錄映射至反向索引表中的技術(shù)方案能夠顯著降低磁盤(pán)1的離散程度。
【附圖說(shuō)明】
[0067]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)要介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0068]圖1為【背景技術(shù)】中反向索引表的不意圖;
[0069]圖2為本發(fā)明實(shí)施例提供的反向索引記錄的存儲(chǔ)方法的流程示意圖;
[0070]圖3為本發(fā)明實(shí)施例提供的反向索引記錄的存儲(chǔ)方法的進(jìn)一步細(xì)化流程的示意圖;
[0071]圖4為本發(fā)明實(shí)施例提供的反向索引記錄的存儲(chǔ)方法的一種可選的實(shí)施方式的流程示意圖;
[0072]圖5為本發(fā)明實(shí)施例提供的反向索引記錄的存儲(chǔ)方法的另一種可選的實(shí)施方式的流程示意圖;
[0073]圖6為本發(fā)明實(shí)施例提供的一種反向索引記錄的存儲(chǔ)裝置的結(jié)構(gòu)示意框圖;
[0074]圖7為圖6中裝置的進(jìn)一步細(xì)化結(jié)構(gòu)的示意框圖;
[0075]圖8為本發(fā)明實(shí)施例提供的反向索引記錄的存儲(chǔ)裝置500的結(jié)構(gòu)示意框圖。
【具體實(shí)施方式】
[0076]針對(duì)現(xiàn)有技術(shù)中存儲(chǔ)反向索引記錄時(shí)導(dǎo)致的磁盤(pán)1高度離散問(wèn)題,本發(fā)明實(shí)施例提供一種反向索引記錄的存儲(chǔ)方法,所述方法包括:服務(wù)器在新建目錄項(xiàng)之后,獲取所述目錄項(xiàng)的第一目錄項(xiàng)標(biāo)識(shí)和所述目錄項(xiàng)的父目錄項(xiàng)的第二目錄項(xiàng)標(biāo)識(shí);根據(jù)反向索引表中的對(duì)象與目錄項(xiàng)標(biāo)識(shí)的第一對(duì)應(yīng)關(guān)系,確定與所述第一目錄項(xiàng)標(biāo)識(shí)對(duì)應(yīng)的對(duì)象為存儲(chǔ)所述目錄項(xiàng)的第一反向索引記錄的第一對(duì)象;根據(jù)反向索引記錄在對(duì)象中的存儲(chǔ)位置與目錄項(xiàng)標(biāo)識(shí)的第二對(duì)應(yīng)關(guān)系,確定與所述第一目錄項(xiàng)標(biāo)識(shí)對(duì)應(yīng)的存儲(chǔ)位置為在所述第一對(duì)象中記錄所述第一反向索引記錄的第一位置;在所述第一對(duì)象中的第一位置處寫(xiě)入所述第一反向索引記錄,所述第一反向索引記錄中記錄有所述第一目錄項(xiàng)標(biāo)識(shí)和所述第二目錄項(xiàng)標(biāo)識(shí)。
[0077]本發(fā)明實(shí)施例技術(shù)方案中,分布式文件系統(tǒng)的服務(wù)器在新建目錄項(xiàng)之后,會(huì)對(duì)應(yīng)在反向索引表中寫(xiě)入該目錄項(xiàng)的反向索引記錄。具體實(shí)施時(shí),根據(jù)該目錄項(xiàng)的第一目錄項(xiàng)標(biāo)識(shí)確定存儲(chǔ)目錄項(xiàng)的第一反向索引記錄的第一對(duì)象,以及確定具體在確定出的對(duì)象中的哪個(gè)存儲(chǔ)位置記錄第一反向索引記錄,最后在確定出的第一對(duì)象的第一位置處寫(xiě)入第一反向索引記錄。由于目錄項(xiàng)標(biāo)識(shí)(fid)的離散性要遠(yuǎn)小于fid的哈希值的離散性,因此,與現(xiàn)有技術(shù)中根據(jù)fid的哈希值將反向索引記錄映射至反向索引表中相比,本發(fā)明實(shí)施例中根據(jù)fid值將反向索引記錄映射至反向索引表中的技術(shù)方案能夠顯著降低磁盤(pán)1的離散程度。
[0078]下面通過(guò)附圖以及具體實(shí)施例對(duì)本發(fā)明技術(shù)方案做詳細(xì)的說(shuō)明,應(yīng)當(dāng)理解本發(fā)明實(shí)施例以及實(shí)施例中的具體特征是對(duì)本發(fā)明技術(shù)方案的詳細(xì)的說(shuō)明,而不是對(duì)本發(fā)明技術(shù)方案的限定,在不沖突的情況下,本發(fā)明實(shí)施例以及實(shí)施例中的技術(shù)特征可以相互組合。
[0079]參照?qǐng)D2,為本發(fā)明實(shí)施例提供的反向索引記錄的存儲(chǔ)方法的流程示意圖,該流程包括如下步驟:
[0080]步驟101:服務(wù)器在新建目錄項(xiàng)之后,獲取該目錄項(xiàng)的第一目錄項(xiàng)標(biāo)識(shí)和該目錄項(xiàng)的父目錄項(xiàng)的第二目錄項(xiàng)標(biāo)識(shí)。
[0081]具體的,在元數(shù)據(jù)內(nèi)嵌于目錄對(duì)象的文件系統(tǒng)中,服務(wù)器在新建一個(gè)目錄項(xiàng)(目錄或文件)之后,就要對(duì)應(yīng)在反向索引列表中新建一條該目錄項(xiàng)的反向索引記錄,方便以后針對(duì)該目錄項(xiàng)進(jìn)行反向索引操作。關(guān)于服務(wù)器創(chuàng)建目錄項(xiàng)的過(guò)程請(qǐng)參照現(xiàn)有技術(shù)中的技術(shù)方案,本發(fā)明實(shí)施例不再舉例說(shuō)明。
[0082]由于反向索引記錄中主要包含目錄項(xiàng)的目錄項(xiàng)標(biāo)識(shí)(本發(fā)明實(shí)施例以下內(nèi)容中稱(chēng)為第一目錄項(xiàng)標(biāo)識(shí))和該目錄項(xiàng)的父目錄項(xiàng)的目錄項(xiàng)標(biāo)識(shí)(以下內(nèi)容中稱(chēng)為第二目錄項(xiàng)標(biāo)識(shí)),因此,服務(wù)器在創(chuàng)建一目錄項(xiàng)的反向索引記錄時(shí),首先要獲取該目錄項(xiàng)的第一目錄項(xiàng)標(biāo)識(shí)和該目錄項(xiàng)的父目錄項(xiàng)的第二目錄項(xiàng)標(biāo)識(shí)。具體可以通過(guò)讀取該目錄項(xiàng)的inode信息或者讀取該目錄項(xiàng)的路徑信息來(lái)獲取第一目錄項(xiàng)標(biāo)識(shí)和第二目錄項(xiàng)標(biāo)識(shí)。
[0083]實(shí)際情況中,目錄項(xiàng)的反向索引記錄中可能會(huì)包括目錄項(xiàng)的其它屬性信息,因此,也可以在步驟101執(zhí)行時(shí),一并獲取這些將要寫(xiě)入反向索引記錄的屬性信息。除第一目錄項(xiàng)標(biāo)識(shí)和第二目錄項(xiàng)標(biāo)識(shí)之外,具體還要選擇目錄項(xiàng)的哪些屬性信息寫(xiě)入反向索引記錄,可參照現(xiàn)有技術(shù)中的反向索引表的結(jié)構(gòu),本發(fā)明實(shí)施例在此不再舉例說(shuō)明。
[0084]步驟102:根據(jù)反向索引表中的對(duì)象與目錄項(xiàng)標(biāo)識(shí)的第一對(duì)應(yīng)關(guān)系,確定與第一目錄項(xiàng)標(biāo)識(shí)對(duì)應(yīng)的對(duì)象為存儲(chǔ)目錄項(xiàng)的第一反向索引記錄的第一對(duì)象。
[0085]具體的,在確定出目錄項(xiàng)的反向索引記錄中將要寫(xiě)入的數(shù)據(jù)之后,需要確定出反向索引記錄的存儲(chǔ)位置,首先是要確定反向索引記錄要存儲(chǔ)在反向索引表的哪個(gè)對(duì)象中。
[0086]本發(fā)明實(shí)施例中,針對(duì)一個(gè)目錄項(xiàng),存儲(chǔ)其反向索引記錄的對(duì)象與該目錄項(xiàng)的目錄項(xiàng)標(biāo)識(shí)相關(guān),即反向索引表中的對(duì)象與目錄項(xiàng)標(biāo)識(shí)滿(mǎn)足第一對(duì)應(yīng)關(guān)系。因此,只要知道目錄項(xiàng)的第一目錄項(xiàng)標(biāo)識(shí),即可根據(jù)第一對(duì)應(yīng)關(guān)系確定出唯一的對(duì)象標(biāo)識(shí),定位出唯一的對(duì)象該對(duì)象即為存儲(chǔ)目錄項(xiàng)的反向索引記錄(以下內(nèi)容中稱(chēng)為第一反向索引記錄)的第一對(duì)象。
[0087]本發(fā)明實(shí)施例中,不限定第一對(duì)應(yīng)關(guān)系的具體形式,本領(lǐng)域技術(shù)人員可以根據(jù)文件系統(tǒng)的實(shí)際應(yīng)用環(huán)境進(jìn)行設(shè)置。例如,在存儲(chǔ)反向索引記錄時(shí),可以是先存儲(chǔ)滿(mǎn)一個(gè)對(duì)象,然后再存儲(chǔ)下一個(gè)對(duì)象,不妨設(shè)一個(gè)對(duì)象可以存儲(chǔ)50條反向索引記錄,那么fid值在[1,50]區(qū)間范圍內(nèi)的目錄項(xiàng)存儲(chǔ)在第一個(gè)對(duì)象中,fid值在[51,100]區(qū)間范圍內(nèi)的目錄項(xiàng)存儲(chǔ)在第二個(gè)對(duì)象中。又例如,在存儲(chǔ)連續(xù)N條反向索引記錄時(shí),可以是分別在N個(gè)對(duì)象中寫(xiě)入N條記錄,每個(gè)對(duì)象中寫(xiě)入一條。不妨設(shè)分布式系統(tǒng)在下盤(pán)時(shí)延內(nèi)能夠并行寫(xiě)入50條反向索引記錄,那么在需要?jiǎng)?chuàng)建fid值從I至50的50個(gè)目錄項(xiàng)的反向索引記錄時(shí),可以同時(shí)在第一個(gè)對(duì)象至第50個(gè)對(duì)象中進(jìn)行新建反向索引記錄的寫(xiě)操作,其中每個(gè)對(duì)象中寫(xiě)入一條記錄,即fid值為I的目錄項(xiàng)的反向索引記錄寫(xiě)入第一個(gè)對(duì)象,fid值為2的目錄項(xiàng)的反向索引記錄寫(xiě)入第二個(gè)對(duì)象,依此類(lèi)推,直至第一個(gè)對(duì)象至第50個(gè)對(duì)象寫(xiě)滿(mǎn),然后在第51個(gè)對(duì)象至第100個(gè)對(duì)象中繼續(xù)寫(xiě)入反向索引記錄。采用后一種方式能夠顯著提高反向索引記錄的寫(xiě)操作的并發(fā)處理能力,提高處理效率。
[0088]另外,本發(fā)明實(shí)施例中,反向索引表的所有對(duì)象可以是存儲(chǔ)在一個(gè)節(jié)點(diǎn)上,這個(gè)節(jié)點(diǎn)可以是服務(wù)器,也可以是分布式文件系統(tǒng)中的其它節(jié)點(diǎn)。反向索引表也可以分為多個(gè)子表,分別存儲(chǔ)在多個(gè)節(jié)點(diǎn)上,換言之,反向索引表中的不同對(duì)象可能在不同的節(jié)點(diǎn)上。因此,步驟102中確定出的第一對(duì)象可能存儲(chǔ)在服務(wù)器上,也可能存儲(chǔ)在其他節(jié)點(diǎn)上,但是,根據(jù)第一對(duì)象的標(biāo)識(shí)可以毫無(wú)疑義地定位出第一對(duì)象。
[0089]步驟103:根據(jù)反向索引記錄在對(duì)象中的存儲(chǔ)位置與目錄項(xiàng)標(biāo)識(shí)的第二對(duì)應(yīng)關(guān)系,確定與第一目錄項(xiàng)標(biāo)識(shí)對(duì)應(yīng)的存儲(chǔ)位置為在第一對(duì)象中記錄第一反向索引記錄的第一位置。
[0090]具體的,在確定出用于存儲(chǔ)第一反向索引記錄的第一對(duì)象之后,還要確定出具體在第一對(duì)象的什么位置處寫(xiě)入第一反向索引記錄。本發(fā)明實(shí)施例中,針對(duì)一個(gè)目錄項(xiàng),其反向索引記錄在對(duì)象中的存儲(chǔ)位置與該目錄項(xiàng)的目錄項(xiàng)標(biāo)識(shí)相關(guān),即反向索引記錄在對(duì)象中的存儲(chǔ)位置與目錄項(xiàng)標(biāo)識(shí)滿(mǎn)足第二對(duì)應(yīng)關(guān)系。因此,只要知道目錄項(xiàng)的第一目錄項(xiàng)標(biāo)識(shí),即可根據(jù)第二對(duì)應(yīng)關(guān)系確定出唯一的一個(gè)存儲(chǔ)位置,該存儲(chǔ)位置即為在第一對(duì)象中記錄第一反向索引記錄的第一位置。
[0091]本發(fā)明實(shí)施例中,不限定第二對(duì)應(yīng)關(guān)系的具體形式,本領(lǐng)域技術(shù)人員可