Ceph架构如下:

Ceph Monitor基础架构与模块详解_文件系统


Ceph monitor(监视器,简称MON): Ceph monitor 通过保存了一份集群状态映射来维护整个集群的健康状态。它分别为每个组件维护映射信息,包括OSD map、MON map、PG map(会在后面的章节中讨论)和CRUSH map。所有集群节点都向MON节点汇报状态信息,并分毫它们状态中的任何变化。Ceph monitor 不存储数据;存储数据是OSD的任务。


Ceph 对象存储设备(OSD): 只要应用程序向Ceph集群发出写操作,数据就会被以对象存储在OSD中。这是Ceph集群中唯一能存储用户数据的组件,同时用户也可以发送读命令来读取数据。通常,一个OSD守护进程会被捆绑到集群中的一块磁盘上。所以,在通常情况下,Ceph集群中的物理磁盘的总数,与在磁盘上运行的存储用户数据的OSD守护进程的数量是相同的。


Ceph 元数据服务器(MDS): MDS 只为CephFS文件系统跟踪文件的层次结构和存储元数据。Ceph块设备和RADOS(见下)并不需要元数据,因此也不需要Ceph MDS守护进程。MDS不直接提供数据给客户端,从而消除了系统中的故障单点。


RADOS(Reliable Autonomic Distributed Object Store): RADOS是Ceph存储集群的基础。在Ceph中,所有数据都以对象形式存储,并且无论是哪种数据类型,RADOS对象存储都将负责保存这些对象。RADOS层可以确保数据始终保持一致。要做到这一点,须执行数据复制、故障检测和恢复,以及数据迁移和在所有集群节点实现再平衡。


librados: librados库为PHP、Ruby、Java、Python、C和C++这些编程语言提供了方便地访问RADOS接口的方式。同时它还为诸如RBD、RGW和CephFS这些组件提供了原生的接口。Librados还支持直接访问RADOS来节省HTTP开销。


RADOS块设备(RBD): 众所周知,RBD是Ceph块设备,提供持久块存储,它是自动精简配置并可调整大小的,而且将数据分散存储在多个OSD上。RBD服务已经被封装成了基于librados的一个原生接口。


RADOS网关接口(RGW): RGW提供对象存储服务。它使用librgw(Rados Gateway Library)和librados,允许应用程序与Ceph对象存储建立连接。RGW提供了与Amazon S3和OpenStack Swift兼容的RESTful API。


CephFS: Ceph文件系统提供了一个使用Ceph存储集群存储用户数据的与POSIX兼容的文件系统。和RBD、RGW一样,CephFS服务也基于librados封装了原生接口。