解析分布式存储选型和应用九个典型问题

开发 前端 数据管理
通过使用分布式存储,可解决现有集中式存储系统在性能、可维护性、可用性以及可扩展性等方面存在的问题。但在企业分布式存储落地过程中,适用场景以及技术路线如何选型成为必须解决的问题。

一、在DevOps、微服务化、容器等新技术的落地过程中分布式存储有哪些优势和不足?

【问题描述】存储是IT架构最基础的部分,新技术的发展对存储提出了更高的要求,分布式存储针对这些新技术有哪些特长?不足又有哪些?

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

分布式存储在IT架构中的定位更多的是资源的弹性伸缩,能力覆盖局限于 IaaS和成本方面,且分布式存储和集中式存储在面向PaaS和SaaS而言,呈现越来越友好的状态,具体在下列几个方面:

1.灵活扩展满足海量数据存储需求

分布式存储系统,采用Scale-out扩展架构,可实现超大集群规模的部署,从3节点存储集群起步,可实现灵活的扩展至数千节点。存储容量可实现一个集群EB级数据空间。同时由于分布式架构,每一个存储节点都可以提供独立的性能支撑,在高并发的数据处理中,可以实现更高的存储性能,更高的带宽吞吐和IOPS。有效的解决海量数据高扩展和高性能的存储需求。

2.弹性扩容与替换

由于实现了分布式存储平台,那么此平台无论多少个节点都可以看作一个资源池,每一个节点可以看做这个资源池的一个分子。通过系统预装、软件优化可直接将分子加入到整个平台之中,因而,在存储性能或者容量资源不够时,均可以通过添加硬件资源来提升存储集群的相应资源。

另一方面,由于硬件采用标准化X86服务器,并且集群内每个节点均通过软件系统进行统一管理,在硬件设备老旧或者故障时,可便捷的直接更换新硬件,加入集群中。简单方便并且对于上层业务无感知。友善的提供产品更替。并且,更替节点或者磁盘后,存储系统将会进行自动重建数据,平衡各节点的数据分布。此操作无需人工干预即可自动完成。降低使用难度。

3.可视化、标准化让管理更简单

相较于传统存储黑盒子的管理方式,分布式存储实现了标准硬件的交付,标准硬件服务器的运维管理会更简单。在存储生命周期过程中的管理具备以下优点。

部署上线:存储节点内置与硬件深度优化后的存储系统,30分钟即可实现部署上线。告别传统的软件部署安装,调优适配,真正实现了开箱即用。

配置规划:按照系统指示,实现资源分配和管理。资源配置可实现灵活的分配和回收。配置规划全部可视化操作,无需人工手动记录对应关系,一切均可直观使用管理。

管理运维:直观的可视化管理设计,可实现全集群的一页管理。硬件的cpu、网络、磁盘等健康监控,到逻辑卷、用户数、存储集群的稳定运行情况均可动态展示,做到实时监控预警。

故障排查:故障排场从传统的故障告警实现了提前预防。分布式存储可实现集群的健康监测,在故障潜伏期即可实现故障提醒。真正实现故障的提前处理,防患未然。

4.统一存储资源,实现数据共享共用

分布式存储系统通过统一硬件资源池,同时提供块、文件、对象三种存储服务。因而,数据中心的数据将统一存放到云存储资源池中。通过存储管理系统,可根据用户指令实现数据的调动与共享。

另一方面,存储系统内置数据治理,数据分析等于数据强相关的数据应用系统,可实现便捷的数据处理,并将处理好的完整数据对接到大数据平台实现大数据的分析与应用。便捷的实现数据价值的挖掘,助力企业正在实现数字化转型!

5.更高的可靠性

分布式存储系统在数据冗余方面,通过多副本、纠删码等技术,不仅可以容忍多磁盘的故障不影响数据可靠性,在数据重构修复方面效率也大大提升。由于采用了热备空间概念,将原本一块磁盘重构数据的压力均摊到多磁盘上,速度可提升至1T/30min。另一方面,由于采用了无中心化设计,所有存储节点均可承载业务系统,分布式存储还能够容忍服务器故障,存储系统依然稳定可用,可靠性更优。

