知识卡片

计划内维护要先抑制自愈机制

专业/工作 · 492.b

内容

Ceph 默认会在 OSD 下线超过一定时间(默认 300 秒)后自动判定其故障并触发数据重构(把该 OSD 上的副本在别处重新生成)。这个自愈机制对真实故障是好事,但对计划内的维护操作(比如临时关机、更换硬盘)反而是负担——运维者明知道节点很快会恢复,却要白白承受一次不必要的数据搬迁和随之而来的带宽/IO 消耗。解法是提前手动设置 noout、nobackfill、norecover 等标记告诉集群”先别自作主张”,维护完成后再取消这些标记,让集群按正常逻辑判断是否需要恢复。发散:这是任何带自愈能力的系统都要面对的通用问题——自愈机制默认假设异常就是故障,遇到计划内变更时必须有一个”维护模式”开关去临时关闭自动响应,Kubernetes 的节点 cordon/drain、数据库的手动故障转移抑制都是同一个诉求。

参考来源

《Ceph分布式存储实战》第13章《Ceph运维与排错》