有没有擦除代码,可以通过(以某种方式)添加冗余块来应用于多个块(可能是100或200,每个块是几百kB)?
我听说过Reed-Solomon,但它看起来不能用于巨大的数据集和多个块,我错了吗?
谢谢!
发布于 2015-11-10 20:42:46
当然,里德-所罗门算法可以用于任何大小的数据。
只需将您的数据视为多个RS大小的块的集合(例如,255字节),并独立地对每个块进行计算。所有校验和加起来就是整个大数据的校验和。
如果您的数据长度不是RS块大小的倍数,即。最后一块太短了,编码前加一些0字节填满,解码后再去掉0即可。您必须将原始数据长度保存在某个位置,但这应该没有问题。
发布于 2015-12-18 14:05:11
擦除码将$N$原始数据区块编码为$M$奇偶校验区块以实现冗余,而这些$N$原始数据区块和$M$奇偶校验区块只是整个存储的条带。理论上,当RS码的伽罗瓦域$GF(2^w)$足够大时,RS码的$N$大小可以是任意大的。基于以上内容,您的问题更可能如下
为什么条带中(原始数据)块的数量很少会太大,例如,$N = 100$或$200$?
原因是update problem和repair problem:如果您通过擦除码将大量数据块编码为奇偶校验块,则许多数据/奇偶校验块是相互关联的。只要更新一个数据块,所有奇偶校验块也必须更新,这会导致奇偶校验部分的I/O繁重;repair problem是指当一个数据/奇偶校验块出现故障时,大量数据/奇偶校验块被访问和传输以进行修复,从而导致巨大的磁盘I/O或网络流量。
以RAID5 of $3$ data chunks (A,B,C)和parity chunk P=A+B+C为例,任何块的故障修复都需要其他所有三个块参与。
编码的区块数量越多,存储系统可能遇到的update problem和repair problem就越严重,从而进一步极大地影响系统性能。
顺便说一句,当$N$增大时,解码(获取原始数据的过程)速度会大大降低。
https://stackoverflow.com/questions/33356730
复制相似问题