知识卡片

合并日志按头尾位置关系分三种情况处理

专业/工作 · 515.d.1

内容

本地日志和 [[PG日志只记元数据作为修复依据|权威日志]]合并时,先检查二者是否有重叠区间(完全不重叠就只能走 Backfill),有重叠再看头尾谁更靠前:权威日志尾部更旧(覆盖范围更广)时,多出的部分直接补进本地日志,不影响缺失对象判断;本地日志头部比权威日志更新(本地有权威日志都没见过的”分歧”记录)时,这些分歧记录很可能是错误或过时数据,要通过 rewind_divergent_log 专门处理、把涉及对象标记为待修复;本地日志头部比权威日志旧(本地明显落后)时,直接把缺的日志段补齐、同时把这段时间理应更新但本地没有的对象记入缺失列表。三种分支本质是同一个判断的展开:谁的记录范围更小,谁就有信息缺口需要靠对方补足;如果自己的记录范围里有对方没有的部分,那部分记录反而是可疑的、需要单独验证而不是直接信任。

参考来源

《Ceph源码分析》第10章《Ceph Peering机制》