三言兩語說CEPH

先上圖:

wKioL1P_JAnyiCM7AAG67-1urJU429.jpg

上面的圖是標準官方的,下面的是理解後整理的:

wKioL1QHCkXh_T6QAAEIiDuGM98223.jpg


    技術文檔的簡寫太多了,不是很通俗的一定要給出英文全稱,纔是負責的。對於拿着簡寫繞暈初學者的人,不好。先說RADOS吧:

    Reliable Autonomic Distributed Object Store,可靠、自治、分佈的對象存儲。可靠,自然是存儲必需有的品質;注意不是“自動”而是“自治”,就是說這個系統能夠進行自我管理;分佈的,即不是傳統集中的;對象存儲,適用於對象存取的存儲,而對象,在這裏指數據和數據屬性集的綜合體。對象包含ID、二進制文件、元數據。

wKioL1P_xzrzthWSAAAybF2VSdI073.png

wKioL1P_vd6CXmP2AABZLylflv8436.png

    OSD:基於對象存儲技術的設備就是對象存儲設備(Object Storage Device),每個對象存儲設備具有一定的智能,能夠自動管理其上的數據分佈。

    

客戶端與客戶端與RADOS交互

wKioL1P_ySvzjR4fAAD1NzHkINk900.jpg

客戶端向monitor查詢osd map, crush規則

客戶端根據osd map使用crush計算出目標osd

客戶直接向目標osds發起數據訪問.


ceph的架構做到了“無需查表,算算就好”,因爲它無元數據(metadata)服務器,無表操作。


  • OSD

(Object Storage Device),說俗一些就是:一塊磁盤(一些CPU、一些內存)。有一個daemon進程對它操作,進行數據存儲和維護,是磁盤的“經紀人”,與其它OSD的daemon、monitor、client通訊。


  • monitor

client是訪問OSD的客戶端,OSD是後臺資源。打個比方,client是住店的人,OSD是房間,monitor是賓館前臺,負責鑰匙的人。正式的說法叫“系統狀態檢測和維護”。

每個住店的人先要找前臺分配房間,拿鑰匙;每個client訪問OSD先訪問monitor,而monitor分配OSD是有一套算法的,這個算法叫做crush。


  • file

    用戶端對象,其實就是文件了。

  • object

    RADOS對象,因爲有最大size設置限制(通常是2MB或4MB),如果file太大,就會按照size參數進行切片,每片就是一個object。(如果file是一個人就慘了,(*^__^*) 嘻嘻……)

  • PG

    不是屁股,是Placement Group,位置組。是一個邏輯組織,與object是“一對多”的關係,一個PG裏面有很多object;一個PG會映射到n個OSD,這個n就表示對象存儲的副本份數,或者冗餘程度,一半是3份,就是3了。當PG的OSD少於n時,處在降級狀態,系統將自我修復或re-balancing.

  • cluster map

    全局系統狀態記錄數據結構。就是賓館的牀鋪分配圖。包含的信息:

    epoch,即序列號,單調遞增;

    OSD網絡地址;

    OSD狀態:up&in, up&out, down&in, down&out

    CRUSH算法配置參數: cluster hierarchy, placement rules.


如圖:

wKioL1QHDy6xHeLwAACXfmukTmA776.jpg


一個文件是怎樣被決策寫到哪些盤呢?

client計算文件的ID即oid, hash(oid)&mask -> pgid,得到pgid,pgid根據CRUSH算法得出n個OSD。




可能關注的技術點:

  1. cluster map的維護機制。

  2. CRUSH算法具體是怎樣的。

  3. OSD故障及擴容的系統快速恢復和響應。

(未完待續)






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