Rook Ceph 故障排查
面向 Rook 部署的 Ceph 集群常见问题与处理办法。
1. 新部署 Rook 报 mon 时钟偏移
现象
health: HEALTH_WARN
clock skew detected on mon.b, mon.c
集群健康状态为 HEALTH_WARN,提示 monitor 之间存在 clock skew(时钟偏移)。
原因简述
Ceph mon 对节点间时间同步较敏感;默认允许的时钟漂移阈值(常见约 0.05 秒)在 Kubernetes / 虚拟化环境中容易触发告警。可适当放宽 mon clock drift allowed,或结合 NTP/chrony 保证节点时间一致。
解决方法 A:修改 ConfigMap 后重建 mon
1)编辑 Rook 配置覆盖 ConfigMap
kubectl -n rook-ceph edit cm rook-config-override
将内容调整为类似(保留原有 metadata 等字段,重点改 data.config):
apiVersion: v1
kind: ConfigMap
metadata:
name: rook-config-override
namespace: rook-ceph
data:
config: |
[global]
mon clock drift allowed = 0.5
2)删除 mon Pod,触发重建(通常约 1 分钟内恢复)
kubectl -n rook-ceph delete pod $(
kubectl -n rook-ceph get pods -o custom-columns=NAME:.metadata.name --no-headers | grep mon
)
3)再次查看集群状态
预期类似:
cluster:
id: f3d157d0-77d5-4648-96d0-6e7e56552767
health: HEALTH_OK
可用例如:
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph -s
说明:
0.5(秒)相对宽松,适合先消除告警;长期仍建议用 chrony/NTP 校准节点时钟,再视情况收紧该值。
解决方法 B:通过 Dashboard 改 ConfigMap
在 Dashboard 中编辑对应 ConfigMap(或同等配置入口),[global] 示例:
[global]
# 默认 0.05 对本集群过严(单位:秒)
mon clock drift allowed = 0.1
# K8s image-gc-low-threshold 多为 80%,告警过早意义不大(单位:百分比)
mon data avail warn = 20
| 参数 | 含义 |
|---|---|
mon clock drift allowed |
mon 间允许的最大时钟偏差(秒) |
mon data avail warn |
mon 数据盘可用空间过低告警阈值(百分比) |
方法 B 将时钟阈值设为 0.1,比方法 A 的 0.5 更保守;可按环境选择。修改后若未自动生效,同样可重建 mon Pod。
2. 集群全体宕机后 OSD 一直无法 Running
现象
- 整集群关机 / 掉电重启后,OSD 始终起不来(Pod 非 Running)
- 日志或事件类似:
OSD pod permissions broken, unable to open OSD superblock after node restart- mount 错误
原因
加盘时使用了自动发现 / 按当时盘符绑定的方式。节点重启后 磁盘设备名变化(如 /dev/sdb → /dev/sdc),原 OSD 找不到正确块设备或 superblock,导致挂载与启动失败。
解决思路
在集群 / 节点的磁盘配置中(如 Libvirt 虚拟机 XML、或 Rook CephCluster 的 device 声明里)固定磁盘标识,避免依赖易变的盘符。
常见做法:
- 虚拟机场景: 在 domain XML 中为磁盘指定稳定配置(如固定
target dev、使用 WWN/serial、disk的稳定地址等),保证重启后对客设备名一致。 - Rook 场景: 优先按 by-id / by-path / device name 稳定路径 或
deviceFilter/ 显式devices列表声明磁盘,避免仅依赖重启后可能漂移的/dev/sdX。 - 修复配置并确保盘符(或 ID)与原 OSD 一致后,再删 Pod 重建或按 Rook 文档做 OSD 恢复。
建议: 生产环境加盘时尽量使用
/dev/disk/by-id/...等持久设备名,从源头降低重启后 OSD 失效风险。
速查
| 序号 | 问题 | 处理要点 |
|---|---|---|
| 1 | clock skew detected on mon.* |
放宽 mon clock drift allowed,重建 mon;并做好节点时间同步 |
| 2 | 宕机后 OSD 无法 Running / mount 失败 | 重启后盘符变化;用 XML 或 by-id 等方式固定磁盘 |