TWI475419B - 用於在儲存系統上存取檔案的方法和系統 - Google Patents
用於在儲存系統上存取檔案的方法和系統 Download PDFInfo
- Publication number
- TWI475419B TWI475419B TW101150244A TW101150244A TWI475419B TW I475419 B TWI475419 B TW I475419B TW 101150244 A TW101150244 A TW 101150244A TW 101150244 A TW101150244 A TW 101150244A TW I475419 B TWI475419 B TW I475419B
- Authority
- TW
- Taiwan
- Prior art keywords
- hash
- file
- new
- new file
- physical address
- Prior art date
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本揭露是有關於一種用於在儲存系統上存取檔案的方法和系統。
元資料(字面上稱為“關於資料的資料”)已被廣泛用於組織資訊。元資料的建立和管理主要是從事編目錄、分類和編索引的資訊專業人員的職責。隨著資訊已變得越來越電腦化和數位化,元資料已包含在資料管理系統和管理功能的管理和互通性中。舉例來說,檔案的元資料指定描述檔案的一系列屬性,例如按位元組計的大小、路徑、最後修改時間、擁有者、可存取性等等。
當今,例如雲端儲存服務(cloud storage service)等許多網路服務需要在資料庫系統對檔案執行各種操作時管理並維護元資料。由於大多數資料庫系統未在操作隨機性方面得到優化,因此具有密集低空間和時間局部性要求(intensive low spatial and temporal locality request)的操作(例如在雲端系統(cloud system)上讀取、寫入、刪除或更新檔案)限制了磁碟調度靈活性且導致緩衝記憶體(buffer memory)的低效使用。隨著元資料的數目不斷增加,輸入/輸出(input/output,I/O)速度相應地減小且整體性能進而受到顯著限制。一般的元資料存取方法在面對具有低存取局部性的更新密集型輸入工作負荷時受到嚴重挑戰。因此,如
何減少磁碟I/O操作以雲端儲存系統或其它網路服務的效能是此領域技術人員所致力的目標。
本揭露實施例提供一種用於在具有緩衝器和磁碟的儲存系統上存取檔案的方法。所述方法包括建構雜湊記憶體表,其中所述雜湊記憶體表具有分別對應於多個索引雜湊碼的多個雜湊儲存桶,每一雜湊儲存桶具有指向至少一個儲存盒的指標,每一儲存盒具有實體地址欄位和雜湊碼欄位,所述實體地址欄位分別記錄儲存所述檔案的實體地址,且所述雜湊碼欄位分別記錄對應於所述檔案的驗證雜湊碼。所述索引雜湊碼是透過將所述檔案的金鑰輸入到索引雜湊函數來產生的,且所述驗證雜湊碼是透過將所述檔案的所述金鑰輸入到驗證雜湊函數來產生的。所述方法還包含使用以儲存桶為基礎的替代策略將所述雜湊記憶體表載入到所述緩衝器中,且根據載入到所述緩衝器中的所述雜湊記憶體表來存取所述文件。
本揭露實施例亦提供另一種用於在具有緩衝器和磁碟的儲存系統上存取檔案的方法。所述方法包括:建構用於記錄所述檔案的元資料的雜湊記憶體表;在將所述檔案寫入到所述磁碟中的同時,將所述檔案的邏輯檔名嵌入到所述磁碟中的儲存所述檔案的實體地址中;使用以儲存桶為基礎的替代策略將所述雜湊記憶體表載入到所述緩衝器中;以及根據載入到所述緩衝器中的所述雜湊記憶體表和嵌入到所述
磁碟的實體地址中的所述邏輯檔名來存取所述檔案。
本揭露實施例提供一種儲存系統,其包括微處理器、緩衝器、磁碟和元資料管理單元。所述緩衝器和所述磁碟分別耦接至所述微處理器。所述元資料管理單元耦接至所述微處理器且用以建構雜湊記憶體表,所述雜湊記憶體表包含分別對應於多個索引雜湊碼的多個雜湊儲存桶。每一雜湊儲存桶具有指向至少一個儲存盒的指標,每一儲存盒具有實體地址欄位和雜湊碼欄位,實體地址欄位分別記錄儲存檔案的實體地址,且所述雜湊碼欄位分別記錄對應於所述檔案的驗證雜湊碼。所述索引雜湊碼是透過將所述檔案的金鑰輸入到索引雜湊函數來產生的,且所述驗證雜湊碼是透過將所述檔案的所述金鑰輸入到驗證雜湊函數來產生的。所述元資料管理單元更用以使用以儲存桶為基礎的替代策略將所述雜湊記憶體表載入到所述緩衝器中且根據載入到所述緩衝器中的所述雜湊記憶體表來存取所述文件。
本揭露實施例提供另一種儲存系統,其包含微處理器、緩衝器、磁碟和元資料管理單元。所述緩衝器和所述磁碟分別耦接至所述微處理器。所述元資料管理單元耦接至所述微處理器且用以建構用於記錄所述檔案的元資料的雜湊記憶體表。所述元資料管理單元更用以在將所述檔案寫入到所述磁碟中的同時,將所述檔案的邏輯檔名嵌入到所述磁碟中的儲存所述檔案的實體地址中。所述元資料管理單元更用以使用以儲存桶為基礎的替代策略將所述雜湊記憶體表載入到所述緩衝器中,且根據載入到所述緩衝器中的所述雜湊
記憶體表和嵌入到所述磁碟的實體地址中的所述邏輯檔名來存取所述檔案。
為讓本揭露之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
為讓本揭露之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。範例實施例範例實施例在任何可能之處,將相同的參考標號用於圖式和描述中來指代相同或相似的部分。
圖1為根據本揭露一實施例的儲存系統的方塊圖。
請參照圖1,儲存系統100包含主要伺服器(main server)105和備用伺服器(backup server)150。儲存系統100可被視作為雲端系統的一部分,但本揭露並不限於此。客戶可通過例如鍵盤等輸入裝置或例如滑鼠、軌跡球或觸模墊等指向裝置將命令輸入到用戶端電腦50中,進而將檔案儲存到儲存系統100中或從儲存系統100中讀取檔案。
主要伺服器105包括微處理器110、緩衝器120、磁碟130和元資料管理單元140。緩衝器120、磁碟130和元資料管理單元140分別耦接至微處理器110,且備用伺服器150耦接至元資料管理單元140。
微處理器110可為專用或專門的微處理器,其用以透過執行機器可讀軟體碼語言來執行特定任務,其中所述機器可讀軟體碼語言定義與用以透過與儲存系統100的其它元件通信
來實行例如檔案讀取、檔案寫入、檔案刪除、檔案更新或元資料資料庫恢復等功能操作的操作有關的功能。
緩衝器120用以暫存頻繁儲存和檢索的資料。例如,緩衝器120可為隨機存取記憶體(random access memory,RAM)、靜態隨機存取記憶體(static random access memory,SRAM)或動態隨機存取記憶體(dynamic random access memory,DRAM)等較快速的記憶體,其用以儲存暫時資料以獲得快速得多的存取時間。
磁碟130用於儲存和檢索檔案。舉例來說,磁碟130可為硬碟驅動器(hard disk drive,HDD)或固態驅動器(solid state drive,SSD)。磁碟130包括用以儲存和組織電腦檔案及其所含有之資料的抽象物(abstraction)的檔案系統132,且用以將多個檔案組織為單個位元組流、陣列、連結清單或其它資料結構。
元資料管理單元140用以將儲存在磁碟130中的檔案的所有元資料記錄於緩衝器120中且根據所記錄的元資料存取所述文件。舉例來說,元資料管理單元140包含雜湊記憶體表142、元資料資料庫144和控制模組146。在一實施例中,控制模組146由多個模組組成且用以建構或維護雜湊記憶體表142以用於記錄檔案的元資料,且更將雜湊記憶體表142載入到緩衝器120中以及將雜湊記憶體表142中所記錄的資訊儲存到元資料資料庫144中。在另一實施例中,元資料管理單元140(或控制模組146)更用以將元資料資料庫的副本152備份到備用伺服器150中。
雜湊技術(hashing technique)廣泛用於電腦硬體和軟體系統中,例如,其適於允許元資料等大量元素的動態成長和縮小,因此對所儲存元素之數目有極少的限制。舉例來說,對應於一個檔案的邏輯檔名元資料的大小可高達256位元組,其中邏輯檔名元資料可含有檔案的用戶名、完整路徑和檔名。如果在儲存系統100上存在10億個檔案,則所有元資料將需要多達256 GB儲存空間來儲存且其可能致使記憶體不足。雜湊是涉及從金鑰(key)計算雜湊碼(hash code)且使用雜湊碼來在表中查找匹配。計算雜湊碼的函數被稱為雜湊函數(hash function)並且非常適合於在元資料儲存和檢索中加速查表或資料比對工作且因此在檔案儲存和檢索中加速工作。雜湊記憶體表實施方案的效率取決於所使用的雜湊函數。
圖2為根據圖1實施例中的雜湊記憶體表142的示意性方塊圖。
請參照圖2,雜湊記憶體表142包括多個雜湊儲存桶(hash bucket)210。每一個雜湊儲存桶210包括多則資訊,每一資訊是由索引雜湊碼(index hash code)211、儲存盒數目212和指標(pointer)213組成。
索引雜湊碼211為用於在磁碟130中識別檔案以管理檔案的資訊。例如,索引雜湊碼211為4個位元組。指標213指向至少一個儲存盒220,其中同一指標所參考的儲存盒220形成陣列230。例如,每一指標213為8個位元組。儲存盒數目212記錄對應陣列230內的儲存盒220的數目。
每一儲存盒220包括實體地址欄位(physical address
field)221和雜湊碼欄位(hash code field)222。每一實體地址欄位221分別記錄儲存檔案的實體地址。實體地址欄位221中的實體地址可為索引節編號(inode number),其包含指向其中儲存所述檔案的塊的指標。此外,實體地址還可為以二進位數字字或十六進位數字的形式表示的塊編號。例如,每一實體地址欄位221為6個位元組。雜湊碼欄位222分別記錄對應於所述檔案的驗證雜湊碼(verification hash code)。例如,雜湊碼欄位222為4個位元組。此外,每一還可包括例如最近修改日期、版本、存取權、目錄旗標等其它資訊。
索引雜湊碼211和雜湊碼欄位222中的驗證雜湊碼是透過使用雜湊函數來計算。在本一實施例中,索引雜湊碼211和記錄在雜湊碼欄位222中的驗證雜湊碼是透過將金鑰201分別輸入到索引雜湊函數202和驗證雜湊函數204中來產生,其中金鑰201是對應於欲儲存到磁碟130中的檔案。舉例來說,每一金鑰可含有對應於檔案的邏輯檔名的文字串。當進行檔案存取操作時,對應於欲存取的檔案的金鑰201會被輸入至索引雜湊函數202和驗證雜湊函數204以分別產生第一搜索雜湊碼(search hash code)203和第二搜索雜湊碼205。接著分別將第一搜索雜湊碼203和第二搜索雜湊碼205與索引雜湊碼211和雜湊碼欄位222中所記錄的驗證雜湊碼進行比較以進行檔案識別。
此外,索引雜湊函數202和驗證雜湊函數204為不同的雜湊函數,這可減小在產生雜湊碼時發生碰撞(collosion)的機率。具體來說,當實作內容可定址儲存的系統含有兩個具有不
同內容但具有相同雜湊碼的檔案時會發生雜湊碰撞。雜湊記憶體表的原理是將可能無限大的元素集合分割為有限數目的雜湊碼。不同金鑰的雜湊碼的相依性在較佳的情況下應為非明顯。在使用良好的雜湊函數下,金鑰中的所有位元會影響所產生的雜湊碼。例如,索引雜湊函數202為Murmur3雜湊函數,其能夠有效地產生32位雜湊值且實現具有最小重複頻率的較好分佈。例如,驗證雜湊函數204可為FNV1A雜湊函數,其以32、64、128、256、512和1024位元格式來呈現且易於實施。可理解的是,當全部儲存桶的數目為10億時,發生四次以上碰撞的機率小於0.30%。雖然與全部儲存桶的大小相比所述機率相對較低,但稍後將解釋如何解決此問題。
此外,需注意的是,當將額外儲存盒插入到雜湊記憶體表中時,其可能導致整個記憶體耗盡。在一實施例中,緩衝器會使用以儲存桶為基礎的替代策略(bucket-based replacement policy)來選擇最少存取的儲存桶中的至少一者來收回,直到緩衝器的記憶體足以用於所述額外儲存盒為止。所述替代策略為以儲存桶為基礎,且可不為以儲存盒為基礎,由此保證用於比較第二搜索雜湊碼的正確性。例如,此程序還可在記憶體使用率大於(例如)90%時進行。
圖3為說明根據本揭露一實施例的用於存取磁碟中的檔案的方法的流程圖。
請參照圖3,在本實施例中,元資料管理單元140(或控制模組146)會建構雜湊記憶體表142(步驟S301)。接著,元資料管理單元140(或控制模組146)將雜湊記憶體表142
載入到緩衝器120中(步驟S302)。並且,元資料管理單元140(或控制模組146)會根據載入在緩衝器120中的雜湊記憶體表142存取所請求的檔案(步驟S303)。具體地說,當接受檔案寫入請求、檔案更新請求、檔案刪除請求或檔案更新請求時,元資料管理單元140(或控制模組146)會使用以儲存桶為基礎的替代策略維護載入到緩衝器120中的雜湊記憶體表142,使得可用較少磁碟I/O操作來存取磁碟130中所儲存的檔案。
圖4為說明根據本揭露一實施例的用於當將新檔案寫入到磁碟中時更新雜湊記憶體表的方法的流程圖。
請參照圖4,在此實施例中,從用戶端電腦50將新檔案寫入到磁碟130中(步驟S401)。如前所述,當全部儲存桶的數目為10億時,發生四次以上碰撞的機率小於0.30%。為了解決此問題,在一實施例中,當用戶端電腦50寫入或上載檔案時,將新檔案的金鑰(即,邏輯位址)寫入在實體地址的第一區段中,使得如果有一個以上檔案在雜湊碼匹配程序之後被識別,那麼第一區段可確認所搜索的檔案是否確實為所匹配的檔案。因此,新檔案的實體地址會從磁碟130的檔案系統132被獲取(步驟S402)。新檔案的金鑰201會被嵌入到儲存新檔案所在的實體地址中(步驟S403)。接下來,索引雜湊函數202會被輸入新檔案的金鑰201以產生對應於新檔案的索引雜湊碼211(步驟S404)。接著,對應於新檔案的新產生的索引雜湊碼211是否已經存在於雜湊記憶體表142中會被確認(步驟S405)。
如果對應於新檔案的新產生的索引雜湊碼211已經存在於雜湊記憶體表142中,則具有實體地址欄位221和雜湊碼欄位222的新儲存盒220會被加入至指標213所指向的陣列230,且對應雜湊儲存桶210的儲存盒數目212會被加一(步驟S406)。如果對應於新檔案的新產生的索引雜湊碼211並不存在於雜湊記憶體表142中,則新雜湊儲存桶210會被插入到雜湊記憶體表142中(步驟S407)。對應於新檔案的儲存盒220會被加入並透過雜湊儲存桶210的新設置的指標213來指向所加入的儲存盒220,同時對應於新檔案的儲存盒數目212會被記錄為一(步驟S408)。驗證雜湊函數204會被輸入新檔案的金鑰201以產生對應於新檔案的驗證雜湊碼(步驟S409)。儲存新檔案的實體地址和對應於新檔案的驗證雜湊碼會分別被記錄到對應於新檔案的儲存盒220的實體地址欄位221和雜湊碼欄位222中(步驟S410),由此完成雜湊記憶體表142的更新。
圖5為說明根據本揭露一實施例的用於當執行檔案讀取請求時更新雜湊記憶體表的方法的流程圖。
請參照圖5,在此實施例中,當由用戶端電腦50選擇欲讀取的特定檔案(步驟S501)時,對應於所述特定檔案的金鑰201會被產生(步驟S502)。之後,對應於所述特定文件的金鑰201會被輸入至索引雜湊函數202以產生對應於特定檔案的第一搜索雜湊碼203(步驟S503)。然後,對應於特定文件的第一搜索雜湊碼203會與每一雜湊儲存桶210中中的索引雜湊碼211進行比較。接著,具有相同於對應於特定檔案的第
一搜索雜湊碼203的索引雜湊碼211的雜湊儲存桶210會被識別(步驟S504),其中所識別的雜湊儲存桶210會包括指向陣列230的指標213。接下來,對應於特定文件的金鑰201會被輸入至驗證雜湊函數204以產生對應於特定檔案的第二搜索雜湊碼205(步驟S505)。接著,從第一儲存盒開始以反覆運算型式將第二搜索雜湊碼205會與由指標213指向的陣列230內的記錄在每一儲存盒220的雜湊碼欄位222中的驗證雜湊碼進行比較(步驟S506)。接著,判斷是否找到至少一個匹配(步驟S507)。如果沒有找到任何匹配時,則向用戶端電腦50發出錯誤異常(步驟S508)。如果找到至少一個匹配時,則判斷是否正好找到一個匹配(步驟S509)。如果正好找到一個匹配時,則立即透過指向對應於同一儲存盒220內的驗證雜湊碼的實體地址欄位221中的實體地址來識別所匹配之檔案的實際位置(步驟S510)。如果找到多個匹配時,則將金鑰201與嵌入在所匹配儲存盒220內的實體地址中的邏輯檔名進行比較,而無須開啟所有所識別的檔案來進行驗證(步驟S511)。最後,可透過使用例如Linux系統上的Debugfs來讀取檔案(步驟S512)。
圖6為說明根據本揭露一實施例的用於當從磁碟刪除檔案時更新雜湊記憶體表的方法的流程圖。
參看圖6,在本實施例中,當由用戶端電腦50選擇欲刪除的特定檔案(步驟S601)時,產生對應於所述特定檔案的金鑰201(步驟S602)。接下來,在步驟S603到步驟S611中識別對應於所述特定檔案的儲存盒220,其中步驟S603到
S611可參考圖5中的步驟S503到S511,且下文中將不再詳細解釋。在識別對應於特定檔案的儲存盒220之後,特定檔案會從磁碟130中被刪除(步驟S612),並且對應於特定檔案的儲存盒220會被刪除(步驟S613)。接著,判斷對應雜湊儲存桶210中的儲存盒數目212是否為一(步驟S614)。如果對應雜湊儲存桶210中的儲存盒數目212為一時,則雜湊儲存桶210會被相應地刪除(步驟S615)。如果對應雜湊儲存桶210中的儲存盒數目212大於一時,則儲存盒數目212會被減去一(步驟S616),由此完成雜湊記憶體表142的更新。
圖7為說明根據本揭露一實施例的用於當將檔案更新到另一實體地址時更新雜湊記憶體表的方法的流程圖。
請參照圖7,在此實施例中,當由用戶端電腦50選擇欲更新的特定檔案(步驟S701)時,對應於特定檔案的金鑰201會被產生(步驟S702)。接下來,在步驟S703到步驟S711中識別對應於特定檔案的儲存盒220,其中步驟S703到S711可參考圖5中的步驟S503到S511,且下文中將不再詳細解釋。在識別對應於特定檔案的儲存盒220之後,特定檔案會從實體地址221中被更新到另一實體地址221(步驟S712)。接著,在對應於特定檔案的儲存盒220的實體地址欄位221中儲存此特定檔案的實體地址會被更新為此另一實體地址(步驟S713),由此完成雜湊記憶體表142的更新。值得注意的是,為了確保雜湊記憶體表142正常的運作,可週期性地對檔案系統132進行磁碟重組,使得以緊鄰方式儲存檔案。磁碟重組涉及將各區塊移動到新位置。當因磁碟重組目的(尤其是清理自
由空間且優化持久性)而移動某些塊,元資料管理單元140(或控制模組146)需被告知檔案實體地址的任何改變,以更新對應檔案的儲存盒所記錄的實體地址。
請再次參照圖1,應注意的是,包括元資料的雜湊記憶體表142會儲存在元資料資料庫144中,並且元資料資料庫144會以載入在緩衝器120中的雜湊記憶體表142以及磁碟130的檔案系統132來同步地更新。在一實施例中,元資料資料庫的副本152會被建立在備用伺服器150中。在元資料資料庫的副本152中,在雜湊記憶體表142中找到的元資料會被備份且會被用於恢復程序。此程序還可持續修改副本且局部地儲存此副本在暫時目錄中。所改變的資料的副本還可以預定義的時間間隔來使用。當備用伺服器150被連接時,未存於備用伺服器150上的所有暫時資料會被傳送。當復原元資料資料庫144時,其可復原到在特定時間處存在或在一段時間週期內已經存在的內容,使得元資料資料庫144可復原到其最近版本。通常當主要伺服器105關機時,其會維持一致狀態。也就是說,元資料資料庫144內的所有內容和所有檔案系統132的內容會被同步。在發生當機之後,有可能造成儲存系統100處於不一致狀態。也就是說,在主要伺服器105中的檔案系統132與元資料資料庫144的內容之間可能存在不一致。
圖8為說明根據本揭露一實施例的用於當向元資料管理單元發送當機恢復請求時恢復雜湊記憶體表的方法的流程圖。
參看圖8,在主要伺服器105當機之後,在下一次啟動
時可執行恢復程序。每當主要伺服器105啟動時,確定先前關機是否有不一致狀態(步驟S801)。如果主要伺服器105從先前關機中存有一致狀態時,則根據元資料資料庫144來初始化並建構雜湊記憶體表142(步驟S802)。如果主要伺服器105從先前關機中存有不一致狀態(即,主要伺服器105歸因於當機而關機)時,則向備用伺服器150發送當機恢復請求(步驟S803)。備用伺服器檢查元資料資料庫的副本152與元資料資料庫144中的雜湊記憶體表之間的不一致(步驟S804)。接著,從元資料資料庫的副本152發送欲在元資料資料庫144中恢復的內容(步驟S805)。最後,將所恢復的雜湊記憶體表142載入到緩衝器120以準備好用於處理元資料查詢(步驟S806)。
在一實施例中,元資料管理單元的上述控制模組可以軟體形式來實施且儲存在包含CD-ROM、磁帶、軟碟或光學資料儲存裝置在內的電腦可讀記錄媒體中。
綜合上述,本揭露提供用於元資料的方法和系統,其具有高更新效率和長系統使用持久性。所述方法和系統以雜湊型式進行元資料管理且通過減少用以識別檔案匹配或檔案匹配不存在的磁碟I/O操作的數目來顯著地改善例如檔案寫入請求、讀取請求、更新請求和刪除請求等物理磁碟存取效率。因此,與常規的資料庫管理系統相比,效率得以改善,且執行時間成本得以降低。本揭露合適地適用於例如具有密集工作負荷和更新的雲儲存服務等網路服務。
雖然本揭露已以實施例揭露如上,然其並非用以限定本揭露,任何所屬技術領域中具有通常知識者,在不脫離
本揭露之精神和範圍內,當可作些許之更動與潤飾,故本揭露之保護範圍當視後附之申請專利範圍所界定者為準。
50‧‧‧用戶端電腦
100‧‧‧儲存系統
105‧‧‧主要伺服器
110‧‧‧微處理器
120‧‧‧緩衝器
130‧‧‧磁碟
132‧‧‧檔案系統
140‧‧‧元資料管理單元
142‧‧‧雜湊記憶體表
144‧‧‧元資料資料庫
146‧‧‧控制模組
150‧‧‧備用伺服器
152‧‧‧副本
201‧‧‧金鑰
202‧‧‧索引雜湊函數
203‧‧‧第一搜索雜湊碼
204‧‧‧驗證雜湊函數
205‧‧‧第二搜索雜湊碼
210‧‧‧雜湊儲存桶
211‧‧‧索引雜湊碼
212‧‧‧儲存盒數目
213‧‧‧指標
220‧‧‧儲存盒
221‧‧‧實體地址欄位
222‧‧‧雜湊碼欄位
230‧‧‧陣列
S301、S302、S303‧‧‧存取磁碟中的檔案的步驟
S401、S402、S403、S404、S405、S406、S407、S408、
S409、S410‧‧‧當將新檔案寫入到磁碟中時更新雜湊記憶體表的步驟
S510、S502、S503、S504、S505、S506、S507、S508、S509、S510、S511、S512‧‧‧當執行檔案讀取請求時更新雜湊記憶體表的步驟
S601、S602、S603、S604、S605、S606、S607、S608、S609、S610、S611、S612、S613、S614、S615、S616‧‧‧當從磁碟刪除檔案時更新雜湊記憶體表的步驟
S701、S702、S703、S704、S705、S706、S707、S708、S709、S710、S711、S712、S713‧‧‧當將檔案更新到另一實體地址時更新雜湊記憶體表的步驟
S801、S802、S803、S804、S805、S806‧‧‧當向元資料管理單元發送當機恢復請求時恢復雜湊記憶體表的步驟
圖1為根據本揭露一實施例的儲存系統的方塊圖。
圖2為根據圖1實施例中的雜湊記憶體表(hash memory table)的示意性方塊圖。
圖3為說明根據本揭露一實施例的用於存取磁碟中的檔案的方法的流程圖。
圖4為說明根據本揭露一實施例的用於當將新檔案寫入到磁碟中時更新雜湊記憶體表的方法的流程圖。
圖5為說明根據本揭露一實施例的用於當執行檔案讀取請求時更新雜湊記憶體表的方法的流程圖。
圖6為說明根據本揭露一實施例的用於當從磁碟刪除檔案時更新雜湊記憶體表的方法的流程圖。
圖7為說明根據本揭露一實施例的用於當將檔案移動到另一實體地址時更新雜湊記憶體表的方法的流程圖。
圖8為說明根據本揭露一實施例的用於當將當機恢復請求(crash-recovery request)發送到元資料管理單元時恢復雜湊記憶體表的方法的流程圖。
S301、S302、S303‧‧‧存取磁碟中的檔案的步驟
Claims (20)
- 一種用於在具有緩衝器和磁碟的儲存系統上存取檔案的方法,所述方法包括:建構一雜湊記憶體表,其中所述雜湊記憶體表包括多個雜湊儲存桶,所述多個雜湊儲存桶分別對應於多個索引雜湊碼,每一所述雜湊儲存桶具有一指標,每一所述指標指向至少一個儲存盒,每一所述儲存盒具有一實體地址欄位和一雜湊碼欄位,所述實體地址欄位分別記錄儲存所述檔案的實體地址,所述雜湊碼欄位分別記錄對應於所述檔案的驗證雜湊碼,所述索引雜湊碼是透過將所述檔案的金鑰輸入到一索引雜湊函數來產生,且所述驗證雜湊碼是透過將所述檔案的所述金鑰輸入到一驗證雜湊函數來產生;使用一以儲存桶為基礎的替代策略將所述雜湊記憶體表載入到所述緩衝器中;以及根據載入到所述緩衝器中的所述雜湊記憶體表來存取所述文件。
- 如申請專利範圍第1項所述之方法,其中所述根據載入到所述緩衝器中的所述雜湊記憶體表來存取所述檔案的步驟包括:將一新檔案寫入到所述磁碟中且從所述磁碟的一檔案系統獲得儲存所述新檔案的一實體地址;將一新雜湊儲存桶插入在所述雜湊記憶體表中;透過將所述新檔案的一金鑰輸入到所述索引雜湊函數中來產生對應於所述新雜湊儲存桶的一索引雜湊碼; 在所述新雜湊儲存桶中加入對應於所述新檔案的一儲存盒且設置所述新雜湊儲存桶的一指標,其中所述指標指向對應於所述新檔案的所述儲存盒;透過將所述新檔案的所述金鑰輸入到所述驗證雜湊函數中來產生對應於所述新檔案的一驗證雜湊碼;將儲存所述新檔案的實體地址記錄到對應於所述新檔案的所述儲存盒的所述實體地址欄位中;以及將對應於所述新檔案的所述驗證雜湊碼記錄到對應於所述新檔案的所述儲存盒的所述雜湊碼欄位中。
- 如申請專利範圍第2項所述之方法,其中所述根據載入到所述緩衝器中的所述雜湊記憶體表來存取所述檔案的步驟更包括:在將所述新檔案寫入到所述磁碟中的同時,將所述新檔案的邏輯檔名嵌入到儲存所述新檔案的所述實體地址中。
- 如申請專利範圍第2項所述之方法,其中所述根據載入到所述緩衝器中的所述雜湊記憶體表來存取所述檔案的步驟更包括:接收用於讀取所述新檔案的一指令;透過將所述新檔案的所述金鑰輸入到所述索引雜湊函數中來產生一第一搜索雜湊碼;透過將所述第一搜索雜湊碼與所述索引雜湊碼進行比較來從所述雜湊儲存桶中識別所述新雜湊儲存桶;根據對應於所述第一搜索雜湊碼的所述新雜湊儲存桶的所述指標來讀取至少一個搜索儲存盒; 透過將所述新檔案的所述金鑰輸入到所述驗證雜湊函數中來產生一第二搜索雜湊碼;透過將所述第二搜索雜湊碼與所述至少一個搜索儲存盒的至少一個雜湊碼欄位中所記錄的至少一個驗證雜湊碼進行比較來在所述至少一個搜索儲存盒當中識別對應於所述新檔案的所述儲存盒;以及根據對應於所述新檔案的所述儲存盒的所述實體地址欄位中所記錄的所述實體地址來從所述磁碟讀取所述新檔案的內容。
- 如申請專利範圍第3項所述之方法,其中所述根據載入到所述緩衝器中的所述雜湊記憶體表來存取所述檔案的步驟更包括:接收用於讀取所述新檔案的一指令;透過將所述新檔案的所述金鑰輸入到所述索引雜湊函數中來產生一第一搜索雜湊碼;透過將所述第一搜索雜湊碼與所述索引雜湊碼進行比較來從所述雜湊儲存桶中識別所述新雜湊儲存桶;根據對應於所述第一搜索雜湊碼的所述新雜湊儲存桶的所述指標來讀取至少一個搜索儲存盒;透過將所述新檔案的所述金鑰輸入到所述驗證雜湊函數中來產生第二搜索雜湊碼;透過將所述第二搜索雜湊碼與所述至少一個搜索儲存盒的至少一個雜湊碼欄位中所記錄的至少一個驗證雜湊碼進行比較且將所述新檔案的所述邏輯檔名與嵌入到儲存對應於至 少一個搜索儲存盒的至少一個檔案的至少一個實體地址中的至少一個邏輯檔名進行比較來在所述至少一個搜索儲存盒當中識別對應於所述新檔案的所述儲存盒;以及根據對應於所述新檔案的所述儲存盒的所述實體地址欄位中所記錄的所述實體地址來從所述磁碟讀取所述新檔案的內容。
- 如申請專利範圍第2項所述之方法,其中所述根據載入到所述緩衝器中的所述雜湊記憶體表來存取所述檔案的步驟更包括:當所述磁碟的所述檔案系統將所述新檔案從儲存所述新檔案的所述實體地址移動到另一實體地址時,將所述另一實體地址更新到所述雜湊記憶體表中的對應於所述新檔案的所述儲存盒的所述實體地址欄位中。
- 如申請專利範圍第2項所述之方法,其中所述根據載入到所述緩衝器中的所述雜湊記憶體表來存取所述檔案的步驟更包括:當所述磁碟的所述檔案系統將所述新檔案從儲存所述新檔案的所述實體地址刪除時,刪除所述雜湊記憶體表中對應於所述新檔案的所述儲存盒。
- 如申請專利範圍第1項所述之方法,更包括:建構一元資料資料庫;以及將所述雜湊記憶體表中所記錄的資訊儲存到所述元資料資料庫中。
- 如申請專利範圍第8項所述之方法,更包括: 將所述元資料資料庫的一副本備份到備用伺服器中;以及根據所述備用伺服器中所儲存的所述元資料資料庫的所述副本來恢復所述雜湊記憶體表。
- 一種用於在具有緩衝器和磁碟的儲存系統上存取檔案的方法,所述方法包括:建構用於記錄所述檔案的一元資料的一雜湊記憶體表;在將所述檔案寫入到所述磁碟中的同時,將所述檔案的邏輯檔名嵌入到所述磁碟中的儲存所述檔案的一實體地址中;將所述雜湊記憶體表載入到所述緩衝器中;以及根據載入到所述緩衝器中的所述雜湊記憶體表和嵌入到所述磁碟的所述實體地址中的所述邏輯檔名來存取所述檔案。
- 一種儲存系統,包括:一微處理器;一緩衝器,耦接至所述微處理器;一磁碟,耦接至所述微處理器;一元資料管理單元,耦接至所述微處理器且用以建構一雜湊記憶體表,其中所述雜湊記憶體表包含多個雜湊儲存桶,所述多個雜湊儲存桶分別對應於多個索引雜湊碼,每一所述雜湊儲存桶具有指標,每一所述指標指向至少一個儲存盒,每一所述儲存盒具有一實體地址欄位和一雜湊碼欄位,所述實體地址欄位分別記錄儲存檔案的實體地址,所述雜湊碼欄位分別記錄對應於所述檔案的驗證雜湊碼,所述索引雜湊碼是透過將所述檔案的金鑰輸入到一索引雜湊函數來產生,且所述驗證雜湊 碼是透過將所述檔案的所述金鑰輸入到一驗證雜湊函數來產生,所述元資料管理單元更用以使用一以儲存桶為基礎的替代策略將所述雜湊記憶體表載入到所述緩衝器中且根據載入到所述緩衝器中的所述雜湊記憶體表來存取所述檔案。
- 如申請專利範圍第11項所述之儲存系統,其中所述元資料管理單元將一新檔案寫入到所述磁碟中且從所述磁碟的一檔案系統中獲得儲存所述新檔案的一實體地址,其中所述元資料管理單元透過將所述新檔案的一金鑰輸入到所述索引雜湊函數中來產生對應於一新雜湊儲存桶的索引雜湊碼且透過將所述新檔案的所述金鑰輸入到所述驗證雜湊函數中來產生對應於所述新檔案的一驗證雜湊碼,其中所述元資料管理單元將一新雜湊儲存桶插入在所述雜湊記憶體表中,將對應於所述新檔案的一儲存盒加入在所述新雜湊儲存桶中,且設定所述新雜湊儲存桶的一指標,其中所述指標指向對應於所述新檔案的所述儲存盒,其中所述元資料管理單元將儲存所述新檔案的所述實體地址記錄到對應於所述新檔案的所述儲存盒的實體地址欄位中且將對應於所述新檔案的所述驗證雜湊碼記錄到對應於所述新檔案的所述儲存盒的所述雜湊碼欄位中。
- 如申請專利範圍第12項所述之儲存系統,其中所述元資料管理單元更用以在將所述新檔案寫入到所述磁碟中的同時,將所述新檔案的邏輯檔名嵌入到儲存所述新檔案的所述實體地址中。
- 如申請專利範圍第12項所述之儲存系統,其中所述元資料管理單元更用以接收用於讀取所述新檔案的一指令,透過將所述新檔案的所述金鑰輸入到所述索引雜湊函數中來產生一第一搜索雜湊碼,透過將所述第一搜索雜湊碼與所述索引雜湊碼進行比較來從所述雜湊儲存桶中識別所述新雜湊儲存桶;根據對應於所述第一搜索雜湊碼的所述新雜湊儲存桶的所述指標來讀取至少一個搜索儲存盒;以及透過將所述新檔案的所述金鑰輸入到所述驗證雜湊函數中來產生一第二搜索雜湊碼,其中所述元資料管理單元更用以透過將所述第二搜索雜湊碼與所述至少一個搜索儲存盒的至少一個雜湊碼欄位中所記錄的至少一個驗證雜湊碼進行比較來在所述至少一個搜索儲存盒當中識別對應於所述新檔案的所述儲存盒,且根據對應於所述新檔案的所述儲存盒的所述實體地址欄位中所記錄的所述實體地址來從所述磁碟讀取所述新檔案的內容。
- 如申請專利範圍第13項所述之儲存系統,其中所述元資料管理單元更用以接收用於讀取所述新檔案的一指令,通過將所述新檔案的所述金鑰輸入到所述索引雜湊函數中來產生一第一搜索雜湊碼,透過將所述第一搜索雜湊碼與所述索引雜湊碼進行比較來從所述雜湊儲存桶中識別所述新雜湊儲存桶;根據對應於所述第一搜索雜湊碼的所述新雜湊儲存桶的所述指標來讀取至少一個搜索儲存盒;以及通過將所述新檔案的所述金鑰輸入到所述驗證雜湊函數中來產生一第二搜索雜湊碼, 其中所述元資料管理單元更用以透過將所述第二搜索雜湊碼與所述至少一個搜索儲存盒的至少一個雜湊碼欄位中所記錄的至少一個驗證雜湊碼進行比較及將所述新檔案的所述邏輯檔名與嵌入到儲存對應於至少一個搜索儲存盒的至少一個檔案的至少一個實體地址中的至少一個邏輯檔名進行比較來在所述至少一個搜索儲存盒當中識別對應於所述新檔案的所述儲存盒,且根據對應於所述新文件的所述儲存盒的所述實體地址欄位中所記錄的所述實體地址來從所述磁碟讀取所述新檔案的內容。
- 如申請專利範圍第12項所述之儲存系統,其中當所述磁碟的所述檔案系統將所述新檔案從儲存所述新檔案的所述實體地址移動到另一實體地址時,所述元資料管理單元更用以將所述另一實體地址更新到所述雜湊記憶體表中的對應於所述新檔案的所述儲存盒的所述實體地址欄位中。
- 如申請專利範圍第12項所述之儲存系統,其中當所述磁碟的所述檔案系統將所述新檔案從儲存所述新檔案的所述實體地址刪除時,所述元資料管理單元更用以刪除所述雜湊記憶體表中對應於所述新檔案的所述儲存盒。
- 如申請專利範圍第11項所述之儲存系統,其中所述元資料管理單元更包括一元資料資料庫且將所述雜湊記憶體表中所記錄的資訊儲存到所述元資料資料庫中。
- 如申請專利範圍第18項所述之儲存系統,更包括:一備用伺服器,其中所述元資料管理單元更用以將所述元資料資料庫的 一副本備份到所述備用伺服器中,其中所述元資料管理單元更用以根據所述備用伺服器中所儲存的所述元資料資料庫的所述副本來恢復所述雜湊記憶體表。
- 一種儲存系統,包括:一微處理器;一緩衝器,耦接至所述微處理器;一磁碟,耦接至所述微處理器;以及一元資料管理單元,耦接至所述微處理器且用以建構用於記錄所述檔案的一元資料的一雜湊記憶體表,其中所述元資料管理單元更用以在將所述檔案寫入到所述磁碟中的同時,將所述檔案的邏輯檔名嵌入到所述磁碟中的儲存所述檔案的實體地址中,其中所述元資料管理單元更用以使用一以儲存桶為基礎的替代策略將所述雜湊記憶體表載入到所述緩衝器中,其中所述元資料管理單元更用以根據載入到所述緩衝器中的所述雜湊記憶體表和嵌入到所述磁碟的所述實體地址中的所述邏輯檔名來存取所述檔案。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101150244A TWI475419B (zh) | 2012-12-26 | 2012-12-26 | 用於在儲存系統上存取檔案的方法和系統 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101150244A TWI475419B (zh) | 2012-12-26 | 2012-12-26 | 用於在儲存系統上存取檔案的方法和系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201426396A TW201426396A (zh) | 2014-07-01 |
TWI475419B true TWI475419B (zh) | 2015-03-01 |
Family
ID=51725528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101150244A TWI475419B (zh) | 2012-12-26 | 2012-12-26 | 用於在儲存系統上存取檔案的方法和系統 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI475419B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI714664B (zh) * | 2016-03-31 | 2021-01-01 | 南韓商三星電子股份有限公司 | 有效的記憶體在線重刪應用之虛擬桶多雜湊表 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212525B1 (en) * | 1997-03-07 | 2001-04-03 | Apple Computer, Inc. | Hash-based system and method with primary and secondary hash functions for rapidly identifying the existence and location of an item in a file |
US20030204698A1 (en) * | 2002-04-29 | 2003-10-30 | Aamer Sachedina | Resizable cache sensitive hash table |
TW200723046A (en) * | 2005-09-15 | 2007-06-16 | Ibm | Method and apparatus for managing multi-stream input/output requests in a network file server |
-
2012
- 2012-12-26 TW TW101150244A patent/TWI475419B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212525B1 (en) * | 1997-03-07 | 2001-04-03 | Apple Computer, Inc. | Hash-based system and method with primary and secondary hash functions for rapidly identifying the existence and location of an item in a file |
US20030204698A1 (en) * | 2002-04-29 | 2003-10-30 | Aamer Sachedina | Resizable cache sensitive hash table |
TW200723046A (en) * | 2005-09-15 | 2007-06-16 | Ibm | Method and apparatus for managing multi-stream input/output requests in a network file server |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI714664B (zh) * | 2016-03-31 | 2021-01-01 | 南韓商三星電子股份有限公司 | 有效的記憶體在線重刪應用之虛擬桶多雜湊表 |
Also Published As
Publication number | Publication date |
---|---|
TW201426396A (zh) | 2014-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9043334B2 (en) | Method and system for accessing files on a storage system | |
US10620862B2 (en) | Efficient recovery of deduplication data for high capacity systems | |
US10564850B1 (en) | Managing known data patterns for deduplication | |
CN107003935B (zh) | 用于优化数据库去重的装置、方法和计算机介质 | |
US9852145B2 (en) | Creation of synthetic backups within deduplication storage system by a backup application | |
US9141621B2 (en) | Copying a differential data store into temporary storage media in response to a request | |
US7930559B1 (en) | Decoupled data stream and access structures | |
US7673099B1 (en) | Affinity caching | |
US9740422B1 (en) | Version-based deduplication of incremental forever type backup | |
US11580162B2 (en) | Key value append | |
US9875183B2 (en) | Method and apparatus for content derived data placement in memory | |
JP6598996B2 (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
US10776321B1 (en) | Scalable de-duplication (dedupe) file system | |
CN113535670B (zh) | 一种虚拟化资源镜像存储系统及其实现方法 | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
US9934248B2 (en) | Computer system and data management method | |
US20180011897A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
CN112416879B (zh) | 一种基于ntfs文件系统的块级数据去重方法 | |
CN106874329A (zh) | 数据库表索引的实现方法和装置 | |
US8156126B2 (en) | Method for the allocation of data on physical media by a file system that eliminates duplicate data | |
US20200019539A1 (en) | Efficient and light-weight indexing for massive blob/objects | |
TWI475419B (zh) | 用於在儲存系統上存取檔案的方法和系統 | |
KR101368441B1 (ko) | 데이터베이스의 공간 재사용 장치, 방법 및 컴퓨터 판독 가능한 기록 매체 | |
US20240143213A1 (en) | Fingerprint tracking structure for storage system | |
KR20090003093A (ko) | 객체 파일 시스템을 이용한 비정형 데이터 관리 방법 및장치 |