QYJS    前沿技术
前沿技术
面向AI的下一代分布式存储架构设计与未来演进趋势分析
文 | 新华三集团云与计算存储产品线 陈钊

摘要

GPU算力和AI新应用的兴起,以及互连和闪存技术的不断变革,正分别从需求侧向下拉动,从底层技术向上推动存储架构设计的变革。本文从对集中式和分布式架构演变的思考出发,介绍新华三最新一代存储架构的考量和设计,并对未来演进方向进行探讨。

关键词

硬件范式转变;池化数据中心架构;分离式存储架构;Shared-Everything;Shared-Nothing

1 新一代存储架构设计的考量

1.1 AI智算新应用的新要求

近些年随着AI大模型技术的迅猛发展,智算中心对存储系统的性能提出了新的挑战。在智算中心基础架构中,存储系统不再是一个孤立的仓库,其性能将直接决定AI流水线的整体效率和TCO。相比传统CPU,GPU凭借其大规模并行架构和数千个计算核心,可以同时进行海量的数据运算,英伟达B200能够提供高达20PetaFlops算力,是主流CPU的近百倍。如此强劲的性能对数据的需求,与CPU应用系统相比也存在数量级的差别。传统应用对存储的带宽要求通常在GB级别,而在大模型训练中,定期执行的检查点(checkpoint)保存,涉及数百GB甚至数TB的数据,其写入到存储所需要的时间直接决定了GPU的停机时间。为最大化提升昂贵的GPU算力投资效能,通常要求存储提供单节点数十GB/s的写入带宽,并越大越好。

新一代存储架构设计的立身之本在于极致的性能,但不止于此,一个商用存储必须同时兼顾以下能力:

1)非结构化协议融合能力:AI生产流水线,包括数据清洗、预训练、微调、推理等不同阶段,对数据的格式和存取方式各不相同,要求同一份数据同时支持对象、文件、HDFS等多协议无损访问,数据无需搬移转换;

2)单桶千亿级别能力:大模型对数据量的要求飙升,单一命名空间支持千亿规模成为常态;

3)纠删码优先:巨量数据存储规模要求存储空间利用率足够高效,纠删码应取代副本作为默认配置。

1.2 硬件性能范式转变

现代硬件和底层技术的迅猛发展,改变了新一代存储的架构设计的底层逻辑,主要是两个重要的范式转变。

1)CPU和外设性能的倒转。在传统计算机体系中,CPU和内存处于性能金字塔塔尖,网络、硬盘是低速外设,存储系统更多考虑如何通过层级缓存提供更好的性能,从不需要担心CPU不够用,或者内存成为瓶颈。但随着高速网络技术和NVMe全闪硬盘的发展,以太网已发展到800G,NVMe硬盘可以提供百万乃至千万的IOPS,一个存储服务器配置数张网卡,数十块硬盘,外设的并行带宽和IO能力,已超过了CPU和内存的能力。在这种范式转变下,CPU和内存反而成为性能瓶颈,如何将CPU算力用至极致,缓存结构是否必要或者应当如何转变,成为新一代存储设计的首要考量。

2)这种性能范式转变,同时对冯·诺依曼架构带来了挑战。计算机系统不再以CPU为中心,而被拆解重构成池化结构,CPU算力,内存,硬盘,网络,都成为池化的资源,按需配置和调用。这种范式的变革会根本性改变CPU的瓶颈问题,势必引起存储系统架构的革新。NVMeOF借助灵活的网络互联和DPU智能卸载已经可以实现硬盘池化,CXL等总线技术逐渐带来内存池化的能力,GPU、DPU、CPU未来分别针对算力密集、数据密集、控制密集等多维度发挥各自优势。路途虽远,但变革已经发生。

2 分布式和集中式的竞合关系

技术的发展总是呈螺旋上升,软件架构创新是为了解决硬件的限制,而硬件的革新又可能使老的软件架构以另一种方式复活,如此循环向前,软硬件协同创新发展。本章尝试从存储系统技术发展的历史来发掘存储架构设计的逻辑。

2.1 集中式“廉颇老矣”?

集中式架构存储可以算是企业级外部存储的鼻祖,过去一直占据主导地位,近些年虽然份额受到分布式存储的蚕食,但仍牢牢占据半壁江山。集中式长盛不衰的本质原因在于其架构在IO时延稳定性上具有先天的优势,正是绝对稳定的IO时延保障才能满足任务关键型(Mission Critical)应用要求。

