知识卡片
LRC用全局与局部双层校验降低单块恢复成本
内容
LRC(M,G,L)把校验块拆成两层:G 个全局校验块由全部 M 个数据块算出(和 [[RS编码的恢复代价催生LRC与SHEC|RS 编码]]一样,恢复代价高但覆盖面广),另外把 M 个数据块分成 L 组、每组额外算一个局部校验块,组内任一块数据损坏时只需读同组内的少数块就能恢复,不必牵动全部数据。以 LRC(12,2,2) 对比 RS(10,4) 为例:单个数据块损坏时 LRC 只需读 6 块,RS 需要读 12 块,恢复代价减半;代价是牺牲了部分可靠性——最多只能容忍数据块中 2 块同时损坏,而 RS(10,4) 能容忍任意 4 块损坏。日常最频发的场景(一次只坏一块盘)被优先优化,小概率的极端场景(大批量同时损坏)的保障相应被削弱,这是一种针对故障概率分布做的非对称优化。
参考来源
《Ceph源码分析》第8章《Ceph纠删码》