1. Ceph 整体设计
-
根底存储系统 RADOS(Reliable, Autonomic,Distributed Object Store,即牢靠的、自动化的、分布式的对象存储)
这就是一个残缺的对象存储系统,所有存储在 Ceph 零碎中的用户数据事实上最终都是由这一层来存储的。而 Ceph 的高牢靠、高可扩大、高性能、高自动化等等个性实质上也是由这一层所提供的。因而,了解 RADOS 是了解 Ceph 的根底与要害。物理上,RADOS 由大量的存储设备节点组层,每个节点领有本人的硬件资源(CPU、内存、硬盘、网络),并运行着操作系统和文件系统。
-
根底库 librados
这层的性能是对 RADOS 进行形象和封装,并向下层提供 API,以便间接基于 RADOS(而不是整个 Ceph)进行利用开发。特地要留神的是,RADOS 是一个对象存储系统,因而,librados 实现的 API 也只是针对对象存储性能的。RADOS 采纳 C ++ 开发,所提供的原生 librados API 包含 C 和 C ++ 两种。物理上,librados 和基于其上开发的利用位于同一台机器,因此也被称为本地 API。利用调用本机上的 librados API,再由后者通过 socket 与 RADOS 集群中的节点通信并实现各种操作。
-
高层利用接口
这层包含了三个局部:RADOS GW(RADOS Gateway)、RBD(Reliable Block Device)和 Ceph FS(Ceph File System),其作用是在 librados 库的根底上提供抽象层次更高、更便于利用或客户端应用的下层接口。其中,RADOS GW 是一个提供与 Amazon S3 和 Swift 兼容的 RESTful API 的 gateway,以供相应的对象存储利用开发应用。RADOS GW 提供的 API 抽象层次更高,但性能则不如 librados 弱小。因而,开发者应针对本人的需要抉择应用。RBD 则提供了一个规范的块设施接口,罕用于在虚拟化的场景下为虚拟机创立 volume。目前,Red Hat 曾经将 RBD 驱动集成在 KVM/QEMU 中,以进步虚拟机拜访性能。Ceph FS 是一个 POSIX 兼容的分布式文件系统 (POSIX 示意可移植操作系统接口, 定义了操作系统与应用程序交互的接口标准, linux 和 windows 都要实现根本的 posix 规范, 程序在源代码级别就能实现可移植性)。因为还处在开发状态,因此 Ceph 官网并不举荐将其用于生产环境中。
-
应用层
这层是不同场景下对于 Ceph 各个利用接口的各种利用形式,例如基于 librados 间接开发的对象存储利用,基于 RADOS GW 开发的对象存储利用,基于 RBD 实现的云硬盘等等。在上文的介绍中,有一个中央可能容易引起困惑:RADOS 本身既然曾经是一个对象存储系统,并且也能够提供 librados API,为何还要再独自开发一个 RADOS GW?
了解这个问题,事实上有助于了解 RADOS 的实质,因而有必要在此加以分析。粗看起来,librados 和 RADOS GW 的区别在于,librados 提供的是本地 API,而 RADOS GW 提供的则是 RESTfulAPI,二者的编程模型和理论性能不同。而更进一步说,则和这两个不同抽象层次的指标利用场景差别无关。换言之,尽管 RADOS 和 S3、Swift 同属分布式对象存储系统,但 RADOS 提供的性能更为根底和底层、操作接口也更为丰盛。这一点能够通过比照看出。
因为 Swift 和 S3 反对的 API 性能近似,这里以 Swift 举例说明。Swift 提供的 API 性能次要包含:
- 用户治理操作:用户认证、获取账户信息、列出容器列表等;
- 容器治理操作:创立 / 删除容器、读取容器信息、列出容器内对象列表等;
- 对象治理操作:对象的写入、读取、复制、更新、删除、拜访许可设置、元数据读取或更新等。
2. 逻辑架构
Ceph Client 是 Ceph 文件系统的用户。
Ceph Metadata Daemon 提供了元数据服务器。
Ceph Object Storage Daemon 提供了理论存储(对数据和元数据两者)。
Ceph Monitor 提供了集群治理。
3. Ceph 专业术语
- OSD: Ceph 的对象存储设备,OSD 守护过程的性能是存储数据,解决数据的复制、复原、回填、再平衡,并通过查看其余 OSD 守护过程的心跳来向 Ceph Monitors 提供一些监控信息。个别状况下一块硬盘对应一个 OSD,由 OSD 来对硬盘存储进行治理,一个磁盘分区也能够成为一个 OSD。
- Monitors: Ceph 监视器,Monitor 保护着展现集群状态的各种图表,包含监视器图、OSD 图、归置组(PG)图、和 CRUSH 图。Ceph 保留着产生在 Monitors、OSD 和 PG 上的每一次状态变更的历史信息(称为 epoch)。
- PG:Ceph 归置组,因为 Object 的数量很多,所以 Ceph 引入了 PG 的概念用于治理 Object,每个 Object 最初都会通过 CRUSH 计算映射到某个 PG 中,一个 PG 能够蕴含多个 Object。
- MDSs: Ceph 元数据服务器(MDS),为 Ceph 文件系统存储元数据。元数据服务器使得 POSIX 文件系统的用户们,能够在不对 Ceph 存储集群造成累赘的前提下,执行诸如 ls、find 等根本命令。
- CephFS: Ceph 文件系统,CephFS 提供了一个任意大小且兼容 POSIX 的分布式文件系统。CephFS 依赖 MDS 来跟踪文件层次结构,即元数据。
- RADOS: Reliable Autonomic Distributed Object Store,示意牢靠、主动、分布式的对象存储。Ceph 中的一切都是以对象模式存储,RADOS 就负责存储这些对象,RADOS 层确保数据一致性和可靠性。对于数据一致性,它执行数据复制、故障检测和复原,还包含数据在集群节点间的迁徙和再均衡。
- Librados:librados 库是一种用来简化拜访 RADOS 的办法,目前反对 PHP、Python、Ruby、Java、Python、C 和 C ++ 语言。librados 是 RBD 和 RGW 的根底,并为 CephFS 提供 POSIX 接口。
- RBD:Ceph 的块设施,它对外提供块存储,能够被映射、格式化进而像其余磁盘一样挂载到服务器。
- RGW/RADOSGW:Ceph 对象网关,它提供了一个兼容 S3 和 Swift 的 restful API 接口。
-
- *
本文由 mirson 创作分享,如需进一步交换,请加 QQ 群:19310171 或拜访 www.softart.cn
- *