第 1 章 Ceph 架构
红帽 Ceph 存储集群是分布式数据对象存储,其设计能够提供卓越的性能、可靠性和可扩展性。分布式对象存储是存储的未来,因为它们包含非结构化的数据,并且客户端可以同时使用现代对象接口和传统接口。
例如:
- 采用多种语言的 API(C/C++、Java、Python)
- RESTful 接口(S3/Swift)
- 块设备接口
- 文件系统接口
红帽 Ceph 存储集群的强大功能可以转变您组织的 IT 基础架构和管理大量数据的能力,特别是对于 RHEL OSP 等云计算平台而言。红帽 Ceph 存储集群提供 卓越的 可扩展性 - 数十个客户端访问 PB 级的数据,甚至更多。
每个 Ceph 部署的核心都是红帽 Ceph 存储集群。它由三种类型的守护进程组成:
- Ceph OSD 守护进程: Ceph OSD 代表 Ceph 客户端存储数据。此外,Ceph OSD 利用 Ceph 节点的 CPU、内存和网络来执行数据复制、纠删代码、重新平衡、恢复、监控和报告功能。
- Ceph 监控器: Ceph 监控器维护红帽 Ceph 存储集群映射的主副本和红帽 Ceph 存储群集的当前状态。监控器需要高度一致性,并使用 Paxos 来确保对红帽 Ceph 存储集群状态达成一致。
- Ceph 管理器: Ceph 管理器维护有关放置组、处理元数据和主机元数据的详细信息,以取代 Ceph monitor - 大规模显著提高性能。Ceph 管理器处理许多只读 Ceph CLI 查询的执行,如放置组统计信息。Ceph 管理器还提供 RESTful 监控 API。
Ceph 客户端接口从红帽 Ceph 存储集群读取数据并写入数据。客户端需要以下数据与 Red Hat Ceph Storage 集群通信:
-
Ceph 配置文件或集群名称(通常为
ceph
)和 monitor 地址 - 池名称
- 用户名和 secret 密钥的路径。
Ceph 客户端维护对象 ID 以及存储对象的池名称。但是,它们不需要维护对象到 OSD 索引或与集中式对象索引通信来查找对象位置。为存储和检索数据,Ceph 客户端访问 Ceph monitor 并检索红帽 Ceph 存储集群映射的最新副本。然后,Ceph 客户端向 librados
提供对象名称和池名称,后者计算对象的放置组和 Primary OSD,以使用 CRUSH(可扩展哈希下的受控复制)算法存储和检索数据。Ceph 客户端连接到可以执行读写操作的 Primary OSD。客户端和 OSD 之间没有中间服务器、代理或总线。
当 OSD 存储数据时,它将从 Ceph 客户端接收数据 - 无论客户端是 Ceph 块设备、Ceph 对象网关、Ceph 文件系统或其他接口,并且将数据存储为对象。
对象 ID 在整个集群中唯一,而不仅仅是 OSD 的存储介质。
Ceph OSD 将所有数据存储为扁平命名空间中的对象。没有目录层次结构。对象具有集群范围的唯一标识符、二进制数据和元数据,由一组名称/值对组成。
Ceph 客户端定义客户端数据格式的语义。例如,Ceph 块设备将块设备镜像映射到集群中存储的一系列对象。
由唯一 ID、数据和名称/值对等元数据组成的对象可以同时表示结构化和非结构化数据,以及传统和领先数据存储接口。