具有最優更新代價的編碼及解碼方法
【技術領域】
[0001] 本發明設及一種具有最優更新代價的編碼及解碼方法。
【背景技術】
[0002] 隨著云存儲的發展帶來的數據存儲需求的增加,現有的數據中屯、通常采用大量磁 盤W達到足夠的存儲容量。對于該些數據中屯、來說,數據可靠性至關重要,因此具有容錯能 力的磁盤陣列被廣泛采用。近來,能容忍S塊磁盤失效的陣列最近受到廣泛關注,該是由于 在大規模數據中屯、里,磁盤失效的幾率非常之高,同一個磁盤陣列中多塊磁盤同時失效的 情況時有發生,極易造成無法恢復的數據丟失,而容忍=盤失效的陣列能提供足夠的數據 保護能力,從而帶來更高的數據可靠性。
[0003] 為了用盡可能少的成本讓磁盤陣列具有容錯能力,糾刪碼是一項被普遍采用的技 術。其具體原理是對原始數據按某種方式進行編碼,得到一定的校驗數據,然后我們將校驗 數據與原始數據一并存入磁盤陣列。當有磁盤失效時,我們用磁盤陣列中尚可正常讀取的 數據,經過解碼的步驟,從而恢復出原始的數據,從而能達到數據保護的目的。該類編碼通 常分為最大距離可分碼(MDS編碼)和非最大距離可分碼(non-MDS編碼),前者理論上能用 最少的額外空間開銷達到容錯能力,而后者則犧牲一定存儲效率W換取更好的性能。該兩 類編碼在實際中均有應用。
[0004] 對于糾刪碼來說,更新代價是一個重要的性能指標,它被定義為更新一個數據塊 平均造成多少校驗塊的修改。該個指標對于寫操作頻繁的磁盤陣列來說至關重要。然而, 現有的能容忍S個磁盤失效的MDS編碼普遍具有高昂的更新代價。W常見的W異或狂OR) 運算為基礎的編碼如STAR,Triple-Star等編碼為例,它們的更新代價都很高,更新一個數 據塊平均會造成大約5個校驗塊被更新,遠遠超過理論的下限值3。該是由于它們在計算校 驗塊的過程中存在依賴關系。對于另一類MDS編碼如Reed-Solomon編碼,由于它們的運算 是基于伽羅華域,因此計算代價高昂,間接限制了寫入速度。
[0005] 而對于各類non-MDS編碼,它們普遍存在其他方面的缺點。首先一個共同的問題 是,該些編碼的存儲效率不是最優,因此存儲等量數據的情況下,non-MDS編碼相比于MDS 編碼需要更多的存儲空間,因此也需要更多的寫入時間。此外,盡管有些non-MDS編碼的存 儲效率接近最優,如化Ver和皿D1編碼,但有相關評測表明,它們的解碼效率非常低下,因 此限制了磁盤陣列的重構速度。
【發明內容】
[0006] 本發明的目的在于提供一種具有最優更新代價的編碼及解碼方法,通過合理的編 碼設計,能夠大幅減少了數據更新代價,從而提升了寫入性能
[0007] 為解決上述問題,本發明提供一種具有最優更新代價的編碼方法,包括:
[000引根據磁盤陣列中的磁盤數量,確定質數P使得陣列中磁盤數量n滿足n=P或者n二P+1 ;
[0009] 確定磁盤上的數據塊的大小,并將每個磁盤的地址空間w該大小為基本單位進行 分塊,并且一個磁盤上,每P-1個塊視為一組,而所有磁盤的同樣起始位置的一組數據塊, 共同構成了一個條帶;
[0010] 生成對應于磁盤陣列的編碼矩陣,其中,編碼矩陣中每一列對應于一個磁盤,而編 碼矩陣中的每個元素對應于條帶中的一個數據塊或校驗塊,所述校驗塊包括水平校驗塊、 斜向校驗塊和反斜向校驗塊;
[0011] 根據水平校驗塊、斜向校驗塊和反斜向校驗塊的生成公式將每個條帶的數據塊的 值按行優先順序依次填入編碼矩陣中的對應的元素位置,并根據所述水平校驗塊、斜向校 驗塊和反斜向校驗塊的生成公式算出編碼矩陣中所有校驗塊的值,并寫入編碼矩陣中對應 的元素位置。
[0012] 進一步的,在上述方法中,所述水平校驗塊的生成公式如下:
[0013]
【主權項】
1. 一種具有最優更新代價的編碼方法,其特征在于,包括: 根據磁盤陣列中的磁盤數量,確定質數P使得陣列中磁盤數量η滿足n = P或者η = Ρ+1 ; 確定磁盤上的數據塊的大小,并將每個磁盤的地址空間以該大小為基本單位進行分 塊,并且一個磁盤上,每P-I個塊視為一組,而所有磁盤的同樣起始位置的一組數據塊,共 同構成了一個條帶; 生成對應于磁盤陣列的編碼矩陣,其中,編碼矩陣中每一列對應于一個磁盤,而編碼矩 陣中的每個元素對應于條帶中的一個數據塊或校驗塊,所述校驗塊包括水平校驗塊、斜向 校驗塊和反斜向校驗塊; 根據水平校驗塊、斜向校驗塊和反斜向校驗塊的生成公式將每個條帶的數據塊的值按 行優先順序依次填入編碼矩陣中的對應的元素位置,并根據所述水平校驗塊、斜向校驗塊 和反斜向校驗塊的生成公式算出編碼矩陣中所有校驗塊的值,并寫入編碼矩陣中對應的元 素位置。
2. 如權利要求1所述的具有最優更新代價的編碼方法,其特征在于,所述水平校驗塊 的生成公式如下:
其中,Ciip為行號為i、列號為ρ的水平校驗塊的 值,P為質數,Cu為行號為i、列號為j的數據塊的值。
3. 如權利要求2所述的具有最優更新代價的編碼方法,其特征在于,所述斜向校驗的 生成公式如下:
,其中,Ci;i+1為行號為i、列號為i+1 的水平校驗塊的值,為行號為<i-j>P、列號為·?的數據塊的值,<i-j>P為以i_j的值 對P取模。
4. 如權利要求3所述的具有最優更新代價的編碼方法,其特征在于,所述反斜向校驗 的生成公式如下:
其中,行號為i、列號 為p-1-i的水平校驗塊的值,為行號為<i+j>p、列號為j的數據塊的值,<i+j> p為以 i+j的值對P取模。
5. -種具有最優更新代價的解碼方法,其特征在于,用于對如權利要求1~4任一項所 述的具有最優更新代價的編碼方法進行解碼,所述解碼方法包括: 當磁盤陣列上至多三塊磁盤失效時,定位出失效的磁盤,將失效磁盤上存儲的數據標 記為失效數據,將其余數據均標記為存活數據; 生成對應于所述磁盤陣列的編碼矩陣的校驗矩陣,其中,所述校驗矩陣是一個3w行wn 列的Ol矩陣,η為磁盤陣列中的磁盤數量,n = p或者η = p+l,p為質數,w = p-1,矩陣的 每一行對應于一個校驗塊的生成公式,其中,所述校驗塊的生成公式包括水平校驗塊、斜向 校驗塊和反斜向校驗塊的生成公式,校驗矩陣的每一列對應于編碼矩陣中的一個元素; 將校驗矩陣分割成兩個子矩陣,其中,所有失效數據對應的校驗矩陣中的失效元素所 對應的列構成失效矩陣,所有存活數據對應的校驗矩陣中的存活元素所對應的列構成存活 矩陣,根據所有存活數據、失效矩陣和存活矩陣恢復出失效磁盤上的失效數據。
6. 如權利要求5所述的具有最優更新代價的解碼方法,其特征在于,根據所有存活數 據、失效矩陣和存活矩陣恢復出失效磁盤上的失效數據中,通過如下公式計算得出失效數 據: L = H^*Hs*S,其中,L為失效數據,扎為失效矩陣,H s為存活矩陣,H J1為Ol矩陣的廣 義逆矩陣,S為存活數據。
7. 如權利要求6所述的具有最優更新代價的解碼方法,其特征在于,生成對應于所述 磁盤陣列的編碼矩陣的校驗矩陣中,所述編碼矩陣中的元素 Cu對應于所述校驗矩陣的第 j*w+i列的元素,當且僅當第i行對應的校驗塊的生成公式中出現第j列所對應的元素時校 驗矩陣中的元素 Hu取值為1,C u表示行號為i、列號為j的編碼矩陣中的元素 ,H u表示 行號為i、列號為j的校驗矩陣中的元素。
【專利摘要】本發明提供了一種具有最優更新代價的編碼及解碼方法,利用相互獨立的水平、斜向與反斜向校驗的編碼方案,實現磁盤陣列,使其能容忍至多三塊磁盤同時失效,通過合理的編碼設計,大幅減少了數據更新代價,從而提升了寫入性能,當至多3個磁盤上的數據不可用時,利用其余健康磁盤上存活的原始數據或校驗數據,高效恢復出完整數據。
【IPC分類】G06F11-08
【公開號】CN104866386
【申請號】CN201510291851
【發明人】過敏意, 吳晨濤, 李頡, 章雍哲, 蔣妍冰, 黃洵松
【申請人】上海交通大學
【公開日】2015年8月26日
【申請日】2015年5月31日