二、分布式存储应用场景有哪些呢?

【问题描述】目前,虽然分布式存储成熟度已经在实际环境中有了一定的验证,不过应该还没有铺开用呢吧?因此,分布式存储是否有它本身去适用的场景呢?有哪些更适合去用分布式存储?有哪些因素我们应该去评估,使用分布式存储呢?比如说备份:我们用一台传统大盘存储,是不是也就满足了,而不是用对象存储。这样成本也会很低了。

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

分布式的“四高”特性,使得其在高性能计算、大数据视频云及大数据分析等应用场景中有着广泛的应用。

高性能计算场景

在如气象气候、地质勘探、航空航天、工程计算、材料工程等领域,基于集群的高性能计算,已成为必需的辅助工具。集群系统有极强的伸缩性,可通过在集群中增加或删减节点的方式,在不影响原有应用与计算任务的情况下,随时增加和降低系统的处理能力。根据不同的计算模式与规模,构成集群系统的节点数可以从几个到成千上万个。这些业务对后端的存储系统提出了新的需求,包括统一的存储空间、高效率的文件检索、高带宽的吞吐性能,高可靠的数据安全保障等。

大数据视频云应用场景

随着视频高清技术及超高清技术的普及,视频大数据应用场景,如雪亮工程、平安城市、广电媒资、影视制作、视频网站等领域,对存储设备提出了大容量、高读写性能、高可靠性、低延时及可扩展性等需求。针对这样大规模视频数据应用场景,就需要一个技术先进、性能优越的存储系统作为后端数据存储的支撑者。

大数据分析应用场景

伴随着互联网技术及人工智能的发展,各种基于海量用户/数据/终端的大数据分析及人工智能业务模式不断涌现,同样需要充分考虑存储功能集成度、数据安全性、数据稳定性,系统可扩展性、性能及成本各方面因素。

在数据爆发增长的“数字时代”,软件定义的分布式存储是存储技术高速发展的结晶,并具有着很大的成长空间,必将应用于更广泛的大数据业务场景。

三、银行业在分布式存储与集中存储的选择上应注意哪些问题?如何选择适合的存储类型?

@赵海 技术经理:

银行业的数据:

交易数据:属于结构化数据,以二维表的形式存在于交易系统数据库当中,属于首要数据。

影像数据:客户签约所需的非结构化或者半结构化数据,存在内容管理平台当中。

历史数据:从数据库当中归档出来的历史数据。

分析数据:从交易系统当中下沉的数据,用来做监管报送、反洗钱、运营分析等的分析类数据。

运维数据:日志、报告、监控等一系列系统运行相关的数据。

存储的选择,究竟是分布式存储还是集中式存储,主要看两点:

1. 数据结构是什么样的?如果是交易类的结构化数据,那么一般都是二维表形式,以块数据存取方式为最优。因为存储层与数据库层对数据存取粒度,事务的处理,并发的控制都非常契合,性能也是最好。如果是非结构化或者半结构化的影像数据,不妨选择分布式存储,节省成本而且提高了业务的并发能力。

2.稳定性如何?交易类的数据一定要求是稳定的存储平台,不成熟的的分布式架构或者应用资历尚浅的不要轻易用到交易类系统上。

四、分布式存储选型有何依据?

【问题描述】目前分布式存储厂商太多,一搜一大把。有基于ceph进行二开的,也有一些说是自研的。有重在软件类的,也有搞一体机绑定的,那么我们应该如何做选型呢?

1.cpu、mem、缓存磁盘等等如何选择?

2.选型依据都有哪些指标以及对应的参数?

3.形态是纯软还是软硬一体的会有哪些差异呢?

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

1.cpu、mem、缓存磁盘等等如何选择?

如果是软件定义存储,一切以实际场景对cpu、men、缓存的需求为准,如果是一体化存储,相对的型号有对应的建议场景需求。

2.选型依据都有哪些指标以及对应的参数?

主要看场景,比如私有云部署,海量非结构化数据,高性能计算,流媒体和视频监控场景,对应参数,建议按照现场需求,如IOPS、吞吐。

3.形态是纯软还是软硬一体的会有哪些差异呢?

