3.2.11. 了解 Ceph OSD 状态

OSD 的状态在集群中是,位于,或从集群 之外。它是 up 和 running、up up 或 down。如果 OSD 为 up,它可以 位于 存储集群中,其中可以读取和写入数据,或者存储集群 之外。如果 集群中有 它,并且最近从集群中 移出,Ceph 会将放置组迁移到其他 OSD。如果 OSD 超出 集群,CRUSH 不会将 PG 分配给 OSD。如果 OSD 为 down,它也应为 out

注意

如果 OSD 为 downin,则代表有一个问题,集群也不会处于健康状态。

OSD 状态

如果执行诸如 ceph health, ceph -sceph -w 等命令,您可能会注意到集群并不总是回显 HEALTH OK。不要 panic。对于 OSD,在几个预期情况下,集群应该不会回显 HEALTH OK

  • 还没有启动集群,它不会响应。
  • 您刚启动或重启集群,但还没有就绪,因为 PG 已创建,并且 OSD 在 peering 过程中。
  • 您刚添加或删除 OSD。
  • 您刚刚修改 cluster map。

监控 OSD 的一个重要方面是,确保集群在启动和运行,所有 in 集群中的 OSD 都为 up 且在运行。

要查看所有 OSD 是否在运行,请执行:

[root@mon ~]# ceph osd stat

或者

[root@mon ~]# ceph osd dump

结果应该提供了映射的 epoch, eNNNN, OSD 的总数, x, 多少 y 为e up,多少 z, 为 in

eNNNN: x osds: y up, z in

如果 in 集群中的 OSD 数量超过 up 的 OSD 数量。执行以下命令来识别未运行的 ceph-osd 守护进程:

[root@mon ~]# ceph osd tree

Example

# id    weight  type name   up/down reweight
-1  3   pool default
-3  3       rack mainrack
-2  3           host osd-host
0   1               osd.0   up  1
1   1               osd.1   up  1
2   1               osd.2   up  1

提示

通过设计良好的 CRUSH 层次结构搜索功能可以帮助您更加快速地通过确定物理位置对存储集群进行故障排除。

如果 OSD 为 down,请连接到 节点并启动它。您可以使用红帽存储控制台重启 OSD 节点,或者您可以使用命令行。

Example

[root@mon ~]# systemctl start ceph-osd@OSD_ID