一種云存儲下基于糾錯碼的數據恢復方法
【專利摘要】本發明公開了一種云存儲下基于糾錯碼的數據恢復方法,屬于云存儲【技術領域】。本發明首先將數據對象按塊進行處理,在分布式云存儲系統中的各遠程存儲節點中存儲數據塊、復制塊以及校驗塊。當遠程存儲節點出現故障時,通過相關數據塊所在存儲節點的計算,將數據傳輸到替換節點中重組數據以實現數據恢復。本發明通過使用RS校驗碼及利用存儲節點自身的計算性能,減少了網絡通訊的數據量,能夠在極低帶寬的情況下進行數據恢復,同時僅使用一個復制塊以及少量的校驗塊,節省了存儲空間。
【專利說明】-種云存儲下基于糾錯碼的數據恢復方法
【技術領域】
[0001] 本發明屬于云存儲【技術領域】,更具體地,涉及一種云存儲下基于糾錯碼的數據恢 復方法。
【背景技術】
[0002] 云存儲,指通過集群應用、網格技術或分布式文件系統等功能,將網絡中大量各種 不同類型的存儲設備通過應用軟件集合起來協同工作,共同對外提供數據存儲和訪問功能 的系統。在大量存儲設備協同工作的云存儲系統中,存儲設備出現故障而可能導致的數據 異常是在設計云存儲系統時需要考慮的關鍵部分。
[0003] 目前的云存儲系統主要通過遠程備份功能提供容錯服務,例如Had〇〇p。在云存儲 系統中,數據被分成多個固定大小的數據塊,按照一定的分布方式,分開存儲在多個遠程節 點上,同時,能夠在其他遠程節點存儲數據塊的備份。這種方式能夠一定程度的避免數據的 損壞,但是其存儲開銷太大,且增量寫延遲較高。
[0004] 目前針對云存儲遠程備份功能的缺陷,出現了 NCCloud,其將數據分塊存儲在遠程 節點上,同時存儲數據的校驗塊。并在云存儲體系中引入代理節點,當遠程節點出現故障 時,代理節點通過獲取其他節點的數據(數據塊及校驗塊),恢復出現故障的遠程節點及其 中存儲的數據。但是,NCCloud的代理節點需要從遠程節點獲取故障恢復相關的所有數據, 進行大量的數據傳輸,對網絡帶寬的要求較高。
【發明內容】
[0005] 針對現有技術的以上缺陷或改進需求,本發明提供一種云存儲下基于糾錯碼的數 據恢復方法,該方法能夠在遠程節點發生永久性故障時,進行數據修復。
[0006] 本發明是一種米用最大距離可分(Maximum-Distance-Separable,以下簡稱MDS) 糾錯編碼,利用HPC算法的數據恢復方法。將數據分塊存儲在各遠程存儲節點上,同時存 儲數據塊的副本和數據的校驗塊。當遠程存儲節點發生永久性故障而導致其內存儲的數控 失效時,修復操作可以讀取現有的幸存云數據并恢復丟失的數據。
[0007] 本發明提供一種云存儲下基于糾錯碼的數據恢復方法,包括以下步驟:
[0008] 步驟1將存儲的數據分成固定大小的m個數據塊k?by,同時復制所有的數據 塊生成m個復制塊?b' μ,其中m < N,N為云存儲系統中的存儲節點總數;
[0009] 步驟2選取m個存儲節點存儲所述m個數據塊k?和所述m個復制塊b' ? b' μ,其中每一存儲節點分別存儲一個數據塊和一個復制塊,即第i個存儲節點存儲數據塊 4和數據塊bi+1的復制塊b/ +1,0彡i < m-1,第m個存儲節點存儲數據塊by和數據塊k 的復制塊;
[0010] 步驟3另隨機選取不同于所述m個存儲節點的k-1個存儲節點分別存儲使用標準 RS編碼所形成的k-Ι個奇偶校驗塊,其中k表示所述云存儲系統中的容錯節點數,k < m ;
[0011] 步驟4根據故障節點所存儲的數據內容確定數據恢復所需要用到的數據塊或復 制塊或奇偶校驗塊,并由所述所需要用到的數據塊或復制塊或奇偶校驗塊所在的存儲節點 進行數據恢復計算;
[0012] 步驟5將所述數據恢復計算的結果傳輸到替換所述故障節點的替換節點上;
[0013] 步驟6所述替換節點計算并重組所述數據塊或所述復制塊或所述奇偶校驗塊以 實現數據恢復。
[0014] 總體而言,通過本發明所構思的以上技術方案與現有技術相比,具有以下優點:
[0015] 節約帶寬,不需要通過大量的數據塊數據傳輸進行數據塊的恢復,通過使用RS校 驗碼及利用存儲節點自身的計算性能,先在存儲節點對數據恢復所需的數據進行相應計 算,對計算后的數據內容傳輸至替換節點,再在替換節點進行數據計算和重組以實現數據 塊的恢復,減少了數據傳輸量,減輕了數據恢復節點的計算負擔;
[0016] 節省空間,MDS編碼僅存儲1個復制塊以及少量校驗塊,既保證了數據恢復的功 能,又節省了分布式云存儲系統的存儲空間。
【專利附圖】
【附圖說明】
[0017] 圖1為本發明采用HPC(m,k,ck)數據恢復算法的云存儲環境的數據布局結構圖;
[0018] 圖2為本發明一種典型的HPC數據恢復算法模型HPC(4, 2, c2)的示意圖;
[0019] 圖3為本發明采用a行η列規范化的數據布局結構圖;
[0020] 圖4a為本發明損壞數據塊中不存在奇偶校驗塊的數據恢復方法的流程圖;
[0021] 圖4b為本發明損壞數據塊中存在奇偶校驗塊的數據恢復方法的流程圖。
【具體實施方式】
[0022] 為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對 本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并 不用于限定本發明。此外,下面所描述的本發明各個實施方式中所涉及到的技術特征只要 彼此之間未構成沖突就可以相互組合。
[0023] 本發明實施例中將會用到一些新的定義,其中的名詞解釋如下:
[0024] 數據塊(data block):是本發明數據恢復方法中的基本單位。本發明實施例中有 三種數據塊:原生塊(native block)、復制塊(replica block)和校驗塊(parity block)。
[0025] HPC (m, k, ck):本發明數據恢復算法,稱為HPC數據恢復算法,其中,m表示對云存 儲系統在處理數據對象時,數據分塊的個數;k表示校驗塊數目,即可對k個節點故障進行 容錯;c k表示HPC數據恢復算法中需要用到的系數矩陣。
[0026] 「w/2\表示m/2的值若不存在小數位,則直接取m/2 ;若存在小數位則該值為m/2 的整數部分加1。
[0027] < j+1 > m :表示 j+Ι 模 m 的值,例如若 j = 4、m = 4,則< j+1 > m = 1 ;若 j = 1, m = 5,則< j+1 > m = 2。
[0028] 一、數據編碼
[0029] 圖1所示為本發明采用HPC(m,k,ck)算法的云存儲系統的數據布局結構圖。設云 存儲系統中有N個存儲節點,對每個存儲在該云存儲系統中的對象,做以下處理:設存儲對 象的大小為M,將該存儲對象分為m(m < N)個大小相同的數據塊,記為k?by,各數據塊 采用傳統的MDS編碼。將數據分塊可使云存儲環境中的各種數據整齊化,使得更加容易組 織和管理。
[0030] 使用標準的RS編碼形成k-Ι個奇偶校驗塊(k < m),記為P。?Pk_2,編碼公式如 下:
[0031]
【權利要求】
1. 一種云存儲下基于糾錯碼的數據恢復方法,其特征在于,包括: 步驟1將存儲的數據分成固定大小的m個數據塊
同時復制所有的數據塊生 成m個復制塊
其中
為云存儲系統中的存儲節點總數; 步驟2選取m個存儲節點存儲所述m個數據塊
和所述m個復制塊
其中每一存儲節點分別存儲一個數據塊和一個復制塊,即第i個存儲節點存儲數據塊4和 數據塊
的復制塊
第m個存儲節點存儲數據塊
和數據塊k的復 制塊
步驟3另隨機選取不同于所述m個存儲節點的k-Ι個存儲節點分別存儲使用標準RS 編碼所形成的k-Ι個奇偶校驗塊,其中k表示所述云存儲系統中的容錯節點數,k < m ; 步驟4根據故障節點所存儲的數據內容確定數據恢復所需要用到的數據塊或復制塊 或奇偶校驗塊,并由所述所需要用到的數據塊或復制塊或奇偶校驗塊所在的存儲節點進行 數據恢復計算; 步驟5將所述數據恢復計算的結果傳輸到替換所述故障節點的替換節點上; 步驟6所述替換節點計算并重組所述數據塊或所述復制塊或所述奇偶校驗塊以實現 數據恢復。
2. 如權利要求1所述的方法,其特征在于,用2行η列矩陣表示各數據塊在所述存儲 節點中的分布,其中n = m+k-1,每個數據塊作為所述矩陣中的一個元素,記為
,其中,第1行前m個元素為為原生元素,即為所述數據塊;第1行第m? 第m+k-2個元素為校驗元素,記為
,即為所述奇偶校驗塊,其中
組成 一個系數矩陣,用于計算糾錯碼;第2行前m個元素為復制元素,記為
即為 所述復制塊;第2行的第m?第m+k-2個元素為空,其中所述原生元素和所述復制元素統稱 為數據元素。
3. 如權利要求2所述的方法,其特征在于,當多個存儲節點發生故障時,令f;、分別 為兩個故障節點存儲的所述數據元素或所述校驗元素的標號,其中
當
< η時,所述步驟4進行的所述數據恢復計算包括以下子步驟: (4-1)如果
即兩個損壞數據塊中不存在所述奇偶校驗塊,則執行步驟 (4-6),如果
即
和
為數據元素、
為所述校驗元素,則執行 步驟(4-2); (4-2)從未發生故障的存儲節點中本地讀取
和1
的數據內容分別直接恢復
和1
的數據,令一個整數sum值為0,如果&可以被2整除,令j = 1,否則令j =0, 執行步驟(4-3); (4-3)存儲
和
兩數據元素的本地存儲節點計算
其中符 號?表示異或運算,將計算得到的結果
傳輸給所述替換節點,其中,所述替換 節點是可恢復的故障節點本身或其他未存儲數據的存儲節點,在所述替換節點中計算
執行步驟(4-4); (4-4)令j = j+2,如果
執行步驟(4-5),否則繼續執行步驟(4-3); (4-5)運算結束,所述替換節點中sum的值即為替換失效的所述奇偶校驗塊《
的數據 內容,所述數據恢復計算完成; (4-6)如果fQ+l = = ,執行步驟(4-7),如果< fQ-l > m = = ,執行步驟(4-8),否 則執行步驟(4-12),其中< fQ-l > m = = 表示fQ-l模m ; (4-7)從未故障的存儲節點中讀取
和
的數據內容分別直接恢復
和
的數據,令
,如果可以被2整除,令j = 1,否則令j =〇,執行步驟 (4-9); (4-8)從未故障的存儲節點中讀取
和1
的數據內容分別直接恢復
和
的數據,令
執行步驟(4-9); (4-9)如果
存儲
和
兩數據元素的存儲節點計算
將 計算得到的結果tmp[j]傳輸給所述替換節點,在所述替換節點中計算
執行步驟(4-10),如果j = &,則直接執行步驟(4-11); (4-10)令j = j+2,如果
執行步驟(4-11),否則繼續執行步驟(4-9); (4-11)存儲校驗元素
的存儲節點將校驗元素
數據傳輸給所述替換節點,所述 替換節點計算
當
時,sum值等于
和
的數據;當<&-1 > m = = 時,sum等于
和
的數據,所述數據恢復計算完成; (4-12)從未失效的存儲節點中讀取數據元素
和
的數 據內容,分別恢復失效數據塊
和
的數據,所述數據恢復計算完成。
4. 如權利要求1所述的方法,其特征在于,當單個所述存儲節點發生故障,且所述故障 節點所存儲的所述數據內容為所述數據塊或所述復制塊時,所述步驟4進行的所述數據恢 復計算為通過讀取其對應的所述復制塊或所述數據塊直接得到數據。
5. 如權利要求1所述的方法,其特征在于,當單個所述存儲節點發生故障, 且所述故障節點所存儲的所述數據內容為所述奇偶校驗塊時,選擇
個存儲 節點
對每個存儲節點其中
?或.
表示m/2的值若不 存在小數位,則直接取m/2,若存在小數位則為m/2的整數部分加1,進行如所述步驟4進行 的所述數據恢復計算,具體包括以下子步驟: (5-1)從存儲原生塊h和復制塊
的存儲節點讀取這兩個數據塊的數據內容; (5-2)讀取系數矩陣ck中的
和
其中所述系數矩陣ck為:
其中,
表示用于計算糾錯碼所需的元素; (5-3)采用折半算法計算
其中
(5-4)將tn^.傳輸給所述替換節點,其中
且其中,所述替換節點是可恢 復的故障節點本身或其他未存儲數據的存儲節點; (5-5)對所述步驟(5-3)得到的tn^_進行異或運算,獲得奇偶校驗塊
6.如權利要求1所述的方法,其特征在于,使用所述標準的RS編碼形成所述奇偶校驗 塊的編碼公式為
其中
表示糾錯碼。
【文檔編號】H04L1/00GK104052576SQ201410250861
【公開日】2014年9月17日 申請日期:2014年6月7日 優先權日:2014年6月7日
【發明者】曹強, 萬勝剛, 李詩逸, 李曉倩, 宋馳, 謝長生 申請人:華中科技大學