纯软,便宜,更灵活

一体化,贵,更可靠更稳定

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

【问题描述】分布式存储和集中式存储相比,有很强的价格优势,在实际使用过程中,依然需要通过容量管理的方式对存储成本进行评估,存储成本在分布式存储体系中,更多的以集群使用率进行呈现。在目前开源的分布式存储产品中,绝大多数采取伪随机算法的方式进行数据平衡,比较典型的是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上自动迁移,达到均衡的效果。

六、如何有效和智能的控制并恢复IO,减少因IO问题导致数据批量计算的影响,是分布式存储考虑和解决的问题?

【问题描述】金融场景具有高密集IO的特性,尤其在数据批量计算方面,分布式存储在频繁数据分布和迁移过程中通常会带来IO争抢的问题,在大规模集群遇到扩容或硬盘替换时尤为明显,给分布式存储在金融领域的深入使用带来了一定的风险。如何有效和智能的控制并恢复IO,减少因IO问题导致数据批量计算的影响,是分布式存储架构师必须要考虑和解决的问题?

@Lucien168 滴滴 存储工程师:

backfill和recovery的最优值

ceph在增加osd的时候会触发backfill,让数据得到平均,触发数据的迁移

ceph在移除osd的时候需要在节点上进行数据的恢复,也有数据的迁移和生成

只要是集群里面有数据的变动就会有网卡流量,cpu,内存等资源的占用,并且最重要的是还有磁盘的占用,这个客户端也是需要对磁盘进行访问的,当请求出现碰撞的时候,肯定会比正常的情况下要慢很多,而且还有可能因为资源方面的原因而引起机器down机等异常状况的出现

主要引起的问题可能:

  • * 在peering的时候 block 了IO请求
  • * 在backfill的引起了slow requests
  • * 上面的两个情况会引起客户端的降速和出现soft lockup

这个在一般情况下会出现不同的需求:

1. 慢点可以一定不能出问题,不能中断业务

2. 越快迁移完越好,早点结束维护服务

3. 需要又快又不能影响业务

这个需要根据自己可以掌控的程度来进行控制,首先环境的不同,影响不同,迁移数据量,网卡的带宽都是重要的影响因素,从整体上可以根据自己的环境按照上面的三个要求中的一个进行控制。

osd recoveryoppriority = 3#默认值10 #恢复操作优先级,取值1-63,值越高占用资源越高osd recovery max active = 3#默认值15 #同一时间内活跃的恢复请求数osd max backfills = 1#默认值10 #一个OSD允许的最大backfills数osd recovery max active = 3 (default : 15)osd recoveryoppriority = 3 (default : 10)osd max backfills = 1 (default : 10)

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

从分布式存储在金融领域的实际使用过程中,不定期会有常规的运维操作,比如题主所提到的大规模集群的扩容和磁盘更换,IO争抢也是较为常见的问题之一。

抛砖引玉,笔者所遇到的大规模集群中,单个集群超过1K的存储节点,按照正常的概率,每个月会有数量不等的磁盘损坏,每个季度会存在一次集中换盘,这些操作都会通过数据迁移、数据负载和数据平衡的方式进行数据恢复,IO争抢大都发生在这个场景, 高密集IO计算的争抢更多的取决于数据分布算法的合理性。

通常情况下,抛开分布式存储自身的算法,更多的采取时间策略+流量策略的方式规避IO争抢,比如在业务高峰期避开磁盘变更窗口,而流量策略更多的是基于数据流量恢复速率阈值匹配业务场景,最终实现 在不影响业务IO的情况下,快速完成数据迁移恢复。

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

分布式存储在发生OSD变化的时候确实会导致IO波动,特别是在扩容或升级时,会做自身的的数据均衡,发生大规模的数据迁移造成IO数据影响。所以为了避免了类似情况发生,需要考虑业务的繁忙时间段,避免在高峰期进行磁盘或节点扩容等操作。

除了避免时间固定时间窗口以外,在扩容策略上,还要避免一次大规模增加OSD数量。比如每次只扩容一个OSD或者一个节点(按存储隔离策略),虽然工作量会增加一些,但是不会造成大规模的持续性的影响。

