一、認識分布式存儲
分布式存儲系統,就是通過網絡將數據分散存儲在多台獨立的設備上二、分布式存儲的特性
可擴展性
1)節點擴展後,舊數據會自動遷移到新節點上,實現負載均衡,避免單點過熱的情況出現
2)水平擴展只需要將新節點和原有集群連接到同一網絡,整個過程不會對集群業務造成影響
3)當節點添加到集群,集群系統的整體容量和性能也會隨之線性擴展,此後新節點的資源就會被管理平台接管,被用於分配或者回收
低成本
高性能
易用
分布式存儲系統需要能提供易用的對外接口,另外也需要完整的監控,運維工具,並能夠與其他系統集成
易管理
分布式存儲系統的挑戰主要在於數據,狀態信息的持久化,要求在自動遷移,自動容錯,並發讀寫的過程中保證數據的一致性。
分布式存儲系統涉及的技術主要在兩個領域: 分布式系統以及數據庫三、Ceph簡介優勢及架構
簡介:
Ceph是一個統一的分布式存儲系統,涉及初衷是提供較好的性能,可靠性和可擴展性
優勢:
高擴展性: 使用普通x86服務器,支持10~1000台服務器,支持TB到EB級別的擴展
高可靠性: 沒有單點故障,多數據副本,自動管理,自動修復
高性能: 數據分布均衡
可用於對象存儲,塊設備存儲和文件系統存儲
基礎存儲系統
rados:基礎存儲系統RADOS(Reliable Autonomic,Distributed Object Store,即可靠的,自動化的,分布式的對象存儲)。所有存儲在
Ceph系統中的用戶數據事實上最終都是由這一層來存儲的。Ceph的高可靠,高擴展性,高性能,高自動化等等特性本質上都是由這一層完成的
基礎庫LIBEADOS
librados:這一層的功能是對RADOS進行抽象和封裝,並向上層提供API,以便於基於基礎DADOS(而不是整個Ceph)進行應用開發。特別注意的是是
RAOCS是一個對象存儲,因此,librados實現的API也是針對對象存儲功能的。
高層應用接口
radosgw:對象網關接口(對象存儲)
rdb: 塊存儲
cephfs: 文件系統存儲
其作用是在librados庫的基礎上提供抽象層次更高,更便於應用或客戶端使用的上層接口。
四、Ceph的基本組件

如上圖,Ceph主要有三個基本進程
OSD
用於集群中所有數據及對象的存儲。處理數據的複製,恢復,回填,在均衡。並向其他osd守護進程發送心跳,然後想Mon發送一些信息。
當Ceph存儲集群設定有兩個副本時(一共存兩份),則至少需要兩個OSD守護集成即兩個OSD節點,集群才能達到actice+clean狀態
MDS(可選)
為Ceph文件系統提供元數據計算,緩存與同步(也就是說Ceph塊設備和Ceph對象存儲不需要MDS)。在Ceph中,元數據也是存儲在osd節點中的。
mds類似於元數據的代理服務器。MDS進程並不是必須的,只有需要使用Cephfs時候,才需要配置MDS節點。
Monitor
監控整個集群的狀態,維護集群的cluster MAP二進制表,保證集群數據的一致性。ClusterMAP描述了對象塊存儲的物理位置,以及一個將設備
聚合到物理位置的桶列表
Manager(ceph-mgr)
用於收集ceph集群狀態,運行指標,比如存儲利用率,當前性能指標,和系統負載。對外提供ceph dashboard(ceph ui)和restful api。
Manage開啟高可用時,至少2個Ceph結構包含兩部分
ceph client: 訪問ceph底層服務或組件,對外提供各種接口。對象存儲接口,塊存儲接口,文件級存儲接口
ceph node: ceph底層服務提供端,也就是ceph存儲集群五、Ceph的工作原理
無論使用哪種存儲方式(對象,塊,文件),存儲的數據都會被切割成對象(object),Object Size大小可以有管理員進行調整,通常為2M或4M。每個對象存儲都會有一個唯一的OID,由ino和ono生產,ino即是文件的File ID,用於在全局唯一標識的一個文件,而ono則是分片的編號。如一個文件FILE ID 為A,它被切割成兩個對象,一個對象編號為0,一個對象編號為1,那麼這兩個文件的oid則為A0和A1。OID的好處則是可以唯一標識每個不通的對象,並且存儲了對象與文件的關係。由於ceph的所有數據都虛擬成立整齊劃一的對象,所以在讀寫時效率都會比較高。
但是對象並不會直接存儲進OSD中,因為對象的size很小,在一個大規模的集群中可能有幾百到幾千萬個對象。這麼多對象光是遍歷尋址,速度都是很緩慢的;並且如果將對象直接通過某種固定映射的哈希算法映射到osd上,當這個osd損壞時,對象無法自動遷移到其他osd上面(因為映射函數不允許),為了解決這些問題,ceph引入了歸置組的概念,即PG
PG是一個邏輯概念,我們linux系統中可以直接看到對象,但是無法直接看到PG。他在數據尋址時類似於數據庫中的索引;每個對象都會固定映射進一個PG中,所以當我們要尋找一個對象時,只需要先找到這個對象所屬的PG,然後再遍歷這個PG就可以了,無需遍歷所有的對象。而且在數據遷移時,也是以PG作為基本單位進行遷移,ceph不會直接操作對象。
對象是如何映射到PG的? 還記得OID么? 首先使用靜態hash函數對OID做hash取出特徵碼,用特徵碼與PG的數量取模,得到的序號則是PGID。由於這種設計方式,PG的數量多寡直接決定了數據分布的特性,所以合理設置PG數量可以很好的提升Ceph集群的性能並使數據均勻分布。
最後PG會根據管理員設置的副本數量進行複製,然後通過crush算法存儲到不同的OSD節點上(其實就是把PG中的所有對象存儲到節點上),第一個OSD接地那即為主節點,其餘均為從節點。Ceph名詞介紹
ceph核心組件及概念介紹
- Monitor監控整個集群的狀態,維護集群的clusterMAP二進制表,保證集群數據的一致性
- OSDOSD全稱 Object Storage Device,也就是負責響應客戶端請求返回數據的進程。一個ceph集群一般都有很多個OSD節點
- MDSMDS全稱Ceph Metadata Server,是CephFS服務依賴的元數據服務
- ObjectCeph最底層的存儲單元是Obect對象,每個Object包含了元數據和原始數據
- PGPG全稱 Placement Grouops,是一個邏輯的概念,一個PG包含多個OSD。引入PG這一層其實是為了更好地分配數據和定位數據
- RADOSRADOS全稱Reliable Autonomic Distributed Object Store,是Ceph集群的精華,用戶實現數據分配、Failover等集群操作
- LibraydiosLibrados是Rados的提供庫,因為RADOS是協議很難直接訪問,因此在上層的RBD,RGW,CephFS都是通過librados訪問的。
- CRUSHCRUSH是ceph使用的數據分布算法,類似一致性哈希,讓數據分配到預期的地方
- RDBRDB全稱RADOS block device,是ceph對外提供的塊設備服務。
- RGWRGW全稱RADOS gateway,是ceph對外提供的對象存儲服務,接口與S3和Swift兼容
- CephFSCephFS全稱Ceph File System,是Ceph對外提供的文件系統服務
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/217392.html
微信掃一掃
支付寶掃一掃