共計(jì) 1686 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。
這篇文章給大家分享的是有關(guān) Ceph 糾刪碼如何實(shí)現(xiàn)的內(nèi)容。丸趣 TV 小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過(guò)來(lái)看看吧。
1、糾刪碼
糾刪碼 Erasure Code 是一種編碼技術(shù),它可以將 n 份原始數(shù)據(jù),增加 m 份數(shù)據(jù),并能通過(guò) n + m 份中的任意 n 份數(shù)據(jù),還原為原始數(shù)據(jù)。即如果有任意小于等于 m 份的數(shù)據(jù)失效,仍然能通過(guò)剩下的數(shù)據(jù)還原出來(lái)。糾刪碼技術(shù)在分布式存儲(chǔ)系統(tǒng)中的應(yīng)用主要有三類,陣列糾刪碼(Array Code: RAID5、RAID6 等)、RS(Reed-Solomon) 里德 - 所羅門類糾刪碼和 LDPC(LowDensity Parity Check Code) 低密度奇偶校驗(yàn)糾刪碼。LDPC 碼目前主要用于通信、視頻和音頻編碼等領(lǐng)域。
目前主流的分布式存儲(chǔ)包括 HDFS、Ceph、Minio 等主要使用的是 RS(Reed-Solomon) 碼。
2、Ceph 糾刪碼實(shí)現(xiàn) 2.1、糾刪碼寫
數(shù)據(jù)將在主 OSD 進(jìn)行編碼然后分發(fā)到相應(yīng)的 OSDs 上去。
2.2、糾刪碼讀 2.2.1、正常糾刪碼讀
從相應(yīng)的 OSDs 中獲取數(shù)據(jù)后進(jìn)行解碼。
2.2.2、數(shù)據(jù)丟失時(shí)糾刪碼讀
如果此時(shí)有數(shù)據(jù)丟失,Ceph 會(huì)自動(dòng)從存放校驗(yàn)碼的 OSD 中讀取數(shù)據(jù)進(jìn)行解碼。
3、Ceph 支持的糾刪碼插件
Ceph 支持不同的糾刪碼插件:Jerasure,ISA-l 和 LRC,默認(rèn)為 Jerasure
# ceph osd erasure-code-profile get default
plugin=jerasure
technique=reed_sol_van
此處列出的三種糾刪碼插件其實(shí)是分成兩種類型
Jerasure 和 ISA- l 屬于糾刪碼代碼庫(kù) LRC 是一種糾刪碼編碼,類似于 RS 碼
3.1、糾刪碼代碼庫(kù) 3.1.1、Jerasure
Jerasure2.0 使用 C 語(yǔ)言封裝后的指令,這樣代碼更加的友好。另外 Jerasure2.0 不僅僅支持 GF(2^8) 有限域的計(jì)算,其還可以進(jìn)行 GF(2^4) – GF(2^128) 之間的有限域。并且除了 RS 碼,還提供了 Cauchy Reed-Solomon code(CRS 碼)等其他編碼方法的支持。它在工業(yè)應(yīng)用之外,其學(xué)術(shù)價(jià)值也非常高。目前其是使用最為廣泛的編碼庫(kù)之一。目前 Jerasure2.0 并不支持 AVX 加速。
3.1.2、ISA-l
Intel ISA- L 代表英特爾智能存儲(chǔ)加速庫(kù), 使用的匯編代碼,ISA- L 是針對(duì)存儲(chǔ)應(yīng)用程序而優(yōu)化的低級(jí)功能的開源集合。它包括針對(duì) Intel AVX 和 AVX2 指令集優(yōu)化的快速塊 Reed-Solomon 類型糾刪碼, 它的性能是業(yè)界最佳,主要是因?yàn)檎w的矩陣運(yùn)算都放在匯編之中
3.1.3、對(duì)比
3.2、糾刪碼編碼 3.2.1、RS(Reed-Solomon)
Reed-Solomon(RS)碼是存儲(chǔ)系統(tǒng)較為常用的一種糾刪碼,它有兩個(gè)參數(shù) n 和 m,記為 RS(n,m)。n 代表原始數(shù)據(jù)塊個(gè)數(shù)。m 代表校驗(yàn)塊個(gè)數(shù)。
簡(jiǎn)單來(lái)講指定 RS(4,1)時(shí),有 4 個(gè)數(shù)據(jù)塊和 1 個(gè)校檢塊
D1- 4 任意數(shù)據(jù)塊損壞,都可以通過(guò) P1 進(jìn)行解碼恢復(fù)重建,同樣的 P1 校檢塊損壞也可以通過(guò)數(shù)據(jù)塊編碼計(jì)算重建
3.2.2、LRC(Locally Repairable Codes)
LRC(Locally Repairable Codes),是一種局部校驗(yàn)編碼方法,其核心思想為:將校驗(yàn)塊(parity block)分為全局校驗(yàn)塊 (global parity)、局部校驗(yàn)塊 (local reconstruction parity),故障恢復(fù)時(shí)分組計(jì)算。
對(duì)比 RS,這里是 4 個(gè)數(shù)據(jù)塊分成了兩組,
D1+D2=P1
D3+D4=P2
D1+D2+D3+D4=P3
P1、P2 是局部校驗(yàn)塊,P3 是全局校驗(yàn)塊。
優(yōu)勢(shì)在于,當(dāng)組內(nèi)數(shù)據(jù)塊損壞時(shí),由于減少了網(wǎng)絡(luò) I / O 傳輸?shù)臄?shù)據(jù)量,組內(nèi)恢復(fù)運(yùn)算的數(shù)據(jù)量和重建時(shí)間基本上能縮短一半。
劣勢(shì)是因?yàn)樾z塊的增加,磁盤使用率和可靠性都會(huì)降低
3.2.2、編碼對(duì)比
感謝各位的閱讀!關(guān)于“Ceph 糾刪碼如何實(shí)現(xiàn)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!