分布式存儲系統可靠性如何估算?

常規情況下,我們一般使用多副本技術來提高存儲系統的可靠性,無論是結構化數據庫存儲 (如典型的 mysql)、文檔型 Nosql 數據庫存儲 (mongodb ) 或者是常規的 blob 存儲系統 (GFS、Hadoop) 等,無不如此。

因為數據幾乎可以稱得上是企業生命力的核心,保障數據存儲系統的可靠性對于任何企業來說都不是一件小事。

那么,如何較為準確地去衡量集群數據的可靠性?如何進行系統設計使得集群數據達到更高的可靠性?本文將試著去解答這些問題。

數據丟失與 copyset(復制組)

“在由 999 塊磁盤組成的 3 副本存儲系統中,同時壞三塊盤的情況下數據丟失的概率是多大? ”,這個跟存儲系統的設計息息相關,我們先考慮兩個極端設計下的情況。

設計一:把 999 塊磁盤組成 333 塊磁盤對。

在這種設計下,只有選中其中一個磁盤對才會發生數據丟失。這種設計中,丟失數據的概率為 333/C(999,3) = 5.025095326058336*e-07。

設計二:數據隨機打散到 999 塊盤中。

極端情況下,隨機一塊盤上的邏輯數據的副本數據打散在所有集群中的 998 塊盤中。這種設計下,丟失數據的概率為 C(999,3)/C(999,3)=1,也就是必然存在。

通過這兩種極端的例子我們可以看到,數據的丟失概率跟數據的打散程度息息相關。為了方便后續閱讀,這里我們引入一個新的概念 copyset (復制組)。

CopySet:包含一個數據的所有副本數據的設備組合,比如一份數據寫入 1,2,3 三塊盤,那么 {1,2,3} 就是一個復制組。

9 個磁盤的集群中,最小情況下的 copyset 的組合數為 3,copysets = {1,2,3}、{4,5,6}、{7,8,9},即一份數據的寫入只能選擇其中一個復制組,那么只有 {1,2,3}、{4,5,6} 或者 {7,8,9} 同時壞的情況下才會出現數據丟失。即最小 copyset 數量為 N/R。

系統中最大的 copyset 的數目為 C(N,R) ,其中 R 為副本數,N 為磁盤的數量。在完全隨機選擇節點寫入副本數據的情況下,系統中的 copyset 數目會達到最大值 C(N,R)。即任意選擇 R 個磁盤都會發生一部分數據的三個副本都在這 R 個盤上的情況。

磁盤數量 N,副本為 R 的存儲系統中,copyset 數量 S, N/R < S < C(N, R)

磁盤故障與存儲系統可靠性估算

1. 磁盤故障與柏松分布

在正式估算相關概率之前還需要科普一個基礎的概率學分布:柏松分布。柏松分布主要描述在一個系統中隨機事件發生的概率,譬如描述汽車站臺候客人數為某個值的概率,某個醫院 1 小時內出生 N 個新生兒的概率等等,對泊松分布做的更為形象的介紹可參閱阮一峰的《泊松分布和指數分布: 10 分鐘教程》。

![Uploading 分布式存儲1_993514.png . . .]

如上為泊松分布的公式。其中,P 表示概率,N 表示某種函數關系,t 表示時間,n 表示數量,λ 表示事件的頻率。

舉個例子:1000 塊磁盤在 1 年內出現 10 塊故障的概率為 P (N(365) = 10) [注:t 的平均單位為天]。λ 為 1000 塊磁盤 1 天內發生故障磁盤的數量,按照 google 的統計,年故障率在 8%,那么 λ = 1000*8%/365 。

如上只是損壞 N 塊磁盤概率的統計,那么怎么利用這個公式計算分布式系統中數據可靠性 (即數據丟失概率) 的近似值呢?

2. 分布式存儲系統中丟失率的估算

2.1 T 時間內的故障率

對于分布式存儲系統中如何進行年故障率的估算,我們先假定一種情況:T 為 1 年的情況下,系統存滿數據,壞盤不處理,這種情況下統計一下數據的年故障率。

這里我們先定義一些值

N: 磁盤數量
T:統計時間
K:壞盤數量
S:系統中 copyset 數量 (復制組的個數)
R:備份數量

如何計算 T(1年)時間內數據丟失的概率,從概率統計角度來說就是把 T (1 年) 時間內所有可能出現數據丟失的事件全部考慮進去。包含 N 個磁盤 R 副本冗余的系統中,在 T 時間內可能出現數據丟失的事件,即壞盤大于等于 R 的事件,即 R,R+1,R+2,… N ( 即為 K∈[R,N] 區間所有的事件 )。這些隨機事件發生時,什么情況下會造成數據丟失?沒錯,就是命中復制組的情況下。

K 個損壞情況下 (隨機選擇 K 個盤情況下) 命中復制組的概率為:

p = X/C(N,K) 其中 X 為隨機選擇 K 個磁盤過程中命中復制組的組合數

那么系統出現 K 個磁盤損壞造成數據丟失的概率為:

Pa(T,K) = p * P(N(T)=K)

最后系統中 T 時間內出現數據丟失的概率為所有可能出現數據丟失的事件的概率總和。

Pb(T) = Σ Pa(T,K) ; K∈[R,N]

2.2 分布式系統衡量年故障率

以上我們假設在一年中,不對任何硬件故障做恢復措施,那么 t 用一年代入即可算出此種系統狀態下的年故障率。但是在大規模存儲系統中,數據丟失情況下往往會啟動恢復程序,恢復完了之后理論上又算是從初始狀態的隨機事件,加入這個因素之后計算可靠性會變得比較復雜。

理論上大規模存儲系統中壞盤、恢復是極其復雜的連續事件,這里我們把這個概率模型簡化為不同個單位時間 T 內的離散事件來進行統計計算。只要兩個 T 之間連續事件發生的概率極小,并且 T 時間內絕大部份壞盤情況能夠恢復,那么下個時間 T 就是重新從新的狀態開始,則這種估算能夠保證近似正確性。T 的單位定義為小時,那么 1 年可以劃分為 365*24/T 個時間段,那么系統的年故障率可以理解為 100% 減去所有單位 T 時間內都不發生故障的概率。

分布式存儲2.jpg

即系統整體丟失數據的概率為:Pc = 1 - (1-Pb(T))*(36524/T)

網易云對象存儲服務

網易云對象存儲服務 NOS(Netease Object Storage)是高性能、高可用、高可靠的云端存儲服務。NOS 支持標準 RESTful API 接口,并提供豐富的數據在線處理服務,一站式解決互聯網時代非結構化數據管理難題。

其中,網易云采取多重備份機制,為用戶文件提供多重備份保障,在任何一臺服務器或硬盤故障時,將立即進行數據恢復,確保數據安全無隱患。歡迎廣大用戶試用和體驗。

最后,如想對本文內容(即分布式存儲系統可靠性估算)作進一步學習和探究的,可參閱作者的另一篇文章:https://work-jlsun.github.io/2017/02/18/storage-durablity-2.html

參考文獻:

Google’s Disk Failure Experience
柏松分布
泊松分布和指數分布:10 分鐘教程
概率論,二項分布和 Poisson 分布
磁盤故障與存儲系統的年失效率估算

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容