数据库 频道

分布式存储使用过程中稳定性和可靠性如何保障?​

分布式存储和集中式存储相比,有很强的价格优势,在实际使用过程中,依然需要通过容量管理的方式对存储成本进行评估,存储成本在分布式存储体系中,更多的以集群使用率进行呈现。在目前开源的分布式存储产品中,绝大多数采取伪随机算法的方式进行数据平衡,比较典型的是Ceph,因此导致分布式存储在使用一定时间后,出现集群可用率造成较大的误差。分布式存储架构师和工程师需要通过相应的技术手段监控分布式存储的数据使用情况和数据平衡状态,其中包括灾难性数据迁移和数据分布阈值,保障分布式存储在使用过程的稳定性和可靠性。

问题来自社区会员


@顾黄亮 苏宁消费金融有限公司 技术总监:

从根本上说,这是数据均衡的问题,在Ceph的技术体系中,尤为突出。

数据均衡是保证分布式存储的每个盘的数据相对分布均衡,依靠自身的数据均衡算法,确保数据分布能够 遵循每个Pool的Rule-Set规则,同时又要保证每个Pool对应的PG较为合理的分布在每个OSD中,在Ceph的数据均衡体系中,每个Pool的作用是不一样的,有的存放元数据,有的存放业务数据,因此容易造成数据分布存在不均衡性。

在Ceph新版本中,已经实现了数据分布的智能管理,在很多商业分布式存储产品,也具备类似的功能,通过相关的计算模型,根据数据的汇入进行实时的迭代计算,能够对数据分布进行最优分布管理,据实际统计,数据分布的误差基本可以控制在2%之内。


@Lucien168 滴滴 存储工程师:

分布式系统一般都是靠 分布式协议paxos算法或者Raft算法来保证集群的高可用性和可靠性,一般只要运维和监控的保障不会出现大问题。

数据不均衡:

但是咱们在运维的过程中,会发现ceph的crush算法,会导致数据倾斜, 集群中数据的不均衡。这个时候就需要我们监控的及时告警,以及运维工具定期的做reblanace来保证集群数据的均衡性。

迁移IO争抢:

在集群节点有变动的时候会导致集群均衡的迁移,那么集群内部的迁移IO肯定会影响客户端请求的IO,这个时候需要我们针对集群内部IO设置优先级以及控制好速率,优先来保证客户端IO的完成。


@刘东 东软集团 it技术咨询顾问

在以ceph为代表的分布式存储的集群中确实会存在数据分布不均衡的问题,特别是在刚刚部署完成ceph群集或进行集群扩容的时候,加入了新的盘,会使这个情况更加严重,OSD数量会发生变化,,而集群中只要有一个OSD先被写满,那么整个集群都将无法写入数据,所会极大的影响存储稳定性和可靠性。

为了尽可能避免这种情况,提高分布式集群存储利用率,需要尽可能的将PG均匀分布在OSD上,通常有以下几种做法:

1,设置osd均衡权重,做osd reweight,可以根据每个OSD上的PG数量来调整,默认值是120%。当然这种方式需要定期监控状态,并不是一个自动化的方案。

2,使用balancer的方式,将PG 在各个OSD上自动迁移,达到均衡的效果。

0
相关文章