随着互联网类新兴业务的激增、业务数据快速增长,云存储技术应运而生。本文深入剖析了云存储通用框架、硬件架构以及其底层原理这三个技术层面的差异性,为云存储架构框架设计提供了理论依据;再结合细分行业及其业务应用场景的差异性需求,最终确定了满足企业需求的云存储总体架构,并详细介绍了架构设计评估和技术选型过程中的一些实践经验。
【作者】陈萍春,现就职于保险行业,拥有多年的系统、存储以及数据备份等运维工作经验。
1. 概述
随着互联网类新兴业务的激增、业务数据快速增长,使得企业数据中心存储系统面临新的挑战:大数据、云计算等新技术应用带来了新的存储应用场景;海量数据存储冲击着传统存储架构,性能容量成为瓶颈;存储系统扩容和新建周期长,无法满足业务敏捷需求。
云存储技术应运而生,敏捷、资源可弹性部署、按需获取的特性很好地满足了数据中心海量数据和新兴业务快速上线的存储需求。
2. 云存储技术分析
顾名思义,云存储是在云计算基础上衍生和发展出来的,通过网络将大量异构存储设备构成了统一的存储资源池,在集中式存储技术基础上,融合了分布式存储、多租户共享、软件定义存储等多种云存储技术。
新技术应用都有其两面性,在设计构建云存储架构框架之前,有必要详细了解和剖析云存储技术,这样才能结合自身需求做好规划。下文将从云存储通用框架、存储硬件架构以及分布式底层存储技术这三方面展开叙述。
2.1 云存储通用框架
相比于传统存储来说,云存储系统是一种层次化的体系结构,其通用框架可参考图 1 分为云存储服务和云存储资源池两种,其中云存储资源池是云存储最为核心的部分。
图 1.云存储通用框架图
云存储资源池又可细分为数据存储层、存储抽象层和存储接口层。数据存储层是云存储的基础,由不同类型的硬件设备组成,提供多种 IO 性能的存储资源;存储抽象层实现了不同类型的存储设备的逻辑虚拟化管理,为上层应用提供不同存储资源的抽象,实现存储资源的灵活调配;存储接口层提供了不同类型的存储接口,实现存储系统与外部应用的数据传输。
云存储服务为用户提供统一的协议和编程接口,提供云数据盘和对象存储服务,是云存储资源调度控制的入口,授权用户可以公共应用接口访问云存储。
2.2 云存储硬件架构
数据存储层可根据差异化的需求、细分行业以及不同的应用场景,部署不同架构的数据存储,这也是存储硬件选型的关键。一般可分为集中式和分布式两种存储架构,其中分布式存储中又可以依据计算与存储是否解耦,再细分为独立部署与超融合两种架构,下文将对这三种架构存储进行评估。
2.2.1 集中式存储
集中式存储的代表是传统 SAN 存储或 NAS 存储,使用专用硬件和存储控制器。其架构如图 2 所示,存储控制器采用双控或多控互联架构,包含 RAID 功能和大容量 Cache 。控制器后端连接到磁盘柜,磁盘柜包含了多个 RAID 组,每个 RAID 组又包含多块磁盘,这就组成了集中式的磁盘阵列。
图 2.集中式存储硬件架构示意图
集中式存储一般提供块存储或文件存储接口服务,其优点可总结为:
性能:IO 分片粒度小,数据 IO 传输路径短,表现为低时延和高 IOPS ;
可靠性高 :专有硬件和存储控制器的可靠性高,基于 RAID 和硬件冗余等技术也较成熟;
数据强一致性: 控制器、磁盘间的集中式互联架构最大限度地保证了数据的强一致性。
当然传统集中式存储也有其劣势,这也是分布式架构兴起的原因,表现在:
扩展性差: 集中式存储是无法无限制地扩展磁盘柜的,受限于存储控制器的扩展能力;
成本较高: 集中式存储的高可靠专有硬件也会带来更高的设备采购成本和维保成本。
2.2.2 分布式存储 - 独立部署架构
分布式存储采用可扩展的系统结构,通过网络将数据分散存储在多*立的存储节点上,其架构如图 3 所示,分布式存储 - 独立部署架构由多个专门的存储节点组成,对外提供各种存储服务。
图 3.分布式存储 -独立部署架构示意图
分布式存储不再依赖于传统专用硬件,大部分部署在通用服务器之上,通过软件定义的方式来实现核心存储逻辑,其优势在于:
灵活迭代: 相比于硬件的迭代,软件版本迭代周期更快更灵活;
硬件成本低: 消除了专有硬件依赖,硬件成本低;
易扩展: 分布式架构易于横向扩展,性能容量线性扩展。
而分布式存储的劣势在于:
复杂度高: 相比于集中式单体架构来说,分布式运维复杂度高;
稳定性低: 部分产品技术成熟度不够,硬件故障或系统异常场景下,存储性能易受影响。
2.2.3 分布式存储 - 超融合架构
超融合架构是一个包含计算、网络、存储的整体架构解决方案,其存储本身也是分布式存储。在超融合形态中,计算与存储是同一软件堆栈运行在通用服务器中的,其架构如图 4 所示,大多数超融合产品在其节点上会部署控制器虚拟机 CVM , CVM 会承担存储服务功能,而普通的虚拟机需与 CVM 通信才可访问数据存储。
图 4.分布式存储 -超融合架构示意图
超融合倾向于计算层和存储层可以很好耦合的设计理念,除了分布式存储的优点外,其优势还包括:
降低运维复杂度: 通过架构设计、部署、日常运维管理的简化,单一厂商可提供所有软硬件的支持。
而分布式存储的独立部署架构的优势在于资源*调配、计算与存储层可独立部署扩展。这样来看,超融合的劣势如下:
新的资源孤岛: 无法与外部做资源共享,会带来资源利用率和统一管理问题;
性能问题: 计算与和存储会争抢服务器硬件资源和网络带宽,性能问题会更明显;
横向扩展性不足: 性能风险也间接带来了无法大规模部署的问题;
系统内部复杂性: 系统架构的简化带来了更高的内部复杂性。
2.3 分布式底层存储技术
相比于集中式存储,分布式存储的复杂性更高,但更适应大规模的云部署场景,有必要深入了解其底层原理。分布式存储存在着独立部署和超融合的硬件架构差异,而从逻辑层面来看,不管是独立部署还是超融合架构,又主要分为分布式文件系统( DFS )和分布式键值( k-v )存储这两种存储技术。
2.3.1 分布式文件系统
云存储技术的复杂性还在于存储虚拟化技术,它屏蔽了数据 IO 与底层数据存储的映射与实现细节。如图 5 所示,分布式文件系统( DFS )是一种虚拟文件系统,本身有着文件目录结构特征。而 DFS 对外提供的存储单元则是由文件组成,这些文件又会被逻辑分片,再按照多数据副本分布算法分布到不同数据节点上。
图 5.基于 DFS的云存储底层原理示意图
基于 DFS 的云存储逻辑清晰,也有着比较广的应用范围,比如 GFS 、 HDFS 等典型应用,包括一些超融合底层存储也是基于 DFS 来实现的,但也存在着明显缺陷:
扩展性受限: 基于目录结构的文件系统,会成为 DFS 大规模扩展的瓶颈;
性能方面: 文件目录信息可以通过缓存到内存中来提高定位数据的速度,但是当文件数量达到一定量级时,硬件无法满足时,性能会急剧下降。
2.3.2 分布式键值存储
分布式文件系统的文件目录管理遵循着 map-reduce 的设计思路,化大为小,分而治之,再合并处理,其架构中需要元数据管理节点来协调,本质上还是一种中心化;分布式键值( k-v )存储是一种无中心化架构,解决了主节点本身的瓶颈,其架构设计思路则是均衡设计,所有节点的地位都是对等的,通过数据布局算法均衡分布在不同节点上。一致性 hash 算法和虚拟节点是一种通用做法,不同于简单散列 hash 将数据分布在一条直线上,而是采用首尾相连,将整个哈希值空间组织成一个虚拟圆环。
ceph 是一种典型基于分布式键值的存储系统,其 object 数据分布采用的是 crush 算法,是在一致性 hash 算法基础上,充分考虑多副本、故障域隔离等约束设计而来,其实现原理如图 6 所示。
图 6.基于分布式 KV的云存储底层原理示意图
与基于 DFS 的云存储相比,基于分布式 KV 的云存储可以支持更好的扩展性,但是也存在如下缺陷:
复杂度高: 基于分布式 KV 的云存储又增加了一层存储抽象,系统设计和运维复杂度都很高;
性能方面: 写入延时增加,多数据副本写入的时延更高一些;
3. 云存储架构框架设计
3.1 总体设计原则和方法
云存储总体设计应坚持以下三项原则:
合适原则: 应与具体所处行业和应用场景相适应,考虑企业实际业务应用情况,注重成本、收益、风险三方面的平衡;
简单原则: 云存储架构框架本身具有很高的复杂度,架构设计和实际落地过程中更应注意循序渐进,化繁为简;
前瞻性原则: 应采用业界主流云存储技术,保持技术的先进性,考虑架构的扩展能力。
云存储分析设计包括两种思维方法:
1)自顶向下
自顶向下方法是从云计算的整体架构出发,逐步求精,去分析设计云存储通用框架及其组成元素。该设计分析方法既需要对问题域有清晰的了解,对行业未来一段时间内的应用场景有清晰的认识,又需要能把控住求解域,对云存储技术发展和应用有深刻的认识。
2)自底向上
自底向上方法则相反,针对实际需要解决的问题,去做云存储产品的技术选型,逐步搭建云存储架构框架,从具体到抽象。
云存储架构框架设计采用哪种方法是需要根据企业实际情况来定的,自顶向下方法需要更高的技术把控力,也需要更多的项目预算,落地前需要谋而后动,充分测试;而自底向上的方法则追求快速应用落地,但需要注意技术应用的连贯性,也需要考虑架构框架最终目标。
而以我司实际情况来看,更适合采用自低向上的方法,根据各种业务应用场景,去评估落地适合的云存储方案,降低试错成本,在不断的实践过程中,去推进云存储架构框架的演进。
3.2 需求分析
3.2.1 应用场景分析
不同行业、业务场景往往决定了云存储不同的应用场景,传统行业和互联网行业之间往往也有着明显差异:
核心业务应用场景: 传统行业核心业务逻辑的变化不频繁,核心系统的业务量增长是规律的,可预估的,系统架构稳定;而互联网行业来说,业务系统追求敏捷迭代,业务量起伏变化较大,系统架构从简单到复杂,要求弹性伸缩;
互联网业务应用场景: 对于传统行业来说,互联网是一种新的业务拓展渠道,是业务转型的方向,需要逐步试点开放的;
非结构化数据场景: 非结构化数据场景也有很大差异,在部分场景下,非结构化数据多是系统产生或收集的临时数据,一次写入多次读取,要求 IO 性能稳定,如个人网盘场景;另外一些场景下,非结构化数据要求长期存放,一次写入很少读取,逐渐成为冷数据,典型的如银行保险业务双录场景;
数据灾备与安全: 无论是传统行业还是互联网行业,都需要考虑业务连续性需求,建立数据灾备体系和敏感数据保护方案。而金融行业还有着更加严格的国家法律法规和金融监管部门要求,业务系统的 RTO 、 RPO 要求更加明确,重要、敏感数据需要安全可控,一般会审慎选择云存储的部署模式。
3.2.2 数据存储需求
部署模式
敏感数据情况决定了云存储的部署模式,对于涉及敏感数据较多的系统,一般采用私有部署模式;对于非敏感数据,云存储的成本往往是一个是重要的考虑点,公有云部署除了考虑数据存储费用外,也还需考虑存储流量费用。
综合考虑我司的业务应用场景,云存储排除了公有云模式,而是采用了私有部署模式。
存储访问接口
存储访问接口对应的是云存储的功能需求,对于我司来说,包括块存储、 NAS 存储接口和对象存储 S3 接口。块存储对应于云服务器硬盘需求, NAS 存储对应于多个云服务器间的文件共享需求,对象存储 S3 接口对应于互联网类业务非结构化数据存储和冷数据归档需求。
数据存储分级
数据存储分级可以在满足不同业务系统存储需求的基础上,降低整体云存储成本,结合我司业务情况分为:a). 核心业务类型系统及其数据库,需要最高的存储性能和可靠性;b). 其他轻量级数据库,需要较高的存储性能和可靠性;c). 互联网类新业务和其他非关键类应用,需要一定的存储性能和较好的扩展性;d). 非结构化类型业务数据,需要较高的扩展性,存储性能要求不高;e). 数据备份与归档,数据存储冷热分层;f). 开发测试系统,利旧存储。
3.3 云存储总体架构
从行业发展趋势和企业 IT 战略转型方向看,我司传统业务依然处于基础性的重要地位,这也决定了集中式存储架构将与分布式存储架构长期并存的状态。分布式存储架构主要用于新的线上业务场景,集中式 SAN 存储和 NAS 存储在传统业务场景依然占据重要地位。
最终确立了统一纳管异构存储资源,提供多种类型数据接口、面向海量数据场景的云存储架构,如图 7 所示 . 可通过引入超融合架构来构建私有云 IaaS 平台,实现 IT 基础架构云化转型,分别构建开发测试、互联网类新业务应用等超融合集群。而海量的半结构化和非结构化数据需要通过分布式对象存储来构建可弹性扩容的数据湖,采用基于策略的数据全生命周期管理,提供热、温、冷不同资源池,实现数据在不同资源池以及云平台间的流动和分层。
图 7.云存储架构示意图
3.4 架构设计评估
云存储架构设计是否合理,需要从敏感点、权衡点以及架构风险点这三个方面去评估:
敏感点
敏感点对应于不同数据存储的共有的一些特性,比如存储的软硬件成本、可靠性、存储 IO 性能、架构复杂度、灵活扩展能力、资源孤岛、故障域隔离和可管理性等属性;
权衡点
权衡点则是影响多个架构质量属性的敏感点,需要架构师评估取舍的部分。比如存储架构是集中式还是分布式决定了存储的架构复杂度和灵活扩展能力;存储的软硬件成本也很大程度上决定了存储的可靠性和性能;资源孤岛虽然会造成资源浪费,但合理规划好,也是故障域隔离的前提。
风险点
对于架构师来说,最需要关注的往往是架构中的风险点,是架构设计成败的关键。分布式存储架构存在着复杂度高、新技术引入风险以及版本迭代速度快等风险点;超融合架构还面临着扩展性受限、资源孤岛等风险;而传统存储架构主要风险点在于难以应对海量数据存储扩展,成本较高,与新技术的适配度也不高。
对应于我司的云存储架构设计,传统 SAN 存储性能稳定, IO 延时低,成本高,不易扩展,但适合于核心业务场景;NAS 存储性能不高,但易于使用和文件共享,成本也不高,适合于绝大多数文件共享访问场景;分布式对象存储性能一般,架构复杂度高,但可以灵活扩展,支持海量数据存储,成本低,适合于海量结构化数据存储和互联网业务场景;而超融合架构可以很好地与计算资源融合,架构简单,成本低,虽然有扩展性受限和资源孤岛问题,但结合公司业务和计算资源配比建立不同超融合集群,可以做好数据存储分级,隔离不同的故障域。
3.5 技术选型
按照云存储架构设计评估,我司还需要分别引入分布式对象存储和超融合两种不同硬件架构的云存储方案。结合云存储底层存储技术的分析,分布式对象存储更适宜采用基于分布式键值存储的产品,性能需求不高,扩展性更强;超融合则倾向于基于分布式文件系统的产品,逻辑架构更加清晰,并不追求超大规模部署,而小规模部署下性能更有优势。
对于传统行业来说,开源云存储技术并不能拿来即用,是不适应不同业务系统的存储需求的。要在云存储这样的基础架构领域做到技术自主是非常困难的,也缺乏相应的技术积累、人才队伍建设和研发资源投入。因此大多数传统企业都需要选择不同厂商的云存储产品,做技术选型也就是在筛选不同厂商产品。
不同厂商的分布式存储都会有其清晰的市场定位和优势场景,其中厂商对于存储产品核心技术的把控能力是最重要的,其次是厂商的售后服务水平,当然还要看产品的定价水平。对于我司这样的中小企业来说,更倾向于跟随策略,筛选市场份额前列、有大规模的同行业落地案例的厂商产品。
在筛选出了厂商产品之后,技术层面还需要做好 POC 测试,来验证技术选型。对于云存储产品来说,选型测试还需要考虑以下六点:
业务应用场景
业务类型决定了数据存储分级标准,数据类型决定了使用存储连接方式以及云存储产品类型等功能需求,数据容量则决定了云存储的扩展性能力要求;
兼容性
对于云存储产品来说,软硬件的兼容性是一个重要指标,包括通用服务器选型、设备微码驱动版本、操作系统版本、不同虚拟化平台等的兼容性;
IO性能
IO 性能也是云存储是产品是否适配业务应用场景的另一个重要考量点,相比于通用的存储性能指标数据,业务场景下的测试更有说服力;
高可靠性
通过开展破坏性测试,来验证云存储产品的高可靠性;
易管理性
分布式架构复杂度高,云存储的易管理性关系到运维人员是否能很好地管控云存储;
数据保护和容灾
数据保护和容灾会增加成本,但依然需要考虑数据多维度的安全。