先不论集中式存储本身的复杂性,从宏观的视角来看集中式存储和分布式本质的区别:集中式是一个单机系统,就像一个中央集权的小型公司,单一CPU可以直接完成整个IO栈,直到硬盘,IO栈短而精简,所有的任务调度执行又都集中可控,不需要分布式的互斥和交互,这是时延稳定可控的关键。同样的原因,若不考虑为可靠性做的双冗余设计,其带宽和IOPS也能比分布式做的更高。我们称这种架构为Shared-Everything架构。

集中式的发展受阻有很多原因,不展开讨论,仅从其架构逻辑本身来看,集中式一个明显的短板在于可扩展能力。正因为其中央集权的设计,天然适合Scale-Up的纵向扩展方式,我们可以将集中式存储比作老式火车,靠一个火车头拉一排车厢。这形成了一个“数据孤岛”,横向扩展能力成为了区分集中式高中低端的一个关键指标。按照严格意义的集中式SLUA设计,所有控制器可以相互替代,可以无差别提供所有卷的业务访问,这要求所有的网卡、硬盘、CPU、内存形成完整的互联,其演变的极致就类似于EMC在2003年左右推出的Matrix架构,其密密麻麻的连接线令人印象深刻。这样极致的硬件成本过于高昂,因而后续的集中式趋向采用ALUA,或者用软件的方式去模拟类似的SLUA体验。更时髦的词叫软件定义存储,即不再追求高定制化硬件,而是基于更标准的硬件用软件实现,比如EMC后续的架构叫virtual Matrix。

硬件性能,尤其是网络和总线能力的提升使软件定义成为可能,但仍需要保留足够的互联以保障任务关键型业务的指标要求。这也是集中式存储没有退潮的根因。不同的厂商有不同的扩展互连方案,但多少会牺牲最本质的Shared-Everything能力,要么是前端网卡,要么是后端的硬盘,系统被割裂开来。沿着这样的思路走向极端,如果采用完全标准的服务器实现软件定义的存储,就成了分布式存储。

图1 不同思路的16控集中式存储扩展方案

2.2 分布式是大势所趋?

软件定义的极致就是分布式存储。随着云计算技术发展,CEPH在2010年之后风靡全球,在国内更是掀起了分布式存储浪潮。分布式存储打破了传统集中式专用硬件的牢笼,采用通用服务器就可以获得数据可靠性;凭借CRUSH算法实现了强大的横向扩展能力;一个架构同时支持块、文件、对象存储。这些能力对客户而言,大幅降低了采购成本并获得极佳的投资弹性,对厂商而言,开源代码大幅加速了研发进展。

看起来分布式存储技术风光无两,大有一统江湖的气势,但十余年发展之后,仍然无法替代集中式,问题在哪?相对于集中式的中央集权架构,分布式存储更像一个联邦制的事业群组织,我们称之为Shared-Nothing架构。但每个联邦(通常是在一个硬盘上实现的OSD服务)不是一个可靠设备,所以联邦之间需要互相存储副本来实现集群的数据可靠性,由此带来了两个本质问题。

1)长尾时延问题:每个联邦(OSD)各自拥有独立的IO栈,即处理自己的主副本,也处理他人的从副本。因而同一个IO在各个OSD的处理顺序并不相同,再叠加网络的损耗,异常带来的额外开销等问题,分布式存储的时延是波动的,最大时延甚至会有两三个数量级的放大。这个问题决定了其无法满足任务关键型业务要求。

2)性能扩展问题:分布式存储天然采用scale-out的横向扩展方式,常被比喻为动车组列车。但为了实现分布式副本的一致性,联邦之间存在大量的分布式锁机制,随着节点规模扩大,锁开销倍增,因而其性能无法做到线性增长。另外,数据的每个副本都要在各个联邦走一遍IO栈,宏观角度来看,CPU的实际效能也要低于中央集权的集中式存储。

分布式存储虽然常标榜支持上千节点的集群,但由于上述两个问题的存在,以及大规模管理的复杂度,真正的实现方案通常又拆分成多个子集群。

图2 两种架构的数据处理方式

2.3 分离式兼容并蓄

