一只红松鼠
作者一只红松鼠·2022-04-09 17:48
其它·其它

存储分类的矛盾与重“定义”(一)——分布式与集中式存储之辩

字数 6613阅读 4673评论 1赞 5

本文仅为个人的一些思考,如有问题欢迎讨论。

矛盾的“共识”

随着技术的发展,存储的形态有了很大的变化。分布式和“集中式”存储的划分已不能准确体现产品的架构和特点,很容易在选型时造成误判,影响对业务的支撑。本文无意颠覆现有的存储分类与定义,而是希望还原架构的本质,避免一些不必要的误判。

有不同就会有比较。颇为矛盾的是,与分布式存储性能好,可靠性高,成本低的共识相反,同样有大量的声音认为“集中式”存储更可靠,性能更高。哪种架构成本更低也有争议,比如一位分别领导过分布式和“集中式”存储开发的业界元老和我讲,在很多时候,集中式存储更便宜。这里有对比条件不一致的问题,但主要原因是:分类名是架构,但分类结果却与架构不相符,最终将比较引入误区。我们先看看这些有趣的矛盾:

  • 可靠性

    声音1:分布式存储的多节点负载均衡架构,比集中式存储可靠;

    声音2:大量运维人员根据使用实践经验认为集中式存储可靠性更高。

  • 性能:

    声音1:分布式存储可以通过扩展节点实现高性能;

    声音2:分布式架构CAP原理决定了节点间通信对性能影响很大,还是集中式架构性能更好。

  • 扩展性

    主流声音是,分布式存储扩展性更好;

    但一位分布式存储架构师对我说,集中式存储扩展灵活性更好,因为很容易独立扩展磁盘框,控制器也可以扩展。

  • 成本 :前面已经提到那位大佬的观点了。

    下面我尝试以对存储架构的重新归类来理清这些冲突与争议。

区别不在于是不是分布式

同父异母的亲兄弟

2002年我开始接触存储,那时的集中式存储还叫 磁盘阵列 ,因为虽然2002年分布式存储鼻祖XIV已经出现,但因“分布式”还不时髦而被称为网格存储。没有分布式存储的概念,自然就没有集中式存储。有意思的是XIV的创始人莫西·雅奈同时是高端存储Symmetrix存储系统之父,分布式存储与“改名”叫“集中式”存储的磁盘阵列是同父异母的兄弟。“集中式存储”和分布式存储确实长得很像,看图:

Ceph

Ceph

HDS“集中式”存储架构

HDS“集中式”存储架构

 华为“集中式”存储架构

华为“集中式”存储架构

尤其是第一和第三张图,虽然不是一模一样,也真是“同父异母”了。

分布式架构是企业级存储的“刚需”

不管哪种存储,要承载重要业务分布式架构都必不可少。“集中式”存储的分布式A-A架构更是在Symmetrix时代就产生了。AA架构简单来说就是所有控制器都是“活”的,同时磁盘并不归属于特定的控制器,可以通过负载均衡保证性能,出现故障时只要一个控制器能工作,就能提供服务。

磁盘阵列希望以廉价磁盘达到大型机内部存储的能力,从而打破垄断实现“开放架构” (是不是有点此时此刻,恰似彼时彼刻的味道?)。整体成本下降了,但对可靠性、性能的要求一点没降,分布式全负载均衡架构因其可靠性、性能、扩展性方面的优势被广泛应用到了磁盘阵列中。今天很多高端存储都采用了分布式架构。导致很多人会认为“集中式”存储更可靠、性能更好的主要原因(其它原因见 可靠的双控架构“伴生”于架构的分类特征 一节)。

不过磁盘阵列家族也有很多产品,尤其是中低端产品不具备分布式架构,性能和可靠性相对要差一些。所以 判断一个“集中式”存储是不是好,看看它是不是分布式架构就行了!

“分布式”架构“优劣”争议初探

既然比较的双方其实是类似的架构,那么很多结论的争议就很好理解了:要么不存在差别,要么另有原因。

分布式架构可靠性高?

正确,但由于大量“集中式”存储是分布式架构,所以“集中式”存储更可靠也不难理解:只有和没有采用A-A架构的“集中式存储”对比时,分布式架构的架构可靠性优势才有可能能体现出来。即使这样,因为“集中式”存储还有其它特性加持,了整体的可靠性仍然可能有优势。

分布式架构性能更高?

正确,因为大家都是分布式嘛(o゚v゚)ノ。

分布式存储优势在吞吐量而磁盘阵列优势在低时延高性能密度的性能表现差异 ,与是否分布式无关,而是由盘控架构和专有硬件的区别造成的,在 分布式存储与磁盘阵列架构的融合 一节中分析。

分布式架构扩展性更好?

