一種能夠快速恢復并實現負載均衡的x編碼擴展方法
【專利摘要】本發明涉及一種能夠快速恢復并實現負載均衡的X編碼擴展方法。該方法基于各類存儲陣列系統中使用的X編碼進行編碼擴展,增加一個額外冗余設備,在保證可以容雙盤出錯的前提下,進一步減少單盤恢復所需的分塊總數,并且減少單盤恢復的IO瓶頸,從而提高系統單盤恢復效率,縮短重構時間,并且實現系統的負載均衡,最終實現提升系統服務質量。針對原系統中的任意單個數據盤出錯,能夠減少系統恢復單盤所需的分片總數;針對原系統中的任意單個盤出錯,能夠破除原系統在單盤恢復過程中可能負載瓶頸,實現各個設備的負載均衡;通過使用二元異或和,減少新增冗余盤的更新開銷,從而延長其的壽命。
【專利說明】
一種能夠快速恢復并實現負載均衡的X編碼擴展方法
技術領域
[0001]本發明適用于傳統磁盤和以閃存固態存儲技術為代表的新型非易失存儲領域,提供了一種能夠快速實現單盤恢復并降低負載瓶頸的X編碼擴展方法,降低編碼的更新開銷提高系統的單盤恢復效率和可靠性。
【背景技術】
[0002]在現有的存儲系統中,傳統磁盤存儲仍然憑借其超高的性價比和日益增大的單盤容量繼續廣泛應用于各類存儲系統中。一方面,隨著數據和存儲系統規模的增大,數據可靠性面臨著更加嚴峻的挑戰。另一方面,現有高可靠性編碼會帶來極大的寫更新代價,嚴重地制約系統性能。
[0003]相對于傳統磁存儲介質,以閃存(FlashMemory)技術為代表的非易失存儲介質憑借其在體積、重量、功耗和讀寫性能上的顯著優勢已經掀起了存儲領域的一場新興變革,是構建高性能存儲系統的必備選擇。然而,以閃存為代表的新型非易失存儲介質自身在介質可靠性方面存在較大缺陷,其壽命受限于一定的擦/寫操作次數,制約著數據的可靠性。
[0004]為了構建高效可靠的存儲系統,獨立冗余磁盤陣列RAID(Redundant Arrays ofIndependent Disks)技術被廣泛應用于各類存儲介質的存儲設備系統。根據構成存儲設備的介質不同,存儲陣列系統可以分為磁盤陣列和閃存陣列等。其核心是利用多個設備構建可以并行讀寫的跨存儲設備條帶和額外存儲設備進行冗余編碼技術來分別提高性能和系統可靠性。現在比較成熟的RAID技術包括RAID0,RAID1,RAID5,RAID6, RAIDlO, RAIDOl等,用戶可以根據不同的應用需求來進行配置。總得來講,RAID5,RAID6應用的相對比較廣泛。但是就可靠性而言,由于RAID5只有一個校驗盤,而RAID6有兩個校驗盤,所以在可靠性方面,RAID6更為可靠。從本質上而言,RAID6系統的可靠性是由其所使用的具體編碼來決定的。
[0005]我們以基于X編碼的RAID6(7塊盤)為例,其條帶由5X7的數據矩陣和2X7的校驗矩陣構成,每五個數據塊和兩個校驗塊共同存儲在一個不同的設備中。校驗類型根據其構成方向可以分為對角線冗余和反對角線冗余,具體構造方式如圖1。由于引入了冗余,為了保證數據的一致性,所以對原始數據塊進行更新時,需要對其相關的兩塊校驗塊進行更新。
[0006]就存儲系統而言,由于設備本身的不穩定性會導致一個或者多個存儲設備的不可用。統計表明,單設備出錯的概率高達90%以上,而雙盤出錯的概率則是8%左右,而三盤同時出錯則小于1%。通常而言,可靠的存儲系統一般需要容雙盤出錯。然而隨著數據量的暴增,系統規模日益增大,存儲系統可靠性面臨更大挑戰,急需更高可靠性的編碼來保證數據的可用性。所以,為了實現高可靠的編碼,本文針對可以容雙盤出錯的RAID6編碼進行研究。
[0007]目前基于RAID6編碼進行高可靠性擴展的相關研究。該研究是針對RDP編碼進行高可靠性擴展,從而設計提出能夠容忍三錯的RTP編碼。其在現有容雙盤出錯的RDP編碼的基礎上,新增一塊額外的存儲設備,用于構建第三類冗余,從而實現容忍三個設備同時出錯。該方法通過構建第三類冗余盤,使得編碼內部三類冗余相互獨立,從數學上嚴密地保證了在三個設備同時出錯情況下,系統能夠完整恢復。
[0008]另外,還有研究通過類似的方法對EVEN0DD編碼的進行高可靠性擴展,設計提出了能夠容忍三盤出錯的STAR編碼,保障了系統在三盤出錯情況下的可靠性。大體思想與前述擴展相似,都是利用新增設備構建第三類獨立冗余,從而實現容錯限度的提升。類似的編碼還有基于Rotary編碼進行擴展的Triple STAR編碼等。
[0009]上述研究思想精妙,邏輯嚴密,且通用性較強,但是其一方面無法對大概率的單盤出錯情況進行恢復加速,從而導致第三個校驗盤使用浪費,另一方面引入了較大的更新開銷,制約系統的性能,難以滿足實際存儲系統的應用需求。
[0010]另外,X編碼本身具有最小的更新代價,然而并沒有基于X編碼進行高可靠性擴展的研究出現。
【發明內容】
[0011]本發明所要解決的技術問題是如何利用X編碼進行編碼擴展,實現高可靠性、低更新開銷的新型編碼,并將其應用于RAID系統中,通過增加一塊額外的冗余設備,在保證可以容雙盤出錯的高可靠性前提下,進一步減少單盤恢復所需的分塊總數,提高系統單盤恢復效率,縮短重構時間,從而間接提升系統的可靠性,并且實現系統的負載均衡,最終實現提升系統服務質量。
[0012]本發明的技術方案是:在現有X編碼的基礎上,首先對其進行調整和變換,將其從垂直編碼變換為水平編碼,然后在此基礎上新增一塊額外存儲設備,在原有X編碼的基礎上為新增的冗余盤進行特定的編碼,從而實現較少的更新開銷和對單盤恢復的加速。其核心是利用特定的二元組對新增冗余盤進行編碼來實現的。本發明既適用于以NAND閃存為代表的新型非易失存儲系統,又可以適用于傳統磁盤組成的存儲系統。本發明的核心在于如何找到能夠在性能、可靠性、更新開銷、負載均衡等多個方面取得良好折中效果的冗余編碼方法。經過分析和證明,本發明利用原系統中某些特定數據進行運算,得到符合特定條件的二元異或和實現對新增冗余的編碼。
[0013]所以,本發明中對于新增額外冗余塊的編碼的關鍵在于如何對原X編碼進行變換和如何找到合適的二元異或和。
[0014]具體技術方案為:
第一步,將原X編碼的編碼矩陣(如圖1所示)進行修改,將其矩陣大小從P*P將為(P-1)*P,即多余元素進入下一次編碼,并保留原X編碼的冗余生成方式,即Diagonal冗余和Ant1-diagonal冗余,其Diagonal冗余和Ant1-diagonal冗余的放置形狀為X型,如圖2所示。定義兩個數據結構,矩陣matrix大小為(p-1 )*p,存放存儲陣列中的數據和冗余。Diagonal冗余放置于矩陣matrix中橫坐標i=縱坐標j處,Ant1-diagonal冗余放置于矩陣matrix中橫坐標i+縱坐標j=p處。另一數據結構為大小為ρ-l的數組H_parity,用于存放新增冗余。
[0015]第二步,初始化矩陣1]^1:1^1和!1_口31.;^}^;
第三步:對矩陣matrix進行賦值;
第四步:通過執行FindTuples來尋找符合條件的二元異或和;
第4.1步:初始化素數P,矩陣,并賦值;
第4.2步:令i=0,j=p-l-1 ; 第4.3步:判斷i是否等于p-1,若是,貝Ij取出matrix[i][i]上的元素和matrix[i][ j]上的元素,并組成二元異或和,存放于!1_?&1';^7[;[],且^+1,回到第2.3步;否則結束第五步:利用符合條件的二元異或和對新增冗余盤進行編碼:
第六步:利用編碼后的新增冗余盤進行單盤恢復操作。
[0016]使用本發明能達到以下有益效果:
1、針對原系統中的任意單個數據盤出錯,能夠減少系統恢復單盤所需的分片總數;
2、針對原系統中的任意單個數據盤出錯,能夠破除原系統在單盤恢復過程中可能負載瓶頸,實現各個設備的負載均衡;
3、通過使用二元異或和,盡可能地在獲得性能近似最優的情況下,減少新增冗余盤的更新開銷,從而延長其的壽命。
[0017]實現本發明的開銷很小,包括以下兩點:
1、空間開銷:為整個RAID6系統增加了一個額外的冗余盤,該盤的大小與原系統中的任意存儲設備大小相同。由于單個設備相對廉價,而且有逐年下降的趨勢,相對于整個存儲系統的價格而言,僅增加單個冗余盤的空間開銷是可以接受的。
[0018]2、時間開銷:由于對額外冗余盤的編碼只涉及到運算速度非常快的異或操作,而且找尋特殊二元異或和的算法也相對簡單快速,而且該編碼過程可以在原先X編碼的過程中同時進行。另外由于新增的冗余編碼不會降低原系統的可靠性,其運算可以等系統穩定之后在空閑時段進行。所以,本發明的時間開銷也可以忽略不計。
【附圖說明】
[0019]圖1是本發明在新增冗余盤之前的X編碼的編碼示意圖;
圖2是本發明在對原X編碼進行變換后的編碼示意圖;
圖3是本發明搜索合適二元異或和的算法流程圖;
圖4是本發明利用特定二元異或和對新增冗余盤進行編碼的示意圖;
圖5是本發明利用特定二元異或和對新增冗余盤進行編碼后的單盤恢復操作示意圖。
【具體實施方式】
[0020]附圖均以六塊數據盤的RAID6系統為例。圖1是本發明在新增冗余盤之前的X編碼示意圖。圖中共七塊存儲設備,每一塊設備中均包含數據和冗余,其中數據用實心圓形表示,冗余可以分為對角線冗余和反對角線冗余兩類,分別用正反三角形表示。單個對角線冗余的構造方式如圖中實線箭頭所示,為穿過該冗余的對角線方向的全部數據的異或和。反對角線的構造方式如圖中虛線箭頭所示。
[0021 ]圖2是是本發明在對原X編碼進行變換后的編碼不意圖。
[0022]圖3是本發明搜索合適二元異或和的算法流程圖。具體的執行過程為:
第一步:初始化素數P,矩陣,并賦值;
第二步:令i=0,j=p-l-1 ;
第三步:判斷i是否等于p-1,若是,貝丨』取出matrix[i][i]上的元素和matrix[i][j]上的元素,并組成二元異或和,存放于!1_?&1';^7[;[],且^+1,回到第2.3步;否則結束
圖4是本發明在使用上述算法找到符合條件的二元異或和之后,利用特定二元異或和對新增冗余盤進行編碼的示意圖(以7塊存儲設備的RAID6為例)。原由七塊存儲設備盤組成的RAID6系統中,其校驗數據占2/7,通過增加一個新的冗余盤h后,變成了八個設備組成的系統,其校驗數據占3/8,可靠性仍然為可以容忍任意兩個盤出錯。如圖所示,新增了六個冗余,分別是al+gO,bl+gl,c2+g2,d3+g3,e4+g4,f 5+g5。當任意一個原設備出錯后,首先確定X盤中含有出錯盤數據的所有二元異或和,然后根據最大重疊原理選擇其他對角線和反對角線冗余中的對應冗余塊進行恢復。
[0023]圖5是本發明利用特定二元異或和對新增冗余盤進行編碼后的單盤恢復操作示意圖。如第一個數據盤失效,即需要恢復a0,al,a2,a3,a4,a5,首先確定新增冗余盤中含有失效盤中元素的二元異或和a0,可以用新增冗余盤中對應的新增冗余aO+gO進行恢復,由于新增冗余盤中的二元異或和是特定的,根據最大重疊原理,必須選擇分別含有g0的對角線冗余f5和反對角線冗余a5,同時al,a2,a3和a4的恢復則根據最大重疊原理形成2D2A(兩對角兩反對角)進行恢復,這樣產生一個確定的重復序列。
[0024]對于本發明的情況,經過新增一個特定的冗余盤之后,雖然增加了重構所涉及的設備數目,但是減少了重構所需的數據總量,節約了一部分數據塊,使得重構時間縮短。
[0025]由此可以看出,本發明能根據利用新增的冗余盤,減少任意單個數據盤出錯后重構所需的數據總量,達到了加快單盤恢復的效果。另外,通過分析發現,同樣設備數目的系統中,本發明相比于RTP、STAR等編碼的系統,其更新開銷相對較低。
【主權項】
1.一種能夠快速恢復并實現負載均衡的X編碼擴展方法,基于各類存儲陣列系統中使用的X編碼進行編碼擴展,增加一個額外冗余設備,在保證可以容雙盤出錯的前提下,進一步減少單盤恢復所需的分塊總數,并且減少單盤恢復的1瓶頸,其特征在于,增加一個存儲設備來作為額外冗余盤,并在原有X編碼的基礎上為新增的冗余盤進行編碼,以減少原系統中任意一個設備發生故障進行重構時所需分塊總數的同時均衡負載,緩解系統恢復的1瓶頸,充分利用系統并行性,具體步驟為: 第一步,將原X編碼的編碼矩陣進行修改,將其矩陣大小從P*P將為(P-1)*P,即多余元素進入下一次編碼,并保留原X編碼的冗余生成方式,即Diagonal冗余和Ant1-diagonal冗余,其Diagonal冗余和Ant1-diagonal冗余的放置形狀為X型,定義兩個數據結構,矩陣matrix大小為(p-1 )*p,存放存儲陣列中的數據和冗余,Diagonal冗余放置于矩陣matrix中橫坐標i=縱坐標j處,Ant1-diagonal冗余放置于矩陣matrix中橫坐標i+縱坐標j=p處,另一數據結構為大小為P-1的數組H_par i ty,用于存放新增冗余; 第二步,初始化矩陣; 第三步:對矩陣matrix進行賦值; 第四步:通過執行FindTuples來尋找符合條件的二元異或和; 第五步:利用符合條件的二元異或和對新增冗余盤進行編碼: 第六步:利用編碼后的新增冗余盤進行單盤恢復操作。2.根據權利要求1所述的一種能夠快速恢復并實現負載均衡的X編碼擴展方法,其特征在于,所述第四步尋找符合條件的二元異或和的算法流程為: 第2.1步:初始化素數P,矩陣,并賦值; 第2.2步:令i=0,j=p-l-1 ; 第2.3步:判斷i是否等于p-1,若是,則取出matrix[i][i]上的元素和matrix[i] [ j]上的元素,并組成二元異或和,存放于!1_?&1';^7[;[],且^+1,回到第2.3步;否則結束。3.根據權利要求1所述的一種能夠快速恢復并實現負載均衡的X編碼擴展方法,其特征在于,所述第五步具體過程為: 由七個存儲設備組成陣列存儲系統,其校驗占比數據比例為2/7,通過增加一個新冗余盤后,變成了八個設備組成的系統,其校驗數據占3/8,可靠性為容忍任意兩個整設備盤出錯,在新增冗余盤中,其編碼唯一,新增六個冗余,分別是aO+gO, bl+gl, c2+g2, d3+g3,e4+g4, f5+g5,當任意一個存儲設備出錯后,首先確定新的冗余盤中含有出錯盤數據的所有二元異或和,然后根據最大重疊原理選擇其他對應冗余塊進行恢復。4.根據權利要求1所述的一種能夠快速恢復并實現負載均衡的X編碼擴展方法,其特征在于,所述第六步對新增冗余盤進行編碼后的單盤恢復操作,具體過程為: 如第一個數據盤失效,即需要恢復a0,al,a2,a3,a4,a5,首先確定新增冗余盤中含有失效盤中元素的二元異或和a0,可以用新增冗余盤中對應的新增冗余aO+gO進行恢復,由于新增冗余盤中的二元異或和是特定的,根據最大重疊原理,必須選擇分別含有g0的對角線冗余f5和反對角線冗余a5,同時al,a2,a3和a4的恢復則根據最大重疊原理形成2D2A,兩對角兩反對角,進行恢復,這樣產生一個確定的重復序列。
【文檔編號】G06F11/20GK105824725SQ201610135197
【公開日】2016年8月3日
【申請日】2016年3月10日
【發明人】肖儂, 鄧明翥, 陳志廣, 劉芳
【申請人】中國人民解放軍國防科學技術大學