加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 安全 > 正文

GlusterFS企业级功能之EC纠删码

发布时间:2021-01-18 14:02:19 所属栏目:安全 来源:网络整理
导读:《GlusterFS企业级功能之EC纠删码》要点: 本文介绍了GlusterFS企业级功能之EC纠删码,希望对您有用。如果有疑问,可以联系我们。 在这个数据爆炸的时代,很多行业不得不面临数据快速增长的挑战,为了应对呈爆炸式增长态势的数据量,构建大规模的存储系统成了一
副标题[/!--empirenews.page--]

《GlusterFS企业级功能之EC纠删码》要点:
本文介绍了GlusterFS企业级功能之EC纠删码,希望对您有用。如果有疑问,可以联系我们。

在这个数据爆炸的时代,很多行业不得不面临数据快速增长的挑战,为了应对呈爆炸式增长态势的数据量,构建大规模的存储系统成了一种普遍的应用需求.但数据是如此重要,如何保证存储可靠性、数据可用性成了大规模存储系统的难点和要点.数据冗余是保障存储可靠性、数据可用性的最有效手段,传统的冗余机制主要有副本(Replication)和纠删编码(Erasure Code,以下简称纠删码或EC)两种方式.

副本是将每个原始数据分块都镜像复制到另一存储介质上,从而保证在原始数据失效后,数据仍然可用并能通过副本数据恢复.在副本机制中,数据的可靠性和副本数是呈正相关,副本数越多,数据可用性越好,可靠性也越高,但也意味着更低的空间利用率以及更高的成本.在大规模存储系统中,节点出现故障并发生失效是一种大概率事件,这也就意味着双副本并不能满足企业对存储可靠性的需求,但三副本的存储开销太大,高达200%,且随着存储规模的增大,对存储系统的开销(如容量空间成本、运营成本等)都将显著增加.

相较于副本机制,纠删码机制具有更高的存储效率,在提供相同存储可靠性的条件下,可以最小化冗余存储开销.纠删码机制在网路环境下,其高存储效率的特性还能能显著降低网络中的数据流量,也就意味着在大规模存储系统中使用纠删码机制能够节约网路带宽和存储空间.所以在大规模存储的应用场景中,纠删码机制成了保证存储可靠性、数据可用性的最佳选择.

一、存储应用中的纠删码

(一)什么是纠删码

纠删码本身是一种编码容错技术,起源于通信传输领域,用来解决通信过程中部分数据在传输过程中丢失的问题.其基本原理是传送端把需要传输的信号分段,然后加入一定的校验并让各信号段之间间产生一定的联系,最后统一把所有信号段向接收端发送;如果在传输过程中有部分信号丢失,接收端仍可以通过算法把完整的信息计算出来,从而保证了两端之间的可靠通信.其原理如下图所示:

图1:纠删码的原理图

客户端,把原始数据信息切分为k块source data,然后通过纠删码Encoder生成n块encoded data,最后统一向服务端传输;服务端,只要能够接收到k` >= k块的encoded data,就能够通过纠删码decoder出所有的source data.

(二)纠删码的分类

按照误码控制的不同功能,可分为检错、纠错和纠删三种类型.检错码仅具备识别错码功能而无纠正错码功能;纠错码不仅具备识别错码功能,同时还具备纠正错码功能;纠删码则不仅具备识别错码和纠正错码的功能,而且当错码超过纠正范围时,还可把无法纠错的信息删除.

按照存储单元连接方式的不同,可分为基于高速总线方式的磁盘阵列、基于LAN方式的集群存储和基于WAN/Internet方式的广域网络存储系统.阵列码是一种特殊化的纠删码,其采用高效率的异或运算(XOR),如RAID5、RAID6等.集群存储系统中,如HDFS的HDFS-RAID、PanFS支持RAID-5容错编码、Google的GFSⅡ、微软的WAS等;广域网下,如RACS、DepSky等;开源的集群存储系统中,如GlusterFS的EC卷、ceph纠删码等.

纠删码常见的有里德-所罗门码Reed-Solomen(简称RS)、级联低密度纠删码和数字喷泉码三类.目前在存储行业内的应用中,主要使用的是RS类纠删码,比如光盘存储中使用 RS 码进行容错,防止光盘上的划痕导致数据不可读;生活中经常使用的二维码就利用了RS码来提高识别的成功率.主要原因就是,RS类码是唯一可以满足任意磁盘数目N和校验数据M中丢失M块后能恢复的Maximum Distance Separable(简称MDS)编码,所以下文中主要以RS类码来介绍纠删码在存储应用中的使用原理.

(三)纠删码在存储应用中的使用原理

在大规模存储应用场景中,节点故障、数据失效是一种常态,使用纠删码来保证存储可靠性、数据可用性是目前的最有效方式之一.其原理是将文件数据分割成N个大小相同的原始数据块,然后编码生成M个大小相同的校验数据块(注:原始数据块和校验数据块大小相同),最后将原始数据块和校验数据块分别存储在不同的位置,如不同的磁盘、不同的存储节点等.纠删码的容错能力正是来源于这些校验数据块,在1~M个数据块(注:原始数据或校验都行)损坏的情况下,整体数据仍然可以通过剩余的数据块计算得出,确保了数据仍的高可用性.

纠删码存储的存取过程包含编码、修改、解码三种基本操作.以(6,2)RS码为例,文件划分为4个原始数据块{D1,D2,D3,D4},经过编码得到{P1,P2}2个校验数据块;当原始数据块D4被更新为D4’时,校验数据块{P1,P2 }也要重新编码更新为{P1’,P2’ };借助解码函数,可根据任意4个数据块(如{D1,P1’})重构出所有的数据块.

 

纠删码操作

图2:纠删码的三种基本操作

纠删码存储的数据恢复过程主要利用编码、解码来恢复丢失的数据.同样以(6,P2}2个校验数据块,然后把所有数据块统一存储.

当原始数据分块D4丢失时,可根据{D1,P1,P2}中任意4个数据块解码计算出原始数据块D4.

图3:纠删码存储的数据分块恢复

当校验数据块P2丢失时,D4,P1 }中任意4个数据块编码计算出校验数据块P2.

图4:纠删码存储的校验分块恢复

在(6,2)RS码为例的纠删码存储中,其冗余度为2,即最多可以同时丢失2块数据块,当丢失的数据块个数大于2时,丢失数据块就不可恢复了.

二、基于EC的开源实现技术

现今,基于纠删码的开源实现技术主要有Intel ISA-L、Jerasure等库,以下就来简单介绍一下这两种库:

(一)Intel ISA-L

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读