从架构来说反而是 盘控分离 的分布式架构能做到性能和容量的分别扩展,扩展灵活性更好,只是受限于网络,无法达到非常大的规模。所以应是“集中式”存储在数据量相对小的关键业务中扩展性好,分布式存储在大数据量场景扩展性好, 但这与是否采用分布式架构无关

如何更好地定义存储

反过来,分布式存储也在借鉴磁盘阵列的一些技术特点,要进行架构分类,还要看一下分布式存储又做了哪些演化。

分布式存储与磁盘阵列架构的融合

“分布式”借鉴磁盘阵列最多的是双控制器架构,来增强性能和可靠性。

增强控制器能力降低时延、提升性能密度

2019年AWS收购全闪存存储初创公司E8 Storage。从收购后的产品节奏和人事安排来看,AWS EBS IO2大量使用了E8 Storage的技术,使AWS的高性能块存储在沉寂了8年后突然爆发,在一年多时间内推出两代新产品,将存储时延降低一个数量级,可达到1ms以下;将性能密度上限提升了20倍,最高达到1000IOPS/GB。其架构如下图:
 E8 Storage集群架构及存储节点内部逻辑架构

E8 Storage集群架构及存储节点内部逻辑架构

E8 Storage是典型的分布式存储。但它为每个节点配置了 两个控制器 和24块SSD盘,又是典型的双控架构,其盘控比例甚至高于很多磁盘阵列。这一架构配合ROCE,Nvme,100GE网络等技术追求的是 极致性能 中的 低时延、高性能密度

可靠的双控架构

PC服务器在可靠性方面一直不是强项,随着规模和单服务器存储容量的扩大,其与存储对可靠性的要求矛盾越来越突出,解决办法仍是 双控架构

 华为分布式存储9550爆炸视图

华为分布式存储9550爆炸视图

红框里有两个节点,类似双控制器
红框里有两个节点,类似双控制器

华为的Pacific存储硬盘密度提高到了最大120块硬盘,出现故障时影响会非常大。所以每个Pacific服务器配置了两个节点,相当于两个控制器。每个节点连接了所有的磁盘,正常情况下两个控制器各管60块盘,故障情况下则可互相接管。

再辩争议:双控架构的价值

由于磁盘阵列都是以双控架构为基础进行叠加扩展的,无法对比双控架构的价值。反而是受了“真香定律”影响的分布式存储把双控的优势玩明白了,那么反向输出一回,看看争议和误区中哪些是与双控架构有关的:

性能特点:

在评价存储性能时是不能脱离业务场景的。当分布式存储进入我们视野时,我们第一关注的往往是通过节点扩展能很好地扩展性能,也就是目前普遍认同地“分布式存储性能高于集中式存储”。但实际使用中往往又会觉得分布式存储在性能在要求较高的OLTP型数据库等应中并不好。数据库的IO性能特点如下:

  • 低时延,因为时延决定了数据库的响应速度,而数据库的响应速度决定了应用响应速度,也就决定了用户的体验(比如下一个订单待多久,查一笔交易要时鼠标要转多少圈);
  • 峰值IO密集,因为交易数据库都不大,但频繁的交易带来了大量IO,那么集中在很小容量上的热点数据非常多的IO,导致虽然IO问题不大,但单位容量的IO需求却非常大。

    从AWS的反向例证中可以看出,加强存储的头部,也就是控制器的能力,并配合高速网络和新型存储协议是实现低时延/高性能密度的有效手段。由于绝大部分分布式存储没有使用双控架构,因此低时延高性能密度场景下,采用双控架构的“集中式”存储往往有更佳的性能表现。

可靠性:

同样地,双控架构在分布式存储的应用也说明即使没有使用分布式技术,“集中式”存储仍然有架构上的可靠性优点,这往往使运维人员在实践中觉得集中式存储可靠性更好。

更符合架构的定义:盘控一体与分离

在用分布式的分类原则产生的结果与我们实际认为的不一致时,应如何从架构维度来区分,同时这一区分又能直接体现架构各自的优势和短板,作为造型、规划和维护等工作的依据呢?我认为用盘控一体与盘控分离来区分传统概念的分布式和集中式存储更为合适。

盘控一体

盘控一体,就是磁盘和控制器(存储的计算单元)融合在一个设备(服务器)中,再通过分布式架构进行连接,实现高可用和横向扩展。上面的例子中E8,华为Pacific分布式存储都符合这一架构特点,传统的以服务器来组成的分布式存储更是盘控一体架构。如果细分一下,前者是双控架构,后者是单控架构。

盘控分离

盘控分离,就是控制器完全独立,和磁盘以高速内部网络连接的架构了。磁盘阵列,也就是后来被重新定义为“集中式存储”的存储都属于这种类型。这分离的控制器确实符合磁盘阵列这一形象。

