1. Ceph簡介
Ceph是一種開源的分散式儲存系統,它旨在提供高效能、高可靠性和可伸縮性的儲存解決方案。
Ceph作為一個軟體定義儲存(SDS)系統可以在通用硬體上執行,並支援多種儲存型別,包括物件儲存、塊儲存和檔案系統。
Ceph從2006年開源至今,一直是主流的分散式儲存系統,已在OpenStack等系統中廣泛應用,足以證明其功能的強大和穩定。
2. Ceph架構
下面是Ceph官網的架構圖:
Ceph組成架構
Ceph底層是RADOS(Reliable Autonomic Distributed Object Store)。正如其名字,RADOS本身就是一個完整的物件儲存系統。Ceph的高可靠、高可擴充套件、高效能、高自動化的特性都是由這一層所提供的,在Ceph中,所有資料都分解成物件(Object 一般為4MB大小),以物件的形式儲存。
在RADOS之上,Ceph提供了塊裝置介面、物件儲存介面、檔案系統儲存介面、多種語音的庫,四種方式來與RADOS系統進行互動。
3. RADOS組成和基礎概念
3.1 Monitor元件
為了使 Ceph 叢集正常執行,Ceph 客戶端和 Ceph OSD 必須具有有關群集拓撲的最新資訊。Ceph Monitor負責組織管理整個叢集,並把叢集狀態以5個Map的形式記錄下來,這些Map被統稱為Cluster Map。同時資料分發策略均也是由Mon負責。
MON Map:記錄叢集資訊和monitor元件資訊。包含叢集id、monitor ip地址、監聽埠。
OSD Map:記錄叢集中OSD元件資訊。包括OSD數量、OSD主機資訊、OSD狀態、權重、池(pool)列表、副本數列表、PG放置資訊。
PG Map:記錄叢集中放置組資訊。這包括PG ID、Up Set、Acting Set、PG的狀態、每個池的資料使用統計資訊。
CRUSH Map:記錄叢集中的儲存裝置及他們的拓撲結構(故障域層級結構)以及資料儲存的層次結構規則。
MDS Map:記錄用於儲存後設資料的池、後設資料伺服器列表。
3.2 OSD元件
Ceph OSD是真正管理儲存資料的守護程序,它負責儲存資料,處理資料複製、恢復、重新平衡。每個儲存節點(主機)執行一個或多個OSD守護程序,通常一個磁碟儲存裝置對應一個OSD守護程序。
Ceph OSD守護程式還會確定相鄰OSD是否存在,並將其報告給Ceph Monitor。這有助於使Ceph Monitor 成為輕量級程序。
3.3 MGR元件
Ceph Manager承載了許多輔助功能,如監控和外掛,減輕mon的負擔。
3.4 為什麼說RADOS無中心節點的分散式儲存
在Ceph中資料存在哪個OSD節點上是計算出來的(CRUSH演算法),而非在後設資料節點(中心節點)查詢出來的。
4. Ceph讀寫操作過程
Ceph的去中心化設計意味著所有元件都可以之間交流,而沒有集中的瓶頸。
Ceph的OSD Daemons之間是互相感知的,每個Ceph OSD守護程式都知道叢集中的其他Ceph OSD Daemon。這使得Ceph OSD守護程式可以直接與其他Ceph OSD Daemon互動,完成資料的複製(備份)。
Ceph客戶端可以直接與Ceph OSD守護程序進行讀寫互動,而無需從中心介面二次排程。對於任何讀寫操作請求,Client端從Ceph Monitor獲取Cluster Map之後,Client將直接與OSD進行I/O操作的互動,而不再需要Ceph Monitor干預,這使得資料讀寫過程更為迅速。
Ceph讀寫過程
以Object的形式儲存
OSD資料複製