Ceph介紹

dachenyi發表於2024-08-09

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資料複製