二 Ceph儲存工作原理及實現

2022-06-24 07:36:10 字數 1895 閱讀 6443

認識ceph

ceph是乙個能提供檔案儲存,快儲存和物件儲存的分布式儲存系統。它提供了乙個可無限伸縮的ceph儲存集群

ceph構架

中文官網:

ceph架構

中文圖示

rados:ceph的高可靠,高可拓展,高效能,高自動化都是由這一層來提供的, 使用者資料的儲存最終也都是通過這一層來進行儲存的。

可以說rados就是ceph底層原生的資料引擎, 但實際應用時卻不直接使用它,而是分為如下4種方式來使用

librados是乙個庫, 它允許應用程式通過訪問該庫來與rados系統進行互動,支援多種程式語言。如python,c,c++等.  簡單來說,就是給開發人員使用的介面。

ceph fs通過linux核心客戶端和fuse來提供檔案系統。(檔案儲存)

rbd通過linux核心客戶端和qemu/kvm驅動來提供乙個分布式的塊裝置。(塊儲存)

radosgw是一套基於當前流行的restful協議的閘道器,並且相容s3和swift。(物件儲存)

ceph儲存資料方法(io演算法)

1,file使用者需要讀寫的檔案。file->object對映

a.ino(file的元資料,file的唯一id)

b.ono(file切分產生的某個object序號,預設以4m分乙個快大小)

c.oid(object id:ino+ono)

2,object是rados需要的物件,ceph指定乙個靜態hash函式計算oid的值,將oid對映成乙個近似均勻分布的偽隨機值,然後和mask按位相於,得到pgid.object->pg對映

a.hash(oid)& mask->pgid

b.mask=pg總數m(m為2的整數冪)-1

3.pg(placement group)用途是對object的儲存進行組織和位置對映(類似於redis cluter裡面的slot概念)乙個pg裡面會有很多object。採用crush演算法將pgid代入其中,然後得到一組osd。pg-》osd對映

a.crush

拓展名詞

restful: restful是一種架構風格,提供了一組設計原則和約束條件,http就屬於這種風格的典型應用。rest最大的幾個特點為:資源、統一介面、uri和無狀態。

統一介面:  資料的元操作,即crud(create, read, update和delete)操作,分別對應於http方法

* get(select):從伺服器取出資源(一項或多項)。

* post(create):在伺服器新建乙個資源。

* put(update):在伺服器更新資源(客戶端提供完整資源資料)。

* patch(update):在伺服器更新資源(客戶端提供需要修改的資源資料)。

* delete(delete):從伺服器刪除資源。

* uri(統一資源定位符):  每個uri都對應乙個特定的資源。要獲取這個資源,訪問它的uri就可以。最典型的uri即url

* 無狀態: 乙個資源的定位與其它資源無關,不受其它資源的影響。

和硬碟做模擬, 儲存段(bucket)就相當於目錄,物件就相當於檔案

硬碟路徑類似`/root/file1.txt`

s3的uri類似`s3://bucket_name/object_name`

swift: 最初是由rackspace公司開發的高可用分布式物件儲存服務,並於2023年貢獻給openstack開源社群作為其最初的核心子專案之一.

Java TreeMap工作原理及實現

hashmap不保證資料有序,linkedhashmap保證資料可以保持插入順序,而如果我們希望map可以保持key的大小順序的時候,我們就需要利用treemap了。treemaptmap newtreemap tmap.put 1,語文 tmap.put 3,英語 tmap.put 2,數學 tm...

Ceph 細節原理及讀寫流程

目錄osd daemon 狀態 預設每2s匯報自己的狀態給monitor 同時監控組內其他osd狀態 up 可以提供io down 不能提供io in 有資料 out 沒有資料 如在 副本數為 3 的配置中,乙個pg中 包含 三個osd daemon,也就是三塊硬碟,其中乙個是master,剩下兩個...

Ceph 細節原理及讀寫流程

目錄 osd daemon 狀態 預設每2s匯報自己的狀態給monitor 同時監控組內其他osd狀態 up 可以提供io down 不能提供io in 有資料 out 沒有資料 如在 副本數為 3 的配置中,乙個pg中 包含 三個osd daemon,也就是三塊硬碟,其中乙個是master,剩下兩...