0

是否有一个纠删码,可以通过(以某种方式)添加冗余块来应用于多个块(可能是 100 或 200,每个几百 kB)?

我听说过 Reed-Solomon,但它看起来不能用于大型数据集和多个块,我错了吗?

谢谢!

4

2 回答 2

1

当然,Reed-Solomon 可以用于任何数据大小。

只需将您的数据视为多个 RS 大小的块的集合(例如,基于字节的 RS 代码为 255 字节)并独立地为每个块进行计算。所有校验和一起是整个大数据事物的校验和。

如果您的数据长度不是 RS 块大小的倍数,即。最后一个块太短了,编码前加一些0字节填满,再解码后去掉0。您必须将原始数据长度保存在某处,但这应该没问题。

于 2015-11-10T12:42:46.257 回答
1

纠删码将$N$原始数据块编码为$M$奇偶校验块以实现冗余,而这些$N$原始数据块和$M$奇偶校验块只是整个存储的一个条带。理论上,对于 Reed-Solomon(RS) 码,$N$ 的大小可以是任意大的,前提是 RS 构建的伽罗瓦域 $GF(2^w)$ 足够大。基于上述情况,您的问题更有可能如下

为什么条带中(原始数据)块的数量很少会太大,例如 $N = 100$ 或 $200$ ?

原因是:如果您通过纠删码将大量数据块编码为奇偶校验块,则许多数据/奇偶校验块是相互关联的update problemrepair problem只要更新一个数据块,所有的奇偶校验块也必须更新,这会导致奇偶校验部分的 I/O 繁重;repair problem是当一个数据/奇偶校验块发生故障时,大量数据/奇偶校验块被访问和传输以进行修复,从而导致巨大的磁盘 I/O 或网络流量。

以$3$数据块(ABC)和奇偶校验块P=A+B+C的RAID5为例,任何块的故障修复都需要其他三个块都参与。

编码的块数越多,对存储系统来说可能遇到的问题就越严重update problemrepair problem这进一步极大地影响了系统的性能。

顺便说一句,当 $N$ 放大时,解码(获取原始数据的过程)速度大大下降。

于 2015-12-18T06:05:10.637 回答