二、Ceph架构设计
1、Ceph整体设计
基础存储系统RADOS
Reliable, Autonomic,Distributed Object Store ,即可靠的、自动化的、分布式的对象存储这就是一个完整的对象存储系统,所有存储在Ceph 系统中的用户数据事实上最终都是由这一层来存储的。而Ceph 的高可靠、高可扩展、高性能、高自动化等等特性本质上也是由这一层所提供的。
基础库librado
这层的功能是对 RADOS 进行抽象和封装,并向上层提供 API ,以便直接基于 RADOS (而不是整个Ceph)进行应用开发。特别要注意的是, RADOS 是一个对象存储系统,因此, librados 实现的 API也只是针对对象存储功能的。RADOS 采用 C++ 开发,所提供的原生 librados API 包括 C 和 C++ 两种。
高层应用接口
这层包括了三个部分: RADOS GW ( RADOS Gateway )、 RBD ( Reliable Block Device )和 CephFS( Ceph File System ),其作用是在 librados 库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。其中,RADOS GW 是一个提供与 Amazon S3 和 Swift 兼容的 RESTful API 的gateway,以供相应的对象存储应用开发使用。 RADOS GW 提供的 API 抽象层次更高,但功能则不如librados 强大。
应用层
这层是不同场景下对于 Ceph 各个应用接口的各种应用方式,例如基于 librados 直接开发的对象存储应用,基于RADOS GW 开发的对象存储应用,基于 RBD 实现的云硬盘等等。 librados 和 RADOSGW的区别在于,librados 提供的是本地 API ,而 RADOS GW 提供的则是 RESTfulAPI 。
由于 Swift 和 S3 支持的 API 功能近似,这里以 Swift 举例说明。 Swift 提供的 API 功能主要包括:
- 用户管理操作:用户认证、获取账户信息、列出容器列表等;
- 容器管理操作:创建/删除容器、读取容器信息、列出容器内对象列表等;
- 对象管理操作:对象的写入、读取、复制、更新、删除、访问许可设置、元数据读取或更新等。
2、逻辑架构
3、Ceph专业术语
- Monitors: Ceph监视器,Monitor维护着展示集群状态的各种图表,包括监视器图、OSD图、归置组(PG)图、和CRUSH图。
- PG:Ceph归置组,每个Object最后都会通过CRUSH计算映射到某个PG中,一个PG可以包含多个Object。
- OSD: Ceph的对象存储设备,OSD守护进程的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitors 提供一些监控信息。
- MDS: Ceph元数据服务器(MDS),为Ceph文件系统存储元数据。
- CephFS: Ceph文件系统,CephFS提供了一个任意大小且兼容POSIX的分布式文件系统。
- RADOS: Reliable Autonomic Distributed Object Store,表示可靠、自动、分布式的对象存储。Ceph中的一切都是以对象形式存储,RADOS就负责存储这些对象,RADOS层确保数据一致性和可靠性。
- Librados : librados 库是一种用来简化访问 RADOS 的方法,目前支持 PHP 、 Python 、 Ruby、 Java、 C 和 C++ 语言。
- RBD : Ceph 的块设备,它对外提供块存储,可以被映射、格式化进而像其他磁盘一样挂载到服务器
- RGW/RADOSGW : Ceph 对象网关,它提供了一个兼容 S3 和 Swift 的 restful API 接口。