知识卡片

Scrub与deep-scrub的轻重两级检查

专业/工作 · 516.a

内容

一致性检查分两档:普通 Scrub 只比对各副本的元数据是否一致,读取量和计算量都很小,代价低但只能发现元数据层面的异常;deep-scrub 进一步读取并比对对象的实际数据内容、计算 crc32 校验,几乎要扫一遍磁盘上所有数据,代价高但能发现数据本身的静默损坏。检查过程是在线的——不冻结整个系统,只在正被扫描的单个对象上加锁短暂拒绝访问,扫完立刻解锁。这依然是”轻量检查覆盖大多数场景、重量检查兜底”的分级思路,和 [[LRC用全局与局部双层校验降低单块恢复成本|LRC 优先优化高频场景]]是同一类工程直觉:大部分不一致问题在元数据层面就能发现,真正需要逐字节比对数据内容的深度检查没必要每次都做。

参考来源

《Ceph源码分析》第12章《Ceph一致性检查》