前言:
分布式存储系统-为了简化用户端的使用,提供了一个分布式缓存系统来提供对此分布式存储系统的访问接口以及本地数据缓冲以降低网络压力。
一、什么是分布式存储?
分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
二、分布式存储的技术原理
1、元数据管理
在大数据环境下,元数据的体量也非常大,元数据的存取性能是整个分布式文件系统性能的关键。常见的元数据管理可以分为集中式和分布式元数据管理架构。集中式元数据管理架构采用单一的元数据服务器,实现简单.但是存在单点故障等问题。分布式元数据管理架构则将元数据分散在多个结点上.进而解决了元数据服务器的性能瓶颈等问题.并提高了元数据管理架构的可扩展性,但实现较为复杂,并引入了元数据一致性的问题。另外,还有一种无元数据服务器的分布式架构,通过在线算法组织数据,不需要专用的元数据服务器。但是该架构对数据一致性的保障很困难.实现较为复杂。文件目录遍历操作效率低下,并且缺乏文件系统全局监控管理功能。
2、系统弹性扩展技术
在大数据环境下,数据规模和复杂度的增加往往非常迅速,对系统的扩展性能要求较高。实现存储系统的高可扩展性首先要解决两个方面的重要问题,包含元数据的分配和数据的透明迁移。元数据的分配主要通过静态子树划分技术实现,后者则侧重数据迁移算法的优化。此外,大数据存储体系规模庞大.结点失效率高,因此还需要完成一定的自适应管理功能。系统必须能够根据数据量和计算的工作量估算所需要的结点个数,并动态地将数据在结点间迁移。以实现负载均衡;同时.结点失效时,数据必须可以通过副本等机制进行恢复,不能对上层应用产生影响。
3、存储层级内的优化技术
构建存储系统时.需要基于成本和性能来考虑,因此存储系统通常采用多层不同性价比的存储器件组成存储层次结构。大数据的规模大,因此构建高效合理的存储层次结构,可以在保证系统性能的前提下,降低系统能耗和构建成本,利用数据访问局部性原理.可以从两个方面对存储层次结构进行优化。从提高性能的角度,可以通过分析应用特征,识别热点数据并对其进行缓存或预取,通过高效的缓存预取算法和合理的缓存容量配比,以提高访问性能。从降低成本的角度,采用信息生命周期管理方法,将访问频率低的冷数据迁移到低速廉价存储设备上,可以在小幅牺牲系统整体性能的基础上,大幅降低系统的构建成本和能耗。
4、针对应用和负载的存储优化技术
传统数据存储模型需要支持尽可能多的应用,因此需要具备较好的通用性。大数据具有大规模、高动态及快速处理等特性,通用的数据存储模型通常并不是最能提高应用性能的模型.而大数据存储系统对上层应用性能的关注远远超过对通用性的追求。针对应用和负载来优化存储,就是将数据存储与应用耦合。简化或扩展分布式文件系统的功能,根据特定应用、特定负载、特定的计算模型对文件系统进行定制和深度优化,使应用达到最佳性能。这类优化技术在谷歌、Facebook等互联网公司的内部存储系统上,管理超过千万亿字节级别的大数据,能够达到非常高的性能。
二、通常部署分布式存储需要考虑那些因素
1、一致性
分布式存储系统需要使用多台服务器共同存储数据,而随着服务器数量的增加,服务器出现故障的概率也在不断增加。为了保证在有服务器出现故障的情况下系统仍然可用。一般做法是把一个数据分成多份存储在不同的服务器中。但是由于故障和并行存储等情况的存在,同一个数据的多个副本之间可能存在不一致的情况。这里称保证多个副本的数据完全一致的性质为一致性。
2、可用性
分布式存储系统需要多台服务器同时工作。当服务器数量增多时,其中的一些服务器出现故障是在所难免的。我们希望这样的情况不会对整个系统造成太大的影响。在系统中的一部分节点出现故障之后,系统的整体不影响客服端的读/写请求称为可用性。
3、分区容错性
分布式存储系统中的多台服务器通过网络进行连接。但是我们无法保证网络是一直通畅的,分布式系统需要具有一定的容错性来处理网络故障带来的问题。一个令人满意的情况是,当一个网络因为故障而分解为多个部分的时候,分布式存储系统仍然能够工作。
三、分布式存储的应用场景
1、分布式块存储:
(1)云平台,私有云建设,分布式存储非常适合云平台的场景,传统集中式存储,一般都是标准iscsi协议挂载卷到openstack端,每个lun都需要单独挂载。配置MPIO等。而分布式存储是通过rbd协议挂载存储池给openstack,openstack端直接在存储里划分和创建卷,调用快照等高级功能,分布式存储和openstack是天生适配,更加合适openstack的私有云的发展。
(2)容器场景:2018年12月发布Kubernetes 1.13版本,用于容器编排引擎的标准存储接口container storage interface(CSI)已普遍可用。在这些产品中,容器本地数据服务的需求对于支持微服务结构变得非常重要,这些需求包括硬件不可知性、API驱动、基于分布式架构,能够支持边缘、核心或公共云部署等。超过 70% 的容器应用需要有状态数据持久化保存,SDS可以解决:需要敏捷的数据迁移、从多个应用容器同时访问数据的需求。所以容器场景的弹性灵活的需求也是非常适合分布式存储。
2、分布式文件存储:
分布式文件适合大容量文件存储场景,横向扩展灵活,性能优于双控存储,例如非线编,共享NAS,高性能计算等等都非常适合,文件存储也是现阶段三种存储中市场使用最高的,但有些也在慢慢转对象存储,对象存储接口协议在逐步开发中,会有一个过渡阶段。
3、分布式对象存储:
海量小文件需求,检索需求,大数据方向,金融的影像平台,有互联网传输需求,和公有云整合,企业高校的网盘,监控等等非结构化场景都适合,包括一些医疗的pacs也在逐步过渡到对象存储,未来最有爆发潜力的存储。
文件和对象都针对的非结构化场景,文件往对象转是大势所趋,在于对象S3接口的逐步推广,所以XSKY的对象存储支持文件和对象互操作(文件协议写入,对象方式读出,反之亦然)也是顺应市场需求的产物。
四、国内分布式存储的市场份额介绍
IDC最新发布的《中国软件定义存储(SDS)及超融合存储(HCI)系统市场季度跟踪报告,2019年第四季度》报告显示,中国区软件定义存储(SDS)在2019年较去年同期实现46.8%增长,华为分布式存储继续稳居中国区软件定义存储市场第一,市场份额达41.7%,已经超过第二到第五名厂商的总和。这也是华为分布式存储连续第四年在中国区市场位列第一。