主網(wǎng)上線后,存儲(chǔ)的數(shù)據(jù)呈爆炸式增長(zhǎng)。現(xiàn)在整個(gè)網(wǎng)絡(luò)的有效計(jì)算能力已經(jīng)達(dá)到1.40EiB,海量數(shù)據(jù)的安全存儲(chǔ)給礦工帶來(lái)了巨大的挑戰(zhàn)。
關(guān)注的朋友可能在這兩天看到了這兩個(gè)賬號(hào)的照片。這兩個(gè)賬戶都是之前的頂部節(jié)點(diǎn),但現(xiàn)在賬戶可用余額為-數(shù)萬(wàn)-數(shù)十萬(wàn)FIL,質(zhì)押貨幣和區(qū)塊獎(jiǎng)勵(lì)被沒(méi)收,損失相當(dāng)于數(shù)千萬(wàn)元人民幣。發(fā)生這樣的情況是很遺憾的。
行業(yè)的生命周期為180-540天,在這段時(shí)間內(nèi),我們需要不斷驗(yàn)證數(shù)據(jù)存儲(chǔ)的安全性。如果提交的數(shù)據(jù)錯(cuò)誤或未在時(shí)間內(nèi)提交,則會(huì)報(bào)告錯(cuò)誤。如果沒(méi)有在14天內(nèi)提交正確的數(shù)據(jù),將觸發(fā)非常嚴(yán)重的沒(méi)收機(jī)制!
因此,存儲(chǔ)方案對(duì)于挖掘是非常重要的!
這說(shuō)明我們存儲(chǔ)的打包數(shù)據(jù)容易因硬盤(pán)損壞而丟失,僅靠硬盤(pán)存儲(chǔ)難以保證存儲(chǔ)在扇區(qū)生命周期內(nèi)的數(shù)據(jù)的安全性。
圖:浴缸曲線
因此,冗余保護(hù)策略變得非常必要。
多拷貝碼和擦除碼是分布式存儲(chǔ)系統(tǒng)中常用的兩種數(shù)據(jù)冗余保護(hù)策略,是保護(hù)我們的數(shù)據(jù)安全的兩種技術(shù)。
注:分布式存儲(chǔ)系統(tǒng)中的CAP原則包括一致性、可用性和分區(qū)容差。可用性的兩種常見(jiàn)技術(shù)是多拷貝和擦除代碼。
多拷貝與糾刪碼分別是什么
多拷貝是將數(shù)據(jù)復(fù)制到多個(gè)副本,并存儲(chǔ)在不同的地方,實(shí)現(xiàn)冗余備份。以副本為例。顧名思義,雙重復(fù)制意味著數(shù)據(jù)存儲(chǔ)為兩個(gè)副本。當(dāng)一個(gè)副本丟失時(shí),可以由另一個(gè)副本恢復(fù)數(shù)據(jù)。
糾刪碼(EC)主要利用糾刪碼算法對(duì)原始數(shù)據(jù)進(jìn)行編碼以獲得冗余。它將數(shù)據(jù)進(jìn)行分段,對(duì)冗余數(shù)據(jù)塊進(jìn)行擴(kuò)展和編碼,將其存儲(chǔ)在不同的位置,并將數(shù)據(jù)和冗余一起存儲(chǔ),達(dá)到容錯(cuò)的目的。
糾刪碼首先解決了通信行業(yè)中傳輸數(shù)據(jù)部分丟失的問(wèn)題。它的基本原理是對(duì)發(fā)射信號(hào)進(jìn)行分段,加上一定的檢查,然后在分段之間進(jìn)行一定的連接。即使在傳輸過(guò)程中丟失了一些信號(hào),接收機(jī)仍然可以通過(guò)算法計(jì)算出完整的信息。擦除碼技術(shù)本身更多的是用于傳輸而不是存儲(chǔ)。
如何選擇多拷貝擦除碼技術(shù)
多拷貝和擦除碼技術(shù)在不同的應(yīng)用場(chǎng)景中有各自的優(yōu)勢(shì)。
(以多份與雙份為例,以data/效能4/1為例,以擦除代碼為例)
1.存儲(chǔ)利用率
將多個(gè)副本復(fù)制存儲(chǔ)在不同的地方,實(shí)現(xiàn)冗余備份。比如雙份利用率只有50%,冗余度很高,帶來(lái)巨大的額外存儲(chǔ)空間消耗,無(wú)形中增加了成本,但更安全,、讀寫(xiě)更快。
糾刪碼技術(shù)不需要寫(xiě)真實(shí)數(shù)據(jù)的完整拷貝。它主要通過(guò)糾刪碼算法對(duì)原始數(shù)據(jù)進(jìn)行編碼以獲得冗余,并將數(shù)據(jù)和冗余存儲(chǔ)在一起以達(dá)到容錯(cuò)的目的。基本思想是通過(guò)計(jì)算N個(gè)原始數(shù)據(jù)元素得到M個(gè)冗余元素(校驗(yàn)塊)。對(duì)于這N個(gè)M塊的元素,當(dāng)任何少于M塊的元素出現(xiàn)錯(cuò)誤(包括原始數(shù)據(jù)和冗余數(shù)據(jù))時(shí),可以通過(guò)相應(yīng)的重建算法恢復(fù)出原始的N塊數(shù)據(jù)。生成校驗(yàn)的過(guò)程稱(chēng)為編碼,恢復(fù)丟失數(shù)據(jù)塊的過(guò)程稱(chēng)為解碼。磁盤(pán)利用率為n/(n m)。與雙拷貝方法相比,它具有磁盤(pán)利用率高的優(yōu)點(diǎn)。
依附:容量與空間的對(duì)比
2.容錯(cuò)
雙拷貝易于理解,即保存一份備份一份,具有更好的容錯(cuò)性。雙拷貝可以在某些數(shù)據(jù)丟失后從另一個(gè)拷貝復(fù)制丟失的數(shù)據(jù),并恢復(fù)正常使用。
擦除碼技術(shù)的實(shí)質(zhì)是計(jì)算。如果數(shù)據(jù)丟失數(shù)據(jù)庫(kù)冗余度是什么,擦除碼技術(shù)所做的就是計(jì)算丟失的數(shù)據(jù),而計(jì)算需要一些已知的量來(lái)計(jì)算。當(dāng)有很多數(shù)據(jù)丟失時(shí),是無(wú)法計(jì)算的。容錯(cuò)和復(fù)制之間有一定的差距,
就實(shí)際情況而言,當(dāng)消除代碼設(shè)置為4/1,節(jié)點(diǎn)或數(shù)據(jù)塊失敗,和數(shù)據(jù)恢復(fù)需要讀3數(shù)據(jù)塊和1檢查,也就是說(shuō),如果這5個(gè)項(xiàng)目(41=5)傷害任何2數(shù)據(jù)塊,不能計(jì)算和檢索數(shù)據(jù),導(dǎo)致嚴(yán)重后果的信息損失和檢索。
3.可靠性比較
一個(gè)雙重副本有兩個(gè)數(shù)據(jù)副本,這可以允許任何數(shù)據(jù)塊被損壞。
只有當(dāng)擦除碼配置一個(gè)具有奇偶校驗(yàn)位的數(shù)據(jù)塊時(shí),它才能提供類(lèi)似于雙拷貝的可靠性。
4.數(shù)據(jù)恢復(fù)對(duì)性能和恢復(fù)效率的影響
在雙拷貝的情況下,如果一個(gè)節(jié)點(diǎn)或數(shù)據(jù)塊發(fā)生故障,將直接從另一個(gè)副本中讀寫(xiě)數(shù)據(jù)恢復(fù),并且恢復(fù)一次,這將影響一個(gè)節(jié)點(diǎn)的讀取性能。回收效率高。
當(dāng)擦除碼設(shè)置為4/1時(shí),一個(gè)節(jié)點(diǎn)或數(shù)據(jù)塊失效,數(shù)據(jù)恢復(fù)需要讀取三個(gè)數(shù)據(jù)塊和一次檢查。數(shù)據(jù)恢復(fù)是在操作后寫(xiě)一次,這影響了4個(gè)節(jié)點(diǎn)的讀取性能。回收效率低。
5.寫(xiě)的懲罰
在雙拷貝的情況下,一個(gè)節(jié)點(diǎn)的一次數(shù)據(jù)寫(xiě)入實(shí)際上需要兩個(gè)節(jié)點(diǎn)參與(寫(xiě)入兩次),寫(xiě)入懲罰為2。
當(dāng)擦除碼設(shè)置為4/1時(shí),實(shí)際需要至少兩個(gè)節(jié)點(diǎn)參與一次數(shù)據(jù)寫(xiě),包括讀兩次(讀數(shù)據(jù),讀驗(yàn)證)和寫(xiě)兩次(寫(xiě)數(shù)據(jù),寫(xiě)驗(yàn)證),寫(xiě)罰4。
6.CPU開(kāi)銷(xiāo)
-copy是一種基于數(shù)據(jù)的完整復(fù)制,幾乎沒(méi)有計(jì)算開(kāi)銷(xiāo),CPU開(kāi)銷(xiāo)也很低。
擦除代碼需要計(jì)算檢查值,因?yàn)樽x寫(xiě)有很高的計(jì)算開(kāi)銷(xiāo),需要額外的CPU資源開(kāi)銷(xiāo)。
7.如何選擇這兩種技術(shù)
復(fù)制技術(shù)可以更好的保證數(shù)據(jù)安全,提高讀寫(xiě)效率。一般來(lái)說(shuō)數(shù)據(jù)庫(kù)冗余度是什么,它適用于數(shù)據(jù)庫(kù)等關(guān)鍵業(yè)務(wù),這些業(yè)務(wù)對(duì)網(wǎng)絡(luò)的性能要求高,對(duì)數(shù)據(jù)錯(cuò)誤的容忍度低。
擦除碼可以提高存儲(chǔ)系統(tǒng)的利用率,降低成本。一般適用于其他非關(guān)鍵業(yè)務(wù),如視頻監(jiān)控等。某些數(shù)據(jù)塊的損壞不會(huì)影響信息的傳輸。
結(jié)論
挖掘的核心是存儲(chǔ),這可以節(jié)省資金。如果有一天出了什么差錯(cuò),你會(huì)失去你的妻子和你的軍隊(duì)。目前,星際聯(lián)盟復(fù)制策略在安全性上無(wú)疑是優(yōu)越的。雖然成本很高,但它是挖掘過(guò)程中數(shù)據(jù)安全的重要保證。備份冗余不是浪費(fèi),而是非常必要的。