3.7. 放置组命令行界面
ceph
CLI 允许您设置并获取池的 PG 数量,查看 PG map 并检索 PG 统计信息。
3.7.1. 在池中设置放置组数量
要在池中设置放置组数量,您必须在创建池时指定放置组数量。详情请参阅 创建池。为池设置放置组后,您可以增加放置组的数量(但您无法减少放置组数量)。要增加放置组的数量,请执行以下操作:
语法
ceph osd pool set POOL_NAME pg_num PG_NUM
增加放置组数量后,还必须在集群重新平衡前增加放置的放置组数量(pgp_num
)。pgp_num
应该等于 pg_num
。要增加放置的放置组数量,请执行以下操作:
语法
ceph osd pool set POOL_NAME pgp_num PGP_NUM
3.7.2. 在池中获取放置组数量
要获取池中的放置组数量,请执行以下操作:
语法
ceph osd pool get POOL_NAME pg_num
3.7.3. 获取放置组的统计信息
要在您的 storag 集群中获取放置组的统计信息,请执行以下操作:
语法
ceph pg dump [--format FORMAT]
有效格式为 plain
(默认)和 json
。
3.7.4. 获取卡住放置组的统计信息
要获取所有放置组的统计数据处于指定状态,请执行以下操作:
语法
ceph pg dump_stuck {inactive|unclean|stale|undersized|degraded [inactive|unclean|stale|undersized|degraded...]} INTERVAL
Inactive 放置组无法处理读取或写入,因为它们正在等待具有最新数据最多的 OSD 上线并在内。
Unclean 放置组包含没有复制所需时间的对象。它们应该正在进行恢复。
Stale 放置组处于未知状态 - 托管它们尚未报告至监控集群的 OSD (由 mon_osd_report_timeout
配置)。
有效格式为 plain
(默认)和 json
。阈值定义了放置组在返回统计之前卡住的最小秒数(默认为 300 秒)。
3.7.5. 获取放置组映射
要获取特定放置组的放置组映射,请执行以下操作:
语法
ceph pg map PG_ID
示例
[ceph: root@host01 /]# ceph pg map 1.6c
Ceph 返回放置组映射、放置组和 OSD 状态:
osdmap e13 pg 1.6c (1.6c) -> up [1,0] acting [1,0]
3.7.6. 清理放置组
要清理放置组,请执行以下操作:
语法
ceph pg scrub PG_ID
Ceph 检查主节点和任何副本节点,生成放置组中所有对象的目录,并比较它们以确保没有缺少或不匹配对象,并且其内容一致。假设副本都匹配,最终语义 sweep 可确保所有与快照相关的对象元数据一致。通过日志报告错误。
3.7.7. 标记 unfound
对象
如果集群丢失了一个或多个对象,并且您决定取消搜索丢失数据,您必须将未找到的对象标记为 lost
。
如果查询了所有可能的位置,并且对象仍然丢失,您可能需要放弃丢失的对象。这是可行的失败组合,允许集群了解在写入本身恢复之前执行的写入操作。
目前唯一支持的选项为 "revert",该选项可回滚到对象的旧版本,或者完全忘记了它(如果它是新对象)。要将 "unfound" 对象标记为 "lost",请执行以下操作:
语法
ceph pg PG_ID mark_unfound_lost revert|delete
请谨慎使用此功能,因为它可能会混淆预期对象存在的应用程序。