在由于故障导致数据恢复时,可以限定数据恢复的流量策略,例如将恢复流量占用IO利用率阈值小于30~50%来保证生产IO的性能,这些都是避免IO争用的手段和策略。

七、分布式存储出现整个集群故障,如何保障数据安全性?是否可以跟传统存储一样可以做数据恢复?

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

针对这个问题可以这么看,如果单机房部署,分布式存储所有的冗余措施全部失效,触发整个集群故障,必然不能保障数据的安全性,只能从业务层面进行数据补录,这种概率非常低。

如果多机房部署,出现整个集群宕机的概率极底,如果多机房部署的情况下出现单机房不能提供服务,有两种方式。

1、单侧机房发生了全局故障,数据完全丢失,另一侧机房承接主站点工作,等待机房故障解决或集群故障解决后,同步数据,需要花费较长时间。这种数据同步的方式叫做数据回迁。

2、 单侧机房发生临时性故障,故障恢复之后,可以提供对象存储服务,原来的主站点从临时故障中恢复,需要从备站点同步的数据量相对较小。

八、分布式存储的数据灾备复制?

【问题描述】目前已知的分布式存储的数据灾备复制方式,主要是采用第三方的数据复制软件。请问老师,现在有没有开发出类似于传统存储机头的同步、异步复制技术?如果有,两端的结构是否必须保持一致?

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

分布式存储系统在数据冗余方面,通过多副本、纠删码等技术,不仅可以容忍多磁盘的故障不影响数据可靠性,在数据重构修复方面效率也大大提升。由于采用了热备空间概念,将原本一块磁盘重构数据的压力均摊到多磁盘上,速度可提升至1T/30min。另一方面,由于采用了无中心化设计,所有存储节点均可承载业务系统,分布式存储还能够容忍服务器故障,存储系统依然稳定可用,可靠性更优。

九、分布式存储的扩容方案?

【问题描述】分布式存储在初建的时候,通常已经规划好最优的方案,各个节点的职能已确定。在生产使用中,若存储系统容量已不满足当前新增的需求,必须进行扩容。扩容是否新的存储节点不是加入原来的集群,而实际上相当于再新建一套分布性存储系统?

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

由于实现了分布式存储平台,那么此平台无论多少个节点都可以看作一个资源池,每一个节点可以看做这个资源池的一个分子。通过系统预装、软件优化可直接将分子加入到整个平台之中,因而,在存储性能或者容量资源不够时,均可以通过添加硬件资源来提升存储集群的相应资源。

另一方面,由于硬件采用标准化X86服务器,并且集群内每个节点均通过软件系统进行统一管理,在硬件设备老旧或者故障时,可便捷的直接更换新硬件,加入集群中。简单方便并且对于上层业务无感知。友善的提供产品更替。并且,更替节点或者磁盘后,存储系统将会进行自动重建数据,平衡各节点的数据分布。此操作无需人工干预即可自动完成。降低使用难度。

责任编辑:武晓燕 来源: twt企业IT社区
相关推荐

2022-08-28 09:05:34

分布式存储Ceph

2017-10-27 08:40:44

分布式存储剪枝系统

2019-07-19 15:51:11

框架选型分布式

2018-11-26 15:12:45

存储选型架构

2021-05-17 09:32:18

分布式存储问题数据

2018-09-29 14:08:04

存储系统分布式

2015-05-12 13:03:54

开源分布式存储HDFS

2022-10-08 15:41:08

分布式存储

2024-02-19 00:00:00

分布式定时任务框架

2021-02-10 09:54:15

分布式NacosApollo

2024-01-08 08:05:08

分开部署数据体系系统拆分

2018-09-14 11:11:04

分布式文件存储

2018-02-22 08:42:04

分布式存储安全

2022-08-09 08:40:37

框架分布式定时任务

2024-01-09 08:00:58

2018-06-08 08:46:14

RaftPaxos系统

2017-01-10 16:18:26

分布式存储建设

2017-11-22 10:23:32

存储系统VeSpace

2017-10-17 08:33:31

存储系统分布式

2018-10-09 10:45:40

点赞
收藏

51CTO技术栈公众号