對於分布式儲存的若干看法

2021-09-23 07:04:33 字數 2856 閱讀 8837

q: 現在領域內對於分布式儲存的應用場景是否有比較明確的分類?比如冷熱,快慢,大檔案小檔案之類的?

分布式儲存的應用場景相對於其儲存介面,現在流行分為三種:

1.物件儲存: 也就是通常意義的鍵值儲存,其介面就是簡單的get,put,del和其他擴充套件,如七牛、又拍,swift,s3、

2.塊儲存: 這種介面通常以qemu driver或者kernel module的方式存在,這種介面需要實現linux的block device的介面或者qemu提供的block driver介面,如sheepdog,aws的ebs,青雲的雲硬碟和阿里雲的盤古系統,還有ceph的rbd(rbd是ceph面向塊儲存的介面)

3.檔案儲存: 通常意義是支援posix介面,它跟傳統的檔案系統如ext4是乙個型別的,但區別在於分布式儲存提供了並行化的能力,如ceph的 cephfs(cephfs是ceph面向檔案儲存的介面),但是有時候又會把gfs,hdfs這種非posix介面的類檔案儲存介面歸入此類。

按照這三種介面和其應用場景,很容易了解這三種型別的io特點,括號裡代表了它在非分布式情況下的對應:

1. 物件儲存(鍵值資料庫): 介面簡單,乙個物件我們可以看成乙個檔案,只能全寫全讀,通常以大檔案為主,要求足夠的io頻寬。

2. 塊儲存(硬碟): 它的io特點與傳統的硬碟是一致的,乙個硬碟應該是能面向通用需求的,即能應付大檔案讀寫,也能處理好小檔案讀寫。但是硬碟的特點是容量大,熱點明顯。因此塊儲存主要可以應付熱點問題。另外,塊儲存要求的延遲是最低的。

3. 檔案儲存(檔案系統): 支援檔案儲存的介面的系統設計跟傳統本地檔案系統如ext4這種的特點和難點是一致的,它比塊儲存具有更豐富的介面,需要考慮目錄、檔案屬性等支援,實現乙個支援並行化的檔案儲存應該是最困難的。但像hdfs、gfs這種自己定義標準的系統,可以通過根據實現來定義介面,會容易一點。

因此,這三種介面分別以非分布式情況下的鍵值資料庫、硬碟和檔案系統的io特點來對應即可。至於冷熱、快慢、大小檔案而言更接近於業務。但是因為儲存系統是通用化實現,通常來說,需要盡量滿足各種需求,而介面定義已經一定意義上就砍去了一些需求,如物件儲存會以冷儲存更多,大檔案為主。

q: 實現思路方面是否又有一些通用的分類法?

實現上主要有兩層區別:

1. 系統的分布式設計: 主從、還是全分布式或者是兼而有之,目前現在儲存系統因為一致性的要求,以主從為主。

2. 底層的單機儲存: 一種是依賴本地檔案系統的介面,如glusterfs,swift,sheepdog,ceph。一種是依賴塊介面的,目前只知道nutanix是使用這個的(最後一種是依賴鍵值介面的,目前應該只有ceph是支援(ceph支援多種單機儲存介面)。第一種依賴檔案系統是因為分布式儲存系統本身已經夠複雜,實現者很難從上層一直到底層儲存都去實現,而本地檔案系統已經是乙個通用化並且非常成熟的實現,因此分布式儲存系統絕大部分(上述提到的都應該是)都會直接依賴本地檔案系統。第二種介面目前只知道nutanix 是支援的(傳統的儲存廠商的儲存產品一般會使用這種方式),這種介面也就是比第一種去掉了檔案系統層,實現乙個簡單的物理塊管理即可。第三種它的主要原因是「儲存定義」和物件儲存的普及,希望硬碟來提供簡單的鍵值介面即可,如希捷的kinetic api(的 nvmkv(這種介面另一方面是快閃儲存器廠商非常喜愛的,因為快閃儲存器的物理特性使得它支援鍵值介面比快介面容易得多,目前ceph是支援這種介面,而希捷和華為最近推出了ip硬碟( /network_security_zone/2013/1024/2993465.shtml),聽說已經實現了swift上的原型。

(從這裡可以發現,分布式儲存系統是在傳統的單機介面上重新包裝了一層,然後實現三種類似的介面)

q: 另外,對於不同的實現方案,分布式儲存系統的效能是可以直接測試的,但理論可用性、資料可靠性的計算方式是不同的。uos cloud現在是ceph方案,你們是怎麼做這個計算的?

實際上這個計算是需要依賴於儲存系統本身的,ceph的優勢是提供了乙個叫crush演算法的實現,可以輕鬆根據需要來規劃資料的副本數和高可用性。參考ceph提供的模型定義( /reliability/readme.html)來規劃自己的。這是我的同事朱榮澤做的故障計算。這個計算只針對副本策略,並不適合使用ec(擦除碼)的情況。

硬碟發生故障的概率是符合泊松分布的。

fit = failures in time = 1/mttf ~= 1/mtbf = afr/(24*365)

事件概率 pn(λ,t) = (λt)n e-λt / n!

我們對丟失資料是不能容忍的,所以只計算丟失資料的概率,不計算丟失每個object的概率。

n代表osd的個數

r代表副本數

s代表scatter width,關係著recovery時間

我們忽略non-recoverable errors的概率

計算1年內任意r個osd發生相關故障概率的方法是

1年內osd故障的概率。

在recovery時(r-1)個osd發生故障的概率。

以上概率相乘。假設結果是pr

因為任意r個osd不一定屬於ceph的copy sets,則ceph的丟失copy sets的概率是:

m = copy sets number

在n個osd中,任意r個osd的組合數是 c(r,n)

丟失copy sets的概率是 pr * m / c(r, n)。

最終公式是:

p = func(n, r, s, afr)

分布式儲存

塊儲存,檔案儲存,物件儲存區別 分布式儲存的應用場景相對於其儲存介面,現在流行分為三種 物件儲存 也就是通常意義的鍵值儲存,其介面就是簡單的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...

分布式儲存技術

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