TWI815086B - 資料儲存系統及其全域去重複方法 - Google Patents

資料儲存系統及其全域去重複方法 Download PDF

Info

Publication number
TWI815086B
TWI815086B TW110105608A TW110105608A TWI815086B TW I815086 B TWI815086 B TW I815086B TW 110105608 A TW110105608 A TW 110105608A TW 110105608 A TW110105608 A TW 110105608A TW I815086 B TWI815086 B TW I815086B
Authority
TW
Taiwan
Prior art keywords
data
representative value
erasure
erasure coding
data block
Prior art date
Application number
TW110105608A
Other languages
English (en)
Other versions
TW202137027A (zh
Inventor
蔡金印
賴義麟
Original Assignee
威盛電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 威盛電子股份有限公司 filed Critical 威盛電子股份有限公司
Priority to US17/195,551 priority Critical patent/US11709609B2/en
Priority to CN202110270233.3A priority patent/CN112835538B/zh
Publication of TW202137027A publication Critical patent/TW202137027A/zh
Application granted granted Critical
Publication of TWI815086B publication Critical patent/TWI815086B/zh

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一種資料儲存系統及其全域去重複方法。資料儲存系統包括多個儲存裝置以及一個分派裝置。分派裝置將資料寫請求所對應的原資料切割為至少一個資料塊。分派裝置對資料塊進行摘要計算,以產生代表值。分派裝置對代表值進行分佈計算,以決定代表值所對應的目的位置。分派裝置依照目的位置而通過通訊網路將資料塊與代表值傳輸至這些儲存裝置中的至少一個目的儲存裝置。所述目的儲存裝置檢查代表值,以決定是否將資料塊存入所述至少一個目的儲存裝置的儲存空間中。

Description

資料儲存系統及其全域去重複方法
本發明是有關於一種資料儲存技術,且特別是有關於一種資料儲存系統及其全域去重複方法。
分散式儲存系統(資料儲存系統)包括多個物件儲存裝置(object storage device)。這些物件儲存裝置可以經由通訊網路而彼此連接,其中所述通訊網路包括區域網路以及(或是)網際網路。多個使用者裝置可以通過網路而將資料儲存於分散式儲存系統。無論如何,儲存於分散式儲存系統中的資料可能有重複。為了將大量資料更有效地存儲在分散式儲存系統中,需要一種資料縮減技術,例如去重複(deduplication)技術。去重複技術可以消除重複資料的副本,以降低儲存資料量。
分散式儲存系統的一個範例是Ceph。公知的Ceph是一種開源軟體儲存平台(open-source software storage platform),其將物件儲存實施在單個分散式計算機群(distributed computer cluster)。由於分散式儲存系統的資料處理過程和附加的元資料(metadata)管理,分散式儲存系統很難進行全域去重複。例如,Ceph沒有支持全域去重複。
須注意的是,「先前技術」段落的內容是用來幫助了解本發明。在「先前技術」段落所揭露的部份內容(或全部內容)可能不是所屬技術領域中具有通常知識者所知道的習知技術。在「先前技術」段落所揭露的內容,不代表該內容在本發明申請前已被所屬技術領域中具有通常知識者所知悉。
本發明提供一種資料儲存系統及其全域去重複方法,其可以在分散式儲存環境中有效去重複。
在本發明的一實施例中,上述的資料儲存系統包括多個儲存裝置以及一個分派裝置。這些儲存裝置適於耦接至通訊網路。分派裝置適於接收資料寫請求。分派裝置被配置為將資料寫請求所對應的原資料切割為至少一個資料塊。分派裝置對在所述至少一個資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值。分派裝置對代表值進行第一分佈計算,以決定代表值所對應的目的位置。分派裝置依照目的位置而通過通訊網路將目前資料塊與代表值傳輸至這些儲存裝置中的至少一個目的儲存裝置。所述至少一個目的儲存裝置檢查代表值,以決定是否將目前資料塊存入所述至少一個目的儲存裝置的儲存空間中。
在本發明的一實施例中,上述的一種全域去重複方法包括:由分派裝置接收資料寫請求;由分派裝置將資料寫請求所對應的原資料切割為至少一個資料塊;由分派裝置對在所述至少一個資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值;由分派裝置對代表值進行第一分佈計算,以決定代表值所對應的目的位置;由分派裝置依照目的位置而通過通訊網路將目前資料塊與代表值傳輸至多個儲存裝置中的至少一個目的儲存裝置;以及由所述至少一個目的儲存裝置檢查代表值,以決定是否將目前資料塊存入所述至少一個目的儲存裝置的儲存空間中。
基於上述,本發明諸實施例所述資料儲存系統及其全域去重複方法可以被應用於分散式儲存系統。分派裝置可以產生目前資料塊所對應的代表值,以及依據代表值決定目的位置。依照所述目的位置,分派裝置可以通過通訊網路(例如區域網路或是其他網路)將目前資料塊與代表值傳輸至多個儲存裝置中的至少一個目的儲存裝置。也就是說,相同的資料塊會被傳送至相同的儲存裝置。所述目的儲存裝置可以檢查代表值,以決定是否將目前資料塊存入其本地的儲存空間中。因此,所述資料儲存系統可以在分散式儲存環境中有效去重複。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
在本案說明書全文(包括申請專利範圍)中所使用的「耦接(或連接)」一詞可指任何直接或間接的連接手段。舉例而言,若文中描述第一裝置耦接(或連接)於第二裝置,則應該被解釋成該第一裝置可以直接連接於該第二裝置,或者該第一裝置可以透過其他裝置或某種連接手段而間接地連接至該第二裝置。本案說明書全文(包括申請專利範圍)中提及的「第一」、「第二」等用語是用以命名元件(element)的名稱,或區別不同實施例或範圍,而並非用來限制元件數量的上限或下限,亦非用來限制元件的次序。另外,凡可能之處,在圖式及實施方式中使用相同標號的元件/構件/步驟代表相同或類似部分。不同實施例中使用相同標號或使用相同用語的元件/構件/步驟可以相互參照相關說明。
圖1是依照本發明的一實施例的一種資料儲存系統100的電路方塊(circuit block)示意圖。使用者裝置10可以通過通訊網路20發出資料寫請求、資料讀請求以及(或是)其他請求至資料儲存系統100。資料儲存系統100可以通過通訊網路20提供雲端儲存服務給一個或多個使用者裝置10。所述使用者裝置10可以是手機、平板電腦、筆記型電腦、個人電腦以及(或是)其他電子裝置。所述通訊網路20可以包含區域網路、網際網路以及(或是)其他通訊網路。
在圖1所示實施例中,資料儲存系統100包括分派裝置110、儲存裝置120_1、儲存裝置120_2、儲存裝置120_3、儲存裝置120_4、儲存裝置120_5、…、儲存裝置120_n。分派裝置110與儲存裝置120_1~120_n適於耦接至通訊網路20。儲存裝置120_1~120_n的數量n可以依照設計需求來決定。舉例來說,在某一個實施例中,所述數量n可以為2。
儲存裝置120_1~120_n可以是互為獨立的多個電子設備。依照設計需求,這些儲存裝置120_1~120_n的任何一個可以是個人電腦、工作站、伺服器、網路附加儲存(network attached storage,NAS)設備以及(或是)其他電子設備。依照設計需求,在一些實施例中,分派裝置110可以是獨立於儲存裝置120_1~120_n的另一個電子設備,而分派裝置110可以是個人電腦、工作站、伺服器、NAS設備以及(或是)其他電子設備。在另一些實施例中,這些儲存裝置120_1~120_n中的至少一個可以被選用做為分派裝置110。
依照不同的設計需求,上述分派裝置110以及(或是)儲存裝置120_1~120_n的方塊的實現方式可以是硬體(hardware)、韌體(firmware)、軟體(software,即程式)或是前述三者中的多者的組合形式。以硬體形式而言,上述分派裝置110以及(或是)儲存裝置120_1~120_n的方塊的相關功能可以被實現於一或多個控制器、微控制器、微處理器、特殊應用積體電路(Application-specific integrated circuit, ASIC)、數位訊號處理器(digital signal processor, DSP)、場可程式邏輯閘陣列(Field Programmable Gate Array, FPGA)及/或其他處理單元中的各種邏輯區塊、模組和電路。
以軟體形式及/或韌體形式而言,上述分派裝置110以及(或是)儲存裝置120_1~120_n的相關功能可以被實現為編程碼(programming codes)。例如,利用一般的編程語言(programming languages,例如C、C++或組合語言)或其他合適的編程語言來實現上述分派裝置110以及(或是)儲存裝置120_1~120_n。所述編程碼可以被記錄/存放在記錄媒體中。在一些實施例中,所述記錄媒體例如包括唯讀記憶體(Read Only Memory,ROM)、存儲裝置以及(或是)隨機存取記憶體(Random Access Memory,RAM)。在另一些實施例中,所述記錄媒體可以包括「非臨時的電腦可讀取媒體(non-transitory computer readable medium)」。舉例來說,帶(tape)、碟(disk)、卡(card)、半導體記憶體、可程式設計的邏輯電路等可以被使用來實現所述非臨時的電腦可讀取媒體。電腦、中央處理器(Central Processing Unit,CPU)、控制器、微控制器或微處理器可以從所述記錄媒體中讀取並執行所述編程碼,從而實現上述分派裝置110以及(或是)儲存裝置120_1~120_n的相關功能。而且,所述編程碼也可經由任意傳輸媒體(通信網路或廣播電波等)而提供給所述電腦(或CPU)。所述通信網路例如是網際網路(Internet)、有線通信(wired communication)、無線通信(wireless communication)或其它通信介質。
圖2是依照本發明的另一實施例的一種資料儲存系統200的電路方塊示意圖。使用者裝置10可以通過通訊網路30發出資料寫請求、資料讀請求以及(或是)其他請求至資料儲存系統200。資料儲存系統200可以通過通訊網路30提供雲端儲存服務給一個或多個使用者裝置10。所述通訊網路30可以包含區域網路、網際網路以及(或是)其他通訊網路。圖2所示使用者裝置10可以參照圖1所示使用者裝置10的相關說明,故不再贅述。
在圖2所示實施例中,資料儲存系統200包括分派裝置110以及儲存裝置120_1~120_n。分派裝置110與儲存裝置120_1~120_n適於耦接至通訊網路20。圖2所示通訊網路20、分派裝置110以及儲存裝置120_1~120_n可以參照圖1所示通訊網路20、分派裝置110以及儲存裝置120_1~120_n的相關說明,故不再贅述。
圖3是依照本發明的一實施例的一種全域去重複方法的流程示意圖。圖3所示全域去重複方法可以適用於圖1所示資料儲存系統100以及(或是)圖2所示資料儲存系統200。依照設計需求,讀者可以參照圖1與圖3來理解下述說明內容,或是參照圖2與圖3來理解下述說明內容。
在步驟S310中,分派裝置110可以接收使用者裝置10的資料寫請求。所述資料寫請求可以包括原鍵值OID與原資料D。亦即,使用者裝置10請求將一筆原資料D寫入資料儲存系統。
在步驟S320中,分派裝置110可以將所述資料寫請求所對應的原資料D切割為一個(或多個)資料塊(data chunk)。在步驟S330中,分派裝置110可以對在這個(或這些)資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值。依照設計需求,在一些實施例中,所述摘要計算可以包括哈希演算法(Hash algorithm)以及(或是)其他演算法,而所述代表值可以包括所述目前資料塊的哈希值。舉例來說,分派裝置110可以將所述原資料D切割為資料塊ChunkA與資料塊ChunkB,分派裝置110可以對資料塊ChunkA進行哈希計算而產生代表值HIDa,以及分派裝置110可以對資料塊ChunkB進行哈希計算而產生代表值HIDb。分派裝置110可以將所述原鍵值OID、代表值HIDa與代表值HIDb的映射關係記錄至分派裝置110的查找表中。
在步驟S340中,分派裝置110可以對所述代表值進行分佈計算,以決定代表值所對應的目的位置。在步驟S350中,分派裝置110可以依照所述目的位置而通過通訊網路20將目前資料塊與代表值傳輸至這些儲存裝置120_1~120_n中的至少一個目的儲存裝置。依照設計需求,在一些實施例中,所述分佈計算可以包括Ceph CRUSH演算法以及(或是)其他演算法。所述Ceph CRUSH演算法為習知技術,故在此不予贅述。舉例來說,分派裝置110可以對資料塊ChunkA的代表值HIDa進行CRUSH計算,並依照計算結果(假設)將資料塊ChunkA傳輸至儲存裝置120_1(目的儲存裝置)。同理,分派裝置110可以對資料塊ChunkB的代表值HIDb進行CRUSH計算,並依照計算結果(假設)將資料塊ChunkB傳輸至儲存裝置120_4(目的儲存裝置)。
在步驟S360中,所述目的儲存裝置可以檢查所述代表值,以決定是否將所述目前資料塊存入所述目的儲存裝置的儲存空間中。依照設計需求,所述儲存空間可以是所述目的儲存裝置的硬碟(hard disk drive,HDD)、固態硬碟(solid state drive,SSD)以及(或是)其他儲存介質。舉例來說,在分派裝置110將資料塊ChunkA與代表值HIDa傳輸至儲存裝置120_1(目的儲存裝置)後,儲存裝置120_1可以檢查代表值HIDa,以決定是否將資料塊ChunkA存入儲存裝置120_1的儲存空間中。同理,在分派裝置110將資料塊ChunkB與代表值HIDb傳輸至儲存裝置120_4(目的儲存裝置)後,儲存裝置120_4可以檢查代表值HIDb,以決定是否將資料塊ChunkB存入儲存裝置120_1的儲存空間中。
圖4是依照本發明的一實施例的一種儲存裝置的操作流程示意圖。圖3所示步驟S360可以參照圖4的相關說明。在圖4所示實施例中,儲存裝置120_1~120_n的每一個各自具有查找表(或是一鍊結表)。在步驟S410中,所述目的儲存裝置可以接收分派裝置110所提供的目前資料塊與代表值。在步驟S420中,所述目的儲存裝置可以檢查查找表有無所述代表值。舉例來說,在分派裝置110將資料塊ChunkA與代表值HIDa傳輸至儲存裝置120_1(目的儲存裝置)後,儲存裝置120_1可以檢查儲存裝置120_1的查找表有無所述代表值HIDa。
當查找表有所述代表值時(亦即步驟S430的判斷結果為「是」),所述目的儲存裝置可以進行步驟S440、S450與S460。在步驟S440中,所述目的儲存裝置會放棄將分派裝置110所提供的所述目前資料塊存入儲存空間中,亦即丟棄分派裝置110所提供的所述目前資料塊。在步驟S450中,所述目的儲存裝置可以調增代表值所對應的參照次數值。在步驟S460中,所述目的儲存裝置可以將所述參照次數值更新至所述查找表。舉例來說,在儲存裝置120_1(目的儲存裝置)的查找表有所述代表值HIDa的情況下,儲存裝置120_1可以丟棄分派裝置110所提供的所述目前資料塊ChunkA,將代表值HIDa所對應的參照次數值RefCnt累進加1,以及將參照次數值RefCnt更新至儲存裝置120_1的所述查找表。
當查找表沒有所述代表值時(亦即步驟S430的判斷結果為「否」),所述目的儲存裝置可以進行步驟S470、S480與S490。在步驟S470中,所述目的儲存裝置可以將分派裝置110所提供的所述目前資料塊存於儲存空間的物理位址。在步驟S480中,所述目的儲存裝置可以將所述代表值所對應的參照次數值設為初始值(例如0)。在步驟S490中,所述目的儲存裝置可以將代表值、物理位址與參照次數值記錄於查找表。舉例來說,假設目前資料塊ChunkA的長度為L。在儲存裝置120_1(目的儲存裝置)的查找表沒有所述代表值HIDa的情況下,儲存裝置120_1可以將分派裝置110所提供的目前資料塊ChunkA存於儲存裝置120_1的儲存空間的某個物理位址FADD,將代表值HIDa所對應的參照次數值RefCnt重置為0,以及將代表值HIDa、物理位址FADD、長度L與參照次數值RefCnt記錄於儲存裝置120_1的查找表。
圖5是依照本發明的一實施例說明圖1或圖2所示分派裝置110的電路方塊示意圖。依照設計需求,圖5所述實施例可以參用圖3與(或)圖4的相關說明。在圖5所述實施例中,分派裝置110包括主分派裝置111以及備援分派裝置112。主分派裝置111與備援分派裝置112適於耦接至通訊網路20。主分派裝置111與備援分派裝置112是互為獨立的兩個電子設備。依照設計需求,主分派裝置111與備援分派裝置112的任何一個可以是個人電腦、工作站、伺服器、NAS設備以及(或是)其他電子設備。依照設計需求,在一些實施例中,主分派裝置111(或備援分派裝置112)可以是獨立於儲存裝置120_1~120_n的另一個電子設備。在另一些實施例中,這些儲存裝置120_1~120_n中的至少一個可以被選用做為主分派裝置111(或備援分派裝置112)。
依照不同的設計需求,上述主分派裝置111以及(或是)備援分派裝置112的方塊的實現方式可以是硬體、韌體、軟體(即程式)或是前述三者中的多者的組合形式。以軟體形式及/或韌體形式而言,上述主分派裝置111以及(或是)備援分派裝置112的相關功能可以被實現為編程碼。例如,利用一般的編程語言(例如C、C++或組合語言)或其他合適的編程語言來實現上述主分派裝置111以及(或是)備援分派裝置112。所述編程碼可以被記錄/存放在記錄媒體中。電腦、CPU、控制器、微控制器或微處理器可以從所述記錄媒體中讀取並執行所述編程碼,從而實現上述主分派裝置111以及(或是)備援分派裝置112的相關功能。而且,所述編程碼也可經由任意傳輸媒體(通信網路或廣播電波等)而提供給所述電腦(或CPU)。
圖6是依照本發明的一實施例說明圖5所示主分派裝置111的寫操作流程示意圖。圖5所示備援分派裝置112的功能可以參照主分派裝置111的相關說明來類推。請參照圖5與圖6。在步驟S610中,主分派裝置111可以接收使用者裝置10的資料寫請求。所述資料寫請求可以包括原鍵值OID與原資料D。
在步驟S620中,主分派裝置111可以將所述資料寫請求所對應的原資料D切割為一個(或多個)資料塊(data chunk)。在步驟S630中,主分派裝置111可以對在這個(或這些)資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值。在步驟S640中,主分派裝置111可以將原鍵值與代表值的映射關係記錄至主分派裝置111的查找表中。舉例來說,主分派裝置111可以將所述原資料D切割為資料塊ChunkA與資料塊ChunkB,主分派裝置111可以對資料塊ChunkA進行哈希計算而產生代表值HIDa,以及主分派裝置111可以對資料塊ChunkB進行哈希計算而產生代表值HIDb。主分派裝置111可以將原鍵值OID、代表值HIDa與代表值HIDb的映射關係記錄至主分派裝置111的查找表中。
在步驟S650中,主分派裝置111可以對所述代表值進行分佈計算,以決定代表值所對應的目的位置。在步驟S660中,主分派裝置111可以依照所述目的位置而通過通訊網路20將目前資料塊與代表值傳輸至這些儲存裝置120_1~120_n中的多個目的儲存裝置。舉例來說,主分派裝置111可以對資料塊ChunkA的代表值HIDa進行CRUSH計算,並依照計算結果(假設)將代表值HIDa與資料塊ChunkA傳輸至儲存裝置120_1與120_2(目的儲存裝置)。相同的資料塊ChunkA被傳輸至儲存裝置120_1與120_2,以實現複製(replica)功能。同理,主分派裝置111可以對資料塊ChunkB的代表值HIDb進行CRUSH計算,並依照計算結果(假設)將代表值HIDb與資料塊ChunkB傳輸至儲存裝置120_4與120_5(目的儲存裝置)。
在這些目的儲存裝置回答(表示成功儲存)後,主分派裝置111可以將所述查找表提供給備援分派裝置112(步驟S670)。在步驟S680中,主分派裝置111可以回答使用者裝置10,以表示成功儲存。備援分派裝置112的查找表的內容與主分派裝置111的查找表的內容一致。因此,在主分派裝置111的查找表被毀損的情況下,或是在主分派裝置111無法正常操作的情況下,備援分派裝置112可以代替主分派裝置111去進行圖6所示寫操作流程以及(或是)圖7所示讀操作流程。
圖7是依照本發明的一實施例說明圖5所示主分派裝置111的讀操作流程示意圖。圖5所示備援分派裝置112的功能可以參照主分派裝置111的相關說明來類推。請參照圖5與圖7。在步驟S710中,主分派裝置111可以接收使用者裝置10的資料讀請求。所述資料讀請求可以包括原鍵值OID。在步驟S720中,主分派裝置111可以在主分派裝置111的查找表中搜尋資料讀請求所對應的原鍵值OID,以便從所述查找表取出原鍵值OID所對應的代表值。在步驟S730中,主分派裝置111可以對所述代表值進行分佈計算,以決定代表值所對應的目的位置。在步驟S740中,主分派裝置111可以依照所述目的位置而通過通訊網路20將讀請求與代表值傳輸至這些儲存裝置120_1~120_n中的一個(或多個)目的儲存裝置。
舉例來說,主分派裝置111可以在主分派裝置111的查找表中搜尋原鍵值OID,以便從所述查找表取出原鍵值OID所對應的代表值HIDa與HIDb。主分派裝置111可以對代表值HIDa進行CRUSH計算,並依照計算結果(假設)將讀請求與代表值HIDa傳輸至儲存裝置120_1(目的儲存裝置)。在儲存裝置120_2作為儲存裝置120_1的備援裝置的情況下,當儲存裝置120_1的資料失效時,主分派裝置111可以將讀請求與代表值HIDa傳輸至儲存裝置120_2(目的儲存裝置)。同理,主分派裝置111可以對代表值HIDb進行CRUSH計算,並依照計算結果(假設)將讀請求與代表值HIDb傳輸至儲存裝置120_4(目的儲存裝置)。在儲存裝置120_5作為儲存裝置120_4的備援裝置的情況下,當儲存裝置120_4的資料失效時,主分派裝置111可以將讀請求與代表值HIDa傳輸至儲存裝置120_5(目的儲存裝置)。
所述目的儲存裝置可以依照主分派裝置111所提供的代表值而在其本地的儲存空間中讀取出對應的資料塊,然後依照讀請求將所述資料塊回傳給主分派裝置111。在主分派裝置111接收這些目的儲存裝置所回傳的資料塊(步驟S750)後,主分派裝置111可以彙整這些回傳的資料塊作為原資料D,以及將原資料D回傳給使用者裝置10(步驟S760)。舉例來說,儲存裝置120_1(目的儲存裝置)可以依照主分派裝置111所提供的代表值HIDa而在其本地的儲存空間中讀取出對應的資料塊ChunkA,然後依照讀請求將所述資料塊ChunkA回傳給主分派裝置111。同理,儲存裝置120_4(目的儲存裝置)可以依照主分派裝置111所提供的代表值HIDb而在其本地的儲存空間中讀取出對應的資料塊ChunkB,然後依照讀請求將所述資料塊ChunkB回傳給主分派裝置111。在主分派裝置111接收這些目的儲存裝置120_1與120_4所回傳的資料塊ChunkA與ChunkB後,主分派裝置111可以彙整這些資料塊ChunkA與ChunkB作為原資料D,以及將原鍵值OID與原資料D回傳給使用者裝置10。
圖8是依照本發明的另一實施例說明圖1或圖2所示分派裝置110的電路方塊示意圖。依照設計需求,圖8所述實施例可以參用圖3與(或)圖4的相關說明。在圖8所述實施例中,分派裝置110包括一個糾刪編碼(Erasure coding)裝置113以及一個(或多個)資料分派裝置114。糾刪編碼裝置113與資料分派裝置114適於耦接至通訊網路20。糾刪編碼裝置113與資料分派裝置114是互為獨立的兩個電子設備。依照設計需求,糾刪編碼裝置113與資料分派裝置114的任何一個可以是個人電腦、工作站、伺服器、NAS設備以及(或是)其他電子設備。依照設計需求,在一些實施例中,糾刪編碼裝置113(或資料分派裝置114)可以是獨立於儲存裝置120_1~120_n的另一個電子設備。在另一些實施例中,這些儲存裝置120_1~120_n中的至少一個可以被選用做為糾刪編碼裝置113(或資料分派裝置114)。
依照不同的設計需求,上述糾刪編碼裝置113以及(或是)資料分派裝置114的方塊的實現方式可以是硬體、韌體、軟體(即程式)或是前述三者中的多者的組合形式。以軟體形式及/或韌體形式而言,上述糾刪編碼裝置113以及(或是)資料分派裝置114的相關功能可以被實現為編程碼。例如,利用一般的編程語言(例如C、C++或組合語言)或其他合適的編程語言來實現上述糾刪編碼裝置113以及(或是)資料分派裝置114。所述編程碼可以被記錄/存放在記錄媒體中。電腦、CPU、控制器、微控制器或微處理器可以從所述記錄媒體中讀取並執行所述編程碼,從而實現上述糾刪編碼裝置113以及(或是)資料分派裝置114的相關功能。而且,所述編程碼也可經由任意傳輸媒體(通信網路或廣播電波等)而提供給所述電腦(或CPU)。
圖9是依照本發明的一實施例說明圖8所示糾刪編碼裝置113與資料分派裝置114的寫操作流程示意圖。圖8所示資料分派裝置114的功能可以參照糾刪編碼裝置113的相關說明來類推。請參照圖8與圖9。在步驟S900中,糾刪編碼裝置113可以接收使用者裝置10的資料寫請求。所述資料寫請求可以包括原鍵值OID與原資料D。
在步驟S905中,糾刪編碼裝置113可以對原資料D進行糾刪編碼計算,以產生多個糾刪資料以及這些糾刪資料所對應的多個鍵值。在步驟S910中,糾刪編碼裝置113可以對這些鍵值的每一個進行分佈計算,以產生這些鍵值所對應的多個裝置位置。在步驟S915中,糾刪編碼裝置113可以依照所述裝置位置而通過通訊網路20將這些糾刪資料與這些鍵值傳輸至多個資料分派裝置114。舉例來說,糾刪編碼裝置113可以對原資料D進行糾刪編碼計算,以產生多個糾刪資料Shard1、Shard2、Shard3、Shard4與Shard5。糾刪編碼裝置113還可以依據原鍵值OID產生這些糾刪資料Shard1~Shard5所對應的鍵值為OID1、OID2、OID3、OID4與OID5。糾刪編碼裝置113可以對鍵值OID1進行分佈計算,以通過通訊網路20將糾刪資料Shard1與鍵值OID1傳輸至這些資料分派裝置114中的第一個資料分派裝置。同理,糾刪編碼裝置113可以通過通訊網路20將糾刪資料Shard2與鍵值OID2傳輸至這些資料分派裝置114中的第二個資料分派裝置,將糾刪資料Shard3與鍵值OID3傳輸至這些資料分派裝置114中的第三個資料分派裝置,將糾刪資料Shard4與鍵值OID4傳輸至這些資料分派裝置114中的第四個資料分派裝置,以及將糾刪資料Shard5與鍵值OID5傳輸至這些資料分派裝置114中的第五個資料分派裝置。
在步驟S950中,這些資料分派裝置114可以將所述糾刪資料切割為一個(或多個)資料塊(data chunk)。在步驟S955中,這些資料分派裝置114可以對在這個(或這些)資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值。在步驟S960中,這些資料分派裝置114可以將原鍵值與代表值的映射關係記錄至資料分派裝置114的查找表中。舉例來說,這些資料分派裝置114中的第一個資料分派裝置可以將所述糾刪資料Shard1切割為資料塊Chunk1A(或更多個資料塊),所述第一個資料分派裝置可以對資料塊Chunk1A進行哈希計算而產生代表值HID1a,以及所述第一個資料分派裝置可以將鍵值OID1與代表值HID1a的映射關係記錄至所述第一個資料分派裝置的查找表中。同理,這些資料分派裝置114中的第二個至第五個資料分派裝置的操作可以參照這些資料分派裝置114中的所述第一個資料分派裝置的相關說明來類推,故不再贅述。
在步驟S965中,這些資料分派裝置114可以對所述代表值進行分佈計算,以決定代表值所對應的目的位置。在步驟S970中,這些資料分派裝置114可以依照所述目的位置而通過通訊網路20將目前資料塊與代表值傳輸至這些儲存裝置120_1~120_n中的一個(或多個)目的儲存裝置。舉例來說,這些資料分派裝置114中的第一個資料分派裝置可以對資料塊Chunk1A的代表值HID1a進行CRUSH計算,並依照計算結果(假設)將代表值HID1a與資料塊Chunk1A傳輸至儲存裝置120_1(目的儲存裝置)。
在這些目的儲存裝置回答(表示成功儲存)後,這些資料分派裝置114可以回答糾刪編碼裝置113(步驟S975)。在這些資料分派裝置114回答(表示成功儲存)後,糾刪編碼裝置113可以回答(表示成功儲存)使用者裝置10。
圖10是依照本發明的一實施例說明圖8所示糾刪編碼裝置113與資料分派裝置114的讀操作流程示意圖。請參照圖8與圖10。在步驟S1000中,糾刪編碼裝置113可以接收使用者裝置10的資料讀請求。所述資料讀請求可以包括原鍵值OID。在步驟S1005中,糾刪編碼裝置113可以對原鍵值OID進行糾刪編碼計算,以產生多個鍵值。在步驟S1010中,糾刪編碼裝置113可以對這些鍵值的每一個進行分佈計算,以產生這些鍵值所對應的多個裝置位置。在步驟S1015中,糾刪編碼裝置113可以依照所述裝置位置而通過通訊網路20將讀請求與這些鍵值傳輸至多個資料分派裝置114。
舉例來說,糾刪編碼裝置113可以對原鍵值OID進行糾刪編碼計算,以產生多個鍵值OID1、OID2、OID3、OID4與OID5。糾刪編碼裝置113可以對鍵值OID1進行分佈計算,以通過通訊網路20將讀請求與與鍵值OID1傳輸至這些資料分派裝置114中的第一個資料分派裝置。同理,糾刪編碼裝置113可以通過通訊網路20將讀請求與鍵值OID2傳輸至這些資料分派裝置114中的第二個資料分派裝置,將讀請求與鍵值OID3傳輸至這些資料分派裝置114中的第三個資料分派裝置,將讀請求與鍵值OID4傳輸至這些資料分派裝置114中的第四個資料分派裝置,以及將讀請求與鍵值OID5傳輸至這些資料分派裝置114中的第五個資料分派裝置。
在步驟S1050中,資料分派裝置114可以在資料分派裝置114的查找表中搜尋讀請求所對應的鍵值,以便從所述查找表取出所述鍵值所對應的代表值。在步驟S1055中,資料分派裝置114可以對所述代表值進行分佈計算,以決定代表值所對應的目的位置。在步驟S1060中,資料分派裝置114可以依照所述目的位置而通過通訊網路20將讀請求與代表值傳輸至這些儲存裝置120_1~120_n中的一個(或多個)目的儲存裝置。
舉例來說,這些資料分派裝置114中的第一個資料分派裝置可以在所述第一個資料分派裝置的查找表中搜尋鍵值OID1,以便從所述查找表取出鍵值OID1所對應的代表值HID1a。所述第一個資料分派裝置可以對代表值HID1a進行CRUSH計算,並依照計算結果(假設)將讀請求與代表值HID1a傳輸至儲存裝置120_1(目的儲存裝置)。同理,這些資料分派裝置114中的第二個至第五個資料分派裝置的操作可以參照這些資料分派裝置114中的所述第一個資料分派裝置的相關說明來類推,故不再贅述。
這些目的儲存裝置可以依照這些資料分派裝置114所提供的代表值而在其本地的儲存空間中讀取出對應的資料塊,然後依照讀請求將所述資料塊回傳給這些資料分派裝置114。這些資料分派裝置114接收這些目的儲存裝置所回傳的資料塊(步驟S1065)後,這些資料分派裝置114可以彙整這些回傳的資料塊作為糾刪資料,以及將糾刪資料回傳給糾刪編碼裝置113(步驟S1070)。糾刪編碼裝置113接收這些資料分派裝置114所回傳的糾刪資料後,糾刪編碼裝置113可以彙整這些回傳的糾刪資料作為原資料D,以及將原鍵值OID與原資料D回傳給使用者裝置10(步驟S1020)。
舉例來說,儲存裝置120_1(目的儲存裝置)可以依照這些資料分派裝置114中的所述第一個資料分派裝置所提供的代表值HID1a而在其本地的儲存空間中讀取出對應的資料塊Chunk1A,然後依照讀請求將所述資料塊Chunk1A回傳給所述第一個資料分派裝置。在所述第一個資料分派裝置接收目的儲存裝置120_1所回傳的資料塊Chunk1A後,所述第一個資料分派裝置可以彙整這資料塊ChunkA作為糾刪資料Shard1,以及將鍵值OID1與糾刪資料Shard1回傳給糾刪編碼裝置113。同理,這些資料分派裝置114中的第二個至第五個資料分派裝置的操作可以參照這些資料分派裝置114中的所述第一個資料分派裝置的相關說明來類推,故不再贅述。在糾刪編碼裝置113接收這些資料分派裝置114所回傳的糾刪資料Shard1~Shard5後,糾刪編碼裝置113可以彙整這些糾刪資料Shard1~Shard5作為原資料D,以及將原鍵值OID與原資料D回傳給使用者裝置10。
圖11是依照本發明的又一實施例說明圖1或圖2所示分派裝置110的電路方塊示意圖。依照設計需求,圖11所述實施例可以參用圖3與(或)圖4的相關說明。在圖11所述實施例中,分派裝置110包括糾刪編碼裝置115以及備援糾刪編碼裝置116。糾刪編碼裝置115與備援糾刪編碼裝置116適於耦接至通訊網路20。糾刪編碼裝置115與備援糾刪編碼裝置116是互為獨立的兩個電子設備。依照設計需求,糾刪編碼裝置115與備援糾刪編碼裝置116的任何一個可以是個人電腦、工作站、伺服器、NAS設備以及(或是)其他電子設備。依照設計需求,在一些實施例中,糾刪編碼裝置115(或備援糾刪編碼裝置116)可以是獨立於儲存裝置120_1~120_n的另一個電子設備。在另一些實施例中,這些儲存裝置120_1~120_n中的至少一個可以被選用做為糾刪編碼裝置115(或備援糾刪編碼裝置116)。
依照不同的設計需求,上述糾刪編碼裝置115以及(或是)備援糾刪編碼裝置116的方塊的實現方式可以是硬體、韌體、軟體(即程式)或是前述三者中的多者的組合形式。以軟體形式及/或韌體形式而言,上述糾刪編碼裝置115以及(或是)備援糾刪編碼裝置116的相關功能可以被實現為編程碼。例如,利用一般的編程語言(例如C、C++或組合語言)或其他合適的編程語言來實現上述糾刪編碼裝置115以及(或是)備援糾刪編碼裝置116。所述編程碼可以被記錄/存放在記錄媒體中。電腦、CPU、控制器、微控制器或微處理器可以從所述記錄媒體中讀取並執行所述編程碼,從而實現上述糾刪編碼裝置115以及(或是)備援糾刪編碼裝置116的相關功能。而且,所述編程碼也可經由任意傳輸媒體(通信網路或廣播電波等)而提供給所述電腦(或CPU)。
圖12是依照本發明的一實施例說明圖11所示糾刪編碼裝置115的寫操作流程示意圖。圖11所示備援糾刪編碼裝置116的功能可以參照糾刪編碼裝置115的相關說明來類推。請參照圖11與圖12。在步驟S1210中,糾刪編碼裝置115可以接收使用者裝置10的資料寫請求。所述資料寫請求可以包括原鍵值OID與原資料D。
在步驟S1220中,糾刪編碼裝置115可以對原資料D進行糾刪編碼計算,以產生多個糾刪資料以及這些糾刪資料所對應的多個鍵值。舉例來說,糾刪編碼裝置115可以對原資料D進行糾刪編碼計算,以產生多個糾刪資料Shard1、Shard2、Shard3、Shard4與Shard5。糾刪編碼裝置115還可以依據原鍵值OID產生這些糾刪資料Shard1~Shard5所對應的鍵值為OID1、OID2、OID3、OID4與OID5。
在步驟S1230中,糾刪編碼裝置115可以將這些糾刪資料的每一個切割為一個(或多個)資料塊(data chunk)。在步驟S1240中,糾刪編碼裝置115可以對在這個(或這些)資料塊中的一個目前資料塊進行摘要計算,以產生目前資料塊所對應的代表值。在步驟S1250中,糾刪編碼裝置115可以將鍵值與代表值的映射關係記錄至糾刪編碼裝置115的查找表中。舉例來說,糾刪編碼裝置115可以將糾刪資料Shard1切割為資料塊Chunk1A(或更多資料塊)。同理,糾刪編碼裝置115可以將糾刪資料Shard2切割為資料塊Chunk2A,將糾刪資料Shard3切割為資料塊Chunk3A,將糾刪資料Shard4切割為資料塊Chunk4A,以及將糾刪資料Shard5切割為資料塊Chunk5A。糾刪編碼裝置115可以對資料塊Chunk1A進行哈希計算而產生代表值HID1a,對資料塊Chunk2A進行哈希計算而產生代表值HID2a,對資料塊Chunk3A進行哈希計算而產生代表值HID3a,對資料塊Chunk4A進行哈希計算而產生代表值HID4a,以及對資料塊Chunk5A進行哈希計算而產生代表值HID5a。糾刪編碼裝置115可以將鍵值OID1~OID5與代表值HID1a~HID5a的映射關係記錄至糾刪編碼裝置115的查找表中。
在步驟S1260中,糾刪編碼裝置115可以對所述代表值進行分佈計算,以決定所述代表值所對應的目的位置。在步驟S1270中,糾刪編碼裝置115可以依照所述目的位置而通過通訊網路20將目前資料塊與代表值傳輸至這些儲存裝置120_1~120_n中的目的儲存裝置。舉例來說,糾刪編碼裝置115可以對資料塊Chunk1A的代表值HID1a進行CRUSH計算,並依照計算結果(假設)將代表值HID1a與資料塊Chunk1A傳輸至儲存裝置120_1(目的儲存裝置)。同理,糾刪編碼裝置115可以對資料塊Chunk2A~Chunk5A的代表值HID2a~HID5a進行CRUSH計算,並依照計算結果(假設)將代表值HID2a~HID5a與資料塊Chunk2A~Chunk5A分別傳輸至儲存裝置120_2~120_5(目的儲存裝置)。
在這些目的儲存裝置回答(表示成功儲存)後,糾刪編碼裝置115可以將所述查找表提供給備援糾刪編碼裝置116(步驟S1280)。在步驟S1290中,糾刪編碼裝置115可以回答使用者裝置10,以表示成功儲存。備援糾刪編碼裝置116的查找表的內容與糾刪編碼裝置115的查找表的內容一致。因此,在糾刪編碼裝置115的查找表被毀損的情況下,或是在糾刪編碼裝置115無法正常操作的情況下,備援糾刪編碼裝置116可以代替糾刪編碼裝置115去進行圖12所示寫操作流程以及(或是)圖13所示讀操作流程。
圖13是依照本發明的一實施例說明圖11所示糾刪編碼裝置115的讀操作流程示意圖。圖11所示備援糾刪編碼裝置116的功能可以參照糾刪編碼裝置115的相關說明來類推。請參照圖11與圖13。在步驟S1310中,糾刪編碼裝置115可以接收使用者裝置10的資料讀請求。所述資料讀請求可以包括原鍵值OID。在步驟S1320中,糾刪編碼裝置115可以對所述資料讀請求所對應的原鍵值OID進行糾刪編碼計算,以產生多個鍵值。在步驟S1330中,糾刪編碼裝置115可以在糾刪編碼裝置115的查找表中搜尋這些鍵值,以便從所述查找表取出這些鍵值所對應的代表值。在步驟S1340中,糾刪編碼裝置115可以對所述代表值進行分佈計算,以決定這些代表值所對應的目的位置。在步驟S1350中,糾刪編碼裝置115可以依照所述目的位置而通過通訊網路20將讀請求與這些代表值傳輸至這些儲存裝置120_1~120_n中的一個(或多個)目的儲存裝置。
舉例來說,糾刪編碼裝置115可以對原鍵值OID進行糾刪編碼計算,以產生多個鍵值OID1、OID2、OID3、OID4與OID5。糾刪編碼裝置115可以在糾刪編碼裝置115的查找表中搜尋鍵值OID1,以便從所述查找表取出鍵值OID1所對應的代表值HID1a。同理,糾刪編碼裝置115可以在查找表中搜尋鍵值OID2~OID5,以便從所述查找表取出鍵值OID2~OID5所對應的代表值HID2a~HID5a。糾刪編碼裝置115可以對代表值HID1a~HID5a進行CRUSH計算,並依照計算結果(假設)將讀請求與代表值HID1a~HID5a分別傳輸至儲存裝置120_1~120_5(目的儲存裝置)。
所述目的儲存裝置可以依照糾刪編碼裝置115所提供的代表值而在其本地的儲存空間中讀取出對應的資料塊,然後依照讀請求將所述資料塊回傳給糾刪編碼裝置115。在糾刪編碼裝置115接收這些目的儲存裝置所回傳的資料塊(步驟S1360)後,糾刪編碼裝置115可以彙整這些回傳的資料塊作為糾刪資料(步驟S1370)。糾刪編碼裝置115可以彙整這些糾刪資料作為原資料D,以及將原鍵值OID與原資料D回傳給使用者裝置10(步驟S1380)。
舉例來說,儲存裝置120_1~120_5(目的儲存裝置)可以依照糾刪編碼裝置115所提供的代表值HID1a~HID5a而在其本地的儲存空間中讀取出對應的資料塊Chunk1A~Chunk5A,然後依照讀請求將這些資料塊Chunk1A~Chunk5A回傳給糾刪編碼裝置115。在糾刪編碼裝置115接收這些目的儲存裝置120_1~120_5所回傳的資料塊Chunk1A~Chunk5A後,糾刪編碼裝置115可以彙整這些資料塊Chunk1A~Chunk5A作為糾刪資料Shard1~Shard5。糾刪編碼裝置115可以彙整這些糾刪資料Shard1~Shard5作為原資料D,以及將原鍵值OID與原資料D回傳給使用者裝置10。
綜上所述,上述諸實施例所述資料儲存系統及其全域去重複方法可以被應用於分散式儲存系統。分派裝置110可以產生目前資料塊所對應的代表值HID,以及依據代表值HID決定目的位置。依照所述目的位置,分派裝置110可以通過通訊網路20將目前資料塊與代表值HID傳輸至多個儲存裝置中的至少一個目的儲存裝置。也就是說,相同的資料塊會被傳送至相同的儲存裝置。所述目的儲存裝置可以檢查代表值HID,以決定是否將目前資料塊存入其本地的儲存空間中。因此,所述資料儲存系統可以在分散式儲存環境中有效去重複。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10:使用者裝置 20、30:通訊網路 100、200:資料儲存系統 110:分派裝置 111:主分派裝置 112:備援分派裝置 113、115:糾刪編碼裝置 114:資料分派裝置 116:備援糾刪編碼裝置 120_1、120_2、120_3、120_4、120_5、120_n:儲存裝置 S310~S360、S410~S490、S610~S680、S710~S760、S900~S975、S1000~S1070、S1210~S1290、S1310~S1380:步驟
圖1是依照本發明的一實施例的一種資料儲存系統的電路方塊(circuit block)示意圖。 圖2是依照本發明的另一實施例的一種資料儲存系統的電路方塊示意圖。 圖3是依照本發明的一實施例的一種全域去重複方法的流程示意圖。 圖4是依照本發明的一實施例的一種儲存裝置的操作流程示意圖。 圖5是依照本發明的一實施例說明圖1或圖2所示分派裝置的電路方塊示意圖。 圖6是依照本發明的一實施例說明圖5所示主分派裝置的寫操作流程示意圖。 圖7是依照本發明的一實施例說明圖5所示主分派裝置的讀操作流程示意圖。 圖8是依照本發明的另一實施例說明圖1或圖2所示分派裝置的電路方塊示意圖。 圖9是依照本發明的一實施例說明圖8所示糾刪編碼裝置與資料分派裝置的寫操作流程示意圖。 圖10是依照本發明的一實施例說明圖8所示糾刪編碼裝置與資料分派裝置的讀操作流程示意圖。 圖11是依照本發明的又一實施例說明圖1或圖2所示分派裝置的電路方塊示意圖。 圖12是依照本發明的一實施例說明圖11所示糾刪編碼裝置的寫操作流程示意圖。 圖13是依照本發明的一實施例說明圖11所示糾刪編碼裝置的讀操作流程示意圖。
S310~S360:步驟

Claims (26)

  1. 一種資料儲存系統,包括:多個儲存裝置,適於耦接至一通訊網路;以及一分派裝置,適於接收一資料寫請求,其中該分派裝置被配置為將該資料寫請求所對應的一原資料切割為至少一個資料塊,該分派裝置對在該至少一個資料塊中的一個目前資料塊進行一摘要計算以產生該目前資料塊所對應的一代表值,該分派裝置對該代表值進行一第一分佈計算以決定該代表值所對應的一目的位置,以及該分派裝置依照該目的位置而通過該通訊網路將該目前資料塊與該代表值傳輸至該些儲存裝置中的至少一個目的儲存裝置;其中該至少一個目的儲存裝置檢查該代表值以決定是否執行一儲存操作,該儲存操作是將該目前資料塊存入該至少一個目的儲存裝置的一儲存空間中。
  2. 如請求項1所述的資料儲存系統,其中該些儲存裝置中的至少一個被選用為該分派裝置。
  3. 如請求項1所述的資料儲存系統,其中該摘要計算包括一哈希演算法,而該代表值包括該目前資料塊的一哈希值。
  4. 如請求項1所述的資料儲存系統,其中該第一分佈計算包括一Ceph CRUSH演算法。
  5. 如請求項1所述的資料儲存系統,其中該至少一個目的儲存裝置檢查一查找表有無該代表值,當該查找表有該代表值時,該至少一個目的儲存裝置放棄將 該目前資料塊存入該儲存空間中,調增該代表值所對應的一參照次數值,以及將該參照次數值更新至該查找表;以及當該查找表沒有該代表值時,該至少一個目的儲存裝置將該目前資料塊存於該儲存空間的一物理位址,將該代表值所對應的該參照次數值設為一初始值,以及將該代表值、該物理位址與該參照次數值記錄於該查找表。
  6. 如請求項1所述的資料儲存系統,其中該資料寫請求還包括一原鍵值,該分派裝置將該原鍵值與該代表值的一映射關係記錄至一查找表中。
  7. 如請求項1所述的資料儲存系統,其中該分派裝置包括一主分派裝置以及一備援分派裝置,該資料寫請求還包括一原鍵值,該主分派裝置將該原鍵值與該代表值的一映射關係記錄至一查找表中,以及將該查找表提供給該備援分派裝置。
  8. 如請求項1所述的資料儲存系統,其中該至少一個目的儲存裝置包括一第一目的儲存裝置與一第二目的儲存裝置,該分派裝置通過該通訊網路將該目前資料塊與該代表值傳輸至該第一目的儲存裝置與該第二目的儲存裝置。
  9. 如請求項1所述的資料儲存系統,其中該分派裝置包括一糾刪編碼裝置以及至少一個資料分派裝置,該糾刪編碼裝置接收該資料寫請求,該糾刪編碼裝置對該原資料進行一糾刪編碼計算以產生至少一個糾刪資料以及該至少一個糾刪資料所對應的至少一個鍵值,該糾刪編碼裝置對該至少一個鍵值進行一第二分 佈計算以產生該至少一個鍵值所對應的至少一個裝置位置,該糾刪編碼裝置依照該至少一個裝置位置而通過該通訊網路將該至少一個糾刪資料與該至少一個鍵值傳輸至該至少一個資料分派裝置,該至少一個資料分派裝置將該至少一個糾刪資料切割為該至少一個資料塊,該至少一個資料分派裝置對在該至少一個資料塊中的該目前資料塊進行該摘要計算以產生該代表值,該至少一個資料分派裝置對該代表值進行該第一分佈計算以決定該目的位置,以及該至少一個資料分派裝置依照該目的位置而通過該通訊網路將該目前資料塊與該代表值傳輸至該至少一個目的儲存裝置。
  10. 如請求項9所述的資料儲存系統,其中該至少一個資料分派裝置將該至少一個鍵值與該代表值的一映射關係記錄至一查找表中。
  11. 如請求項1所述的資料儲存系統,其中該分派裝置包括一糾刪編碼裝置,該糾刪編碼裝置接收該資料寫請求,該糾刪編碼裝置對該原資料進行一糾刪編碼計算以產生至少一個糾刪資料以及該至少一個糾刪資料所對應的至少一個鍵值,該糾刪編碼裝置將該至少一個糾刪資料切割為該至少一個資料塊,該糾刪編碼裝置對在該至少一個資料塊中的該目前資料塊進行該摘要計算以產生該代表值,該糾刪編碼裝置對該代表值進行該第一分佈計算以決定該目的位置,以及該糾刪編碼裝置依照該目的位置而 通過該通訊網路將該目前資料塊與該代表值傳輸至該至少一個目的儲存裝置。
  12. 如請求項11所述的資料儲存系統,其中該糾刪編碼裝置將該至少一個鍵值與該代表值的一映射關係記錄至一查找表中。
  13. 如請求項12所述的資料儲存系統,其中該分派裝置還包括一備援糾刪編碼裝置,以及該糾刪編碼裝置將該查找表提供給該備援糾刪編碼裝置。
  14. 一種全域去重複方法,包括:由一分派裝置接收一資料寫請求;由該分派裝置將該資料寫請求所對應的一原資料切割為至少一個資料塊;由該分派裝置對在該至少一個資料塊中的一個目前資料塊進行一摘要計算,以產生該目前資料塊所對應的一代表值;由該分派裝置對該代表值進行一第一分佈計算,以決定該代表值所對應的一目的位置;由該分派裝置依照該目的位置而通過一通訊網路將該目前資料塊與該代表值傳輸至多個儲存裝置中的至少一個目的儲存裝置;以及由該至少一個目的儲存裝置檢查該代表值,以決定是否執行一儲存操作,該儲存操作是將該目前資料塊存入該至少一個目的儲存裝置的一儲存空間中。
  15. 如請求項14所述的全域去重複方法,其中該些儲存裝置中的至少一個被選用為該分派裝置。
  16. 如請求項14所述的全域去重複方法,其中該摘要計算包括一哈希演算法,而該代表值包括該目前資料塊的一哈希值。
  17. 如請求項14所述的全域去重複方法,其中該第一分佈計算包括一Ceph CRUSH演算法。
  18. 如請求項14所述的全域去重複方法,更包括:由該至少一個目的儲存裝置檢查一查找表有無該代表值;當該查找表有該代表值時,放棄將該目前資料塊存入該儲存空間中,調增該代表值所對應的一參照次數值,以及將該參照次數值更新至該查找表;以及當該查找表沒有該代表值時,將該目前資料塊存於該儲存空間的一物理位址,將該代表值所對應的該參照次數值設為一初始值,以及將該代表值、該物理位址與該參照次數值記錄於該查找表。
  19. 如請求項14所述的全域去重複方法,其中該資料寫請求還包括一原鍵值,所述全域去重複方法更包括:由該分派裝置將該原鍵值與該代表值的一映射關係記錄至一查找表中。
  20. 如請求項14所述的全域去重複方法,其中該分派裝置包括一主分派裝置以及一備援分派裝置,該資料寫請求還包括一原鍵值,所述全域去重複方法更包括:由該主分派裝置將該原鍵值與該代表值的一映射關係記錄至一查找表中;以及由該主分派裝置將該查找表提供給該備援分派裝置。
  21. 如請求項14所述的全域去重複方法,其中該至少一個目的儲存裝置包括一第一目的儲存裝置與一第二目的儲存裝置,所述全域去重複方法更包括:由該分派裝置通過該通訊網路將該目前資料塊與該代表值傳輸至該第一目的儲存裝置與該第二目的儲存裝置。
  22. 如請求項14所述的全域去重複方法,其中該分派裝置包括一糾刪編碼裝置以及至少一個資料分派裝置,所述全域去重複方法更包括:由該糾刪編碼裝置接收該資料寫請求;由該糾刪編碼裝置對該原資料進行一糾刪編碼計算,以產生至少一個糾刪資料以及該至少一個糾刪資料所對應的至少一個鍵值;由該糾刪編碼裝置對該至少一個鍵值進行一第二分佈計算,以產生該至少一個鍵值所對應的至少一個裝置位置;由該糾刪編碼裝置依照該至少一個裝置位置而通過該通訊網路將該至少一個糾刪資料與該至少一個鍵值傳輸至該至少一個資 料分派裝置;由該至少一個資料分派裝置將該至少一個糾刪資料切割為該至少一個資料塊;由該至少一個資料分派裝置對在該至少一個資料塊中的該目前資料塊進行該摘要計算,以產生該代表值;由該至少一個資料分派裝置對該代表值進行該第一分佈計算以決定該目的位置;以及由該至少一個資料分派裝置依照該目的位置而通過該通訊網路將該目前資料塊與該代表值傳輸至該至少一個目的儲存裝置。
  23. 如請求項22所述的全域去重複方法,更包括:由該至少一個資料分派裝置將該至少一個鍵值與該代表值的一映射關係記錄至一查找表中。
  24. 如請求項14所述的全域去重複方法,其中該分派裝置包括一糾刪編碼裝置,所述全域去重複方法更包括:由該糾刪編碼裝置接收該資料寫請求;由該糾刪編碼裝置對該原資料進行一糾刪編碼計算,以產生至少一個糾刪資料以及該至少一個糾刪資料所對應的至少一個鍵值;由該糾刪編碼裝置將該至少一個糾刪資料切割為該至少一個資料塊;由該糾刪編碼裝置對在該至少一個資料塊中的該目前資料塊進行該摘要計算,以產生該代表值; 由該糾刪編碼裝置對該代表值進行該第一分佈計算,以決定該目的位置;以及由該糾刪編碼裝置依照該目的位置而通過該通訊網路將該目前資料塊與該代表值傳輸至該至少一個目的儲存裝置。
  25. 如請求項24所述的全域去重複方法,更包括:由該糾刪編碼裝置將該至少一個鍵值與該代表值的一映射關係記錄至一查找表中。
  26. 如請求項25所述的全域去重複方法,其中該分派裝置還包括一備援糾刪編碼裝置,以及所述全域去重複方法更包括:由該糾刪編碼裝置將該查找表提供給該備援糾刪編碼裝置。
TW110105608A 2020-03-27 2021-02-19 資料儲存系統及其全域去重複方法 TWI815086B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/195,551 US11709609B2 (en) 2020-03-27 2021-03-08 Data storage system and global deduplication method thereof
CN202110270233.3A CN112835538B (zh) 2020-03-27 2021-03-12 数据存储系统及其全局去重复方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202063000508P 2020-03-27 2020-03-27
US63/000,508 2020-03-27

Publications (2)

Publication Number Publication Date
TW202137027A TW202137027A (zh) 2021-10-01
TWI815086B true TWI815086B (zh) 2023-09-11

Family

ID=79601314

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110105608A TWI815086B (zh) 2020-03-27 2021-02-19 資料儲存系統及其全域去重複方法

Country Status (1)

Country Link
TW (1) TWI815086B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201308115A (zh) * 2011-08-10 2013-02-16 Inventec Corp 分散式的重複數據刪除系統及其處理方法
TW201423425A (zh) * 2012-12-12 2014-06-16 Hon Hai Prec Ind Co Ltd 資料分塊儲存至分散式伺服器的系統及方法
TW201908987A (zh) * 2017-07-18 2019-03-01 先智雲端數據股份有限公司 用於物聯網設備於資料中心備份的分散式重複資料刪除儲存系統及其達成分散式重複資料刪除方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201308115A (zh) * 2011-08-10 2013-02-16 Inventec Corp 分散式的重複數據刪除系統及其處理方法
TW201423425A (zh) * 2012-12-12 2014-06-16 Hon Hai Prec Ind Co Ltd 資料分塊儲存至分散式伺服器的系統及方法
TW201908987A (zh) * 2017-07-18 2019-03-01 先智雲端數據股份有限公司 用於物聯網設備於資料中心備份的分散式重複資料刪除儲存系統及其達成分散式重複資料刪除方法

Also Published As

Publication number Publication date
TW202137027A (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
US9740403B2 (en) Methods for managing storage in a data storage cluster with distributed zones based on parity values and devices thereof
US10127233B2 (en) Data processing method and device in distributed file storage system
US11461015B2 (en) Available storage space in a system with varying data redundancy schemes
US9298386B2 (en) System and method for improved placement of blocks in a deduplication-erasure code environment
TWI516920B (zh) A control program, a control method of a host device, an information processing device, and a host device
US8972692B2 (en) Dispersed storage network virtual address space
US11954373B2 (en) Data structure storage and data management
US20200117362A1 (en) Erasure coding content driven distribution of data blocks
US9792350B2 (en) Real-time classification of data into data compression domains
KR102406666B1 (ko) 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US20190129971A1 (en) Storage system and method of controlling storage system
US10261946B2 (en) Rebalancing distributed metadata
US9208025B2 (en) Virtual memory mapping in a dispersed storage network
US9207870B2 (en) Allocating storage units in a dispersed storage network
US10242021B2 (en) Storing data deduplication metadata in a grid of processors
CN108431815B (zh) 在处理器网格中的分布式数据的去重复数据
US20210334241A1 (en) Non-disrputive transitioning between replication schemes
TWI815086B (zh) 資料儲存系統及其全域去重複方法
US11132137B2 (en) Methods and systems for providing read-optimized scalable offline de-duplication for blocks of data
US11249666B2 (en) Storage control apparatus
CN112835538B (zh) 数据存储系统及其全局去重复方法
US11709609B2 (en) Data storage system and global deduplication method thereof
US12008254B2 (en) Deduplication of storage device encoded data
KR20230097755A (ko) 중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법
CN114428764A (zh) 文件写入方法、系统、电子设备及可读存储介质