随着池化数据中心架构的演进,可以看到存储架构演进的新思路。NVMeoF互连和EBOF盘框可以实现多控制器全共享所有盘框,原来双控内部私有的硬盘现在可以成为剥离出来成为池化的空间,这本质上打破了“老式火车头”scale-up的枷锁,可以实现控制器的横向扩展。此时的横向扩展不同于分布式存储,不需要在控制器和控制器之间做相互的副本保护,性能可线性增长;每个控制器都可以将数据直接通过RAID或者EC打散到不同的EBOF硬盘框,从而实现节点级(硬盘框)的可靠性,同时收获单机软件IO栈带来的性能和时延稳定性优势。我们把这样的架构成为分离式存储架构,即基于Shared-Everything思想并同时支持scale-up和scale-out的新型存储形态。

图3 分离式存储架构

池化架构的另一个贡献是缓存结构,传统集中式存储通常采用BBU内存来实现高性能数据缓存和快速故障切换,随着池化可持久内存技术的成熟,控制器不在需要BBU内存,而是通过远端的可持久内存池实现数据缓存。这个意义不仅仅是减少了成本,更重要的是控制器将变为“无状态”服务,没有BBU内存数据的牵绊,可以任意在不同控制器上拉起服务,同时硬件将变得更加标准化。

这样的产品已经出现,包括HPE、EMC新一代集中式存储,以及VASTDATA等初创企业推出的“分布式存储”,都不约而同采用了这样的架构。我们会看到越来越标准和通用的硬件,通过软件定义的方式实现“集中式”和“分布式”存储,或者叫“分离式”存储。

3 Polaris存储架构设计

3.1 从分布式向分离式演进

新华三H3C Polaris基于新华三的新一代存储架构傲擎开发。傲擎在设计之初就瞄准了分离式架构,但出于几方面原因,选择了先推出分布式,再演进到分离式的技术路线。一是标准服务器形态的分布式存储仍然是市场的主流,二是国产DPU技术不够成熟,还不足以支撑我们构建基于DPU的高性能盘框设计。

傲擎采用三层架构设计,包括协议服务层,存储引擎层,持久化存储层。整个系统以存储引擎层为核心。存储引擎之间相互独立无依赖,通过分布式数据和元数据打散算法,实现整体的全局命名空间;采用无状态服务设计,存储引擎可以在任一节点运行提供服务,并能快速实现节点间迁移。我们复用协议服务层和存储引擎层,通过Shared-Nothing和Shared-Everything两种持久化存储层引擎,分别实现分布式和分离式两种形态存储产品。在这个弹性架构中,更多的存储业务逻辑被设计到存储引擎层,保持持久化存储层足够精简和高效。

存储引擎基于log-structured机制设计,实现随机小IO重定向聚合成大IO顺序流,持久化存储层只需要支持追加写即可,大幅减少实现复杂度。这样设计的其他考量在下文中会进一步表述。

图4 Polaris存储架构

3.2 极致性能和成本的权衡

回到AI智算应用需求,傲擎架构旨在实现一个千亿对象以上规模级别、支持原生非结构化协议融合、纠删码性能更优的极致性能存储,在上述架构基础上,实现了以下几方面的设计创新:

1)Scale-out的存储引擎:引擎之间完全解耦,形成一个并行集群,性能随引擎数量线性增长。数据可以通过切片打散方式实现并发,难点在元数据的处理。传统的子树方案存在负载不均,子树分裂影响业务等问题。我们通过创新性的扁平目录树结构设计,将垂直耦合的目录树拆解成目录分片,横向打散到存储引擎处理,可以实现海量文件的并发处理。

2)log-structured机制的存储引擎:通过Redirect-on-Write机制实现随机IO聚合成追加写,解决纠删码覆盖写写放大问题,纠删码性能可比肩副本机制,同时支持无损快照。进一步,log-structured机制天然适配Flash特征,我们可以更好地优化SSD设计,提供更好的性能,更长的寿命,QLC介质将有能力成为主存介质,为客户带来更低的成本。

