認識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,剩下兩...