Skip to content

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.NOSD down,PG degraded,IO 继续6.3 换盘流程
2systemctl stop ceph-mon@X 杀一个 MON仲裁仍在(2/3),写入正常观察恢复,理解 quorum
3iptables 断开部分节点网络(分区)PG peering/remapped 卡住定位分区边界,恢复网络
4tc qdisc ... delay 100ms 制造慢盘/慢网slow ops 告警,客户端延迟上升ceph osd perf 找出慢 OSD,reweight-out
5向一个 pool 灌数据到 nearfull告警升级 nearfull→full6.4 应急流程
6重启一个节点短暂 down → 全自动恢复观察自愈时序,记录恢复时间

每项演练的产出物:现象截图(ceph -s)→ 根因判断 → 处置命令 → 恢复验证。这套记录直接沉淀为你的生产 runbook。

本章小结

  • 巡检五命令天天跑;告警分三级响应
  • 扩容/换盘/full 是三大高频操作:换盘有标准流,full 止血先抬阈值再 reweight
  • 恢复限速(backfills/mclock)是业务平稳与自愈速度的调节阀
  • 六剧本演练通过 = 第二篇出关

自测

Quiz集群达到 full ratio 后业务写入报错。第一步应该做什么?
多选关于数据再平衡(backfill/recovery),下列说法正确的是?(多选)
🧪Lab · 故障演练日(本篇出关考核)挑战
⏱ 半天🖥 Ceph 实验集群(可随意破坏)
按 6.5 六个剧本逐项注入(可请同伴随机排序,模拟真实未知故障),每项限时 20 分钟内给出:`ceph -s` 现象 → 根因判断 → 处置命令 → 恢复验证。 **验收标准**:6 个剧本全部独立完成;产出 6 份记录,格式可直接用作生产 runbook 初稿;能口头回答"哪些故障业务无感、哪些有感、为什么"。
📎 参考手册 ↗

上一章 · 下一章:7. 容量与性能规划 →