分級副本儲存 一種更具效益成本的資料容錯策略

2021-09-11 19:18:38 字數 1686 閱讀 6264

眾所周知,在儲存系統中,為了保障資料的高可用性,我們會通過儲存多個副本來防止因為機器物理故障導致資料丟失的現象。在乙個集群(資料中心)內,我們會設定多個副本。甚至我們做的時候做的更完善一些,還做到異地資料的同步,這可能是完全集群的資料同步了。當然企業將資料做到異地多活本身初衷沒用問題,但是成本開銷一定還是有的,這意味著副本資料其實又進行了double。這裡面的成本效益其實是不低的。本文筆者結合最近在看的一篇關於分級副本的理論,來聊聊這個話題。

在闡述本文主題前,我們先來**乙個關鍵問題:傳統三副本模式是否從根本上解決資料丟失問題?有人會說了,我將資料做了3份冗餘,應該會是很安全了吧。其實問題並沒有那麼簡單,我們繼續往下看。

資料的丟失起因在這裡我們姑且把它歸為節點的故障,宕機。那麼節點的故障又可以分為以下兩類:

那麼針對相關節點故障的極大不確定性,傳統固定模式的3副本顯然也就不是絕對穩妥安全的了。

另外一方面,當副本設定的足夠多的情況下,後面多餘的副本有時只是為了提高冗餘性,其實它很少被訪問到(因為系統每次總會返回前面的副本資料給客戶端),除非前面的副本因為故障導致資料需要恢復時。因此我們說,單獨以線性擴充套件方式提高副本數,看起來並不是一種理想的兼具成本性和提高資料容錯性的方案。這裡面還有乙個重要的控制因素:資料分布策略。

這裡我們要引入乙個叫copyset,它指的是一組儲存了所有副本資料的儲存節點集合。我們將系統節點在邏輯上進行集合劃分,然後選擇集合進行副本放置。如果說,我們能保證這些copyset集合節點只有極小概率情況同時會掛,那麼對於其上的資料丟失率也會變得很低。所以copyset的劃分就顯得很關鍵了,我們可對copyset做一些約束標籤,比如保證每個copyset裡的節點由不同的電源所控制。這樣當data center想要關掉一部分設施時,資料還是能夠得到保障。

下面是一組copyset的集合劃分樣例,

當然,我們也可以將副本放置在多個不同的copyset裡,這裡我們保證每個copyset的劃分都是不重複的。

copyset的選擇儲存要比純random模式的replication在資料丟失率上會提公升很多,但它還不是最完美的。比如它還是沒有徹底解決異地資料的災備問題,這種模式下,我們還是得進行full-cluster的replication。

在最近的一篇*****,介紹了一種更具成本效益的geo-replication,來解決資料異地雙活的問題。相比較於傳統整個集群進行同步備份的模式(以來防止data center級別的故障情況),分級儲存是從副本級別進行處理的,比方說我們還是有3個副本,我們設定副本1,副本2位primary replica,它位於主資料中心內的集群上,而第三個副本我們把它放到remoter site。這樣就構成了乙個tier的關係。

因為第三個副本只有在2個primary replica同時壞掉時,才會被訪問到,所以平時的訪問率是比較低的。而且由於第三個副本的特殊性,我們可以採用寫效能較好,讀效能一般的介質來儲存這樣的資料。而且因為副本是across site/data center的,所以一定程度上做到了異地的保障。所以相比較於full cluster geo-replication方案,tier replciation更具成本效益。

[1].

[2].

沉沒成本 沉沒或游泳是學習Linux的一種方法

沉沒成本 那年是2005年 我剛剛高中,獨自生活。我的姐姐和她的丈夫來探望,在他們出城的乙個早晨,我的姐夫問我是否可以使用我的計算機。我知道他的計算機很好,所以我不在乎。然後,他問我大部分時間我使用我的計算機。基本用途 魔獸世界和firefox。那天晚些時候,我正要下班回家。我的姐夫笑了,告訴我他需...

區塊鏈是一種用一種不可變的形式儲存數字資訊

鏈客,有問必答!從本質上來說,區塊鏈只是一種用不可變的形式來儲存數字資訊的方法。從企業的 it 戰略層面上來說,區塊鏈在概念上與關聯式資料庫很類似。大約三十多年前,關聯式資料庫取代了大型機 又叫非關係型資料庫 的主導地位。區塊鏈中的 區塊 用密碼鏈結在一起,這樣就不可能再通過修改以前的資料來 做假賬...

區塊鏈是一種用一種不可變的形式儲存數字資訊

鏈客,有問必答!從本質上來說,區塊鏈只是一種用不可變的形式來儲存數字資訊的方法。從企業的 it 戰略層面上來說,區塊鏈在概念上與關聯式資料庫很類似。大約三十多年前,關聯式資料庫取代了大型機 又叫非關係型資料庫 的主導地位。區塊鏈中的 區塊 用密碼鏈結在一起,這樣就不可能再通過修改以前的資料來 做假賬...