宽客秀

宽客秀

Quant.Show的Web3站点,Archives from quant.show

數據冗余機制:副本 VS 糾刪碼

數據冗余是保障存儲可靠性、數據可用性的最有效手段,傳統的冗余機制主要有副本(Replication)和糾刪碼(Erasure Code,簡稱 EC)兩種方式。

還記得怎麼對待畢業論文的嗎,電腦裡存一份,U 盤裡存一份,網盤裡再存一份,甚至好幾個網盤裡都存一份。內心戰戰兢兢,生怕幾個月的努力(並沒有。。。)付諸東流。這,就是副本。多副本策略就是將數據存儲為多個副本(一般是 3 副本),當某個副本丟失的時候,可以通過其他副本找回來,所以 3 副本的磁盤利用率為 1/3,允許副本損壞數 2/3。

顯然,副本模式的磁盤利用率是不高的。為了改善這一點,我們引入了糾刪碼的機制,可以解決磁盤利用率的問題,其操作大致可分為 3 步:

  • 把一個文件均分為 K 個數據塊
  • 將這 K 個數據塊通過一定的方式(比如說線性關係,或者矩陣關係)聯系起來生成 M 個校驗塊
  • 當某幾個數據塊丟失時,利用校驗塊重新計算出丟失的數據塊

這種情況下的磁盤利用率為:K/(K+M),允許副本損壞數:M/(K+M)。其數據恢復的原理主要使用了矩陣的計算,其中關鍵詞:范德蒙德矩陣。具體的恢復原理可參考文末的參考文獻。

愛數的 AnyShare Enterprise/Express7 產品同時支持副本模式和 EC 模式,具體表現在:

  • 1 節點及 2 節點採用 3 副本模式,3 節點以上可以升級支持 EC 模式。所以,節點比較少的情況下就考慮 3 副本模式即可。
  • 擴容升級的場景,對象存儲池支持 3 副本和 EC 混合的模式。
  • AnyShare 支持 4+2:1,4+2,6+3 等多種 EC 策略,其中 4+2:1 指的是每個數據帶包括 4 個數據塊和 2 個編碼塊,允許任意 2 塊磁盤故障而不影響數據完整性或任意1個節點故障而不影響數據完整性,該策略最少需要 3 個節點數;而 4+2 指的是每個數據帶包括 4 個數據塊和 2 個編碼塊,允許任意 2 塊磁盤故障而不影響數據完整性或任意2個節點故障而不影響數據完整性,該策略至少需要 6 個節點數。
  • 一般情況下,EC 模式的性能、磁盤利用率、安全性都高於 3 副本模式,但是 4+2:1 的安全性不如 3 副本。

參考文獻:

freshyuan,《Ceph 分布式存儲糾刪碼之初探 EC》

互聯網後端架構,《糾刪碼 (EC) 的學習》

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。