传统上磁盘阵列都是两控为一组扩展的,这一招已经被“分布式存储”学走了。如果再细分架构,那么可以用所谓的AP架构和AA架构来做。AP架构是真正的集中式存储,不用打引号那种。特点是便宜,缺点是可靠性和性能略逊一筹(注意只是和AA架构比)。AA架构是分布式架构,前面已经分析过,这种架构的优势是可靠性和性能,多见于中高端企业存储。

两种架构特点总结

由于前面已经做过多次比较,这里主要做一下总结。

性能

盘控一体: 高吞吐量是其优势,因为吞吐量的扩展受网络和算力影响比较小。相对应地,盘控一体架构处理小IO和保障低时延的能力就受到了限制,使用双控架构可以缓解,但固定盘控比灵活度差,影响成本。

盘控分离: 控制器是强项,保障了低时延和高性能密度,就像一群蚂蚁能搬运很多东西,但要搬一个人只能用马,因为人不能拆分再让蚂蚁搬运。

相反分离架构对网络的依赖大,扩展规模、IO吞吐量不是优势。

可靠性

如果其它条件相同,比如都是分布式架构的情况下, 盘控分离架构可靠性更好

扩展性

盘控一体: 更易大规模扩展,但盘控比固定,灵活性不足。

盘控分离: 与盘控一体相反,盘控分离架构可以调整盘控比,既可以配置成高性能小容量,也可以配置为低性能大容量,对应地劣势则是规模难做大。

成本

成本不是孤立的存在,首先要以实现同等目标为前提,比如同样的可靠性等级,同样的性能。

要达到很低的时延 ,盘控分离架构很容易实现,盘控一体架构却要增加更多额外的硬件换取性能;

要实现高吞吐量 ,盘控分离就力不从心了,盘控一体的优势更大。

另一方面扩展性、冗余算法也会成为影响成本的变量,这些变量有些与架构相关,比如冗余算法,盘控一体架构多采用三副本,只有少数厂家有技术实力使用EC算法,而且多用于文件存储,盘控分离架构多使用RAID技术,磁盘利用率往往更高。看上去像是盘控分离的优势,但其实只是 “伴生”于架构的特征

“伴生”于架构的分类特征

上面的比较中有些特性虽然应是独立存在的,却往往在某种架构中会被使用,就像“伴生”于某种架构一样。这些特点有些是架构选择后,必须要采用的技术,有些则是某一架构历史积累的结果。“伴生”特性就像影子一样,甚至有时我们会把这种伴生的特性误以为是架构本身的特点了。

专用硬件与通用硬件

从通用硬件产生的目的看分类

与分布式和集中式一样,通用硬件是后来才出现的,专用硬件的概念更是在通用硬件出现后为了体现区别才出现,因为在此之前主流存储都是专用硬件。

从XIV诞生之日起,除了强调网格也就是分布式架构外,就是宣传以普通的PC服务器来构建存储。相对以前的磁盘阵列,这一模式可以充分利用服务器竞争的红利,减少研发和降低成本。既然要通用,首先意味着首先它是可以用于存储以外用途的“通用”硬件;同时配置上要通用,不同厂商的产品理论上可互相替代,这样就不能有比较特殊的架构设计或配件。

但真正实现这些目的有一定困难。一来要达成比较好的性能和可靠性,存储软件要针对硬件进行深度优化甚至针对定制化硬件量身适配软件,此时兼容性会打折扣。二来同时运维多个厂家的硬件对运维是个挑战。

由于是相对概念,专用硬件的界定就模糊不清了。为存储专门设计,或只能用于存储,或与特定的存储软件绑定,都可能被认为是专用硬件,因为它们与通用硬件的目的有冲突,通常被认为是专用硬件。

专用硬件进化之路

传统上认为“集中式”存储是使用专用硬件的,而对应的“分布式”存储是用通用硬件的。同时从XIV开始,通用硬件便被作为一个特色甚至优点来宣传,以至于很多人会把分布式和通用硬件等同起来。

但本文的讨论中可以看出,不仅是存储厂商,AWS等大型云计算和互联网厂商都在走向专用硬件的道路。类似的还有FaceBook,百度等大型应用厂商。在产品宣传上,这些厂商也转而开始开始宣传采用用硬件的价值,以体现技术实力和差异化竞争力。

这看似矛盾的情况其实是技术发展的普遍规律。生物界有趋同进化再现象,比如一个物种进入水中生活,开始时会保持陆生生物的特征,甚至能水陆两栖。但时间长了,适应水中生活的部分会特化,无用的通用特征会丢弃,最终不管是爬行类、鸟类还是哺乳类,大家长成类似鱼的样子,同时丧失通用性再也回不到陆地上。

存储的进化有类似的进程:一个新的厂商(包括云和具备自研能力的大型应用厂商)初期使用通用硬件可以降低进入行业的门槛快速“下水”。到了要在存储领域长期生存的时候,“水陆两栖”造成的“通而不精”就必须用专用硬件这种“特化”的方式解决。于是可以看到大量厂商,包括云计算和大型互联网厂商都是以通用服务器入门,再以专用硬件提升能力。

因此如果不是对自主研发或供应之类有特殊要求,不必纠结甚至上升到架构之争层面,而应重点评估业务对性能、可靠性、运维与成本的要求与产品能达到的能力。

专用硬件价值

专用硬件就是为了优化存储能力的。当使用专用硬件的投入值回成本时就是有价值的,其主要价值在以下方面:

优化性能

除了以专用硬件实现双控架构,如果看到以下配置,那么这种存储可能在性能上有优势:

  • 高速或专用协议网络硬件:如用PCIE、IB、ROCE网络时延低,25-100G高速网络可提高吞吐量;
  • 专用芯片:一些存储会配置专用的加速芯片,甚至会自己研发芯片并只能用于特定型号存储中;
  • 保电内存:这个东东有点特殊,是通过提升可靠性来提升性能的。因为掉电不会丢失数据,配置保电内存后数据写入内存就可以完成持久化,相比写入磁盘,性能会有比较大提升;
  • DPU卡:最近这东东很火,就不展开了,网上信息不少。
提升可靠性

双控架构就是需要专用硬件来实现的 ,前面已经分析过它如何提升大容量存储服务器的可靠性。 保电内存 除了提升性能,最基本的作用也是保障可靠性。更传统一点的,可以通过控制工艺、选料来提升存储整体可靠性。此外有一部分硬件会配合软件提升故障切换能力。

维护性

这不能算是专用硬件的直接价值,而是由于专用硬件避免了软硬件多厂商以及多家硬件厂商带来的故障定界难,兼容性问题多,需要运维人员掌握更多技能等等问题。

成本

特化的硬件可以缩小体积,减少耗电,提高密度。虽然专用硬件带来了额外的成本投入,但如果节省的成本大于投入,还是省钱的。

企业存储特性

Enterprise是个多义词,除了指企业外,可代表一种美德,是“进取”、“勇往直前”之意。所以在IT界的企业版,并不是只给企业用,而是指比专业还要强大。企业存储也是如此,除了有更强的性能和可靠性之外,还会提供容灾、备份恢复、副本等高级特性,当然得加钱。

企业存储特性与专用硬件一个偏软,一个偏硬,都需要长期的积累。所以在市场上企业存储特性丰富、能力比较强的厂商都有十几年到几十年存储研发经验。而这部分厂商大部分是从磁盘阵列时代起步的,所以企业存储特性能力强往往就与“集中式”、专用硬件联系起来了。其实 企业存储特性与专用硬件一样,只是存储“趋同进化”趋势中的一个方向,而不是依附于架构的技术实现 。比如在云计算服务中,使用存储快照、容灾等特性就很普遍,有能力的存储厂商都在加强或补齐这方面的能力。所以即使业务中不会使用到企业存储特性,企业级特性的丰富度和能力也可以判断出一个厂商的技术水平和长期投入稳定性与进取心。这可以算是一个侧面的选型依据。

后记

以盘控架构作为大类分类依据,既能与原有的分布式与“集中式”分类结果完全对应,又能避免被名称中的分布式/集中式误导,可以更好的区分存储是适应小而精,如交易类应用,数据库应用;还是更适合大而重如海量数据、数据分析应用。

分布式架构仍是重要的架构特征,仍可用来进行存储分类,但需要注意用是否是分布式架构这一标准进行分类得出的结果与通常认知中的不完全一致。因此可以将“是否为分布式架构”作为另一分类维度,与盘控架构、硬件类型、企业特性一起进行交叉分类剖析存储的特征,从而准确判断存储的能力是否与业务匹配。

业界习惯的力量是强大的,各位朋友如果认同我的观点,不必去改变这种习惯,只要能在规划选型中帮助大家就达到目的了。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

5

添加新评论1 条评论

wanggengwanggeng系统运维工程师某银行
2022-04-20 09:19
感谢作者的分享,可以更好的了解分布式存储和集中式存储的一些区别,对我们再存储选型和理解上有非常大帮助。可以让我们再选型存储中可以去衡量 判断一个“集中式”存储是不是好,只要看看它是不是分布式架构就行了!
Ctrl+Enter 发表

本文隶属于专栏

趋势观点
本专栏的文章全部来自国内外行业或领域一线最强实践专家的深刻洞察,他们的分享如同为正在摸索前进的更多同行和企业带来一盏明灯。他们的观点也为企业迎接趋势挑战、克服各种困难提供了最好争议的标的。希望有更多一线最强实践专家加入趋势观点栏目,你们是推动中国企业IT应用最值得尊敬的人。

作者其他文章

相关文章

相关问题

相关资料

X社区推广