硬碟任性丟資料,但分布式儲存一定可靠嗎?

2022-06-09 02:21:09 字數 2775 閱讀 4188

本文由 網易雲

發布。常規情況下,我們一般使用多副本技術來提高儲存系統的可靠性,不論是結構化資料庫儲存(典型的如mysql)、文件型nosql資料庫儲存(mongodb)或者是常規的blob儲存系統(gfs、hadoop)等。

資料幾乎是企業的生命所在,如何較為正確地衡量集群資料的可靠性,如何進行系統設計使得集群資料達到更高的可靠性,這是本文要解答的疑問。

「在999塊磁碟3備份系統中,同時壞三塊盤情況下的資料丟失概率?」,這個跟儲存系統的設計息息相關。我們先考慮兩個極端設計下的情況

設計一:把999塊磁碟組層333塊磁碟對。

在這種設計情況下,只有選中其中乙個磁碟對才會發生資料丟失。這種設計中,丟失資料的概率為 333/c(999,3) = 5.025095326058336*e-07。

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

copyset:包含乙個資料的所有副本資料的裝置組合,比如乙份資料寫入1,2,3三塊盤,那麼就是乙個複製組。
9個磁碟的集群中,最小情況下的copyset的組合數為3,copysets = 、、,即乙份資料的寫入只能選擇其中乙個複製組,那麼只有 、或者 同時壞的情況下才會出現資料丟失。即最小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)
3.1 磁碟故障與泊松分布在正式估算概率之前還需要科普下乙個基礎的概率學分布:泊松分布。泊松分布主要描述在乙個系統中隨機事件發生的概率,譬如汽車站台的候客人數的概率,某個醫院1個小時內出生n個新生兒的概率等等,更形象的可參見 阮一峰的《泊松分布和指數分布:10分鐘教程》)。

如上為泊松分布的公式。等號的左邊,p 表示概率,n表示某種函式關係,t 表示時間,n 表示數量,λ 表示事件的頻率。

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

如上只是損壞n塊磁碟的概率統計,那麼怎麼利用這個資訊計算分布式系統中資料的可靠性(即資料丟失概率)的近似估算。

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

3.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]
3.2.2 分布式系統衡量年故障率以上我們假設在一年中,不對任何硬體故障做恢復措施,那麼t用一年代入即可算出此種系統狀態下的年故障率。但是在大規模儲存系統中,資料丟失情況下往往會啟動恢復程式,恢復完了之後理論上又是從初始狀態的隨機事件,加入這個因素之後計算可靠性會變得比較複雜。

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

即系統整體丟失資料的概率為:

pc = 1 - (1-pb(t))**(365*24/t)
了解 網易雲 :

網易雲官網:

新使用者大禮包:gift

網易雲社群:

分布式儲存

塊儲存,檔案儲存,物件儲存區別 分布式儲存的應用場景相對於其儲存介面,現在流行分為三種 物件儲存 也就是通常意義的鍵值儲存,其介面就是簡單的get put del和其他擴充套件,如七牛 又拍 swift s3 塊儲存 這種介面通常以qemu driver或者kernel module的方式存在,這種...

分布式儲存

普通儲存 das 直連式儲存。nas 連線式儲存。san 儲存網路。大檔案分布儲存 gfs google file system google檔案系統 hdfs hadoop distributed file system hadoop分布式檔案系統 小檔案分布儲存 adfs ali distrib...

分布式儲存技術

分布式儲存技術 分布式儲存概念 與目前常見的集中式儲存技術不同,分布式儲存技術並不是將資料儲存在某個或多個特定的節點上,而是通過網路使用企業中的每台機器上的磁碟空間,並將這些分散的儲存資源構成乙個虛擬的儲存裝置,資料分散的儲存在企業的各個角落。結構化資料的儲存及應用所謂結構化資料是一種使用者定義的資...