是否有一个纠删码,可以通过(某种方式)添加冗余块来应用于多个块(可能是100或200,每个几百kB)?
我听说过Reed-Solomon,但看起来它不能用于大量数据集和多个块,我错了吗?
谢谢!
答案 0 :(得分:1)
当然,Reed-Solomon可用于任何数据大小。
只需将数据视为多个RS大小的块集合(例如,基于字节的RS代码为255字节),并使每个块的计算独立。所有校验和一起是整个大数据事物的校验和。
如果您的数据长度不是RS块大小的倍数,即。最后一个块太短,只需在编码前添加一些0字节填充它,再次解码后删除0。你必须在某个地方保存原始数据长度,但这应该没问题。
答案 1 :(得分:1)
Erasure代码将$ N $原始数据块编码为$ M $奇偶校验块以实现冗余,而这些$ N $原始数据块和$ M $奇偶校验块只是整个存储的一个条带。从理论上讲,对于Reed-Solomon(RS)码,$ N $的大小可以是任意大的,只有当RS构造的Galois域$ GF(2 ^ w)$足够大时。基于以上所述,您的问题更有可能如下:
为什么条带中的(原始数据)块的数量很少太大,例如,$ N = 100 $或$ 200 $?
原因是update problem
和repair problem
:如果通过擦除代码将大量数据块编码为奇偶校验块,则许多数据/奇偶校验块是相互关联的。只要更新一个数据块,所有奇偶校验块也必须更新,这会导致奇偶校验部分的I / O量很大; repair problem
是一个数据/奇偶校验块发生故障,访问和传输大量数据/奇偶校验块以进行修复,导致巨大的磁盘I / O或网络流量的情况。
获取$ 3 $ $ $数据块的RAID5( A , B , C )和奇偶校验块 P = A + B +以C 为例,修复任何块的失败都需要所有其他三个块参与。
编码的块数越多,存储系统可能遇到的update problem
和repair problem
越严重,这将进一步严重影响系统的性能。