- Ceph是一个对象(object)式存储系统,它把每一个待管理的数据流(例如一个文件)切分为一到多个固定大小的对象数据,并以其为原子单元完成数据存取。
- 对象数据的底层存储服务是由多个主机 (host)组成的存储集群,该集群也被称之为RADOS(Reliable Automatic Distributed Object Store)存储集群,即可靠、自动化、分布式对象存储系统。
- librados是RADOS存储集群的API,它支持C、C++、Java、Python、Ruby和PHP等编程语言。
结构
RadosGW、RBD 和 CephFS 都是 RADOS 存储服务的客户端,它们把 RADOS 的存储服务接口(librados)分别从不同的角度做了进一步抽象,因而各自适用于不同的应用场景
核心组件
Ceph OSD
全称是 Object Storage Device,主要功能包括存储数据,处理数据的复制、恢复、回补、平衡数据分布,并将一些相关数据提供给 Ceph Monitor
Ceph Monitor
Ceph 的监控器,主要功能是维护整个集群健康状态,提供一致性的决策,包含了 Monitor map,即集群 map,monitor本身不存储任何集群数据
Managers
Ceph Manager 守护进程(ceph-mgr)负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率,当前性能指标和系统负载。
Ceph Manager 守护进程还基于 python 的插件来管理和公开 Ceph 集群信息,包括基于 Web 的 Ceph Manager Dashboard 和 REST API。高可用性通常至少需要两个管理器。
Ceph MDS
全称是 Ceph Metadata Server,主要保存的是 Ceph 的文件系统(File System)的元数据(metadata),不是必须安装,当需要使用 CephFS 的时候才会使用。
基础组件
rados
自身是一个完整的分布式对象存储系统,它具有可靠、智能、分布式等特性,Ceph 的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的,用户数据的存储最终也都是通过这一层来进行存储的,RADOS 可以说就是 Ceph 的核心,主要由两部分构成,分别是 OSD 和 Monitor
Librados
它是一个库,它允许应用程序通过访问该与RADOS系统进行交互,支持多种编程语言,比如C、C++,Python等
RADOSGW
RADOSGW 是一套基于当前流行的RESTFUL协议的网关,并且兼容 S3 和 Swif,只有当使用对象存储时才会用到
RBD
RBD 通过 Linux 内核客户端和 QEMU/KVM 驱动来提供一个分布式的块设备,可以理解为像 linux 的 LVM 一样,从 Ceph 的集群中划分出一块磁盘,用户可以直接在上面做文件系统和挂载目录
CephFs
通过Linux内核客户端和 fuse 来提供一个兼容 POSIX 的文件系统,当一些 Linux 系统不支持 mount命令或者需要更高级的操作时,会用到ceph-fuse
参考
https://docs.ceph.com/en/latest/
https://www.cnblogs.com/weifeng1463/p/13746170.html