副本集群可靠性

2021-07-26 18:01:23 字數 2049 閱讀 5287

副本模式下,資料損壞指所有副本在同一時間同時損壞的場景。資料損壞的原因只考慮磁碟故障。機器故障時,如果與磁碟相關則已考慮,如果是閘道器,cpu 等其他原因,往往資料並沒有真正丟失,所以在計算可靠性時不考慮機器故障的場景。

單塊磁碟損壞後,其上的所有的 oid 都不可用,對於單塊磁碟,如果其在一年中發生故障,認為其故障的概率在所有時間點都是相等的,為均勻分布。

雙副本模式資料丟失場景:oid 的兩個副本,分布在兩塊不同的磁碟上,兩塊磁碟都發生故障,且發生故障的時間差在 t 以內。

兩副本都發生故障的概率為 p2

,x 表示第乙個副本發生故障的時間點(天為單位),y 表示第二個副本發生故障的時間點,(x,y)分布在正方形(0-365, 0-365)內,其中滿足兩塊盤故障時間差在 t 以內也就是|y

−x|≤

t 在正方形內圍成面積的比例 。

其比例為:2t

365−t2

3652

, 所以兩副本的資料損壞概率為:(2

t365−t

23652)

p2≈2

tp2365

三副本模式資料丟失場景:oid 的三個副本,分布在不同的磁碟上,三塊磁碟都發生故障,且發生故障的時間差在 t 以內。

三副本都故障的概率為 p3

,x,y,z 分別表示3個副本發生故障的時間點,資料損壞要求三副本故障時間差都在 t 以內。也就是 ⎧⎩

⎨⎪⎪|

z−x|

≤t,|

z−y|

≤t,|

y−x|

≤t,與

立方體(

0−365,0−

365,0−

365)圍成

的體積佔

立方體體

積的比例

。 其比例為:≈3

t23652 ≈

3t2p

33652

因為使用者並不關心其申請的單個 oid 的可靠性,而是認為其所申請的整個 vdi,如果丟失了任何一塊資料,則認為自己的資料丟失了。對於三副本場景,並不是特定的3塊盤損壞,才會丟失資料,而是對於該使用者有資料分布的任意不同zone 的3塊磁碟,如果在單盤修復時間t內同時損壞,則就會造成資料損壞。所以使用者 vdi 可靠性與使用者資料分布的盤數相關。其計算公式與以下的集群資料可靠性相同。

對於 kdfs 系統,並不只是需要保證單個 oid 或者某個使用者的 vdi 資料可靠性,而是需要保證整個集群資料的可靠性。其與整個集群的盤數,zone劃分有關,對於三副本模式,只要任意不同的 3 個zone在單盤修復時間t內損壞,則認為集群資料丟失。集群規模越大,則其資料可靠性越低。

考慮劃分zone 的數目對於可靠性的影響:集群總磁碟資料為 a,均勻劃分為 z 個zone。則取不同的 3 個zone,每個zone 壞一塊盤的組合有:a3

6(1−

3z+2

z2) ,因為對於函式1−

3x+2

x2,取值範圍 x>0, 在 x=4/3 時取得最小值,且在 x>4/3 時,函式單調遞增。劃分的 zone 數目越多,則任意壞 3 塊盤,可能造成資料損壞的概率越大。所以從集群資料可靠性考慮,並不支援劃分過多的 zone 數目。

在這裡取任意不同 zone 的3塊盤損壞來計算集群資料的損壞概率。實際上在單盤恢復時間t內可能同時損壞了 4 塊盤或者更多,導致 3 塊盤的場景被重複計算。但是每多壞一塊盤,發生的概率就需要乘以 p 以及 t/365,其帶來的影響可以忽略。所以只考慮同時壞 3 塊盤的場景。

集群總磁碟資料為 a,均勻劃分為 z 個zone。磁碟年故障率為 p,單盤修復時間為 t 時。

集群資料損壞計算公式:a3

6(1−

3z+2

z2)3

t2p3

3652

。 在磁碟故障率p不變的情況下,不同的集群要達到 9個9或者10個9的資料可靠性,需要調節集群規模a,zone 劃分數目 z 以及限定單盤修復時間t。

可靠性測試學習 可靠性測試理解

最近測試可靠性,參考了業界的一些思維,有些想法和建議 先說說軟體可靠性的定義,根據我測試的體會和思考,我覺得軟體的可靠性就是軟體系統發生故障後自動恢復或者人工干預使其能恢復到正常狀態的能力 業界的測試有些把容錯測試和可靠性測試搞混淆,其實兩者不一樣,容錯測試是通過模擬一些可能發生的已知的異常操作而檢...

mongodb 集群搭建 分片 副本集

mkdir p home mongodb conf mkdir p home mongodb mongos log mkdir p home mongodb config data mkdir p home mongodb config log mkdir p home mongodb shard1...

mongodb安裝副本集集群步驟

2.引數設定如下 oplogsize 163.在所有節點新增副本集啟動 replset cms data0 mongodb bin mongod fork replset cms config data0 mongodb mongod.conf下面是在其中一台伺服器執行命令 config rs.in...