用于在存儲系統(tǒng)上存取文件的方法和系統(tǒng)的制作方法【專利摘要】本公開提供一種用于在存儲系統(tǒng)上存取文件的方法和系統(tǒng)。本方法包括建構(gòu)哈希存儲器表,其中哈希存儲器表包含分別對應(yīng)于多個索引哈希碼的多個哈希存儲桶,每一哈希存儲桶具有指向至少一個存儲盒的指針,每一存儲盒具有物理地址欄位和哈希碼欄位。物理地址欄位分別記錄存儲文件的物理地址,且哈希碼欄位分別記錄對應(yīng)于文件的驗證哈希碼。其中索引哈希碼是通過將文件的金鑰輸入到索引哈希函數(shù)來產(chǎn)生的,且驗證哈希碼是通過將文件的金鑰輸入到驗證哈希函數(shù)來產(chǎn)生的。本方法包括還包括使用以存儲桶為基礎(chǔ)的替代策略將哈希存儲器表載入到緩沖器中,使得文件能夠根據(jù)哈希存儲器表來進(jìn)行存取?!緦@f明】用于在存儲系統(tǒng)上存取文件的方法和系統(tǒng)【
技術(shù)領(lǐng)域:
】[0001]本公開涉及一種用于在存儲系統(tǒng)上存取文件的方法和系統(tǒng)?!?br>背景技術(shù):
】[0002]元數(shù)據(jù)(字面上稱為“關(guān)于數(shù)據(jù)的數(shù)據(jù)”)已被廣泛用于組織信息。元數(shù)據(jù)的建立和管理主要是從事編目錄、分類和編索引的信息專業(yè)人員的職責(zé)。隨著信息已變得越來越計算機化和數(shù)字化,元數(shù)據(jù)已包含在數(shù)據(jù)管理系統(tǒng)和管理功能的管理和互通性中。舉例來說,文件的元數(shù)據(jù)指定描述文件的一系列屬性,例如按字節(jié)計的大小、路徑、最后修改時間、擁有者、可存取性等等。[0003]當(dāng)今,例如云端存儲服務(wù)(cloudstorageservice)等許多網(wǎng)絡(luò)服務(wù)需要在數(shù)據(jù)庫系統(tǒng)對文件執(zhí)行各種操作時管理并維護(hù)元數(shù)據(jù)。由于大多數(shù)數(shù)據(jù)庫系統(tǒng)未在操作隨機性方面得到優(yōu)化,因此具有密集低空間和時間局部性要求(intensivelowspatialandtemporallocalityrequest)的操作(例如在云端系統(tǒng)(cloudsystem)上讀取、寫入、刪除或更新文件)限制了磁盤調(diào)度靈活性且導(dǎo)致緩沖存儲器(buffermemory)的低效使用。隨著元數(shù)據(jù)的數(shù)目不斷增加,輸入/輸出(input/output,1/0)速度相應(yīng)地減小且整體性能進(jìn)而受到顯著限制。一般的元數(shù)據(jù)存取方法在面對具有低存取局部性的更新密集型輸入工作負(fù)荷時受到嚴(yán)重挑戰(zhàn)。因此,如何減少磁盤1/0操作以云端存儲系統(tǒng)或其它網(wǎng)絡(luò)服務(wù)的效能是此領(lǐng)域技術(shù)人員所致力的目標(biāo)?!?br/>發(fā)明內(nèi)容】[0004]本公開實施例提供一種用于在具有緩沖器和磁盤的存儲系統(tǒng)上存取文件的方法。所述方法包括建構(gòu)哈希存儲器表,其中所述哈希存儲器表具有分別對應(yīng)于多個索引哈希碼的多個哈希存儲桶,每一哈希存儲桶具有指向至少一個存儲盒的指針,每一存儲盒具有物理地址欄位和哈希碼欄位,所述物理地址欄位分別記錄存儲所述文件的物理地址,且所述哈希碼欄位分別記錄對應(yīng)于所述文件的驗證哈希碼。所述索引哈希碼是通過將所述文件的金鑰輸入到索引哈希函數(shù)來產(chǎn)生的,且所述驗證哈希碼是通過將所述文件的所述金鑰輸入到驗證哈希函數(shù)來產(chǎn)生的。所述方法還包含使用以存儲桶為基礎(chǔ)的替代策略將所述哈希存儲器表載入到所述緩沖器中,且根據(jù)載入到所述緩沖器中的所述哈希存儲器表來存取所述文件。[0005]本公開實施例亦提供另一種用于在具有緩沖器和磁盤的存儲系統(tǒng)上存取文件的方法。所述方法包括:建構(gòu)用于記錄所述文件的元數(shù)據(jù)的哈希存儲器表;在將所述文件寫入到所述磁盤中的同時,將所述文件的邏輯文件名嵌入到所述磁盤中的存儲所述文件的物理地址中;使用以存儲桶為基礎(chǔ)的替代策略將所述哈希存儲器表載入到所述緩沖器中;以及根據(jù)載入到所述緩沖器中的所述哈希存儲器表和嵌入到所述磁盤的物理地址中的所述邏輯文件名來存取所述文件。[0006]本公開實施例提供一種存儲系統(tǒng),其包括微處理器、緩沖器、磁盤和元數(shù)據(jù)管理單元。所述緩沖器和所述磁盤分別耦接至所述微處理器。所述元數(shù)據(jù)管理單元耦接至所述微處理器且用以建構(gòu)哈希存儲器表,所述哈希存儲器表包含分別對應(yīng)于多個索引哈希碼的多個哈希存儲桶。每一哈希存儲桶具有指向至少一個存儲盒的指針,每一存儲盒具有物理地址欄位和哈希碼欄位,物理地址欄位分別記錄存儲文件的物理地址,且所述哈希碼欄位分別記錄對應(yīng)于所述文件的驗證哈希碼。所述索引哈希碼是通過將所述文件的金鑰輸入到索引哈希函數(shù)來產(chǎn)生的,且所述驗證哈希碼是通過將所述文件的所述金鑰輸入到驗證哈希函數(shù)來產(chǎn)生的。所述元數(shù)據(jù)管理單元還用以使用以存儲桶為基礎(chǔ)的替代策略將所述哈希存儲器表載入到所述緩沖器中且根據(jù)載入到所述緩沖器中的所述哈希存儲器表來存取所述文件。[0007]本公開實施例提供另一種存儲系統(tǒng),其包含微處理器、緩沖器、磁盤和元數(shù)據(jù)管理單元。所述緩沖器和所述磁盤分別耦接至所述微處理器。所述元數(shù)據(jù)管理單元耦接至所述微處理器且用以建構(gòu)用于記錄所述文件的元數(shù)據(jù)的哈希存儲器表。所述元數(shù)據(jù)管理單元還用以在將所述文件寫入到所述磁盤中的同時,將所述文件的邏輯文件名嵌入到所述磁盤中的存儲所述文件的物理地址中。所述元數(shù)據(jù)管理單元還用以使用以存儲桶為基礎(chǔ)的替代策略將所述哈希存儲器表載入到所述緩沖器中,且根據(jù)載入到所述緩沖器中的所述哈希存儲器表和嵌入到所述磁盤的物理地址中的所述邏輯文件名來存取所述文件。[0008]為讓本公開的上述特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合附圖作詳細(xì)說明如下?!緦@綀D】【附圖說明】[0009]圖1為根據(jù)本公開一實施例的存儲系統(tǒng)的方塊圖。[0010]圖2為根據(jù)圖1實施例中的哈希存儲器表(hashmemorytable)的示意性方塊圖。[0011]圖3為說明根據(jù)本公開一實施例的用于存取磁盤中的文件的方法的流程圖。[0012]圖4為說明根據(jù)本公開一實施例的用于當(dāng)將新文件寫入到磁盤中時更新哈希存儲器表的方法的流程圖。[0013]圖5為說明根據(jù)本公開一實施例的用于當(dāng)執(zhí)行文件讀取請求時更新哈希存儲器表的方法的流程圖。[0014]圖6為說明根據(jù)本公開一實施例的用于當(dāng)從磁盤刪除文件時更新哈希存儲器表的方法的流程圖。[0015]圖7為說明根據(jù)本公開一實施例的用于當(dāng)將文件移動到另一物理地址時更新哈希存儲器表的方法的流程圖。[0016]圖8為說明根據(jù)本公開一實施例的用于當(dāng)將當(dāng)機恢復(fù)請求(crash-recoveryrequest)發(fā)送到元數(shù)據(jù)管理單元時恢復(fù)哈希存儲器表的方法的流程圖。[0017]【主要元件符號說明】[0018]50:用戶端計算機[0019]100:存儲系統(tǒng)[0020]105:主要服務(wù)器[0021]110:微處理器[0022]120:緩沖器[0023]130:磁盤[0024]132:文件系統(tǒng)[0025]140:元數(shù)據(jù)管理單元[0026]142:哈希存儲器表[0027]144:元數(shù)據(jù)數(shù)據(jù)庫[0028]146:控制模塊[0029]150:備用服務(wù)器[0030]152:副本[0031]201:金鑰[0032]202:索引哈希函數(shù)[0033]203:第一搜索哈希碼[0034]204:驗證哈希函數(shù)[0035]205:第二搜索哈希碼[0036]210:哈希存儲桶[0037]211:索引哈希碼[0038]212:存儲盒數(shù)目[0039]213:指針[0040]220:存儲盒[0041]221:物理地址欄位[0042]222:哈希碼欄位[0043]230:陣列[0044]S301、S302、S303:存取磁盤中的文件的步驟[0045]S401、S402、S403、S404、S405、S406、S407、S408、S409、S410:當(dāng)將新文件寫入到磁盤中時更新哈希存儲器表的步驟[0046]S510、S502、S503、S504、S505、S506、S507、S508、S509、S510、S511、S512:當(dāng)執(zhí)行文件讀取請求時更新哈希存儲器表的步驟[0047]S601、S602、S603、S604、S605、S606、S607、S608、S609、S610、S611、S612、S613、S614、S615、S616:當(dāng)從磁盤刪除文件時更新哈希存儲器表的步驟[0048]S701、S702、S703、S704、S705、S706、S707、S708、S709、S710、S711、S712、S713:當(dāng)將文件更新到另一物理地址時更新哈希存儲器表的步驟[0049]S801、S802、S803、S804、S805、S806:當(dāng)向元數(shù)據(jù)管理單元發(fā)送當(dāng)機恢復(fù)請求時恢復(fù)哈希存儲器表的步驟【具體實施方式】[0050]為讓本公開的上述特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合附圖作詳細(xì)說明如下。范例實施例范例實施例在任何可能之處,將相同的參考標(biāo)號用于圖式和描述中來指代相同或相似的部分。[0051]圖1為根據(jù)本公開一實施例的存儲系統(tǒng)的方塊圖。[0052]請參照圖1,存儲系統(tǒng)100包含主要服務(wù)器(mainserver)105和備用服務(wù)器(backupserer)150。存儲系統(tǒng)100可被實作為云端系統(tǒng)的一部分,但本公開并不限于此??蛻艨赏ㄟ^例如鍵盤等輸入裝置或例如鼠標(biāo)、軌跡球或觸摸墊等指向裝置將命令輸入到用戶端計算機50中,進(jìn)而將文件存儲到存儲系統(tǒng)100中或從存儲系統(tǒng)100中讀取文件。[0053]主要服務(wù)器105包括微處理器110、緩沖器120、磁盤130和元數(shù)據(jù)管理單元140。緩沖器120、磁盤130和元數(shù)據(jù)管理單元140分別耦接至微處理器110,且備用服務(wù)器150耦接至元數(shù)據(jù)管理單元140。[0054]微處理器110可為專用或?qū)iT的微處理器,其用以通過執(zhí)行機器可讀軟件碼語言來執(zhí)行特定任務(wù),其中所述機器可讀軟件碼語言定義與用以通過與存儲系統(tǒng)100的其它元件通信來實行例如文件讀取、文件寫入、文件刪除、文件更新或元數(shù)據(jù)數(shù)據(jù)庫恢復(fù)等功能操作的操作有關(guān)的功能。[0055]緩沖器120用以暫存頻繁存儲和檢索的數(shù)據(jù)。例如,緩沖器120可為隨機存取存儲器(randomaccessmemory,RAM)、靜態(tài)隨機存取存儲器(staticrandomaccessmemory,SRAM)或動態(tài)隨機存取存儲器(dynamicrandomaccessmemory,DRAM)等較快速的存儲器,其用以存儲暫時數(shù)據(jù)以獲得快速得多的存取時間。[0056]磁盤130用于存儲和檢索文件。舉例來說,磁盤130可為硬盤驅(qū)動器(harddiskdrive,HDD)或固態(tài)驅(qū)動器(solidstatedrive,SSD)。磁盤130包括用以存儲和組織計算機文件及其所含有的數(shù)據(jù)的抽象物(abstraction)的文件系統(tǒng)132,,且用以將多個文件組織為單個字節(jié)流、陣列、連結(jié)清單或其它數(shù)據(jù)結(jié)構(gòu)。[0057]元數(shù)據(jù)管理單元140用以將存儲在磁盤130中的文件的所有元數(shù)據(jù)記錄于緩沖器120中且根據(jù)所記錄的元數(shù)據(jù)存取所述文件。舉例來說,元數(shù)據(jù)管理單元140包含哈希存儲器表142、元數(shù)據(jù)數(shù)據(jù)庫144和控制模塊146。在范例實施例中,控制模塊146由多個模塊組成且用以建構(gòu)或維護(hù)哈希存儲器表142以用于記錄文件的元數(shù)據(jù),且還將哈希存儲器表142載入到緩沖器120中以及將哈希存儲器表142中所記錄的信息存儲到元數(shù)據(jù)數(shù)據(jù)庫144中。在另一范例實施例中,元數(shù)據(jù)管理單元140(或控制模塊146)還用以將元數(shù)據(jù)數(shù)據(jù)庫的副本152備份到備用服務(wù)器150中。[0058]哈希技術(shù)(hashingtechnique)廣泛用于計算機硬件和軟件系統(tǒng)中,例如,其適于允許元數(shù)據(jù)等大量元素的動態(tài)成長和縮小,因此僅對所存儲元素的數(shù)目有極少的限制。舉例來說,對應(yīng)于一個文件的元數(shù)據(jù)的大小可高達(dá)256字節(jié),其中元數(shù)據(jù)可含有文件的用戶名、完整路徑和文件名。如果在存儲系統(tǒng)100上存在10億個文件,則所有元數(shù)據(jù)將需要多達(dá)256GB存儲空間來存儲且其可能致使存儲器不足。哈希是涉及從金鑰(key)計算哈希碼(hashcode)且使用哈希碼來在表中查找匹配。計算哈希碼的函數(shù)被稱為哈希函數(shù)(hashfunction)并且非常適合于在元數(shù)據(jù)存儲和檢索中加速查表或數(shù)據(jù)比對工作且因此在文件存儲和檢索中加速工作。哈希存儲器表實施方案的效率取決于所使用的哈希函數(shù)。[0059]圖2為根據(jù)本公開圖1實施例中的哈希存儲器表142的示意性方塊圖。[0060]請參照圖2,哈希存儲器表142包括多個哈希存儲桶(hashbucket)210。每一個哈希存儲桶210包括多則信息,每一信息是由索引哈希碼(indexhashcode)211、存儲盒數(shù)目212和指針(pointer)213組成。[0061]索引哈希碼211為用于在磁盤130中識別文件以管理文件的信息。例如,索引哈希碼211為4個字節(jié)。指針213指向至少一個存儲盒220,其中同一指針?biāo)鶇⒖嫉拇鎯?20形成陣列230。例如,每一指針213為8個字節(jié)。存儲盒數(shù)目212記錄對應(yīng)陣列230內(nèi)的存儲盒220的數(shù)目。[0062]每一存儲盒220包括物理地址欄位(physicaladdressfield)221和哈希碼欄位(hashcodefield)222。每一物理地址欄位221分別記錄存儲文件的物理地址。物理地址欄位221中的物理地址可為索引節(jié)編號(inodenumber),其包含指向其中存儲所述文件的塊的指針。此外,物理地址還可為以二進(jìn)位數(shù)字字或十六進(jìn)位數(shù)字的形式表示的塊編號。例如,每一物理地址欄位221為6個字節(jié)。哈希碼欄位222分別記錄對應(yīng)于所述文件的驗證哈希碼(verificationhashcode)。例如,哈希碼欄位222為4個字節(jié)。此外,每一還可包括例如最近修改日期、版本、存取權(quán)、目錄旗標(biāo)等其它信息。[0063]索引哈希碼211和哈希碼欄位222中的驗證哈希碼是通過使用哈希函數(shù)來計算。在本范例實施例中,索引哈希碼211和記錄在哈希碼欄位222中的驗證哈希碼是通過將金鑰201分別輸入到索引哈希函數(shù)202和驗證哈希函數(shù)204中來產(chǎn)生,其中金鑰201是對應(yīng)于欲存儲到磁盤130中的文件。舉例來說,每一金鑰可含有對應(yīng)于文件的邏輯文件名的文字串。當(dāng)進(jìn)行文件存取操作時,對應(yīng)于欲存取的文件的金鑰201會被輸入至索引哈希函數(shù)202和驗證哈希函數(shù)204以分別產(chǎn)生第一搜索哈希碼(searchhashcode)203和第二搜索哈希碼205。接著分別將第一搜索哈希碼203和第二搜索哈希碼205與索引哈希碼211和哈希碼欄位222中所記錄的驗證哈希碼進(jìn)行比較以進(jìn)行文件識別。[0064]此外,索引哈希函數(shù)202和驗證哈希函數(shù)204為不同的哈希函數(shù),這可減小在產(chǎn)生哈希碼時發(fā)生碰撞(collosion)的機率。具體來說,當(dāng)實作內(nèi)容可定址存儲的系統(tǒng)含有兩個具有不同內(nèi)容但具有相同哈希碼的文件時會發(fā)生哈希碰撞。哈希存儲器表的原理是將可能無限大的元素集合分割為有限數(shù)目的哈希碼。不同金鑰的哈希碼的相依性在較佳的情況下應(yīng)為非明顯。在使用良好的哈希函數(shù)下,金鑰中的所有位會影響所產(chǎn)生的哈希碼。例如,索引哈希函數(shù)202為Murmur3哈希函數(shù),其能夠有效地產(chǎn)生32位哈希值且實現(xiàn)具有最小重復(fù)頻率的較好分布。例如,驗證哈希函數(shù)204可為FNVlA哈希函數(shù),其以32、64、128、256、512和1024位格式來呈現(xiàn)且易于實施??衫斫獾氖?,當(dāng)全部存儲桶的數(shù)目為10億時,發(fā)生四次以上碰撞的機率小于0.30%。雖然與全部存儲桶的大小相比所述機率相對較低,但稍后將解釋范例實施例如何解決此問題。[0065]此外,需注意的是,當(dāng)將額外存儲盒插入到哈希存儲器表中時,其可能導(dǎo)致整個存儲器耗盡。在本范例實施例中,緩沖器會使用以存儲桶為基礎(chǔ)的替代策略(bucket-basedreplacementpolicy)來選擇最少存取的存儲桶中的至少一個來收回,直到緩沖器的存儲器足以用于所述額外存儲盒為止。所述替代策略為以存儲桶為基礎(chǔ),且可不為以存儲盒為基礎(chǔ),由此保證用于比較第二搜索哈希碼的正確性。例如,此程序還可在存儲器使用率大于(例如)90%時進(jìn)行。[0066]圖3為說明根據(jù)本公開一實施例的用于存取磁盤中的文件的方法的流程圖。[0067]請參照圖3,在本范例實施例中,元數(shù)據(jù)管理單元140(或控制模塊146)會建構(gòu)哈希存儲器表142(步驟S301)。接著,元數(shù)據(jù)管理單元140(或控制模塊146)將哈希存儲器表142載入到緩沖器120中(步驟S302)。并且,元數(shù)據(jù)管理單元140(或控制模塊146)會根據(jù)載入在緩沖器120中的哈希存儲器表142存取所請求的文件(步驟S303)。具體地說,當(dāng)接受文件寫入請求、文件更新請求、文件刪除請求或文件更新請求時,元數(shù)據(jù)管理單元140(或控制模塊146)會使用以存儲桶為基礎(chǔ)的替代策略維護(hù)載入到緩沖器120中的哈希存儲器表142,使得可用較少磁盤I/O操作來存取磁盤130中所存儲的文件。[0068]圖4為說明根據(jù)本公開一實施例的用于當(dāng)將新文件寫入到磁盤中時更新哈希存儲器表的方法的流程圖。[0069]請參照圖4,在此范例實施例中,從用戶端計算機50將新文件寫入到磁盤130中(步驟S401)。如前所述,當(dāng)全部存儲桶的數(shù)目為10億時,發(fā)生四次以上碰撞的機率小于0.30%。為了解決此問題,在一范例實施例中,當(dāng)用戶端計算機50寫入或上載文件時,將新文件的金鑰(即,邏輯地址)寫入在物理地址的第一區(qū)段中,使得如果有一個以上文件在哈希碼匹配程序之后被識別,那么第一區(qū)段可確認(rèn)所搜索的文件是否確實為所匹配的文件。因此,新文件的物理地址會從磁盤130的文件系統(tǒng)132被獲取(步驟S402)。新文件的金鑰201會被嵌入到存儲新文件所在的物理地址中(步驟S403)。接下來,索引哈希函數(shù)202會被輸入新文件的金鑰201以產(chǎn)生對應(yīng)于新文件的索引哈希碼211(步驟S404)。接著,對應(yīng)于新文件的新產(chǎn)生的索引哈希碼211是否已經(jīng)存在于哈希存儲器表142中會被確認(rèn)(步驟S405)。[0070]如果對應(yīng)于新文件的新產(chǎn)生的索引哈希碼211已經(jīng)存在于哈希存儲器表142中,則具有物理地址欄位221和哈希碼欄位222的新存儲盒220會被加入至指針213所指向的陣列230,且對應(yīng)哈希存儲桶210的存儲盒數(shù)目212會被加一(步驟S406)。如果對應(yīng)于新文件的新產(chǎn)生的索引哈希碼211并不存在于哈希存儲器表142中,則新哈希存儲桶210會被插入到哈希存儲器表142中(步驟S407)。對應(yīng)于新文件的存儲盒220會被加入并通過哈希存儲桶210的新設(shè)置的指針213來指向所加入的存儲盒220,同時對應(yīng)于新文件的存儲盒數(shù)目212會被記錄為一(步驟S408)。驗證哈希函數(shù)204會被輸入新文件的金鑰201以產(chǎn)生對應(yīng)于新文件的驗證哈希碼(步驟S409)。存儲新文件的物理地址和對應(yīng)于新文件的驗證哈希碼會分別被記錄到對應(yīng)于新文件的存儲盒220的物理地址欄位221和哈希碼欄位222中(步驟S410),由此完成哈希存儲器表142的更新。[0071]圖5為說明根據(jù)本公開一實施例的用于當(dāng)執(zhí)行文件讀取請求時更新哈希存儲器表的方法的流程圖。[0072]請參照圖5,在此范例實施例中,當(dāng)由用戶端計算機50選擇欲讀取的特定文件(步驟S501)時,對應(yīng)于所述特定文件的金鑰201會被產(chǎn)生(步驟S502)。之后,對應(yīng)于所述特定文件的金鑰201會被輸入至索引哈希函數(shù)202以產(chǎn)生對應(yīng)于特定文件的第一搜索哈希碼203(步驟S503)。然后,對應(yīng)于特定文件的第一搜索哈希碼203會與每一哈希存儲桶210中中的索引哈希碼211進(jìn)行比較。接著,具有相同于對應(yīng)于特定文件的第一搜索哈希碼203的索引哈希碼211的哈希存儲桶210會被識別(步驟S504),其中所識別的哈希存儲桶210會包括指向陣列230的指針213。接下來,對應(yīng)于特定文件的金鑰201會被輸入至驗證哈希函數(shù)204以產(chǎn)生對應(yīng)于特定文件的第二搜索哈希碼205(步驟S505)。接著,從第一存儲盒開始以反復(fù)運算型式將第二搜索哈希碼205會與由指針213指向的陣列230內(nèi)的記錄在每一存儲盒220的哈希碼欄位222中的驗證哈希碼進(jìn)行比較(步驟S506)。接著,判斷是否找到至少一個匹配(步驟S507)。如果沒有找到任何匹配時,則向用戶端計算機50發(fā)出錯誤異常(步驟S508)。如果找到至少一個匹配時,則判斷是否正好找到一個匹配(步驟S509)。如果正好找到一個匹配時,則立即通過指向?qū)?yīng)于同一存儲盒220內(nèi)的驗證哈希碼的物理地址欄位221中的物理地址來識別所匹配的文件的實際位置(步驟S510)。如果找到多個匹配時,則將金鑰201與嵌入在所匹配存儲盒220內(nèi)的物理地址中的邏輯文件名進(jìn)行比較,而無須開啟所有所識別的文件來進(jìn)行驗證(步驟S511)。最后,可通過使用例如Linux系統(tǒng)上的Debugfs等指令來讀取文件(S512)。[0073]圖6為說明根據(jù)本公開一實施例的用于當(dāng)從磁盤刪除文件時更新哈希存儲器表的方法的流程圖。[0074]參看圖6,在本范例實施例中,當(dāng)由用戶端計算機50選擇欲刪除的特定文件(步驟S601)時,產(chǎn)生對應(yīng)于所述特定文件的金鑰201(步驟S602)。接下來,在步驟S603到步驟S611中識別對應(yīng)于所述特定文件的存儲盒220,其中步驟S603到S611可參考圖5中的步驟S503到S511,且下文中將不再詳細(xì)解釋。在識別對應(yīng)于特定文件的存儲盒220之后,特定文件會從磁盤130中被刪除(步驟S612),并且對應(yīng)于特定文件的存儲盒220會被刪除(步驟S613)。接著,判斷對應(yīng)哈希存儲桶210中的存儲盒數(shù)目212是否為一(步驟S614)。如果對應(yīng)哈希存儲桶210中的存儲盒數(shù)目212為一時,則哈希存儲桶210會被相應(yīng)地刪除(步驟S615)。如果對應(yīng)哈希存儲桶210中的存儲盒數(shù)目212大于一時,則存儲盒數(shù)目212會被減去一(步驟S616),由此完成哈希存儲器表142的更新。[0075]圖7為說明根據(jù)本公開一實施例的用于當(dāng)將文件更新到另一物理地址時更新哈希存儲器表的方法的流程圖。[0076]請參照圖7,在此范例實施例中,當(dāng)由用戶端計算機50選擇欲更新的特定文件(步驟S701)時,對應(yīng)于特定文件的金鑰201會被產(chǎn)生(步驟S702)。接下來,在步驟S703到步驟S711中識別對應(yīng)于特定文件的存儲盒220,其中步驟S703到S711可參考圖5中的步驟S503到S511,且下文中將不再詳細(xì)解釋。在識別對應(yīng)于特定文件的存儲盒220之后,特定文件會從物理地址221中被更新到另一物理地址221(步驟S712)。接著,在對應(yīng)于特定文件的存儲盒220的物理地址欄位221中存儲此特定文件的物理地址會被更新為此另一物理地址(步驟S713),由此完成哈希存儲器表142的更新。值得注意的是,為了確保哈希存儲器表142正常的運作,可周期性地對文件系統(tǒng)132進(jìn)行磁盤重組,使得以緊鄰方式存儲文件。磁盤重組涉及將各區(qū)塊移動到新位置。當(dāng)因磁盤重組目的(尤其是清理自由空間且優(yōu)化持久性)而移動某些塊,元數(shù)據(jù)管理單元140(或控制模塊146)需被告知物理地址的任何改變。[0077]請再次參照圖1,應(yīng)注意的是,包括元數(shù)據(jù)的哈希存儲器表142會存儲在元數(shù)據(jù)數(shù)據(jù)庫144中,并且元數(shù)據(jù)數(shù)據(jù)庫144會以載入在緩沖器120中的哈希存儲器表142以及磁盤130的文件系統(tǒng)132來同步地更新。在范例實施例中,元數(shù)據(jù)數(shù)據(jù)庫的副本152會被建立在備用服務(wù)器150中。在元數(shù)據(jù)數(shù)據(jù)庫的副本152中,在哈希存儲器表142中找到的元數(shù)據(jù)會被備份且會被用于恢復(fù)程序。此程序還可持續(xù)修改副本且局部地存儲此副本在暫時目錄中。所改變的數(shù)據(jù)的副本還可以預(yù)定義的時間間隔來使用。當(dāng)備用服務(wù)器150被連接時,未存于備用服務(wù)器150上的所有暫時數(shù)據(jù)會被傳送。當(dāng)復(fù)原元數(shù)據(jù)數(shù)據(jù)庫144時,其可復(fù)原到在特定時間處存在或在一段時間周期內(nèi)已經(jīng)存在的內(nèi)容,使得元數(shù)據(jù)數(shù)據(jù)庫144可復(fù)原到其最近版本。通常當(dāng)主要服務(wù)器105關(guān)機時,其會維持一致狀態(tài)。也就是說,元數(shù)據(jù)數(shù)據(jù)庫144內(nèi)的所有內(nèi)容和所有文件系統(tǒng)132的內(nèi)容會被同步。在發(fā)生當(dāng)機之后,有可能造成存儲系統(tǒng)100處于不一致狀態(tài)。也就是說,在主要服務(wù)器105中的文件系統(tǒng)132與元數(shù)據(jù)數(shù)據(jù)庫144的內(nèi)容之間可能存在不一致。[0078]圖8為說明根據(jù)本公開一實施例的用于當(dāng)向元數(shù)據(jù)管理單元發(fā)送當(dāng)機恢復(fù)請求時恢復(fù)哈希存儲器表的方法的流程圖。[0079]參看圖8,在主要服務(wù)器105當(dāng)機之后,在下一次啟動時可執(zhí)行恢復(fù)程序。每當(dāng)主要服務(wù)器105啟動時,確定先前關(guān)機是否有不一致狀態(tài)(步驟S801)。如果主要服務(wù)器105從先前關(guān)機中存有一致狀態(tài)時,則根據(jù)元數(shù)據(jù)數(shù)據(jù)庫144來初始化并建構(gòu)哈希存儲器表142(步驟S802)。如果主要服務(wù)器105從先前關(guān)機中存有不一致狀態(tài)(B卩,主要服務(wù)器105歸因于當(dāng)機而關(guān)機)時,則向備用服務(wù)器150發(fā)送當(dāng)機恢復(fù)請求(步驟S803)。備用服務(wù)器檢查元數(shù)據(jù)數(shù)據(jù)庫的副本152與元數(shù)據(jù)數(shù)據(jù)庫144中的哈希存儲器表之間的不一致(步驟S804)。接著,從元數(shù)據(jù)數(shù)據(jù)庫的副本152發(fā)送欲在元數(shù)據(jù)數(shù)據(jù)庫144中恢復(fù)的內(nèi)容(步驟S805)。最后,將所恢復(fù)的哈希存儲器表142載入到緩沖器120以準(zhǔn)備好用于處理元數(shù)據(jù)查詢(步驟S806)。[0080]在范例實施例中,元數(shù)據(jù)管理單元的上述控制模塊可以軟件形式來實施且存儲在包含CD-ROM、磁帶、軟盤或光學(xué)數(shù)據(jù)存儲裝置在內(nèi)的計算機可讀記錄媒體中。[0081]綜合上述,本公開提供用于元數(shù)據(jù)的方法和系統(tǒng),其具有高更新效率和長系統(tǒng)使用持久性。所述方法和系統(tǒng)以哈希型式進(jìn)行元數(shù)據(jù)管理且通過減少用以識別文件匹配或文件匹配不存在的磁盤I/o操作的數(shù)目來顯著地改善例如文件寫入請求、讀取請求、更新請求和刪除請求等物理磁盤存取效率。因此,與常規(guī)的數(shù)據(jù)庫管理系統(tǒng)相比,效率得以改善,且執(zhí)行時間成本得以降低。本公開合適地適用于例如具有密集工作負(fù)荷和更新的云存儲服務(wù)等網(wǎng)絡(luò)服務(wù)。[0082]雖然本公開已以實施例公開如上,然其并非用以限定本公開,本領(lǐng)域技術(shù)人員,在不脫離本公開的精神和范圍內(nèi),當(dāng)可作些許的更動與潤飾,故本公開的保護(hù)范圍當(dāng)視所附權(quán)利要求書界定范圍為準(zhǔn)?!緳?quán)利要求】1.一種用于在具有緩沖器和磁盤的存儲系統(tǒng)上存取文件的方法,所述方法包括:建構(gòu)一哈希存儲器表,其中所述哈希存儲器表包括多個哈希存儲桶,所述多個哈希存儲桶分別對應(yīng)于多個索引哈希碼,每一所述哈希存儲桶具有一指針,每一所述指針指向至少一個存儲盒,每一所述存儲盒具有一物理地址欄位和一哈希碼欄位,所述物理地址欄位分別記錄存儲所述文件的物理地址,所述哈希碼欄位分別記錄對應(yīng)于所述文件的驗證哈希碼,所述索引哈希碼是通過將所述文件的金鑰輸入到一索引哈希函數(shù)來產(chǎn)生,且所述驗證哈希碼是通過將所述文件的所述金鑰輸入到一驗證哈希函數(shù)來產(chǎn)生;使用一以存儲桶為基礎(chǔ)的替代策略將所述哈希存儲器表載入到所述緩沖器中;以及根據(jù)載入到所述緩沖器中的所述哈希存儲器表來存取所述文件。2.如權(quán)利要求1所述的方法,其中所述根據(jù)載入到所述緩沖器中的所述哈希存儲器表來存取所述文件的步驟包括:將一新文件寫入到所述磁盤中且從所述磁盤的一文件系統(tǒng)獲得存儲所述新文件的一物理地址;將一新哈希存儲桶插入在所述哈希存儲器表中;通過將所述新文件的一金鑰輸入到所述索引哈希函數(shù)中來產(chǎn)生對應(yīng)于所述新哈希存儲桶的一索引哈希碼;在所述新哈希存儲桶中加入對應(yīng)于所述新文件的一存儲盒且設(shè)置所述新哈希存儲桶的一指針,其中所述指針指向?qū)?yīng)于所述新文件的所述存儲盒;通過將所述新文件的所述金鑰輸入到所述驗證哈希函數(shù)中來產(chǎn)生對應(yīng)于所述新文件的一驗證哈希碼;將存儲所述新文件的物理地址記錄到對應(yīng)于所述新文件的所述存儲盒的所述物理地址欄位中;以及將對應(yīng)于所述新文件的所述驗證哈希碼記錄到對應(yīng)于所述新文件的所述存儲盒的所述哈希碼欄位中。3.如權(quán)利要求2所述的方法,其中所述根據(jù)載入到所述緩沖器中的所述哈希存儲器表來存取所述文件的步驟還包括:在將所述新文件寫入到所述磁盤中的同時,將所述新文件的邏輯文件名嵌入到存儲所述新文件的所述物理地址中。4.如權(quán)利要求2所述的方法,其中所述根據(jù)載入到所述緩沖器中的所述哈希存儲器表來存取所述文件的步驟還包括:接收用于讀取所述新文件的一指令;通過將所述新文件的所述金鑰輸入到所述索引哈希函數(shù)中來產(chǎn)生一第一搜索哈希碼;通過將所述第一搜索哈希碼與所述索引哈希碼進(jìn)行比較來從所述哈希存儲桶中識別所述新哈希存儲桶;根據(jù)對應(yīng)于所述第一搜索哈希碼的所述新哈希存儲桶的所述指針來讀取至少一個搜索存儲盒;通過將所述新文件的所述金鑰輸入到所述驗證哈希函數(shù)中來產(chǎn)生一第二搜索哈希碼;通過將所述第二搜索哈希碼與所述至少一個搜索存儲盒的至少一個哈希碼欄位中所記錄的至少一個驗證哈希碼進(jìn)行比較來在所述至少一個搜索存儲盒當(dāng)中識別對應(yīng)于所述新文件的所述存儲盒;以及根據(jù)對應(yīng)于所述新文件的所述存儲盒的所述物理地址欄位中所記錄的所述物理地址來從所述磁盤讀取所述新文件的內(nèi)容。5.如權(quán)利要求3所述的方法,其中所述根據(jù)載入到所述緩沖器中的所述哈希存儲器表來存取所述文件的步驟還包括:接收用于讀取所述新文件的一指令;通過將所述新文件的所述金鑰輸入到所述索引哈希函數(shù)中來產(chǎn)生一第一搜索哈希碼;通過將所述第一搜索哈希碼與所述索引哈希碼進(jìn)行比較來從所述哈希存儲桶中識別所述新哈希存儲桶;根據(jù)對應(yīng)于所述第一搜索哈希碼的所述新哈希存儲桶的所述指針來讀取至少一個搜索存儲盒;通過將所述新文件的所述金鑰輸入到所述驗證哈希函數(shù)中來產(chǎn)生第二搜索哈希碼;通過將所述第二搜索哈希碼與所述至少一個搜索存儲盒的至少一個哈希碼欄位中所記錄的至少一個驗證哈希碼進(jìn)行比較且將所述新文件的所述邏輯文件名與嵌入到存儲對應(yīng)于至少一個搜索存儲盒的至少一個文件的至少一個物理地址中的至少一個邏輯文件名進(jìn)行比較來在所述至少一個搜索存儲盒當(dāng)中識別對應(yīng)于所述新文件的所述存儲盒;以及根據(jù)對應(yīng)于所述新文件的所述存儲盒的所述物理地址欄位中所記錄的所述物理地址來從所述磁盤讀取所述新文件的內(nèi)容。6.如權(quán)利要求2所述的方法,其中所述根據(jù)載入到所述緩沖器中的所述哈希存儲器表來存取所述文件的步驟還包括:當(dāng)所述磁盤的所述文件系統(tǒng)將所述新文件從存儲所述新文件的所述物理地址移動到另一物理地址時,將所述另一物理地址更新到所述哈希存儲器表中的對應(yīng)于所述新文件的所述存儲盒的所述物理地址欄位中。7.如權(quán)利要求2所述的方法,其中所述根據(jù)載入到所述緩沖器中的所述哈希存儲器表來存取所述文件的步驟還包括:當(dāng)所述磁盤的所述文件系統(tǒng)將所述新文件從存儲所述新文件的所述物理地址刪除時,刪除所述哈希存儲器表中對應(yīng)于所述新文件的所述存儲盒。8.如權(quán)利要求1所述的方法,還包括:建構(gòu)一元數(shù)據(jù)數(shù)據(jù)庫;以及將所述哈希存儲器表中所記錄的信息存儲到所述元數(shù)據(jù)數(shù)據(jù)庫中。9.如權(quán)利要求8所述的方法,還包括:將所述元數(shù)據(jù)數(shù)據(jù)庫的一副本備份到備用服務(wù)器中;以及根據(jù)所述備用服務(wù)器中所存儲的所述元數(shù)據(jù)數(shù)據(jù)庫的所述副本來恢復(fù)所述哈希存儲器表。10.一種用于在具有緩沖器和磁盤的存儲系統(tǒng)上存取文件的方法,所述方法包括:建構(gòu)用于記錄所述文件的一元數(shù)據(jù)的一哈希存儲器表;在將所述文件寫入到所述磁盤中的同時,將所述文件的邏輯文件名嵌入到所述磁盤中的存儲所述文件的一物理地址中;將所述哈希存儲器表載入到所述緩沖器中;以及根據(jù)載入到所述緩沖器中的所述哈希存儲器表和嵌入到所述磁盤的所述物理地址中的所述邏輯文件名來存取所述文件。11.一種存儲系統(tǒng),包括:一微處理器;一緩沖器,耦接至所述微處理器;一磁盤,耦接至所述微處理器;一元數(shù)據(jù)管理單元,耦接至所述微處理器且用以建構(gòu)一哈希存儲器表,其中所述哈希存儲器表包含多個哈希存儲桶,所述多個哈希存儲桶分別對應(yīng)于多個索引哈希碼,每一所述哈希存儲桶具有指針,每一所述指針指向至少一個存儲盒,每一所述存儲盒具有一物理地址欄位和一哈希碼欄位,所述物理地址欄位分別記錄存儲文件的物理地址,所述哈希碼欄位分別記錄對應(yīng)于所述文件的驗證哈希碼,所述索引哈希碼是通過將所述文件的金鑰輸入到一索引哈希函數(shù)來產(chǎn)生,且所述驗證哈希碼是通過將所述文件的所述金鑰輸入到一驗證哈希函數(shù)來產(chǎn)生,所述元數(shù)據(jù)管理單元還用以使用一以存儲桶為基礎(chǔ)的替代策略將所述哈希存儲器表載入到所述緩沖器中且根據(jù)載入到所述緩沖器中的所述哈希存儲器表來存取所述文件。12.如權(quán)利要求11所述的存儲系統(tǒng),其中所述元數(shù)據(jù)管理單元將一新文件寫入到所述磁盤中且從所述磁盤的一文件系統(tǒng)中獲得存儲所述新文件的一物理地址,其中所述元數(shù)據(jù)管理單元通過將所述新文件的一金鑰輸入到所述索引哈希函數(shù)中來產(chǎn)生對應(yīng)于一新哈希存儲桶的索引哈希碼且通過將所述新文件的所述金鑰輸入到所述驗證哈希函數(shù)中來產(chǎn)生對應(yīng)于所述新文件的一驗證哈希碼,其中所述元數(shù)據(jù)管理單元將一新哈希存儲桶插入在所述哈希存儲器表中,將對應(yīng)于所述新文件的一存儲盒加入在所述新哈希存儲桶中,且設(shè)定所述新哈希存儲桶的一指針,其中所述指針指向?qū)?yīng)于所述新文件的所述存儲盒,其中所述元數(shù)據(jù)管理單元將存儲所述新文件的所述物理地址記錄到對應(yīng)于所述新文件的所述存儲盒的物理地址欄位中且將對應(yīng)于所述新文件的所述驗證哈希碼記錄到對應(yīng)于所述新文件的所述存儲盒的所述哈希碼欄位中。13.如權(quán)利要求12所述的存儲系統(tǒng),其中所述元數(shù)據(jù)管理單元還用以在將所述新文件寫入到所述磁盤中的同時,將所述新文件的邏輯文件名嵌入到存儲所述新文件的所述物理地址中。14.如權(quán)利要求12所述的存儲系統(tǒng),其中所述元數(shù)據(jù)管理單元還用以接收用于讀取所述新文件的一指令,通過將所述新文件的所述金鑰輸入到所述索引哈希函數(shù)中來產(chǎn)生一第一搜索哈希碼,通過將所述第一搜索哈希碼與所述索引哈希碼進(jìn)行比較來從所述哈希存儲桶中識別所述新哈希存儲桶;根據(jù)對應(yīng)于所述第一搜索哈希碼的所述新哈希存儲桶的所述指針來讀取至少一個搜索存儲盒;以及通過將所述新文件的所述金鑰輸入到所述驗證哈希函數(shù)中來產(chǎn)生一第二搜索哈希碼,其中所述元數(shù)據(jù)管理單元還用以通過將所述第二搜索哈希碼與所述至少一個搜索存儲盒的至少一個哈希碼欄位中所記錄的至少一個驗證哈希碼進(jìn)行比較來在所述至少一個搜索存儲盒當(dāng)中識別對應(yīng)于所述新文件的所述存儲盒,且根據(jù)對應(yīng)于所述新文件的所述存儲盒的所述物理地址欄位中所記錄的所述物理地址來從所述磁盤讀取所述新文件的內(nèi)容。15.如權(quán)利要求13所述的存儲系統(tǒng),其中所述元數(shù)據(jù)管理單元還用以接收用于讀取所述新文件的一指令,通過將所述新文件的所述金鑰輸入到所述索引哈希函數(shù)中來產(chǎn)生一第一搜索哈希碼,通過將所述第一搜索哈希碼與所述索引哈希碼進(jìn)行比較來從所述哈希存儲桶中識別所述新哈希存儲桶;根據(jù)對應(yīng)于所述第一搜索哈希碼的所述新哈希存儲桶的所述指針來讀取至少一個搜索存儲盒;以及通過將所述新文件的所述金鑰輸入到所述驗證哈希函數(shù)中來產(chǎn)生一第二搜索哈希碼,其中所述元數(shù)據(jù)管理單元還用以通過將所述第二搜索哈希碼與所述至少一個搜索存儲盒的至少一個哈希碼欄位中所記錄的至少一個驗證哈希碼進(jìn)行比較及將所述新文件的所述邏輯文件名與嵌入到存儲對應(yīng)于至少一個搜索存儲盒的至少一個文件的至少一個物理地址中的至少一個邏輯文件名進(jìn)行比較來在所述至少一個搜索存儲盒當(dāng)中識別對應(yīng)于所述新文件的所述存儲盒,且根據(jù)對應(yīng)于所述新文件的所述存儲盒的所述物理地址欄位中所記錄的所述物理地址來從所述磁盤讀取所述新文件的內(nèi)容。16.如權(quán)利要求12所述的存儲系統(tǒng),其中當(dāng)所述磁盤的所述文件系統(tǒng)將所述新文件從存儲所述新文件的所述物理地址移動到另一物理地址時,所述元數(shù)據(jù)管理單元還用以將所述另一物理地址更新到所述哈希存儲器表中的對應(yīng)于所述新文件的所述存儲盒的所述物理地址欄位中。17.如權(quán)利要求12所述的存儲系統(tǒng),其中當(dāng)所述磁盤的所述文件系統(tǒng)將所述新文件從存儲所述新文件的所述物理地址刪除時,所述元數(shù)據(jù)管理單元還用以刪除所述哈希存儲器表中對應(yīng)于所述新文件的所述存儲盒。18.如權(quán)利要求11所述的存儲系統(tǒng),其中所述元數(shù)據(jù)管理單元還包括一元數(shù)據(jù)數(shù)據(jù)庫且將所述哈希存儲器表中所記錄的信息存儲到所述元數(shù)據(jù)數(shù)據(jù)庫中。19.如權(quán)利要求18所述的存儲系統(tǒng),還包括:一備用服務(wù)器,其中所述元數(shù)據(jù)管理單元還用以將所述元數(shù)據(jù)數(shù)據(jù)庫的一副本備份到所述備用服務(wù)器中,其中所述元數(shù)據(jù)管理單元還用以根據(jù)所述備用服務(wù)器中所存儲的所述元數(shù)據(jù)數(shù)據(jù)庫的所述副本來恢復(fù)所述哈希存儲器表。20.—種存儲系統(tǒng),包括:一微處理器;一緩沖器,耦接至所述微處理器;一磁盤,耦接至所述微處理器;以及一元數(shù)據(jù)管理單元,耦接至所述微處理器且用以建構(gòu)用于記錄所述文件的一元數(shù)據(jù)的一哈希存儲器表,其中所述元數(shù)據(jù)管理單元還用以在將所述文件寫入到所述磁盤中的同時,將所述文件的邏輯文件名嵌入到所述磁盤中的存儲所述文件的物理地址中,其中所述元數(shù)據(jù)管理單元還用以使用一以存儲桶為基礎(chǔ)的替代策略將所述哈希存儲器表載入到所述緩沖器中,其中所述元數(shù)據(jù)管理單元還用以根據(jù)載入到所述緩沖器中的所述哈希存儲器表和嵌入到所述磁盤的所述物理地址中的所述邏輯文件名來存取所述文件?!疚臋n編號】G06F17/30GK103902623SQ201210587636【公開日】2014年7月2日申請日期:2012年12月28日優(yōu)先權(quán)日:2012年12月26日【發(fā)明者】闕志克,迪利普.拉梅什,阿克沙伊.科厚兒,林秉宏申請人:財團(tuán)法人工業(yè)技術(shù)研究院