3)非结构化协议融合和海量对象:每个存储引擎包含元数据服务,同时支持文件和对象语义,单引擎可支持十亿级对象,单节点可支持百亿级。多客户端并发访问冲突是分布式文件系统的难点,我们创新性提出无客户端缓存的免锁方案,结合高性能RDMA数据存取,实现高性能并发,尤其适合海量文件随机读取。另外,海量元数据处理依赖强大的KVDB,我们通过深度优化KVDB IO栈,快速查找算法,Index和Filter缓存算法,持续提升规模能力。

4)大小IO分流,控制和数据流分离:小IO通过存储引擎聚合处理,大IO则只有元数据依赖存储引擎,数据从协议服务层通过RDMA技术直接访问持久化存储层,实现数控分离,并构建最短IO通道,结合全栈零拷贝技术,以及NUMA亲和的多流网络择优算法,能最大化发挥硬件带宽性能。

5)除了上述业务逻辑设计外,要解决硬件性能范式变化,还要从底层机制上做根本的变革。傲擎全栈基于Run-to-Complete思想设计开发,采用全用户态、无锁化、协程、轮询、零拷贝等核心技术,避免核间切换,内核态切换,线程切换,锁冲突等待,内存拷贝等开销消耗CPU算力,让CPU算力全部用到业务逻辑处理的刀刃上。

搭载傲擎架构的新一代分布式存储H3C Polaris X20000在性能上取得了巨大的突破。在今年MLPerf Storage 2.0评测中,H3C Polaris X20000采用4+2纠删码策略,取得了单节点148GB/s的成绩,位列分布式存储ROCE组网方案性能第一,纠删码性能第一。

4 未来演进方向

我们对未来演进的看法,着眼于两个基本点:CPU性能成为瓶颈;软件定义和硬件标准化。

4.1 打破CPU瓶颈

CPU仍然是指令密集型任务处理的核心,但无法胜任大规模并行数据处理。如何让CPU性能发挥到极致是现代存储厂商努力的方向,包括Run-to-Complete技术减少CPU开销,分离式架构减少复杂的分布式处理逻辑开销等等,但仍然会受限于硬件天花板。事实上,除了CPU,还有CPU侧的内存也都会成为瓶颈。这个问题在GPU服务器上已经发生,GPU Direct Storage技术正为此而生,而随着PCIe 6.0商用,X16带宽达到256GB/s,网络和硬盘的带宽将很快超越DDR内存带宽,更遑论后续PCIe 7.0的演进了。

未来存储架构的本质逻辑变更一定是打破以CPU为中心的硬件框架,会看到更多的外设之间直接互连,比如DPU网卡直连NVMe硬盘。这是一个本质的逻辑改变,在以往的硬件范式中,网卡将数据DMA到CPU内存中,CPU又从内存将数据分发到硬盘,这种中心中转的模式不就造成了瓶颈问题,且多了一次数据搬移。

分离式存储架构持续演进,将形成有条不紊的并行数据通路:宏观上,服务器之间,各个存储引擎解耦并行,各自管理自己的硬盘空间,处理自己的数据流,而NVMe-oF可以将各个孤立的EBOF硬盘框形成池化结构,控制器共享访问;微观上,服务器和EBOF硬盘框内部,数据从多个DPU网卡直通NVMe,形成高速并行。在这样的系统重,CPU将像一个指挥官,不用事必躬亲,但运筹帷幄之中,决胜千里之外。

图5 池化存储架构

4.2 软件定义和硬件标准化

分布式存储盛行的一个很本质原因就在于硬件标准化,标准化意味着成本、弹性、敏捷,这些能力对IT系统都太重要了,就连传统的集中式存储也在努力地朝这个方向努力,包括HPE、EMC等。如集中式存储原来标配的BBU保电内存,在一些新的集中式产品中消失了,取而代之的是PCM介质,甚至直接采用闪存盘。

我们畅想未来池化架构带来的变革,最终成熟的一刻一定是完全标准化的实现。但技术的迭代和创新是如此的迅速,新的技术可能会不断打破旧标准的宁静,一次次的变革推动系统不断发展,而新技术又将致力于成为新的标准。世事总是如此。

在这技术浪潮中,存储厂商会拥抱标准化,也会有小型定制,只为推出更优秀的产品。分离式架构思想的产品会不断涌现变革。或许有一天,当池化架构的数据中心最终成型,数据中心就像一个巨型计算系统,存储软件可能会散落运行到GPU池、DPU池、CPU池中,就像最初文件系统之于计算机一样。

关闭