優(yōu)化輸入輸出負載的raid-6橫向斜向校驗編碼及解碼方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計算機領(lǐng)域,設(shè)及一種優(yōu)化輸入輸出(I/O)負載的RAID-6橫向斜向校 驗編碼及解碼方法。
【背景技術(shù)】
[0002] 冗余磁盤陣列(RAID)是一種被廣泛采用的,能W非常少的空間開銷提升存儲設(shè) 備可靠性與性能的技術(shù)。近年來,由于大型存儲系統(tǒng)中多盤失效幾率的提升,能容忍兩塊磁 盤同時失效的RAID-6方案得到了更多關(guān)注。現(xiàn)有的大多數(shù)RAID-6的實現(xiàn)是基于一類最大 距離可分碼(MDS編碼)實現(xiàn)的,該類編碼的特點是能W最優(yōu)的額外空間代價W達到所需要 的可靠性。根據(jù)編碼本身的特性,MDS編碼可進一步分為水平編碼和垂直編碼。一個典型 的RAID-6水平編碼由m塊數(shù)據(jù)盤和2塊校驗盤構(gòu)成,其中數(shù)據(jù)存放在m個數(shù)據(jù)塊上,而校 驗單獨存放在剩余2個盤上。垂直編碼則將校驗塊分布在所有設(shè)備上。
[000引大多數(shù)現(xiàn)有的MDS編碼均存在負載不均衡的問題,當上層應(yīng)用的寫請求多的時 候,該個現(xiàn)象更為嚴重。典型的水平編碼由于將校驗放在單獨的磁盤上,因此在處理寫請 求時,校驗盤將承受大量的更新操作,從而比數(shù)據(jù)盤具有更大的負載。對于某些垂直編碼例 如P-code,由于它的校驗并未完全均勻分布,同樣存在負載不均衡的問題。盡管,某些垂直 編碼具有負載均衡的特性,如X-code,但是他們在恢復(fù)單盤失效的時候,具有更高的恢復(fù)代 價。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的在于提供一種優(yōu)化輸入輸出負載的RAID-6橫向斜向校驗編碼及解 碼方法,能夠?qū)崿F(xiàn)最佳的負載均衡,最優(yōu)存儲代價,W及良好的單盤恢復(fù)性能。
[0005] 為解決上述問題,本發(fā)明提供一種優(yōu)化輸入輸出負載的RAID-6橫向斜向校驗編 碼方法,包括:
[0006] 用一個P-1行P-1列的方陣來表示規(guī)模為P-1的磁盤陣列,其中P是任意給定的 大于2的質(zhì)數(shù),其中,方陣中的每一列表示一個磁盤,方陣中的每個元素表示磁盤上一個定 長的存儲空間;
[0007] 在所述方陣的主對角線存放橫向校驗塊,副對角線存放反斜向校驗塊,方陣的剩 余元素存放數(shù)據(jù)塊,主對角線為橫向校驗鏈,副對角線為反斜向校驗鏈。
[000引進一步的,在上述方法中,在所述方陣的主對角線存放橫向校驗塊,副對角線存放 反斜向校驗塊,方陣的剩余元素存放數(shù)據(jù)塊包括:
[0009] 根據(jù)橫向和反斜向校驗的計算公式在所述方陣的主對角線和副對角線之外的元 素位置存放數(shù)據(jù)塊;
[0010] 根據(jù)所述橫向和反斜向校驗的計算公式,計算出所有橫向校驗塊和反斜向校驗 塊,并將所述橫向校驗塊存放入所述方陣的主對角線上的對應(yīng)的元素位置,將所述反斜向 校驗塊存放入所述方陣的副對角線上的對應(yīng)的元素位置。
[0011] 進一步的,在上述方法中,所述橫向校驗的計算公式如下:
[0012]
【主權(quán)項】
1. 一種優(yōu)化輸入輸出負載的RAID-6橫向斜向校驗編碼方法,其特征在于,包括: 用一個P-I行P-I列的方陣來表示規(guī)模為P-I的磁盤陣列,其中P是任意給定的大于2 的質(zhì)數(shù),其中,方陣中的每一列表示一個磁盤,方陣中的每個元素表示磁盤上一個定長的存 儲空間; 在所述方陣的主對角線存放橫向校驗塊,副對角線存放反斜向校驗塊,方陣的剩余元 素存放數(shù)據(jù)塊,主對角線為橫向校驗鏈,副對角線為反斜向校驗鏈。
2. 如權(quán)利要求1所述的優(yōu)化輸入輸出負載的RAID-6橫向斜向校驗編碼,其特征在于, 在所述方陣的主對角線存放橫向校驗塊,副對角線存放反斜向校驗塊,方陣的剩余元素存 放數(shù)據(jù)塊包括: 根據(jù)橫向和反斜向校驗的計算公式在所述方陣的主對角線和副對角線之外的元素位 置存放數(shù)據(jù)塊; 根據(jù)所述橫向和反斜向校驗的計算公式,計算出所有橫向校驗塊和反斜向校驗塊,并 將所述橫向校驗塊存放入所述方陣的主對角線上的對應(yīng)的元素位置,將所述反斜向校驗塊 存放入所述方陣的副對角線上的對應(yīng)的元素位置。
3. 如權(quán)利要求2所述的優(yōu)化輸入輸出負載的RAID-6橫向斜向校驗編碼,其特征在于, 所述橫向校驗的計算公式如下:
其中,Cu表示橫向校驗塊,C u表示方陣中第i行第j列的元素, O ^ i, j ^ p-2〇
4. 如權(quán)利要求3所述的優(yōu)化輸入輸出負載的RAID-6橫向斜向校驗編碼,其特征在于, 所述反斜向校驗的計算公式如下:
.其中,pli表示反斜向校驗, ^(2i+j+2)p.j 表示方陣中第<2i+j+2>p行第j列的元素,<2i+j+2> p表示將2i+j+2的值對p取 模。
5. 如權(quán)利要求1所述的優(yōu)化輸入輸出負載的RAID-6橫向斜向校驗解碼方法,其特征在 于,包括: 當磁盤陣列的最多2個盤失效時,根據(jù)方陣中的橫向和反斜向校驗鏈恢復(fù)失效元素。
6. 如權(quán)利要求1所述的優(yōu)化輸入輸出負載的RAID-6橫向斜向校驗解碼方法,其特征在 于,當磁盤陣列的1個盤失效時,根據(jù)方陣中的橫向和反斜向校驗鏈恢復(fù)失效元素包括: 讀取方陣中的橫向和反斜向校驗鏈上的存活元素,計算存活元素的異或之和,將存活 元素的異或之和作為失效元素的值。
7. 如權(quán)利要求1所述的優(yōu)化輸入輸出負載的RAID-6橫向斜向校驗解碼方法,其特征在 于,當磁盤陣列的2個盤失效時,根據(jù)方陣中的橫向和反斜向校驗鏈恢復(fù)失效元素包括: 步驟一,尋找位于失效的磁盤上且是所在反斜向校驗鏈上唯一缺失的元素作為起始元 素; 步驟二,通過所述反斜向校驗鏈對所述起始元素進行恢復(fù); 步驟三,當所述起始元素被恢復(fù)后,得到所述起始元素所在橫向校驗鏈上且位于失效 盤上的一個第二元素,則通過所述橫向校驗鏈對所述第二元素進行恢復(fù); 步驟四,判斷失效的磁盤上是否還有待恢復(fù)的元素, 若有,將所述第二元素的所在反斜向校驗鏈上下一個待恢復(fù)的元素替換為新的起始元 素后轉(zhuǎn)到步驟二; 若無,則結(jié)束。
【專利摘要】本發(fā)明提供了一種優(yōu)化輸入輸出負載的RAID-6橫向斜向校驗編碼及解碼方法,本發(fā)明為冗余磁盤陣列系統(tǒng)中糾刪碼的設(shè)計方案,包括了編碼的橫向與反斜向校驗的編碼方案,以及當至多兩個磁盤失效時,利用校驗鏈進行數(shù)據(jù)恢復(fù)的流程。與現(xiàn)有的雙盤容錯糾刪碼相比,本發(fā)明通過合理的編碼設(shè)計,實現(xiàn)最佳的負載均衡,最優(yōu)存儲代價,以及良好的單盤恢復(fù)性能。
【IPC分類】G06F3-06, G06F11-10
【公開號】CN104866243
【申請?zhí)枴緾N201510289990
【發(fā)明人】吳晨濤, 過敏意, 李頡, 何緒斌, 馮博, 黃洵松
【申請人】上海交通大學
【公開日】2015年8月26日
【申請日】2015年5月31日