知识卡片

LRC用本地化分组降低恢复读放大

专业/工作 · 243.a.1

内容

普通纠删码(如 Jerasure)恢复一个故障分片时,必须从分布在所有相关 OSD 上的存活分片里读数据、再解码算出丢失部分——一次局部故障牵动了几乎全部参与条带的节点,负载本就重的存储系统这时会雪上加霜。LRC(Locally Repairable Codes)插件的做法是把原本分散到不同 OSD 的分片做”本地化分组”:先按规则把一组分片集中存到单个 OSD 上,再以组为单位分布到不同节点;某个 OSD 故障时,只需要读同一个本地分组内的数据就能恢复,不必牵动条带里的其他所有节点,大幅缩小了恢复时读取的范围。发散:这是[[纠删码的k+m结构与容量权衡]]这条”空间-计算”光谱之外新加的第三个维度——用略微增加的存储冗余(本地分组本身占一点额外空间),换取恢复路径的局部化,是”空间换恢复速度”的又一次典型取舍。

参考来源

《Ceph分布式存储实战》第11章《缓冲池与纠删码》