專利名稱:基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及文件系統(tǒng)領(lǐng)域,特別涉及一種基于鍵值key-value存儲的分布式文件 系統(tǒng)元數(shù)據(jù)存儲管理方法。
背景技術(shù):
文件系統(tǒng)的元數(shù)據(jù)包括目錄和文件的元數(shù)據(jù),以及目錄結(jié)構(gòu)等。文件的元數(shù)據(jù)包 括文件名,權(quán)限,時間,文件大小,以及數(shù)據(jù)塊的分布等。目錄的元數(shù)據(jù)包括目錄名、權(quán) 限、時間等主要屬性,以及它所包含的子文件和子目錄等目錄結(jié)構(gòu)相關(guān)內(nèi)容。文件系統(tǒng)元數(shù) 據(jù)管理的一個難點是既要提供高效的元數(shù)據(jù)訪問,又要為元數(shù)據(jù)的修改提供靈活的接口。分布式文件系統(tǒng)因其海量存儲的優(yōu)勢,在互聯(lián)網(wǎng)領(lǐng)域正逐漸取代傳統(tǒng)的本地文件 系統(tǒng)。Ceph是典型的分布式文件系統(tǒng),其采用基于對象的分布式存儲集群(RADOS,Reliable Autonomic Distributed Object Storage)來存儲文件系統(tǒng)的元數(shù)據(jù);RADOS可以為C印h 提供可擴展、可靠的對象存儲,但是C^ph把目錄也作為一個單獨的對象,目錄的子對象的 關(guān)聯(lián)信息都存儲在目錄對象中;當很多進程并發(fā)地在Ceph的某個目錄中創(chuàng)建大量子對象 時,為了保證元數(shù)據(jù)的一致性,這些操作只能串行進行,造成系統(tǒng)性能瓶頸。key-value存儲可以為分布式文件系統(tǒng)元數(shù)據(jù)存儲管理帶來更好的擴展性,如果 要處理的數(shù)據(jù)持續(xù)增加,多加機器就可以了,不存在系統(tǒng)瓶頸問題。但是基于key-value存 儲的分布式文件系統(tǒng)元數(shù)據(jù)存儲管理會帶來一些新的挑戰(zhàn)分布式文件系統(tǒng)元數(shù)據(jù)的操作 一般涉及多個步驟,涉及多個key-value操作,而key-value存儲不支持多個key-value的 事務(wù)操作。因此如何保證在某個步驟中斷后,能夠通過一定的措施實現(xiàn)垃圾清理,保證元數(shù) 據(jù)的一致性,是一個需要解決的技術(shù)問題。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是如何提供一種基于鍵值key-value存儲的分布式文 件系統(tǒng)元數(shù)據(jù)管理方法,并且保證在對元數(shù)據(jù)的操作過程中,保持元數(shù)據(jù)的一致性。( 二)技術(shù)方案為解決上述技術(shù)問題,本發(fā)明提供一種基于鍵值key-value存儲的分布式文件系 統(tǒng)元數(shù)據(jù)管理方法,該方法包括以下步驟Sl 服務(wù)器存儲文件和目錄的元數(shù)據(jù),并以位圖的方式存儲目錄的子對象;所述 子對象包括子文件和子目錄;S2 對子對象的元數(shù)據(jù)進行修改操作;在進行所述修改操作之前,以所述子對象 的父目錄的目錄內(nèi)容標識dirhdl-ID和所述子對象的位圖索引構(gòu)造鍵key,以當前時間為 值value,記錄到操作日志中;S3 后臺進程定期掃描所述操作日志,對超時操作進行垃圾回收。
優(yōu)選地,所述服務(wù)器中存儲三個key-value表日志表log. tbl、元表meta.tbl和 目表 entry, tbl ;所述文件和目錄的元數(shù)據(jù)的基本屬性記錄,以及所述目錄的元數(shù)據(jù)的目錄內(nèi)容記 錄存儲在所述元表meta. tbl中;所述目錄與其子對象的關(guān)聯(lián)關(guān)系存儲在所述目表entry, tbl中。優(yōu)選地,所述文件的元數(shù)據(jù)的基本屬性記錄,以文件標識doc-ID為鍵key,以文件 的基本屬性信息為值value ;所述目錄的元數(shù)據(jù)的基本屬性記錄,以目錄標識dir-ID為鍵key,以目錄的基本 屬性信息為值value ;所述目錄的元數(shù)據(jù)的目錄內(nèi)容記錄,以目錄內(nèi)容標識dirhdl-ID為鍵key,以目錄 所包含的子對象的位圖結(jié)構(gòu)為值value。優(yōu)選地,所述目錄與其子對象的關(guān)聯(lián)關(guān)系包括所述目錄標識dir-ID與第一分割字符構(gòu)成鍵key,所述目錄內(nèi)容標識dirhdl-ID 為值value,兩者構(gòu)成第一關(guān)聯(lián);所述目錄內(nèi)容標識dirhdl-ID通過第二分割字符連接所述子對象的位圖索引構(gòu) 成鍵key,子對象標識和子對象名構(gòu)成值value,兩者構(gòu)成第二關(guān)聯(lián);所述目錄內(nèi)容標識dirhdl-ID通過第三分割字符連接所述子對象名構(gòu)成鍵key, 子對象位圖索引為值value,兩者構(gòu)成第三關(guān)聯(lián)。優(yōu)選地,所述步驟S2中,所述對子對象的元數(shù)據(jù)進行修改包括創(chuàng)建所述子對象 的元數(shù)據(jù)和刪除所述子對象的元數(shù)據(jù)。優(yōu)選地,創(chuàng)建所述子對象的元數(shù)據(jù)具體包括以下步驟S2. 1. 1 創(chuàng)建所述子對象的基本屬性記錄;如果所述子對象為目錄,創(chuàng)建其目錄 內(nèi)容記錄和第一關(guān)聯(lián);S2. 1.2 寫操作日志;S2. 1.3:創(chuàng)建所述第三關(guān)聯(lián)、第二關(guān)聯(lián),修改所述子對象的父目錄的目錄內(nèi)容記 錄;S2. 1.4 刪除操作日志。優(yōu)選地,刪除所述子對象的元數(shù)據(jù)具體包括以下步驟S2. 2. 1 寫操作日志;S2. 2. 2:修改所述子對象的父目錄的目錄內(nèi)容記錄,刪除所述第三關(guān)聯(lián)、第二關(guān) 聯(lián);S2. 2.3 刪除操作日志;S2. 2. 4 刪除所述子對象的基本屬性記錄;如果所述子對象為目錄,刪除其目錄 內(nèi)容記錄和第一關(guān)聯(lián)。優(yōu)選地,所述步驟S3中,所述垃圾回收具體包括以下步驟S3. 1. 1 修改所述父目錄的目錄內(nèi)容記錄;S3. 1. 2 解析所述操作日志中的鍵key,得到所述子對象標識和所述子對象名,刪
除所述第三關(guān)聯(lián)、第二關(guān)聯(lián);S3. 1. 3 刪除子對象的基本屬性記錄;如果所述子對象為目錄,解析得到其目錄
5內(nèi)容標識,刪除其目錄內(nèi)容記錄和第一關(guān)聯(lián);S3. 1. 4 從操作日志中刪除超時記錄。優(yōu)選地,所述步驟S2中,所述鍵key由第四分割字符連接所述父目錄的目錄內(nèi)容 標識dirhdl-ID和所述子對象的位圖索引構(gòu)成。優(yōu)選地,所述步驟S3中,判斷操作是否超時包括以下步驟S3. 0. 1 解析所述鍵key,得到操作時間opTime ;S3. 0. 2 用當前時間curTime減去所述操作時間opTime,判斷其差值是否大于超 時標準值timeout ;如果大于,則操作超時;否則,操作未超時。(三)有益效果本發(fā)明提供了一種基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)存儲管理 方法,其采用鍵值key-value存儲對分布式文件系統(tǒng)的元數(shù)據(jù)進行管理,具有比傳統(tǒng)分布 式文件系統(tǒng)更好的擴展性。同時,其采用日志記錄和垃圾回收的管理模式,在對元數(shù)據(jù)修改 過程中,保持了元數(shù)據(jù)的一致性。
圖1是本發(fā)明實施例所述基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)存儲 管理方法流程圖;圖2是本發(fā)明實施例所述基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)存儲 結(jié)構(gòu)圖;圖3是本發(fā)明實施例所述創(chuàng)建子對象過程數(shù)據(jù)結(jié)構(gòu)圖;圖4是本發(fā)明實施例所述刪除子對象過程數(shù)據(jù)結(jié)構(gòu)圖;圖5是本發(fā)明實施例所述垃圾回收過程數(shù)據(jù)結(jié)構(gòu)圖。
具體實施例方式下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進一步詳細描述。以下實施 例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。圖1是本發(fā)明實施例所述基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理 方法流程圖,如圖1所示,該方法包括以下步驟Sl 服務(wù)器存儲文件和目錄的元數(shù)據(jù),并以位圖的方式存儲目錄的子對象;所述 子對象包括子文件和子目錄。S2 對子對象的元數(shù)據(jù)進行修改操作;在進行所述修改操作之前,以所述子對象 的父目錄的目錄內(nèi)容標識dirhdl-ID和所述子對象的位圖索引構(gòu)造鍵key,以當前時間為 值value,記錄到操作日志中。所述鍵key和值value作為日志記錄存儲在所述服務(wù)器的日 志表log. tbl中。S3 后臺進程定期掃描所述操作日志,對超時操作進行垃圾回收。本發(fā)明實施例的方法采用鍵值key-value存儲,對分布式文件系統(tǒng)的元數(shù)據(jù)進行 管理,其具有比傳統(tǒng)分布式文件系統(tǒng)更好的擴展性。同時,步驟S2中的日志記錄和步驟S3 中的垃圾回收,保證了在對元數(shù)據(jù)修改過程中,始終保持元數(shù)據(jù)的一致性。圖2是本發(fā)明實施例所述基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)存儲結(jié)構(gòu)圖,如圖2所示,其表示目錄I包括目錄b和文件c。所述服務(wù)器中存儲三個key-value 表日志表log. tbl、元表meta. tbll和目表entry. tbl2。目錄I、目錄b和文件c的元數(shù)據(jù) 的基本屬性記錄,以及目錄I和目錄b的元數(shù)據(jù)的目錄內(nèi)容記錄存儲在元表meta. tbll中。 目錄I與目錄b、文件c的關(guān)聯(lián)關(guān)系存儲在所述目表entry. tbl2中。文件c的元數(shù)據(jù)的基本屬性記錄中,鍵key為5,值value為文件c的基本屬性信 息;所述文件的基本屬性信息包括訪問權(quán)限、創(chuàng)建時間、訪問時間和內(nèi)容分布等信息。目錄I的元數(shù)據(jù)的基本屬性記錄,鍵key為1,值value為目錄I的基本屬性信息; 所述目錄的基本屬性信息包括訪問權(quán)限、創(chuàng)建時間、訪問時間等信息。目錄I的元數(shù)據(jù)的目錄內(nèi)容記錄,鍵key為2,值value為目錄I所包含的子對象 的位圖結(jié)構(gòu)。圖2中目錄I的位圖結(jié)構(gòu)[1100...]中置位為1的兩位分別對應(yīng)目錄b和文 件C。目錄I與其子對象目錄b和文件c的關(guān)聯(lián)關(guān)系包括目錄I的目錄標識dir-ID即1與第一分割字符“$”構(gòu)成鍵key,目錄I的目錄內(nèi) 容標識dirhdl-ID即2為值value,兩者構(gòu)成第一關(guān)聯(lián),對應(yīng)圖2目表entry, tbl 2中記錄 <1+ “$”,2>。所述第一分割字符還可以為“*”、“#”、“<§”等其他字符,但是其必須區(qū)分于本 發(fā)明實施例的其他特殊字符。目錄I的目錄內(nèi)容標識dirhdl-ID即2通過第二分割字符連接所述子對象目 錄b的位圖索引即0構(gòu)成鍵key,目錄b的目錄標識dir-ID即3和目錄b的名稱“b”構(gòu)成 值value,兩者構(gòu)成第二關(guān)聯(lián),對應(yīng)圖2目表entry, tbl 2中記錄<2+ +0,{3,“b”}>。 所述第二分割字符還可以為“*”、“#”、“$”等其他字符,但是其必須區(qū)分于本發(fā)明實施例的 其他特殊字符。目錄I的目錄內(nèi)容標識dirhdl-ID即2通過第三分割字符“#”連接子對象目錄b 的名稱“b”構(gòu)成鍵key,目錄b的位圖索引即0為值value,兩者構(gòu)成第三關(guān)聯(lián),對應(yīng)圖2目 表entry, tbl 2中記錄<2+ “#,,+ “b”,0>。所述第三分割字符還可以為“*”、“<§”、“$”等其 他字符,但是其必須區(qū)分于本發(fā)明實施例的其他特殊字符。優(yōu)選地,所述步驟S2中,所述對子對象的元數(shù)據(jù)進行修改包括創(chuàng)建所述子對象 的元數(shù)據(jù)和刪除所述子對象的元數(shù)據(jù)。圖3是本發(fā)明實施例所述創(chuàng)建子對象過程數(shù)據(jù)結(jié)構(gòu)圖,如圖3所示,創(chuàng)建目錄I的 子對象目錄b的元數(shù)據(jù)具體包括以下步驟S2,· 1. 1 創(chuàng)建目錄b的基本屬性記錄;如表格1中StepCl ;圖3中元表meta. tbl 1 增加記錄 <3,{DIR. . . }>0創(chuàng)建目錄b的目錄內(nèi)容記錄和其第一關(guān)聯(lián);如表格1中乂印02和乂印03 ;對應(yīng) 圖3中元表meta. tbl 1增加記錄<4,ROOOO. ..]}>,圖3中目表entry, tbl 2增加記錄 <3+ “$”,4>。S2,· 1. 2 寫操作日志;如表格1中St印C4 ;對應(yīng)圖3中日志表log. tbl3中增加 記錄 <2+ “"”+0,curTime〉。S2’. 1. 3 創(chuàng)建所述第三關(guān)聯(lián)、第二關(guān)聯(lián),修改目錄I的目錄內(nèi)容記錄;如表格1中 St印C5 St印C7 ;對應(yīng)圖 3 中目表 entry, tbl 2 增加記錄 <2+“#”+“b”,0> 和 <2+“@,,+0, {3,“b”}>,元表 meta. tbll 中修改記錄 <2,{
}> 為 <2,{[1000. ··]}>。
S2,· 1. 4 刪除操作日志;如表格1中St印C8 ;對應(yīng)圖3中日志表log. tbl 3中刪 除記錄<2+ “~”+0,curTime〉,恢復(fù)至創(chuàng)建操作前的狀態(tài)。表1創(chuàng)建子對象的元數(shù)據(jù)相關(guān)步驟
StepCl put(3, Attrs) in meta.tbl; StepC2: put(4,
) in meta. tbl; StepC3: put(3+ "$ ", 4) in entry, tbl;
StepC4: put(2+ "A"+0, curTime) in log. tbl;
StepC5: put(2+ "# "+/name, 0) in entry, tbl; //fname = "b “ StepC6: put(2+ "@ "+ 0, {3, fname}) in entry, tbl; StepC7: put(2,[1000...]) in meta. tbl;
StepC8: remove(2+ "A"+0) in log. tbl;圖4是本發(fā)明實施例所述刪除子對象過程數(shù)據(jù)結(jié)構(gòu)圖,如圖4所示,刪除目錄I的 子對象目錄b的元數(shù)據(jù)具體包括以下步驟S2,. 2. 1 寫操作日志;如表格2中乂印1 0 乂印附;對應(yīng)圖4中日志表log. tbl 3中增加記錄<2+ “~,,+0,curTime〉。步驟用于根據(jù)目錄I的目錄內(nèi)容標識 dirhdl-ID即2與被刪除子對象目錄b的文件名為鍵key查詢目表entry, tbl 2,以獲得目 錄b的位圖索弓丨,其索引值為0。S2’. 2. 2 修改所述目錄I的目錄內(nèi)容記錄,刪除所述第二關(guān)聯(lián)、第三關(guān)聯(lián);如表格 2中St印R2M印R4 ;對應(yīng)圖4中目表entry, tbl 2刪除記錄<2+“#”+“b”,0>和<2+“@”+0, {3,“b”}>,元表 meta. tbll 中修改記錄 <2,{[1000. · · ]}> 為 <2,{
}>。S2,· 2. 3 刪除操作日志;如表格2中St印R5 ;對應(yīng)圖4中日志表log. tbl 3中刪 除記錄<2+ “~”+0,curTime〉,恢復(fù)至刪除操作前的狀態(tài)。S2’ .2. 4:刪除目錄b的基本屬性記錄、目錄內(nèi)容記錄和第一關(guān)聯(lián);如表格2中 StepR6StepR8 ;對應(yīng)圖 3 中目表 entry, tbl 2 刪除記錄 <3+ “$”,4>,圖 3 中元表 meta. tbl 1 刪除記錄 <4,_00···]}> 和 <3,{DIR.··}〉。表2刪除子對象的元數(shù)據(jù)相關(guān)步驟StepRO idx= get(2+ "# "+fname) in entry.tbl; #idx==0; StepRl: put(2+ "Λ"+0, curTime) in log.tbl;
StepR2: put(2,
) in meta.tbl
StepR3: remove(2+ ”# ” +fname) in entry, tbl; //fname = “b “ StepR4: remove(2+ "@"+0) in entry.tbl
StepR5: remove(2+ ”Λ ”+0) in log. tbl
StepR6: remove(3+,$,) in entry.tbl; StepR7: remove(4) in meta.tbl; StepR8: remove⑶ in meta.tbl;圖5是本發(fā)明實施例所述垃圾回收過程數(shù)據(jù)結(jié)構(gòu)圖,如圖5所示,假設(shè)創(chuàng)建目錄I的子對象目錄b過程超時,其垃圾回收過程具體包括以下步驟S3,· 1. 1 修改目錄I的目錄內(nèi)容記錄;如表格3中Stepl ;對應(yīng)圖5中元表meta. tbl 1 中修改記錄 <2,{[1000. · · ]}> 為 <2,{
}>。S3’. 1. 2 解析操作日志中的鍵key,得到目錄b的目錄標識dir-ID即3和其名稱 “b”,刪除所述第三關(guān)聯(lián)、第二關(guān)聯(lián);如表格3中乂印2 乂印3 ;對應(yīng)圖5中目表entry, tbl 2 刪除記錄 <2+ “#,,+ “b”,0> 和 <2+ “@”+0,{3,“b”}>。S3' . 1.3 解析得到目錄b的目錄內(nèi)容標識dirhdl-ID即4,刪除目錄b的目錄 內(nèi)容記錄,刪除其第一關(guān)聯(lián)和基本屬性記錄;如表格3中St印4 乂印7 ;對應(yīng)圖5中元表 meta. tbl 1 中刪除記錄 <4,{
}> 和 <3,{DIR. . . }>,目表 entry, tbl 2 中刪除記錄 <3+ “$”,4>。S3,· 1.4 從操作日志中刪除超時記錄;如表格3中乂印8 ;對應(yīng)圖5中日志表log. tbl 3 中刪除記錄 <2+ “"”+0,timestamp〉。表3垃圾回收過程相關(guān)步驟
權(quán)利要求
1.一種基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法,其特征在于,所 述方法包括以下步驟51服務(wù)器存儲文件和目錄的元數(shù)據(jù),并以位圖的方式存儲目錄的子對象;所述子對 象包括子文件和子目錄;52對子對象的元數(shù)據(jù)進行修改操作;在進行所述修改操作之前,以所述子對象的父 目錄的目錄內(nèi)容標識dirhdl-ID和所述子對象的位圖索引構(gòu)造鍵key,以當前時間為值 value,記錄到操作日志中;53后臺進程定期掃描所述操作日志,對超時操作進行垃圾回收。
2.如權(quán)利要求1所述的基于key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法,其特 征在于,所述服務(wù)器中存儲三個key-value表日志表log. tbl、元表meta. tbl和目表entry.tbl ;所述文件和目錄的元數(shù)據(jù)的基本屬性記錄,以及所述目錄的元數(shù)據(jù)的目錄內(nèi)容記錄存 儲在所述元表meta. tbl中;所述目錄與其子對象的關(guān)聯(lián)關(guān)系存儲在所述目表entry, tbl中。
3.如權(quán)利要求2所述的基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法, 其特征在于,所述文件的元數(shù)據(jù)的基本屬性記錄,以文件標識doc-ID為鍵key,以文件的基本屬性 信息為值value ;所述目錄的元數(shù)據(jù)的基本屬性記錄,以目錄標識dir-ID為鍵key,以目錄的基本屬性 信息為值value ;所述目錄的元數(shù)據(jù)的目錄內(nèi)容記錄,以目錄內(nèi)容標識dirhdl-ID為鍵key,以目錄所包 含的子對象的位圖結(jié)構(gòu)為值value。
4.如權(quán)利要求2所述的基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法, 其特征在于,所述目錄與其子對象的關(guān)聯(lián)關(guān)系包括所述目錄標識dir-ID與第一分割字符構(gòu)成鍵key,所述目錄內(nèi)容標識dirhdl-ID為值 value,兩者構(gòu)成第一關(guān)聯(lián);所述目錄內(nèi)容標識dirhdl-ID通過第二分割字符連接所述子對象的位圖索引構(gòu)成鍵 key,子對象標識和子對象名構(gòu)成值value,兩者構(gòu)成第二關(guān)聯(lián);所述目錄內(nèi)容標識dirhdl-ID通過第三分割字符連接所述子對象名構(gòu)成鍵key,子對 象位圖索引為值value,兩者構(gòu)成第三關(guān)聯(lián)。
5.如權(quán)利要求4所述的基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法, 其特征在于,所述步驟S2中,所述對子對象的元數(shù)據(jù)進行修改包括創(chuàng)建所述子對象的元數(shù)據(jù)和刪除所述子對象的 元數(shù)據(jù)。
6.如權(quán)利要求5所述的基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法, 其特征在于,創(chuàng)建所述子對象的元數(shù)據(jù)具體包括以下步驟S2. 1. 1 創(chuàng)建所述子對象的基本屬性記錄;如果所述子對象為目錄,創(chuàng)建其目錄內(nèi)容 記錄和第一關(guān)聯(lián);S2. 1. 2 寫操作日志;S2. 1. 3 創(chuàng)建所述第三關(guān)聯(lián)、第二關(guān)聯(lián),修改所述子對象的父目錄的目錄內(nèi)容記錄;S2. 1.4 刪除操作日志。
7.如權(quán)利要求5所述的基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法, 其特征在于,刪除所述子對象的元數(shù)據(jù)具體包括以下步驟S2. 2. 1 寫操作日志;S2. 2. 2 修改所述子對象的父目錄的目錄內(nèi)容記錄,刪除所述第三關(guān)聯(lián)、第二關(guān)聯(lián);S2. 2. 3 刪除操作日志;52.2. 4 刪除所述子對象的基本屬性記錄;如果所述子對象為目錄,刪除其目錄內(nèi)容 記錄和第一關(guān)聯(lián)。
8.如權(quán)利要求5所述的基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法, 其特征在于,所述步驟S3中,所述垃圾回收具體包括以下步驟53.1. 1 修改所述父目錄的目錄內(nèi)容記錄;S3. 1.2 解析所述操作日志中的鍵key,得到所述子對象標識和所述子對象名,刪除所 述第三關(guān)聯(lián)、第二關(guān)聯(lián);S3. 1. 3 刪除子對象的基本屬性記錄;如果所述子對象為目錄,解析得到其目錄內(nèi)容 標識,刪除其目錄內(nèi)容記錄和第一關(guān)聯(lián);S3. 1.4:從操作日志中刪除超時記錄。
9.如權(quán)利要求1所述的基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法, 其特征在于,所述步驟S2中,所述鍵key由第四分割字符連接所述父目錄的目錄內(nèi)容標識 dirhdl-ID和所述子對象的位圖索引構(gòu)成。
10.如權(quán)利要求1所述的基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法, 其特征在于,所述步驟S3中,判斷操作是否超時包括以下步驟S3. 0. 1 解析所述鍵key,得到操作時間opTime ;S3. 0. 2 用當前時間curTime減去所述操作時間opTime,判斷其差值是否大于超時標 準值timeout ;如果大于,則操作超時;否則,操作未超時。
全文摘要
本發(fā)明公開了一種基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)管理方法,主要涉及文件系統(tǒng)領(lǐng)域。該方法包括以下步驟服務(wù)器存儲文件和目錄的元數(shù)據(jù),并以位圖的方式存儲目錄的子對象;對子對象的元數(shù)據(jù)進行修改操作;后臺進程定期掃描所述操作日志,對超時操作進行垃圾回收。本發(fā)明的基于鍵值key-value存儲的分布式文件系統(tǒng)元數(shù)據(jù)存儲管理方法,具有比傳統(tǒng)分布式文件系統(tǒng)更好的擴展性。同時,其采用日志記錄和垃圾回收的管理模式,在對元數(shù)據(jù)修改過程中,保持了元數(shù)據(jù)的一致性。
文檔編號G06F17/30GK102110146SQ201110039269
公開日2011年6月29日 申請日期2011年2月16日 優(yōu)先權(quán)日2011年2月16日
發(fā)明者劉松彬, 楊廣文, 黃小猛 申請人:清華大學(xué)