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

GlusterFS企业级功能之EC纠删码

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

Disperse卷中,Chunk的大小可配置,其大小与具体的Redundancy配置有关,其大小等于512*(B-R) bytes.可通过调整Redundancy的配置(注:Redundancy的配置在Disperse卷创建之后就确定,不可修改),来修改Chunk的大小.那么以官方经典的配置B=6,R=2的Disperse卷为例,得出Chunk的大小为(6-2)*512 = 2048 bytes.

Chunk的大小与性能有关,而性能又与访问模式以及文件大小有关.其性能会随着Chunk的大小改变而改变,用户可以根据具体的应用场景,通过调整Chunk的大小,在存储利用和可靠性之间做均衡选择,从而获得更好的性能.

图6:Dispersed卷的存储机制

2. Disperse卷的编码
Disperse卷使用算法Rabin IDA(Information Dispersal Algorithm)进行编码,其中R(redundancy)个校验数据由(B-R)个原始数据计算得出.

图7:Dispersed卷的编码

3. Disperse卷的失效数据恢复
任意数据/校验块的失效都可用(B-R)个数据/校验块通过解码/编码恢复,数据块通过解码方式恢复,校验块通过编码方式恢复.

图8:Dispersed卷的失效数据恢复

4. Disperse卷的读操作
读操作,每个Chunk都必须从B-R个brick中成功读取B-R个数据/校验分片;尽量读数据块而不是校验块;校验块轮询分布在各个brick上,达到更好的平衡负载.

图9:Dispersed卷的读操作

5. Disperse卷的写操作
(1)普通的写操作
根据(B-R)个原始数据块使用算法IDA计算得出R(redundancy)个校验块,然后再把数据块和校验块以条带的方式一起写入底层所有brick中.

图10:Dispersed卷的写操作

(2)部分写
部分写分为两种情况,一是没有失效的数据块分片,首先将不完整的Chunk将读出来,然后结合新写入数据重新计算校验块,最后再把数据块、校验块统一写入底层brick中;二是有失效的数据块分片,首先利用该Chunk中其他的分片通过编码/解码计算恢复,最后再把数据块、校验块统一写入底层brick中.

(三)EC卷的参数介绍

在Gluster3.7版本中,EC卷有disperse.eager-lock、cluster.disperse-self-heal-daemon、cluster.heal-timeout、disperse.background-heals、disperse.heal-wait-qlength以及disperse.read-policy等几个参数,下面就对几个重要的参数进行简单介绍:
disperse.eager-lock:默认值为on,建议把这个参数设置为off.设置为off时,虽然会降低读性能,但当对于文件的操作完成后文件锁能够立即得到释放,从而提升一些操作(如写操作、修复等操作)的性能.
disperse.background-heals:默认值为8,用来控制平行修复时的个数.
disperse.heal-wait-qlength:默认值为128,用来控制等待修复的个数.
disperse.read-policy:默认值为round-robin,用来设置读的策略.
cluster.heal-timeout:默认值为600,用来设置自修复进程检查需要自修复文件的时间间隔.

 

在Gluster 3.9版本中,EC卷又增加了disperse.shd-max-threads、disperse.shd-wait-qlength、disperse.cpu-extensions等三个参数,由于篇幅有限在这里就不做介绍了.

四、EC纠删码卷实践?

(一)EC实践总结

1、Disperse卷的创建
Disperse卷的创建与节点个数无关(节点个数大于等于1),只与bricks(B)、冗余度redunancy(R)相关;其中bricks(B)必须大于等于3,disperse-data 的个数必须要大于等于2,redunancy(R)的值最小为1,最大为(B-1)/2、必须小于bricks(B)的一半且值是不能改变的.

2、Disperse卷的数据存储
disperse卷的单个底层brick中不具有完整数据,需整合多个brick上的数据片段才能看到完整的文件数据;底层brick中存储的不是原始数据;数据块和校验块是存储在一起的.

3、Disperse卷的数据恢复
在配置bricks(B)为3,冗余度redunancy(R)为1的disperse卷中,任意挂掉一个brick后,数据都能够恢复,且不影响正常访问;在修复大文件数据时,需要同步访问来触发才能修复数据;修复小文件数据,则不需要;手动删除底层brick中的数据,也能够实现修复.

4、Disperse卷的扩展
三个brick的disperse卷不能同时扩展一个或两个brick,只能同时扩展3n(n>=1)个brick,即disperse卷不能任意扩展卷,只能同时扩展n*B(n>=1)个brick;Distributed Dispersed 卷可以通过扩展Dispersed 卷生成;Dispersed 卷可在在线扩展,且扩展过程中不影响数据的访问.

(编辑:辽源站长网)

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

推荐文章
    热点阅读