3.5. PG 命令行参考

通过 ceph CLI,您可以设置池的 PG 数量并获取其数量,查看 PG map 并检索 PG 统计信息。

3.5.1. 设置 PG 数

要在池中设置 PG 数量,您必须在创建池时指定 PG 数量。详情请参阅 创建池。要在创建池后更改 PG 数量,请执行以下操作:

ceph osd pool set {pool-name} pg_num {pg_num}

旦增加了 PG 的数量,还必须增加放置的 PG 数量(pgp_num),然后才能重新平衡集群。The pgp_num 应当等于 the pg_num。The pgp_num 将是由 CRUSH 算法考虑放置的 PG 数量。Increasing pg_num 可分割 PG,但不会将数据迁移到较新的 PG,直到放置的 PG 被增加,即 pgp_num。要增加放置的 PG 数量,请执行以下操作:

ceph osd pool set {pool-name} pgp_num {pgp_num}

在减少 PG 数量时,pgp_num 会自动调整。

3.5.2. 获取 PG 数量

要获取池中 PG 的数量,请执行以下操作:

ceph osd pool get {pool-name} pg_num

3.5.3. 获取 Cluster PG Statistics

要获取集群中 PG 的统计信息,请执行以下操作:

ceph pg dump [--format {format}]

有效格式为 纯文本 (默认)和 json

3.5.4. 获取 Stuck PG 的统计信息

要获取处于指定状态的所有放置组的统计信息,请执行以下操作:

ceph pg dump_stuck {inactive|unclean|stale|undersized|degraded [inactive|unclean|stale|undersized|degraded...]} {<int>}

活跃的 PG 无法处理读取和写入,因为它们正在等待具有最新数据的 OSD 出现并进入。

unclean 放置组包含没有复制所需次数的对象。它们应该正在恢复。

stale Placement 组处于未知状态 - 托管它们的 OSD 暂时尚未报告到 monitor 集群( mon_osd_report_timeout配置)。

有效格式为 纯文本 (默认)和 json。该阈值定义 PG 在将 PG 包含在返回统计信息(默认值 300 秒)之前卡住的最少秒数。

3.5.5. 获取 PG map

要获取特定 PG 的 PG map,请执行以下操作:

ceph pg map {pg-id}

例如:

ceph pg map 1.6c

Ceph 将返回 PG map、PG 和 OSD 状态:

osdmap e13 pg 1.6c (1.6c) -> up [1,0] acting [1,0]

3.5.6. 获取 PG 统计信息

要检索特定放置组的统计信息,请执行以下操作:

ceph pg {pg-id} query

3.5.7. 清理 PG

要清理 PG,请执行以下操作:

ceph pg scrub {pg-id}

Ceph 检查主节点和任何副本节点,生成放置组中所有对象的目录,并将它们进行比较,以确保没有对象缺失或不匹配,并且其内容一致。假设副本全部匹配,则最终语义深度可确保与快照相关的所有对象元数据保持一致。错误通过日志中报告。

3.5.8. 恢复失败

如果集群丢失了一个或多个对象,并且您决定放弃搜索丢失的数据,您必须将未找到的对象标记为 丢失

如果查询了所有可能的位置,并且对象仍丢失,您可能必须放弃丢失的对象。这可能是因为异常故障组合允许集群了解在恢复写入本身前执行的写入操作。

目前唯一支持的选项是"恢复",该选项将回滚到对象的以前版本,或者(如果它是一个新对象)完全忘记该对象。要将 "unfound" 对象标记为 "lost",请执行以下操作:

ceph pg {pg-id} mark_unfound_lost revert|delete
重要

请谨慎使用此功能,因为它可能会让对象存在混淆。