目录
什么是纠删码技术
简介:
纠删码技术主要是通过纠删码算法将原始的数据进行编码得到冗余,并将数据和冗余一并存储起来,以达到容错的目的。
将n块原始的数据元素,通过计算(编码)得到m块冗余元素(校验块)。也就是n+m份数据通过DHT算法分别存储不同硬盘中。当其中任意的m块元素出错(包括原始数据和冗余数据)时,均可以通过对应的重构算法恢复出原来的n块数据。在这种方式下,空间的利用率约为 n/(n+m),数据的可靠性由 m 值的大小决定,m越大可靠性越高。
更详细的介绍见:
https://blog.csdn.net/bandaoyu/article/details/122967008
EC“n+m” 是什么
例如:
EC“2+1” ,就是最多允许任意1块数据出错,磁盘利用率2/3,既2/(2+1)
EC“4+2” ,就是最多允许任意2块数据出错,磁盘利用率4/6,既4/(4+2)
...
EC“n+m” ,就是最多允许任意m块数据出错,磁盘利用率n/(n+m)
分配存储方式:
EC“4+2” 配置下,一个对象写入时,对象会分成4块原始数据,计算生成2块冗余数据,共生成 6个块.每个块均存入不同的硬盘,如下图所示:
EC n+m:1 是什么
分布式集群上的概念,我的理解应该是:每个节点最多只能保存一个对象的m块数据,既一个对象切分成n块数据,计算出冗余数据m块,共(n+m)块,有x个节点,每个节点最多只能保存其中的m块(每一块又分别在节点内独立磁盘),存不完就需要增加节点.
默认的纠删码是按照节点来分配/分割数据的,但亚节点纠删可按照硬盘来分配/分割数据,例如EC4+2:1,则是把3个节点当6个节点用,每个节点选择2块硬盘,整个集群选择6块不同的硬盘来存放4+2总计6个分片数据。如下图所示:
因此,EC4+2:1相比EC2+1,虽然能容忍节点故障数量仍然是1个,但它可以允许任意2块硬盘故障,数据不丢失。而实际情况下,硬盘故障的概率是远远高于整个节点故障的,所以EC4+2:1还是非常可靠的,在空间利用率上也远高于三副本。
总结
EC“n+m” ,就是最多允许任意m块数据出错,磁盘利用率n/(n+m)
EC“2+1” ,就是最多允许任意1块数据出错,磁盘利用率2/3,既2/(2+1)
EC“4+2” ,就是最多允许任意2块数据出错,磁盘利用率4/6,既4/(4+2)
...
EC n+m:1 是分布式集群上的概念
就是最多允许1个节点上的数据全坏或任意m块数据出错,磁盘利用率n/(n+m)
以下几个应该怎么理解,写在评论区交流一下
EC2+1
EC2+2
EC4+1
分布式上的:
EC2+2:1
EC4+2:1
EC8+2:1
个人理解:
EC2+1
EC2+2
EC4+1
分布式上的:
EC2+2:1
每个节点最多能存某个对象的2块数据(既要保证一个节点挂了最多不能失效超过两块数据),所以集群最少要(2+2)/2=2个节点,此时最多容忍一个节点失效,或每个节点失效一块数据,既总共两块数据失效.
EC4+2:1
每个节点最多能存某个对象的2块数据,所以集群最少要(4+2)/2=3个节点,此时最多容忍一个节点失效,或任意两个节点各失效一块数据(盘),既总共两块数据失效.
EC8+2:1
每个节点最多能存某个对象的2块数据,所以集群最少要(8+2)/2=5个节点,此时最多容忍一个节点失效,或任意两个节点各失效一块数据(盘),既总共两块数据失效.
参考: