第 3 章 放置组


放置组(PG)不适用于 Ceph 客户端,但它们在 Ceph Storage 集群中发挥重要角色。

Ceph Storage 集群可能需要数以千计的 OSD 才能访问 exabyte 的存储容量。Ceph 客户端将对象存储在池中,它们是整个集群的逻辑子集。存储在池中的对象数量可能容易在数百万和以后运行。具有数以百万计的对象或更无法现实地跟踪每个对象上的放置的系统,仍然表现良好。Ceph 将对象分配到放置组,并将放置组分配到 OSD,以便重新平衡动态和高效性。

 

计算机科学中的所有问题均可由另一级间接处理,除非有太多间接的问题除外。

 
 -- David Wheeler

3.1. 关于放置组

在池中按对象跟踪对象放置会大规模计算成本。为便于大规模实现高性能,Ceph 将池分配到放置组,将每个对象分配到放置组,并将放置组分配到 Primary OSD。如果 OSD 失败或集群重新平衡,Ceph 可以移动或复制整个放置组,即,PG 中的所有对象都不需要单独解析各个对象。这允许 Ceph 集群有效地重新平衡或恢复。

当 CRUSH 为 OSD 分配放置组时,它会计算一系列 OSD,第一个是主要 OSD。osd_pool_default_size 设置减 1 用于复制池,而用于纠删代码池的编码区块 M 数量决定了存储放置组的 OSD 的数量,而不会永久丢失数据。主 OSD 使用 CRUSH 来识别次要 OSD,并将 PG 的内容复制到次要 OSD。例如,如果 CRUSH 将对象分配给放置组,并且放置组分配到 OSD 5 作为 Primary OSD,如果 CRUSH 计算 OSD 1 和 OSD 8 是放置组的次要 OSD,则主要 OSD 5 会将数据复制到 OSD 1 和 8。Ceph 代表客户端复制数据,可以简化客户端接口并减少客户端工作负载。相同的进程允许 Ceph 集群动态恢复和重新平衡。

当 Primary OSD 失败并标记为 out 集群时,CRUSH 会将 PG 分配给另一个 OSD,后者接收放置组中的对象副本。Up Set 中的另一个 OSD 将假定主 OSD 的角色。

当您增加对象副本或编码区块的数量时,CRUSH 会将每个放置组分配给额外的 OSD。

注意

PG 不拥有 OSD。CRUSH 将多个放置组分配给每个 OSD 伪随机,以确保数据在集群中平均分布。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat