一 Ceph簡介 Red Hat Ceph是一個分散式的數據對象存儲,系統設計旨在性能、可靠性和可擴展性上能夠提供優秀的存儲服務。分散式對象存儲是存儲的未來,因為它們適應非結構化數據,並且客戶端可以同時使用當前及傳統的對象介面進行數據存取。例如: 本地語言綁定介面(C/C++, Java, Pyth ...
一 Ceph簡介
Red Hat Ceph是一個分散式的數據對象存儲,系統設計旨在性能、可靠性和可擴展性上能夠提供優秀的存儲服務。分散式對象存儲是存儲的未來,因為它們適應非結構化數據,並且客戶端可以同時使用當前及傳統的對象介面進行數據存取。例如:- 本地語言綁定介面(C/C++, Java, Python)
- RESTful 介面(S3/Swift)
- 塊設備介面
- 文件系統介面
二 Ceph優勢及特點
2.1 Ceph優勢
Ceph區別於其他文件系統(如glusterfs、swift等)主要具有以下優勢:- CRUSH演算法
- 高可用
- 高擴展性
- 特性豐富
- 統一存儲
- 無任何單點故障
- 數據多份冗餘
- 存儲容量可擴展
- 自動容錯及故障自愈
三 體系架構
體系架構示意圖(來源於官方):
3.1 RADOS
Ceph的底層核心為RADOS(Reliable, Autonomic Distributed Object Store),RADOS本身也是分散式存儲系統,CEPH所有的存儲功能都是基於RADOS實現。Ceph的上層應用調用本機上的librados API,再由後者通過socket與RADOS集群中的其他節點通信並完成各種操作。 Ceph的本質是一個對象存儲。RADOS由兩個組件組成:OSD和Monitor。 OSD主要提供存儲資源,每一個disk、SSD、RAID group或者一個分區都可以成為一個OSD,而每個OSD還將負責向該對象的複雜節點分發和恢復; Monitor維護Ceph集群並監控Ceph集群的全局狀態,提供一致性的決策。 RADOS分發策略依賴於CRUSH(Controlled Replication Under Scalable Hashing)演算法(基於可擴展哈希演算法的可控複製)。3.2 RADOS GW和RBD
RADOS GateWay、RBD其作用是在librados庫的基礎上提供抽象層次更高、更便於應用或客戶端使用的上層介面。其中,RADOS GW是一個提供與Amazon S3和Swift相容的RESTful API的gateway,以供相應的對象存儲應用開發使用。 RBD則提供了一個標準的塊設備介面,常用於在虛擬化的場景下為虛擬機創建volume。目前,Red Hat已經將RBD驅動集成於KVM/QEMU中,以提高虛擬機訪問性能。這兩種方式目前在雲計算中應用的比較多。3.3 CEPHFS
CEPHFS則提供了POSIX介面,用戶可直接通過客戶端掛載使用。它是內核態的程式,所以無需調用用戶空間的librados庫。它通過內核中的net模塊來與Rados進行交互。四 Ceph角色及原理
4.1 角色及作用

- Ceph OSDs:Ceph OSD守護進程( Ceph OSD )的功能是存儲數據,處理數據的複製、恢復、回填、再均衡,並通過檢查其他OSD守護進程的心跳來向Ceph Monitors提供一些監控信息。當Ceph存儲集群設定為有2個副本時,至少需要2個OSD守護進程,集群才能達到active+clean狀態(Ceph預設有3個副本)。
- Monitors:Ceph Monitor維護著展示集群狀態的各種圖表,包括監視器圖、OSD圖、歸置組(PG)圖、和CRUSH 圖。Ceph 保存著發生在Monitors、OSD和PG上的每一次狀態變更的歷史信息(稱為epoch)。
- MDSs: Ceph元數據伺服器(MDS)為Ceph文件系統存儲元數據(也就是說,Ceph塊設備和Ceph 對象存儲不使用MDS)。元數據伺服器使得POSIX文件系統的客戶端,可以在不對Ceph存儲集群造成負擔的前提下,執行諸如ls、find等基本命令。
4.2 存儲通信機制

