EC糾刪碼理論介紹

糾刪碼理論介紹

1 什麼是EC?

EC:糾刪碼-Erasure Code,是一種編碼理論:

  • EC是糾錯碼的一種,通過增加校驗片,保證數據可靠性。
  • 特性:將數據分成k個分片,生成m個校驗片,假設n=k+m,在n個分片中任意選取k個分片,就可以將原始數據恢復回來。

EC不僅應用在存儲領域,通信領域也是EC的主要應用場景。

2 EC(4+2)編解碼簡介

EC(4+2)

上圖可以簡單說明EC(4+2)的編碼、解碼以及故障恢復的主要流程,包括:

  • chunk:將數據進行分片,如圖分成4個片:d1、d2、d3、d4.
  • encode:根據4個數據片,生成2個校驗片(生成校驗片的邏輯請看下一節),這樣就形成4+2的EC數據片
  • 故障:4+2的EC,允許這6個數據片任意損壞2個,假如損壞了d2和c1,如圖
  • decode:通過d1、d3、d4、c2,根據EC的計算,可以算出原始的數據塊
  • re-encode:將原始的數據塊分成d1、d2、d3、d4,再次計算出c1、c2
  • replace:將損壞的數據塊d2、c1進行替換掉即可

可以發現EC的故障恢復比副本更復雜,副本直接再copy一份即可,但是EC比副本的優勢是成本,相比於3副本,EC在保證同樣可靠性的同時,並不需要保存3份數據。

3 EC的數學原理

EC-Math

其中:

  • B是一個(5+3)行5列的矩陣,這個矩陣有這樣的特點,任意5階方陣都是一個可逆矩陣
  • D是數據,分成了5等份,D1~D5

根據矩陣乘法,B * D 的結果是一個剛好是(5+3)行1列的矩陣,即:D1、D2、D3、D4、D5、C1、C2、C3,這種(5+3)的EC策略是允許任意3份的丟失。

假如D1、D4、C2損壞了,那麼依然存在這樣的等式:B’ * D = D2、D3、D5、C1、C3,如上圖2.中的等式

由於B’存在可逆矩陣,那麼兩邊同時乘以B’的可逆矩陣,得到上圖4.等式,那麼就到的原始數據D:D1、D2、D3、D4、D5。

最後,B * D就能把損壞的D1、D4、C2計算出來,進而達到故障恢復。

說明

符合B矩陣要求的,有:

  • 範德蒙矩陣:就是高等數學裏面我們學過的那個範德蒙矩陣
  • 柯西矩陣:應該也學過
  • 其他符合要求的矩陣

4 EC存儲的優缺點

優勢

  • 磁盤利用率高,存儲成本低,通常是3副本存儲的一半,甚至更低
  • 和3副本相比,有較低的網絡開銷,尤其在write的時候表現明顯

劣勢

  • 在編、解碼過程中通常有較大的CPU佔用和網絡開銷,主要體現在write和故障read、故障恢復的情況下
  • EC必須滿條帶的讀寫,不足條帶的情況下會有padding
  • 和3副本相比,EC存儲系統更復雜,集羣穩定性挑戰更大

EC編碼的缺點,使得EC最開始並沒有應用在線數據,一般都是應用在低頻存儲中,何爲低頻存儲,就是訪問頻次較低數據的存儲系統中,不過目前已經有的在線存儲也開始使用EC編碼了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章