西瓜哥:从Shared-Nothing到Shared-Everything,分布式全闪架构演进之路

近日,存储圈知名KOL西瓜哥在2023中国数据与存储峰会-分布式全闪创新论坛再次带来了精彩分享,发表了他对于分布式全闪架构的深刻洞察。

传统的Shared-Nothing模型和Shared-Everything模型在资源共享和并行处理能力上各有特点,下一代分布式全闪,则是以NVMe-oF技术来支撑端到端的NVMe架构,Shared-Everything(共享架构)成为未来存储架构的发展趋势。西瓜哥生动地讲述了分布式存储的前世今生、架构演进与未来趋势。

经典的Shared-Nothing架构与Shared-Everything的差异

Shared—Everything这个概念于2000年被国外的公司提出来,但是没有进入国内市场,所以在国内声音不是很大。现在有些公司也发布了Shared—Everything分布式产品,把分布式存储架构的历史稍微总结一下:

首先看一下这几个术语,名字都很好理解,Shared—Nothing节点之间什么都不共享,它的概念最初来自于1986年一个加州大学教授写的一篇论文,分布式体系架构里的一种架构,所谓节点之间可以横向扩展,但是是不共享资源的。1983年的时候Teradata发布了第一个基于Shared—Nothing架构的数据库,数据库里面Shared—Nothing和Shared—Everything哪个好已经吵过一轮了, Shared—Nothing基本上涉及到的是互联网数据库,比如说Mongo DB,所以我们看到数据库领域这种架构由于不同的场景,不同的应用一直都有,他们各有各的优势,各有各的应用场景,并不是哪个架构好,哪个架构不好。

2003年谷歌发布文件系统白皮书,讲述了用Shared—Nothing这种技术开发软件系统的经验,很多创业公司做分布式存储基本上都是Shared—Nothing架构,二十多年Shared—Nothing一直是分布式存储里的主流架构。每家都是这个架构,所以没有什么争论。但是最近,2000年左右vastdata提出新的观点,才重新炒作起架构来。

我们看到业界变化很大,原来20年前都是基于谷歌软件系统,用硬盘当时还没有闪存,闪存在存储里面是2008年,EMC高端存储第一次引入到存储里面,而且当时闪存特别贵,也不舍得在上面存数据。Shared—Nothing架构扩展起来很方便,没有单点故障,但是现在确实有一些变化。

 VastData认为Shared—Nothing最大的问题就是串扰,节点之间互相影响,为什么?什么东西都没有共享,也就是说一个数据写到某个节点,这个节点要复制到另外的节点上,它又访问别的节点的盘,它要转发给那个节点的CPU,那个CPU接受了这个东西之后才能处理,才能写盘,这样的Shared—Nothing架构的存储超过了几十个节点,大概五六十个节点以后,它的信息就做不到线性扩展了,这是vastdata认为这个架构主要的问题。

Shared—Everything:全NVMe时代的最佳存储架构,AI存储的最佳选择

现在NVMe技术发展很快,通过NVMe over Fabric技术访问另外一个节点的NVMe盘跟访问本地NVMe盘的差距是非常小的,可能就多个十微秒。我们在硬盘时代觉得Shared—Everything不太可能实现,要跨节点访问别的盘,网太慢了,但是现在高速网络,100G网络,你会发现SCSI有很高的并发能力,时延或者协议上是非常优化的,做得非常好,这个时候应该重新考虑这个架构,而不是用Shared—Nothing做新一代全闪存的设计。

 VAST Data认为Shared—Everything的好处,性能可以线性扩展,独立扩展计算节点,盘控分离的,所以容量不够就扩盘框,性能不够就扩计算节点,这个架构是比较有意思的,不用节点来做纠删,可以做大比例EC。我们经常看到真正用的话是200+4,你见过这么强的EC吗?经常做到几百加几的EC,得盘率就非常高,这么长的条带,校验码占的比例就非常少了,所有盘都能看到,调度起来非常简单,可靠性也非常好,一般常出故障的是控制器,控制器故障的话基本上不用切换,因为盘都在,所有节点都可以看到,出故障的话并不影响盘,有点像高端存储那样,所以可靠性非常好,而且它是QLC,成本可以压得很低,如果到一定规模,它的成本会比硬盘还便宜,按每GB算,号称比硬盘还便宜。但是小规模场景下可能成本会高一些,因为盘控分离的架构。

XSKY推出的星海架构,有前面VAST Data一些优势,但和VAST Data的定位不太一样。VAST Data做的是文件存储,主要是文件对象,星海主要是做的主存储,块存储,以后也会有文件。它是Shared—Everything一个妥协的产品,实际上它并没有做到盘控的分离,看物理上还是星飞9000产品,里面带四块盘,这个节点出故障的话这个盘就没了,但并没有做到盘控故障的隔离。

此外,国内厂商目前没有特别合适的硬件可以选择,盘框分离的话就需要有全闪的框,目前在国内买一个全闪的硬盘框,市场上好像没有这么通用的产品,但是服务器可以买到,国外厂商有一些这样的产品。虽然没有充分发挥VAST Data那种盘控分离的优势,但是成本会比较低,比如三节点起步,原来通用的软件定义存储,从表面上看成本没有增加太多,应该是一样的,是NVMe的盘,但是盘控分离的话,成本就高,三个节点的服务器不能带盘,下面加两三个框,上面有一些处理能力,而且不是特别通用的硬件,这个成本不见得便宜,所以可能基于国情的原因,这一块目前盘控是设在一起的,理念上是按照Shared—Everything设计的。

总结

Shared—Nothing、Shared—Everything各有优势,Shared—Everything目前目前在分布式存储里共享的主要是盘,不像高端存储还能共享内存,因为高端存储的内存是有掉电保护的,有掉电保护,共享才有意义。分布式存储设备都是普通的服务器,没有掉电保护,共享也没用,掉电了数据就没了,所以共享盘就行了,一般不需要共享内存。而且我们看到如果要做Shared—Everything这种架构的话,必须要支持NVMe over Fabric,NVMe 的盘,对硬件的要求是比较高的。它的好处包括故障切换时间、重平衡、重构时间都会有优势,但是要做Shared—Everything架构的话必须要NVMe over Fabric的网络,100G的网络,真正访问远端、本地起码是起码是一致的,是要差不多的。

Shared—Nothing架构并不是不好,我认为在混闪的时代,有些还是SATA SSD,Shared—Nothing还是非常好的架构,如今硬件、网络已经改变了,这时候我认为Shared—Everything架构的优势就会比Shared—Nothing更具优势,这是我个人的观点,看你怎么去选择。

高端存储一直用Shared—Everything的架构,分布式现在开始推这个架构,没什么特别的,没什么新的东西,只是说大家根深蒂固,都以为分布式,以为最经典的三大架构是最好的,这个跟我们原来想的不太一样。当然Shared—Nothing架构并不会淘汰,很多对象存储、文件存储更多是用硬盘的情况,上面有混闪,这种情况下Shared—Everything优势发挥不出来,只能用Shared—Nothing架构是最好的,所以我们不用太说哪种架构好,还是看你的需求是什么。

Shared—Everything在未来AI这个时代会比较好,AI存储可能有钱的客户可以,一般客户没钱的喜欢用分布式存储去做,但是客户又需要有很好的性能,可以做得有点像高端存储那种,时延比较低,调度做得比较均匀,解决很多分布式存储可靠性或者性能线性扩展的问题。未来的AI存储,我认为真正到了高性能的时代,很多厂商可能开始往这边转向Shared—Everything架构。在全闪时代,高端存储和分布式存储可能会做到架构的统一。