EC纠删码技术详解

2022-6-7 865 6/7

什么是EC纠删码

EC(Erasure Coding,纠删码)技术是将一份数据切分成N块原始数据,基于N块原始数据计算获得M块冗余数据,并将N+M块数据分别存放在存储系统中的不同存储节点上,当其中任意M块数据(N+M块数据中任意的M块数据)丢失时,存储系统可通过数据恢复算法将丢失的M块数据恢复,实现冗余和容错的目的。

实现原理

数据切片原理及写入流程

1.分布式存储系统EC机制按照4MB*N(N为N+M中的N)的粒度由XDC或RGW网关对数据进行切片,并将切片后的数据根据负载均衡算法写入到主OSD所在的存储服务器的内存中。

2.主OSD的内存中再次将数据片段切分成N块数据并通过计算编码得到M块冗余校验数据,然后将第一份数据存储在主OSD中,并将其它数据存储在其它存储服务器中。

3.当所有N+M块数据写入完成后,返回主OSD数据写入完成,主OSD返回客户端写入完成。

流式切片

客户端通过流式写入的方法将数据块写入OSD:

1.小于等于4MB*N的文件,不需要XDC或RGW网关切片,直接将整个文件存储在主OSD服务器的内存中进行切片(切片大小为文件大小除以N),并编码得到M块冗余数据后,通过后端专用网络将数据写入到N+M台存储服务器中(N中的第一份数据写入主OSD中)。

2.大于4MB*N大小的文件,则按照4MB*N大小由XDC或RGW网关进行切片,然后存储到主OSD后再进行切片-编码-存储,如文件最后的切片数据块不足4MB*N,则将该数据块在主OSD所在节点的内存中切分成N份大小相同的数据块,并编码出M块冗余数据,通过后端专用网络存储在N+M台存储服务器中(N中的第一份数据写入主OSD中)。

3.如数据的大小不能被N整除,则会进行一些填充,以保证每个数据块大小相同(4K对齐对于纠删码的性能保证很重要,所以推荐配置为2+1,4+2,8+3)。

数据恢复

纠删码中硬件设备的状态由MON维护,当某个硬件设备失效时,MON会检测到此硬件设备状态,同时开启数据恢复流程。EC的数据恢复机制是将丢失数据所关联的数据块组中的剩余数据全部读到主OSD服务器中,并开启解码模式,将丢失的数据计算回来,再根据负载均衡机制写入到其他存储服务器中。

EC的优势

1.存储空间利用率高,最高可达到90%以上;

常见EC副本及利用率

1.4+2,空间利用率为66%,服务器最少6台。

2.4+2:1,空间利用率为66%,服务器最少3台。

3.8+2,空间利用率为80%,服务器最少10台。

4.8+2:1,空间利用率为80%,服务器最少5台。

5.8+3,空间利用率为72%,服务器最少11台。

写入举例

32MB文件,EC保护模式为4+1,将文件先切分成2份16MB(4MB*N)大小数据片段,先将第一份数据片段根据负载均衡算法写入到其主OSD上,然内部文档,禁止外传 5 / 13 后将这16MB文件切分成4MB-4MB-4MB-4MB的数据块,通过这4份4MB的数据块编码得到4MB的冗余校验数据,并将5份4MB数据并行存放在5台存储节点的从OSD中(第一份数据存储在主OSD中),全部写入完成后,返回主OSD写入完成信息,主OSD接收到消息后返回客户端写入完成,EC模式也是采用流式写入方法,接收到第一个16MB后写第一个分片,同时会继续接收数据,第二个16MB数据接收完成后马上写第二个片段,以此类推将2个数据片段全部写入完成后,文件写入完成。

2.N+M配比灵活。

与副本对比

EC相比副本性能下降至少20%,由于存在两次切片,初次切片粒度大,如8M、16M、32M,二次切片需将数据分配在多个存储节点上,在读取时也需要从所有存储该文件的存储节点上读取分片数据组成完成的文件,所以对I/O交互不频繁的非结构化大文件读取比较友好,比如流媒体文件、归档冷存储数据等。

 

- THE END -

Tenkms

12月01日00:11

最后修改:2023年12月1日
0

非特殊说明,本博所有文章均为博主原创。

共有 1 条评论