1. 程式人生 > >ceph分布式存儲實戰(3)——ceph內部組件

ceph分布式存儲實戰(3)——ceph內部組件

就是 易懂 用戶數 數據丟失 php 陣列 用戶 移植 服務

一、RADOS(Reliable Autonomic Distributed Object Storage)
1、rados的意思是
可靠、自動、分布式對象存儲(可靠的自主分布式對象存儲)
2、rados的作用
1、rados是ceph集群的基礎,是ceph存儲系統的核心,ceph中一切都是以對象的形式存儲,而rados就是負責存儲這些對象,無需考慮數據是啥類型
2、確保數據的一致性和可靠性
3、負責數執行數據的復制、故障檢測和恢復
4、負責數據在集群節點之間的遷移和再平衡
5、ceph所有優秀特性都是rados提供的,如:
分布式對象存儲、高可用性、高可靠性、沒有單點故障、自我修復、自我管理
6、rados就是cpeh集群中的大腦,負責決策、調度等工作
技術分享圖片

技術分享圖片



二、OSD(object storage daemon)
1、osd的意思是
對象存儲設備
2、osd的作用
1、負責存儲實際用戶數據(數據將會以對象的形式存儲在osd中)
2、負責響應客戶端讀操作請求

通常一個osd守護進程僅與ceph集群中的一個磁盤綁定
技術分享圖片

技術分享圖片

技術分享圖片

三、ceph monitor(MON)
1、mon的意識是
監控
2、mon的作用
1、通過一系列map跟蹤整個集群的健康狀態,監控整個集群的監控狀況
2、map是指這幾個組件的map:osd/mon/pg/crush,所有的集群節點都向mon節點報告狀態,並分享每一個狀態變化的信息

3、一個mon為每一個組件維護一個獨立的map,mon不存儲實際的數據,這是osd的工作

四、librados庫
1、作用
1、是一種用來簡化訪問rados的方法
2、支持php,ruby,python,java,c/c++
3、librados支持直接訪問rados
4、開發者能夠創建自己的接口來訪問ceph存儲集群

五、RBD
1、意思
叫做ceph塊設備,或者叫rados快設備
2、作用
1、對外提供塊存儲,可以被映射、格式化、向磁盤一樣被掛載到服務器
2、支持精簡制備和快照的特性

精簡置備(thin):
使用精簡置備格式。最初,精簡置備的磁盤只使用該磁盤最初所需要的數據存儲空間。如果以後精簡磁盤需要更多空間,則它可以增長到為其分配的最大容量。
簡單的說就是為該磁盤文件指定增長的最大空間,需要增長的時候檢查是否超過限額。

技術分享圖片


六、RGW
1、意思
叫做ceph對象網關,或者叫rados網關
2、作用
1、提供了一個兼容Amazon S3和OpenStack對象存儲API(Swift)的restful API接口
2、還支持多租戶和openstack的keystone身份驗證服務

技術分享圖片


七、MDS
1、意思
叫做ceph元數據服務器
2、作用
1、跟蹤文件層次結構並存儲只供CephFS使用的元數據
2、mds不直接給客戶端提供數據,因此可以避免系統中的一個單點故障
3、為ceph集群部署一個mds
在之前的部署中,已經部署好了一個ceph存儲集群,如需添加mds節點,在管理節點指向以下命令:
ceph-deploy mds create ceph-node2


八、CephFS
1、意思
叫做ceph文件系統
2、作用
1、提供了一個任意大小且兼容POSIX的分布式文件系統
2、依賴mds來跟蹤文件層次結構,即元數據

POSIX表示可移植操作系統接口(Portable Operating System Interface of UNIX,縮寫為 POSIX ),
POSIX標準定義了操作系統應該為應用程序提供的接口標準,是IEEE為要在各種UNIX操作系統上運行的軟件
而定義的一系列API標準的總稱,其正式稱呼為IEEE 1003,而國際標準名稱為ISO/IEC 9945。

關於posix更通俗易懂的解釋可以參考以下網友的博文:
https://www.cnblogs.com/weiweishuo/archive/2013/07/29/3222995.html

技術分享圖片


九、CRUSH算法
CRUSH全稱Controlled Replication Under Scalable Hashing,是一種數據分發算法,類似於哈希和一致性哈希。哈希的問題在於數據增長時不能動態加Bucket,
一致性哈希的問題在於加Bucket時數據遷移量比較大,其他數據分發算法依賴中心的Metadata服務器來存儲元數據效率較低,CRUSH則是通過計算、接受多維參數的
來解決動態數據分發的場景
1、過去的存儲機制
過去的存儲機制是,在存儲數據時,首先要保存一份元數據,這個元數據存儲的信息是數據存儲在哪個節點和磁盤陣列的位置等信息
每一次有新的數據存儲時,最先更新的是元數據的信息,之後才是實際的數據存儲

這樣的機制存在的缺點:
1、不適合超大容量級別的數據存儲,pb和zb級別的容量
2、存在單點故障,萬一丟失存儲的元數據,面臨的是丟失所有數據
3、總而言之,防止核心元數據丟失是非常重要的,元數據管理太復雜,因此成為存儲系統的瓶頸

2、ceph的存儲機制
cursh算法,稱:可擴展散列下的受控復制算法
ceph的數據分發機制就是采用這個算法,也是cpeh數據存儲的核心

優點:
1、crush算法準確的計算數據的寫入位置和從哪個位置讀取
2、按需計算元數據,而不是存儲元數據,消除了傳統的元數據存儲方法中的限制

crush工作機制:
1、元數據計算的負載是分布式的,僅在需要的時候執行(元數據計算的過程也叫做crush查找)
2、crush的查找是在ceph客戶端上執行,從而占用很少的ceph集群資源,性能更好

crush查找步驟
1、往ceph存儲集群發起讀或寫的請求時,首先聯系mon獲取集群map副本
2、mon向客戶端返回集群map信息,包含:集群狀態、配置等信息
3、使用對象名稱和池名稱或者池ID將數據轉換為對象
4、將對象和PG數量一起經過散列來生成其在ceph池中最終存放的那個pg
5、通過計算好的pg執行crush查找,計算出存儲或獲取數據的那個主OSD,計算完主OSD後得到OSD ID和輔OSD ID
6、客戶端直接聯系那個OSD來存儲或者讀取數據

crush是公平公正的
1、crush會均勻的在整個集群的osd上寫數據,
2、強制集群中的所有OSD都要參與其中,這提高了性能和可靠性,同等的利用
3、如果有的磁盤性能較好,如有的是SSD盤,有的是機械盤,那麽crush可以為每個osd分配權重
如基於機械盤的osd容量大,可以權重分配高一點,權重越高,crush將會寫入更多的數據


技術分享圖片

ceph分布式存儲實戰(3)——ceph內部組件