Ceph對象存儲(一)

一、Ceph RADOS組成

1、OSDs,負責存儲所有的Objects數據;

2、Monitor,保存集羣中所有OSDs狀態信息,以及負責管理Cluster Map,其中Cluster Map是整個RADOS系統的關鍵數據結構,管理集羣中的所有成員、關係、屬性等信息以及數據的分發。多Monitor時,使用paxos算法來選擇leader,避免單點故障;

二、RADOS 系統邏輯結構

三、RADOS設計思想

基於計算的對象尋址機制,流程圖如下:

尋址流程解讀:(映射、映射、再映射......)

(1)FIle---->object映射:將用戶態的file,映射成RADOS能夠處理的object,實質以統一大小進行切塊,並分配id,便於管理以及方便對多個object並行處理;

(2)Object--->PG映射:利用靜態哈希函數得到objectID的僞隨機值,再“位與”mask上使得每個object獲取屬於自己的PG;

(3)PG--->OSD映射:將pg映射到數據的shij實際存儲單元OSD,RADOS利用CRUSH算法,由pgid得到一組n個OSD;再由OSD daemon執行映射到本地的object在本地系統中存儲、訪問、雲數據維護等操作,

特別注意:該次映射功能性特別強;直接受到cluster map以及rule的影響,只有在cluster map和存儲策略均不發生改變時,PG和OSD映射關係才固定的;

計算PG的ID示例:

Client輸入pool ID和對象ID(如  pool=‘livepool’,object-id=‘join’)

CRUSH獲取對象IDbibi並對其hash

CRUSH計算OSD個數hash取模獲得PG的ID(如0 * 58)

CRUSH獲取已命名pool的ID(如livepool=4)

CRUSH預先考慮到pool ID相同的PG ID(如4.0 * 58)

數據操作流程之寫入流程:

數據操作流程之讀流程:

四、CRUSH

(1)一致性hash

(2)CRUSH核心:PG and Crushmap

POOL概述:

存儲對象的邏輯分區:所有權和訪問對象

                                     對象副本的數目

                                     pg的數目

                                     crush rule set的使用

pg、pool、osd關係圖

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章