3.3.2. 监控放置组设置

当 CRUSH 将 PG 分配给 OSD 时,它会查看池的副本数量,并将 PG 分配到 OSD,使得 PG 的每个副本分配到不同的 OSD。例如,如果池需要三个放置组副本,则 CRUSH 可以分别分配给 osd.1osd.2osd.3。CRUSH 实际上寻求伪随机放置,该放置将考虑您在 CRUSH 映射中设置的故障域,这样您很少可以看到分配给大型集群中最接近邻居 OSD 的 PG。我们引用应当包含特定放置组副本的 OSD 集合,作为 操作集合。在某些情况下,Acting Set 中的 OSD 为 down,否则无法在放置组中对对象进行服务请求。当出现这些情况时,不会出现 panic。常见示例包括:

  • 添加或删除 OSD。然后,CRUSH 将 PG 重新分配给其他 OSD,从而更改操作集合的组成,并使用"回填"过程生成数据的迁移。
  • OSD 已停机,已经重启,现在正在 恢复
  • Acting Set 中的 OSD 为 down 或 unable to service requests,另一个 OSD 暂时假定其职责。

Ceph 使用 Up Set 处理客户端请求,这是实际处理请求的 OSD 集合。在大多数情况下,Up Set 和 Acting Set 几乎是相同的。当它们不是时,这可能表示 Ceph 正在迁移数据,或者 OSD 正在恢复,或者存在问题,Ceph 通常会在这样的场景中以"stuck stale"消息来回显 HEALTH WARN 状态。

前提条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 节点的根级别访问权限。

流程

  1. 检索放置组列表:

    [root@mon ~]# ceph pg dump
  2. 查看在 Acting Set 或一个给定放置组的 Up Set 中哪些 OSD:

    [root@mon ~]# ceph pg map PG_NUM

    结果应该告诉您 osdmap epoch、eNNN、放置组号、PG_NUM、在 Up Set up[] 中的 OSD,以及操作集合 acting[] 中的 OSD:

    [root@mon ~]# ceph osdmap eNNN pg PG_NUM-> up [0,1,2] acting [0,1,2]
    注意

    如果 Up Set 和 Acting Set 没有匹配,这可能代表集群重新平衡本身或集群中的潜在问题。