6. 日常运维与故障处理
本章目标
- 形成每日巡检清单
- 掌握扩容、换盘、OSD full 应急三大高频操作
- 完成 6 个故障演练,建立"现象 → 定位 → 处置"的肌肉记忆
6.1 每日巡检清单
五条命令,两分钟,天天做(对应 cephadm 手册的 day-2 与 rook 的 day-2 实践):
bash
ceph -s # 1. 健康:HEALTH_* / PG 状态 / mon/osd 数量
ceph df # 2. 容量:RAW/已用/可用,<85% 是硬红线
ceph osd df | head -15 # 3. 分布:使用率方差大 = 数据倾斜
ceph health detail # 4. 告警明细(点名具体 OSD/PG)
# 5. dashboard 曲线扫一眼:延迟/IOPS 基线对比(第 2 章存的基线)告警分级习惯:
| 级别 | 例子 | 响应 |
|---|---|---|
| P0 数据风险 | HEALTH_ERR、PG inactive、OSD full >95% | 立即 |
| P1 降级 | PG degraded、OSD down、nearfull | 当天 |
| P2 观察 | slow ops、时钟偏移、单 OSD 使用率偏高 | 记录跟踪 |
6.2 高频操作一:扩容
bash
ceph orch host add <new-host> <ip>
ceph orch apply osd --all-available-devices # 或 drivegroup 精确指定
# 观察数据再平衡:backfill 会自动把旧 OSD 的数据搬一部分过来
ceph osd df # 看 var(相对均值)逐日收敛
ceph -s # 看 recovering n/xx再平衡的代价控制(来自 rook 手册的生产调优,cephadm 裸集群同理):
bash
ceph config set osd osd_mclock_override_recovery_settings true
ceph config set osd osd_max_backfills 16 # 默认 1 太保守时适度上调
# 反向操作:业务高峰把恢复限速压低,夜间再放开原则:扩容窗口的业务抖动是正常的,但要在你的控制之下 —— 用恢复限速换取业务平稳,是运维和业务方的共同语言。
6.3 高频操作二:换盘
bash
# 1. 确认坏盘 OSD(health detail 会点名;smartctl 复核介质错误)
ceph osd tree | grep down
ceph osd metadata osd.N | grep -E 'devices| rotational'
# 2. 摘除(数据由其余副本/backfill 自愈)
ceph orch daemon rm osd.N --force-i-really-mean-it
# 3. 物理换盘后(如果 --all-available-devices)会自动重建;
# 有残留时先抹盘(rook 手册标准三件套):
sgdisk --zap-all /dev/sdX # 清分区表
blkdiscard /dev/sdX # ssd 用这个(比 dd 快且健康)
# 或 ceph-volume lvm zap /dev/sdX
# 4. 验证:新 osd.N+M up/in,PG 回到 active+clean注意:OSD id 不复用(新盘拿新 id)—— ceph osd tree 里旧 id 留尸要看 ceph osd purge 清理,别 confusion。
6.4 高频操作三:OSD full 应急
full ratio(默认 95%)触发后 集群停止接受写入 —— 这是保护机制,但对业务是事故。止血三步:
bash
# 1. 临时抬阈值,抢回写入(治标,立刻做)
ceph osd set-full-ratio 0.96
# 2. 手动 reweight 把数据从最满的 OSD 挪走(无需加盘)
ceph osd reweight osd.N 0.9 # 逐个降热块盘的权重
# 3. 根治:扩容 / 清理(RGW 生命周期、快照清理、删废弃 pool)
# 事后记得把阈值改回并复盘为什么水位告警(85%/75%)没拦住6.5 故障演练剧本(本篇出关考核)
| # | 注入 | 期待现象 | 处置要点 |
|---|---|---|---|
| 1 | 拔一块数据盘 / ceph orch daemon stop osd.N | OSD down,PG degraded,IO 继续 | 6.3 换盘流程 |
| 2 | systemctl stop ceph-mon@X 杀一个 MON | 仲裁仍在(2/3),写入正常 | 观察恢复,理解 quorum |
| 3 | iptables 断开部分节点网络(分区) | PG peering/remapped 卡住 | 定位分区边界,恢复网络 |
| 4 | tc qdisc ... delay 100ms 制造慢盘/慢网 | slow ops 告警,客户端延迟上升 | ceph osd perf 找出慢 OSD,reweight-out |
| 5 | 向一个 pool 灌数据到 nearfull | 告警升级 nearfull→full | 6.4 应急流程 |
| 6 | 重启一个节点 | 短暂 down → 全自动恢复 | 观察自愈时序,记录恢复时间 |
每项演练的产出物:现象截图(ceph -s)→ 根因判断 → 处置命令 → 恢复验证。这套记录直接沉淀为你的生产 runbook。
本章小结
- 巡检五命令天天跑;告警分三级响应
- 扩容/换盘/full 是三大高频操作:换盘有标准流,full 止血先抬阈值再 reweight
- 恢复限速(backfills/mclock)是业务平稳与自愈速度的调节阀
- 六剧本演练通过 = 第二篇出关
自测
Quiz集群达到 full ratio 后业务写入报错。第一步应该做什么?
多选关于数据再平衡(backfill/recovery),下列说法正确的是?(多选)
Lab · 故障演练日(本篇出关考核)挑战
按 6.5 六个剧本逐项注入(可请同伴随机排序,模拟真实未知故障),每项限时 20 分钟内给出:`ceph -s` 现象 → 根因判断 → 处置命令 → 恢复验证。 **验收标准**:6 个剧本全部独立完成;产出 6 份记录,格式可直接用作生产 runbook 初稿;能口头回答"哪些故障业务无感、哪些有感、为什么"。
📎 参考手册 ↗