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

GlusterFS企业级功能之EC纠删码

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

Jerasure是美国田纳西大学Plank教授开发的C/C++纠删码函数库,提供Reed-Solomon和Cauchy Reed-Solomon两种编码算法的实现.Jerasure有1.2和 2.0两个常用版本,Jerasure 2.0为目前的最新版本,可借助intel sse指令集来加速编解码,相比1.2版本有较大的提升.Jerasure库分为5个模块,每个模块包括一个头文件和实现文件.
(1)galois.h/galois.c:提供了伽罗华域算术运算.
(2)jerasure.j/jerasure.c:为绝大部分纠删码提供的核心函数,它只依赖galois模块.这些核心函数支持基于矩阵的编码与解码、基于位矩阵的编码与解码、位矩阵变换、矩阵转置和位矩阵转置.
(3)reedsol.h/reedsol.c:支持RS编/解码和优化后的RS编码.
(4)cauchy.h/Cauchy.c:支持柯西RS编解码和最优柯西RS编码.
(5)liberation.h/liberation.c:支持Liberation RAID-6编码啊、Blaum-Roth编码和Liberation RAID-6编码.其中,Liberation是一种最低密度的MDS编码.这三种编码采用位矩阵来实现,其性能优于现在有RS码和EVENODD,在某种情况下也优于RDP编码.

(三)Intel ISA VS Jerasure

Intel ISA-L库和Jerasure库都能加速RS码的计算速度.其中,ISA-L 库对于加速RS码的计算速度效果更好,是目前业界最佳.ISA-L 之所以速度快,主要有两点,一是由于Intel 谙熟汇编优化之道,ISA-L直接使用汇编代码;二是因为它将整体矩阵运算搬迁到汇编中进行.但这导致了汇编代码的急剧膨胀,令人望而生畏.另外,ISA-L 未对 vandermonde 矩阵做特殊处理,而是直接拼接单位矩阵作为其编码矩阵,因此在某些参数下会出现编码矩阵线性相关的问题.

虽然Jerasure2.0库相较ISA-L 库对于加速RS码的计算速度效果略差,但是Jerasure2.0库在存储应用中仍具有一些ISA-L 库所没有的优势,如Jerasure2.0使用 C 语言封装后的指令,让代码更加的友好.另外Jerasure2.0 不仅仅支持 GF(2^8) 有限域的计算,其还可以进行 GF(2^4) – GF(2^128) 之间的有限域.并且除了 RS 码,还提供了 Cauchy Reed-Solomon code(CRS码)等其他编码方法的支持.且在工业应用之外,其学术价值也非常高,是目前使用最为广泛的编码库之一,开源的Ceph分布式存储系统就是使用Jerasure库作为默认的纠删码库.

三、GlusterFS纠删码卷

2011年,Linux系统厂商RedHat红帽以1.36亿美元收购了网红Gluster,然后基于红帽企业的Linux操作系统构建了企业级的RedHat Gluster Storage存储,并在过去的几年里,为其添加了一系列的企业级新功能,如EC(Erasure Code)纠删码卷、SSD Tier分层、Geo-Replication远程复制等,显著增强了GlusterFS存储的性能、可靠性、灵活性与安全性.

在早期版本的GlusterFS存储中,其中有两种基本卷,Striped卷和Replicated卷.其中Striped卷提供了较高的物理磁盘空间利用率机制,但不提供容错机制,即可靠性较差;Replicated卷提供了容错机制,但对物理磁盘空间利用率较低.那么可不可以结合Striped卷、Replicated卷两者的优点,开发一种具有即能提供容错机制、又能提高物理磁盘空间利用率的卷呢?于是有了EC纠删码卷的出现.在GlusterFS 3.6版本中发布了一种基于Erasure Code所开发的新类型卷Dispersed卷和Distributed Dispersed卷,简称EC卷,类似于RAID5/6.

(一)EC卷的架构

在GlusterFS存储中,EC卷是通过使用系统内存储的信息来重建丢失或损坏的数据,从而进一步加强对数据的保护.下面就简单介绍EC卷的自修复过程:首先客户端检查元数据是否一致;如果不一致,则向服务端发出数据修复请求;服务端接收到请求后则会调用entrylk()和inodelk()两个函数,先是和客户端通信确认,确认后,如果修复准备就绪,就开始对元数据进行修复;元数据修复成功后,下一步就是对数据块的修复了,数据块在修复期间是没有锁的;数据块修复成功后会再次调用inodelk()函数,用于同步元数据(如扩展属性),同步成功后,自修复也就完成了.其架构如下图所示:

 

图5:架构图

在GlusterFS存储中,有两种卷是基于erasure codes的,分别是Dispersed卷和Distributed Dispersed卷.其核心思想是以计算换容量,和RAID类似,同样突破了单盘容量的限制,且能够通过配置Redundancy(冗余)级别来提高数据的可靠性,也就是说存储系统底层不做RAID,使用EC卷就能提供大容量的存储空间,还能保证较高的存储可靠性.

Dispersed卷可以有任意多个bricks(B),且可配置冗余度redunancy(R),R最小值为1,最大值为(B-1)/2.R的最小值不能为0的原因在于,如果当R的值为0时,卷就不提供容错机制了,其性能还不如直接使用哈希卷,所以限定R最小值为1;R的最大值为(B-1)/2的原因在于,当R的值为B/2时,其存储利用率和replica-2复制卷相同,但其性能就远远不如replica-2复制卷了,所以限定其最大值为(B-1)/2.R最小值、最大值的确定使得B的最小值被确定为3,也就是说创建EC卷至少需要3个brick,才能创建成功.

Dispersed卷提高了存储空间的利用率,其存储利用率计算公式为(B-R)/B,有效存储空间为(B-R)*Brick_size,在理论上存储空间利用率可以达到99.9%.也就是说,能够保证在提供一定容错机制的情况下,最大限度的提高存储利用率.

Dispersed卷提高了存储的可靠性,只要任意大于等于B-R个brick能够正常则数据可正常读写,就能够保证数据是可用的、可恢复的;同时还优化了带宽的使用,且部分文件数据的分片失效引起的降级读写不影响其他文件数据的读写.

(编辑:辽源站长网)

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

推荐文章
    热点阅读