知识卡片

严格先Recovery后Backfill的顺序设计

专业/工作 · 515.e.1

内容

一个 PG 如果同时存在需要 [[PG日志只记元数据作为修复依据|Recovery]](靠日志增量修复)和需要 [[Recovery与Backfill的适用场景区别|Backfill]](靠全量扫描比对修复)的副本,Ceph 强制先完成全部 Recovery 工作、再开始 Backfill,绝不并行或反过来。原因是 Recovery 依赖的日志信息相对轻量、修复速度快、优先解决”大部分副本只是暂时落后”这种常见情况;Backfill 代价高、耗时长,通常对应新加入节点或长期离线这种更严重的场景。先把便宜、快速能解决的问题解决掉,再处理昂贵、耗时的问题,是任务调度里常见的按性价比排序策略——不按到达顺序处理,而按”解决它的成本”排序处理。

参考来源

《Ceph源码分析》第11章《Ceph数据修复》