一、组件
1. Ceph Monitor (MON)
- 功能: Ceph Monitor 负责集群状态的监控和管理。它们存储集群的元数据,包括集群地图(monitor map、OSD map、placement group (PG) map 和 CRUSH map)。它们还负责管理集群中的认证和权限信息(CephX)。
- 重要性: MON 是集群的核心组件,因为它们保证了集群的一致性和高可用性。MON 通常以奇数数量部署,以确保在发生故障时能够进行投票并达成共识。
- 部署要求: 推荐至少部署三个 MON 节点,以防止单点故障和保证集群的高可用性。
2. Ceph OSD Daemon (OSD)
- 功能: OSD(Object Storage Daemon)是存储数据的核心组件。每个 OSD 负责存储对象数据、处理复制、恢复、回填、重新平衡和数据检查等任务。OSD 还定期向 MON 报告其状态,以帮助监控集群健康状况。
- 重要性: OSD 的数量直接决定了集群的存储容量和性能。通常,一个 OSD 对应一个物理或逻辑磁盘。
- 部署要求: 需要根据存储需求部署足够数量的 OSD 节点。推荐至少部署三个 OSD 节点,以便在发生节点故障时仍能保持数据的可用性。
3. Ceph Metadata Server (MDS)
- 功能: MDS 主要用于 Ceph 文件系统(CephFS)。它管理文件系统的元数据,例如目录结构、文件权限和命名空间。MDS 并不直接存储文件数据,数据仍然由 OSD 负责存储。
- 重要性: MDS 对于 CephFS 的性能和可扩展性至关重要,特别是在处理大量小文件或复杂的目录结构时。MDS 允许多个客户端并行访问文件系统,而不会产生瓶颈。
- 部署要求: 在使用 CephFS 时至少需要一个 MDS,多个 MDS 可以实现高可用性和负载均衡。
4. Ceph Manager (MGR)
- 功能: Ceph Manager 组件负责收集和维护集群的运行状态信息,并提供集群的监控、统计和告警功能。MGR 还托管一系列模块化插件,用于扩展集群的功能,例如 dashboard、prometheus 集成、iSCSI 网关等。
- 重要性: MGR 是 MON 的辅助组件,为集群提供额外的监控和管理功能。它们通常以双节点冗余部署,确保高可用性。
- 部署要求: 通常至少部署两个 MGR 节点,以确保在一个节点故障时仍能提供服务。
5. Ceph RADOS Gateway (RGW)
- 功能: RGW 是 Ceph 的对象存储接口,实现了与 Amazon S3 和 OpenStack Swift 兼容的 RESTful API。它允许用户通过 HTTP/HTTPS 请求访问 Ceph 集群中的对象数据。
- 重要性: RGW 使 Ceph 成为一个完整的对象存储解决方案,支持大规模的对象数据存储和分发。
- 部署要求: 根据工作负载和访问需求,RGW 可以横向扩展部署,以支持更大的吞吐量和更高的可用性。
6. Ceph RADOS Block Device (RBD)
- 功能: RBD 提供基于 Ceph 的块存储服务,可以将 Ceph 集群作为虚拟硬盘使用,特别适用于云平台(如 OpenStack)的虚拟机存储和容器化应用的持久化存储。
- 重要性: RBD 是 Ceph 在块存储领域的核心功能之一,支持快照、克隆和精简配置等功能。
- 部署要求: RBD 并不需要独立的组件,直接利用现有的 MON 和 OSD 就可以提供服务。
7. CephFS
- 功能: CephFS 是 Ceph 提供的 POSIX 兼容的分布式文件系统,支持高并发的文件访问和共享。CephFS 使用 MDS 来管理元数据,并使用 OSD 来存储文件数据。
- 重要性: CephFS 为需要共享文件存储的应用提供了高性能和高扩展性的解决方案,特别适合 HPC(高性能计算)和大数据分析场景。
- 部署要求: 需要至少一个 MDS 和足够的 OSD 来提供 CephFS 服务。
8. Ceph Dashboard
- 功能: Dashboard 是 Ceph 集群的 Web 管理界面,提供集群状态、性能监控、配置管理和操作执行等功能。
- 重要性: Dashboard 提供了可视化的管理和监控界面,使集群的管理和运维更加直观和简便。
- 部署要求: Dashboard 作为 MGR 的一个模块,需要在启用了 MGR 的节点上部署。
二、概念
1. CRUSH (Controlled Replication Under Scalable Hashing)
- 功能: CRUSH 是 Ceph 用于数据分布的算法,它决定了如何将数据对象映射到 OSD 上。CRUSH 根据集群拓扑、设备权重和故障域来做出决策,确保数据的高可用性和负载均衡。
- 重要性: CRUSH 允许 Ceph 在没有集中元数据服务器的情况下进行大规模扩展,并能够在设备添加或移除时动态调整数据分布。
- 配置: CRUSH 映射是可配置的,用户可以定义规则(ruleset)来控制数据的副本如何在 OSD 上分布。
2. PG (Placement Group)
- 功能: PG 是 Ceph 中的一个逻辑概念,代表一组对象的集合。Ceph 将数据对象首先映射到 PG,然后再将 PG 映射到具体的 OSD。
- 重要性: PG 是 Ceph 数据分布的基本单位,通过 PG 的划分,Ceph 可以实现高效的负载均衡、数据恢复和复制。
- 配置: PG 的数量(通常由 pg_num 参数指定)对集群性能和管理有直接影响,建议在集群规划时仔细设置。
3. Replication and Erasure Coding
- 功能: Ceph 支持两种主要的数据保护方式:复制(Replication)和纠删码(Erasure Coding)。复制通过在多个 OSD 上存储数据的多个副本来确保数据安全,而纠删码则通过将数据分片和校验信息分布在多个 OSD 上来节省存储空间。
- 重要性: 复制更适合对性能要求较高的应用,而纠删码则更适合对存储效率要求较高的场景。
- 配置: 用户可以在创建池时指定是使用复制还是纠删码,并设定复制副本的数量或纠删码的参数。
4. Pools
- 功能: Pool 是 Ceph 中用于存储对象的逻辑容器。它决定了对象存储的副本数量、PG 的数量、数据保护策略(复制或纠删码)等。Pool 还可以指定使用 SSD 或 HDD 作为存储介质。
- 重要性: Pool 是 Ceph 数据管理的基础单元,通过不同的 Pool 可以实现数据的隔离、不同的存储策略和性能优化。
- 配置: 创建 Pool 时需要设定 pg_num 和 pgp_num 等参数,并可以根据需求分配不同的 CRUSH 规则。
5. OSD Map
- 功能: OSD Map 是 MON 管理的映射表,记录了集群中所有 OSD 的状态(例如在线、离线或出错)、位置和配置。OSD Map 对集群的正常运行至关重要。
- 重要性: OSD Map 用于确定数据的存储位置,并在集群拓扑变化(如添加或移除 OSD)时保持数据的一致性。
- 更新: 每当 OSD 状态发生变化时,MON 会生成一个新的 OSD Map 并分发给集群中的其他组件。
6. MON Map
- 功能: MON Map 记录了 Ceph 集群中所有 MON 的信息,包括它们的 IP 地址、端口、状态等。MON Map 确保 MON 之间的协作,并在需要时选举新的 leader。
- 重要性: MON Map 对集群的稳定性至关重要,特别是在 MON 故障时,它决定了新的 MON 集群的组成。
- 更新: MON Map 通常由管理员手动更新,或者在 MON 失效后由集群自动调整。
7. PG Map
- 功能: PG Map 记录了每个 PG 的状态、所属的 OSD 和复制状态。PG Map 对于监控集群健康状况和数据分布非常重要。
- 重要性: PG Map 用于跟踪每个 PG 的健康状态,确保所有数据对象都被正确复制并分布在集群中。
- 更新: PG Map 在集群中动态更新,反映每个 PG 的实时状态。
8. CephX
- 功能: CephX 是 Ceph 内置的认证机制,确保集群中的每个客户端和守护进程都经过身份验证并且只有合法的客户端才能访问集群资源。
- 重要性: CephX 为 Ceph 集群提供了安全层,防止未经授权的访问和潜在的攻击。
- 配置: CephX 默认启用,管理员可以通过配置文件调整 CephX 的认证策略和权限管理。
9. RADOS (Reliable Autonomic Distributed Object Store)
- 功能: RADOS 是 Ceph 的底层存储引擎,负责存储和管理所有的数据对象。RADOS 提供数据复制、负载均衡和自动恢复等功能。
- 重要性: RADOS 是 Ceph 的核心,所有的高层服务(如 CephFS、RBD、RGW)都依赖于 RADOS 提供的分布式存储功能。
- 特点: RADOS 通过 CRUSH 算法实现数据分布和管理,支持高可用性和横向扩展。
10. Snapshots
- 功能: Ceph 支持对 RBD、CephFS 和 RGW 对象进行快照操作。快照是某一时刻数据的只读副本,用于数据保护和备份。
- 重要性: 快照允许用户在不影响正常操作的情况下保存数据的某个状态,并在需要时进行数据恢复。
- 配置: 用户可以通过 CLI 或 API 创建和管理快照,快照的创建和删除操作非常快速。
11. Backfill and Recovery
- 功能: 当 OSD 故障或新 OSD 加入集群时,Ceph 会自动触发数据回填(Backfill)和恢复(Recovery)过程,确保数据的副本数量满足设定要求并且数据均匀分布在集群中。
- 重要性: 回填和恢复机制确保了数据的高可用性和集群的平衡,即使在设备故障或拓扑变化时也能保持数据的完整性。
- 配置: 用户可以通过调节回填和恢复的速度来控制集群性能与数据安全之间的平衡。
12. Scrubbing
- 功能: Scrubbing 是 Ceph 定期检查数据一致性的过程,分为普通 Scrubbing 和深度 Scrubbing。普通 Scrubbing 检查 PG 元数据的一致性,深度 Scrubbing 则逐字节检查对象数据。
- 重要性: Scrubbing 能够发现和修复数据损坏或不一致的问题,确保数据的完整性。
- 配置: Scrubbing 是自动进行的,管理员可以调整 Scrubbing 的频率和深度。
13. BlueStore
- 功能: BlueStore 是 Ceph 的一种存储引擎,它直接在原始块设备上存储数据,而不是通过文件系统层。这提高了 Ceph 的性能,并支持更高效的数据校验和修复。
- 重要性: BlueStore 是 Ceph 默认的存储引擎,提供更好的性能和数据可靠性。
- 特点: 支持数据压缩、校验和直接存储(绕过文件系统)。
14. RBD Mirroring
- 功能: RBD 镜像是一种跨数据中心的 RBD 数据复制机制,用于灾难恢复(DR)场景。它可以在两个或多个 Ceph 集群之间同步 RBD 映像。
- 重要性: RBD 镜像为 Ceph 集群提供了跨数据中心的高可用性和数据保护。
- 配置: 需要在源和目标集群上配置 RBD 镜像服务,并设置镜像策略。