知识卡片
Scrub靠snapset链表校验快照家族完整性
内容
[[权威对象靠自带元数据自证选出|单个对象内容是否损坏]]之外,Scrub 还要检查一整个”家族”是否完整——扫到 head 或 snapdir 对象时读出它 SnapSet 里的 clones 列表,这份列表就是”接下来应该依次出现哪些快照对象”的预期清单;随后扫描每个快照对象时,核对它是否出现在这份预期清单里(不在就是意外的多余对象),扫描结束时再检查预期清单里是否还有没出现过的条目(那就是缺失对象)。这体现了一致性检查不能只停留在”每个对象自己是否完好”这一层,还要往上一层检查”对象之间该有的引用关系是否完整”——就像检查一本书不仅要看每页有没有破损,还要核对页码是否连续、有没有缺页。
参考来源
《Ceph源码分析》第12章《Ceph一致性检查》