知识卡片
端到端校验代价过高促使Ceph选择后台扫描
内容
数据静默损坏(某一位无声无息地翻转,不产生任何报错)可能发生在存储协议栈的任何一层:内存/CPU/网卡硬件、传输链路信噪干扰、RAID 控制器固件 bug、操作系统或文件系统的软件 bug。传统高端磁盘阵列的对策是端到端校验:客户端为每个数据块算一个 CRC 随数据一起下发,磁盘收到后重新计算比对,读取时再反向校验一次,从而让应用层能确定”操作成功就等于数据正确”。但这种方案要求 IO 路径上每一层都主动传递和校验这份 CRC,涉及模块太多、实现代价高、对性能影响明显,且天生解决不了”数据没错但写到了错误地址”这类问题。Ceph 放弃了这条路,转而用后台异步扫描比对副本的 [[Scrub与deep-scrub的轻重两级检查|Scrub 机制]]兜底——牺牲了发现问题的实时性,换来对正常读写路径几乎零侵入。
参考来源
《Ceph源码分析》第12章《Ceph一致性检查》