基於柯西矩陣的Erasure Code技術詳解

2022-09-01 00:57:09 字數 2676 閱讀 9145

時間2014-05-12 22:16:47 

儲存之道 

原文erasure code 可以應用於分布式儲存系統中,替代多份資料拷貝的資料冗餘方式,從而可以提高儲存空間利用率。此外, erasure code 還可以應用於傳統 raid系統中,增加資料冗餘度,支援多塊盤同時發生故障,從而可以提高資料可靠性。

採用範德蒙矩陣可以構建 erasure code (關於範德蒙矩陣的編譯碼方法,可以參考文章《 基於範德蒙矩陣的 erasure code 技術詳解 》),其生成矩陣表示如下:

採用範德蒙矩陣作為編碼矩陣的問題在於演算法複雜度太高,其解碼演算法複雜度為o ( n^3 )。採用目前的處理器技術,還是會影響 io 的效能,增加 io 延遲。因此,找到一種更加合理的編碼矩陣,降低演算法複雜度是 erasure code 得以廣泛應用的乙個前提條件。

基於柯西矩陣的李德 - 所羅門( rs )碼是在範德蒙矩陣的 rs 碼基礎上作了兩點重要改進:

1, 用柯西矩陣來代替範德蒙矩陣。由於範德蒙矩陣求逆運算的複雜度為 o (n^3 ),而柯西矩陣求逆運算的複雜度僅為 o ( n^2 )。因此,採用柯西矩陣可以降低解碼的運算複雜度。

2, 採用有限域二進位制矩陣的方式來提高運算效率,直接將乘法轉換成 xor 邏輯運算,大大降低了運算複雜度。

大家知道,柯西矩陣可以描述如下:

x ( i )和 y ( i )都是迦羅華域 gf ( 2^w )中的元素。柯西矩陣有兩個特點:第一,任意乙個子方陣都是奇異矩陣,存在逆矩陣;第二,柯西矩陣在迦羅華域上的求逆運算,可以在 o ( n^2 )的運算複雜度內完成。

採用柯西矩陣進行 erasure code 編碼過程描述如下:

其運算過程和范德蒙矩陣編碼過程是一樣的,只不過採用柯西矩陣替換了範德蒙矩陣。從運算過程來看,編碼過程是迦羅華域的系列乘法、加法運算。

柯西解碼方程描述如下:

當任何乙個資料元 d ( i )遭到損壞時,需要通過解碼過程進行資料恢復。資料解碼過程可以分成如下幾大步驟:

1, 選取剩餘有效的資料塊,構成乙個解碼列向量。例如, d1 、 d3 資料塊損壞了,那麼可以選取剩餘資料 d0 、 d2 、 c0 、 c2 作為解碼列向量。

2, 摘取生成矩陣(柯西矩陣)中解碼列向量所對應的行,構成方陣 a ,該矩陣的逆矩陣就是解碼生成矩陣 inv(a) 。

3, 解碼生成矩陣 inv(a) 和解碼列向量的乘積就可以得到丟失的資料 d1 和 d3 。

從整個過程來看,矩陣求逆過程是最大的運算開銷。解碼過程和范德蒙矩陣編碼是一樣的,但是柯西矩陣的求逆運算複雜度要低於範德蒙矩陣,因此,具有更好的效能。

從編譯碼過程來看,柯西編譯碼最大的運算量是乘法和加法運算。在範德蒙編碼的時候,我們可以採用對數 / 反對數表的方法將乘法運算轉換成了加法運算,並且在迦羅華域中,加法運算轉換成了 xor 運算。

柯西編譯碼為了降低乘法複雜度,採用了有限域上的元素都可以使用二進位制矩陣表示的原理,將乘法運算轉換成了迦羅華域「與運算」和「 xor 邏輯運算」,提高了編譯碼效率。

從數學的角度來看,在迦羅華有限域中,任何乙個 gf ( 2^w )域上的元素都可以對映到 gf ( 2 )二進位制域,並且採用乙個二進位制矩陣的方式表示 gf ( 2^w )中的元素。例如, gf ( 2^3 )域中的元素可以表示成 gf ( 2 )域中的二進位制矩陣:

圖中,黑色方塊表示邏輯 1 ,白色方塊表示邏輯 0 。通過這種轉換, gf ( 2^w)域中的陣列就可以轉換成 gf ( 2 )域中的二進位制陣列。生成矩陣的陣列轉換表示如下:

在 gf ( 2^w )域中的生成矩陣為 k* ( k+m ),轉換到 gf ( 2 )域中,變成了 (w*k) * (w*(k+m)) 二進位制矩陣。採用域轉換的目的是簡化 gf ( 2^w )域中的乘法運算。在 gf ( 2 )域中,乘法運算變成了邏輯與運算,加法運算變成了 xor運算,可以大大降低運算複雜度。和范德蒙編譯碼中提到的對數 / 反對數方法相比,這種方法不需要構建對數 / 反對數表,可以支援 w 為很大的 gf 域空間。採用這種有限域轉換的方法之後,柯西編碼運算可以表示如下:

可以說柯西編碼是在範德蒙編碼基礎之上的一種優化。其主要有兩點:第一降低了矩陣求逆的運算複雜度;第二通過有限域轉換,將 gf ( 2^w )域中的元素轉換成二進位制矩陣,簡化了乘法運算。所以,柯西編譯碼要優於範德蒙矩陣的方法,柯西編碼的運算複雜度為 o ( n(n- m) ),解碼複雜度為 o ( n^2 )。

基於柯西矩陣的Erasure Code技術詳解

erasure code 可以應用於分布式儲存系統中,替代多份資料拷貝的資料冗餘方式,從而可以提高儲存空間利用率。此外,erasure code 還可以應用於傳統 raid 系統中,增加資料冗餘度,支援多塊盤同時發生故障,從而可以提高資料可靠性。採用範德蒙矩陣可以構建 erasure code 關於...

柯西分布 正態分佈的兄弟

觀察變數分布時最重要的三個特性之一是胖 瘦 另兩個是 單模 多模 對稱 有偏 柯西分布和正態分佈是極易混淆的分布曲線。柯西分布也叫作柯西 洛倫茲分布,它是以奧古斯丁 路易 柯西與亨德里克 洛倫茲名字命名的連續概率分布,其概率密度函式為 其中x0是定義分布峰值位置的位置引數,是最大值一半處的一半寬度的...

函式極限的柯西收斂準則

以下內容來自中科大數學分析教程p73,定理2.4.7 函式在x 點的極限的定義 若存在l,forall epsilon 0,exists delta 0,使得當 x x delta 則有 f x l epsilon,即稱l為f x 當x趨近於x 的極限 定理 函式f x 在x 處有極限的充要條件是 ...