作者:明诺新源研_889 | 来源:互联网 | 2023-07-05 22:04
1.概述
在编码理论里,有一种前向纠错(FEC)编码方式,也称为纠删码。
这种技术可以将原始数据中丢失的k字节数据从n个含编码字节的信息中进行恢复。
在纠删码技术中,Reed-Solomon(里所码)码是一种常见的纠删码。
2.纠删码的应用
对于在分布式环境下数据存储的可靠性保证,有两种策略:
1)引入副本冗余机制策略
2)利用纠删码技术,相比于副本策略,纠删码技术可以节省更多磁盘的空间。即有更高的磁盘利用率
拿Hadoop的HDFS来说,策略一般是三副本,当某个副本丢失时,可以通过其他副本复制回来。所以在这种情况下,Hadoop集群的磁盘利用率为1/3。而如果使用纠删码技术后,可以提高磁盘的利用率。
3.纠删码的思想
上图的含义是:有n个原始数据块,再引入m个数据校验块,然后通过编码(encode)是原始数据块和数据校验块产生关联。
纠删码技术是一种数据恢复技术,最早用于通信行业中数据传输中的数据恢复,是一种编码容错技术。它通过在原始数据中加入新的校验数据,使得各个部分的数据产生关联性。在一定范围内的数据出错情况下,通过纠删码技术都可以进行恢复。
比如:有原始数据块n个,然后加入m个校验数据块。
原始数据块和校验数据块在丢失时,都可以通过现有的数据块进行恢复
举例:
①x=1
②y=2
③z=3
④x+y+z=6
⑤2x+3y+z=11
⑥x+2y+3z=14
1)如果我们丢了3个原始数据块,可以恢复
④x+y+z=6
⑤2x+3y+z=11
⑥x+2y+3z=14
2)如果我们丢失了3个数据校验块,可以恢复
①x=1
②y=2
③z=3
3)可以
②y=2
③z=3
④x+y+z=6
⑤2x+3y+z=11
⑥x+2y+3z=14
4)可以
③z=3
④x+y+z=6
⑤2x+3y+z=11
⑥x+2y+3z=14
5)不可以
③z=3
⑥x+2y+3z=14
4.Reed-solomon codes
4.1.概述
Reed-Solomon里所码(RS)码是存储系统较为常用的一种纠删码,也称为里所码。它有两个参数n和m,记为RS(n,m)。n代表原始数据块个数。m代表校验块个数。接下来介绍RS码的原理。
4.2Reed-Solomon(RS)码的编码和解码过程
1)编码过程(encoding)
数据丢失:
2)解码过程
4.3.RS的优缺点:
优点:低冗余度,高磁盘利用率。
比如一个文件有5个文件块,假设用3副本冗余机制,最后总的文件块是15块,则磁盘利用率是:5/15=1/3=33%
而用RS码来实现,5个文件块+3个数据校验块,则磁盘利用率是:5/8=62.5%
缺点:
1)计算代价高。 丢失数据块或者编码块时, RS需要读取n个数据块和剩余的校验块才能恢复数据。
2)数据更新代价高。 数据更新相当于重新编码, 代价很高, 因此常常针对只读数据,或者冷数据。
工程实践中,一般对于热数据还是会使用多副本策略来冗余,冷数据使用纠删码。
4.4.两种冗余技术对比如下: