故障先分清层次
Ceph 的故障提示往往说的是现象而不是原因:OSD down、PG 降级、慢请求、容量告警都只是结果。恢复的正确姿势是先用健康详情确认影响面,再沿「客户端—网络—守护进程—后端磁盘」逐层收窄,避免在没定位清楚时贸然重启守护进程扩大影响。
基本信息
| 适用平台 | Ceph 集群(所有主流版本) |
|---|---|
| 首选命令 | ceph -s、ceph health detail |
| 常见诱因 | 磁盘故障、网络抖动、容量水位、时钟漂移 |
| 权限要求 | 集群只读排查可使用受限身份,恢复操作需管理员 |
典型故障与处置方向
- OSD 反复 up/down 抖动:先查后端磁盘与网络,再决定是否标记失效
- PG 长期 undersized 或 stale:核对 OSD 数量与 CRUSH 规则是否落差
- 慢请求告警:定位是单盘、单主机还是全局,避免盲目调参数
- MON 仲裁失败:确认网络与时钟,多数是连通性问题而非数据问题
定位命令
定位命令
ceph -s # 先看整体健康与降级规模
ceph health detail # 逐条看告警指向的具体对象
ceph osd tree # 确认故障 OSD 属于哪台主机
ceph osd perf # 看各 OSD 的提交与应用延迟
ceph pg 3.1 query # 针对具体 PG 查副本落点与状态
dmesg -T | tail -50 # 主机侧磁盘与内核报错线索常见告警含义
| 告警 | 含义 | 常规处理方向 |
|---|---|---|
| OSD_DOWN | 某 OSD 不再响应心跳 | 查主机与磁盘,确认是否为硬件故障 |
| PG_DEGRADED | PG 可写但副本数不足 | 多为 OSD 离线引起,等回填或修盘 |
| SLOW_OPS | 请求处理超过阈值 | 定位具体 OSD 与后端盘,排查热点 |
| NEAR_FULL | 容量接近水位线 | 扩容或清理,避免触发只读 |
重启守护进程前先判断「重启能不能改变结果」:纯硬件或网络原因导致的 OSD 掉线,重启只会让抖动继续并触发更多回填。
在副本数已经不足时执行剔除或删除 OSD,会直接进入数据不可恢复风险区;这类操作前必须确认剩余副本足以撑住。
动作取舍顺序
- 先只读侦察,把影响面与规模确认清楚
- 能靠等待回填自然收敛的,尽量不做人工干预
- 疑似硬件故障先隔离并保留现场证据,再谈替换
- 确需重启时一次只动一个组件,观察稳定后再动下一个
- 每个动作后重新读健康状态,用结果决定下一步而不是按预案一路推到底
把时间线记下来:什么时候出现什么告警、做了什么、状态怎么变化。这是复盘和向厂商求助时唯一能被验证的依据。