开篇先做个广告,今晚冬瓜哥将应清华大学出版社邀请做网络直播,分享“我的存储生涯”这个课题,包含工作学习经历,写书经历心得,技术趋势探讨,未来规划。长按下面码进入,注册“大话存储”课堂即可。现场将赠出10本大话存储 终极版。并宣布一本新书的出版计划。
所谓次世代存储系统,就是指诸如“软件定义存储”、“分布式存储”、“云存储”、“全固态存储”、“ServerSAN”、“超融合”这几个概念。这几个概念里面,分布式存储是技术名词,比较实在,全固态也还可以,至于软件定义、云存储、超融合、ServerSAN,啧啧,太虚。上面这几个名词,耳根子都快被轰出茧来了。
所谓一杆老枪,说的则是SAS这个技术。回想一下就可以发现,在存储系统的后端,SAS被使用的年头已经超过了FC,FC不过坚挺了5年左右(2001~2005),而SAS则已经坚持了10年(2006~2016),而且有望继续再坚持多年,宝刀未老。
说道SAS这杆老枪照玩次时代存储系统,我们就先来看看SAS技术是如何在全固态存储系统中体现其优势的。
首先,硬件上原生支持双端口,双控甚至多控无需担心架构设计上的复杂性;接入的设备容量可以灵活选择,不受限制。
其次,SAS成本相对PCIE生态体系而言足够低廉,相同接入容量下,SAS Expander的成本比PCIE Switch低很多。
再次,在软件协议栈、带外带内管理接口方面,非常成熟。对于PCIE体系的全固态存储,目前来讲多为单机箱,如果加上JBOF,则需要考虑JBOF的管理接口,这方面目前没有一个非常成熟的方案,有不少方案在JBOF中加上了SoC专门做管理,而且接口都是私有的。而SAS JBOD/JBOF可以利用原生的标准SES协议做到带内管理。
另外,SAS天然是一个交换网络,有自己的地址体系,很容易形成 Fabric 。而PCIE网络则比较复杂,因为PCIE使用内存地址映射方式进行寻址,与系统紧耦合,厂商不得不在PCIE Switch上进行复杂的开发以形成一个基于内存地址路由的网络,目前仅有的两家PCIE Switch芯片供应商正在开发这个功能,已经开发出来的版本目前看来问题比较多。
总之,SAS是一个非常成熟的生态,基于SAS搭建全固态存储,虽然缺少了概念和心意,但是其软硬件稳定性在当前绝对是要高于PCIE体系的产品,性能上则确实会低于PCIE,但是SAS SSD目前体现出来的性能在100~200K IOPS之间,相对来讲也是可以接受的。
不过,冬瓜哥要分享一个一般人不知道技术点,SAS网络是基于连接的交换网络,也就是教科书里所谓的“虚电路交换”。这种架构的优势在于连接建立之后,会被两端独占,传输数据的时延极地,带宽很高。但劣势就是连接被独占时,其他部件不能利用该连接传数据。这与包交换网络有很大不同。
所以,要想充分玩转SAS这杆枪,就得去精细化的设计后端的架构。
当SAS遇上全固态存储
宏杉科技的MS7000-AFT全固态存储系统的架构设计上就充分考虑了SAS的优劣势,扬长避短。我们知道,传统的存储系统后端机头接JBOD的通路一般只有2个x4 SAS宽端口,也就是每个控制器通过其中一个x4通道的SAS链路连接到JBOD,这条x4链路会极大的限制SAS固态盘的性能。因为SAS是基于连接的交换网络,当接入较多SAS设备之后,不但要考虑让单个设备发挥到极限性能,而且还得同时考虑多个设备均衡的发挥出各自的性能。所以,MS7000-AFT在后端采用了8个x4的SAS宽端口上联,其总带宽可以达到384Gb/s,完全释放了SAS SSD的性能。每个JBOF有25个SSD盘,每6个SSD独享2条48Gb SAS3.0通道,在共享的基础上又做了一定程度的小范围隔离,更有利于混合业务场景。
做到这样的架构设计,需要对JBOD进行特殊设计,增加对应的大交换容量的SAS Expander。我们知道,宏杉科技的存储系统的另一大特色就是后端采用SAS全共享架构,单个JBOD可以利用8条x4宽端口上联到多个控制器,多控并行处理IO,进一步充分释放了后端SSD的性能。这一点则是其他基于SAS/SATA SSD所构建的全固态存储的硬伤之一。
此外,为了便于用户选择,MS7000-AFT有两种运行模式可选,第一种是全功能模式,其中会包含快照、复制、Thin、重删/压缩、镜像、双活等;第二种是性能模式,系统内会将上述功能关闭,在IO路径中完全Bypass,从而降低时延,提升整体性能。
在软件架构上,宏杉科技是国内第一个将Raid2.0技术落地在产品中的厂商,其对应的商品名称为cRaid技术,也就是基于Cell的Raid。条带(图中DiskChunk Group)不再绑定硬盘,而是可以浮动在任意数量(必须大于最好远大于条带块的数量)硬盘的上方,多个DCG组成Cell。
Raid2.0 底层的灵活数据布局,任何Cell可以位于任何地点,那也就意味着,任何Cell可以被写入任何SSD,同时对上层透明,应用主机看到的只是一个逻辑存储空间,而看不到底层实际物理块的存放位置。存储系统采用一个大表来记录逻辑块与物理块的映射关系。那么,MS7000-AFT存储系统自然就可以根据系统内全局范围内的SSD盘的寿命、状态、性能表现等来决定逻辑资源所体现出来的各种属性QoS,方法就是将数据块有策略的、有选择性的分布在正确、合适的地点,以及分布在合适的底层物力资源跨度上,从而保证了性能、寿命的均衡。
在性能方面,MS7000-AFT采取了如下增强措施:
1 :多线程设计,并对前端和后端业务的中断进行智能绑定,保证各CPU处理均衡;且后台设计单个IO的处理流程在同一个物理CPU上,减少多个物理CPU之间内存交互,从而减少性能影响,充分发挥硬件多个CPU的优势;
2 :CACHE针对全闪存设计智能算法;基本设计原理是:CACHE内存处理速度高于SSD处理速度,且不同业务模型CACHE处理性能不相同,软件根据前端业务流量和业务压力情况,动态选择处理介质,在缓存和SSD处理之间达到平衡,保证IO处理高效且达到最低延时;
3 :在各种RAID算法上进行优化,减少RAID10的条带冲突,采用优化读策略,RAIDX算法利于IO合并和缓存的功能减少算法回读,从而减少IO读写路径,提升SSD读写性能;
4 :设计全新的硬盘调度算法,选择最快路径下发IO到硬盘,保证IO响应低延时; 保障固态硬盘4K对齐 写入,避免跨区写入而造成的写放大和写性能下降;
5 :与SSD厂商结合,自定义相关报文,用于快速计算SSD寿命和剩余使用时间等相关信息,同时软件针对这些信息进行快速处理,及时进行RAID级别重建和硬盘相关告警机制,保证业务稳定性;并设计硬盘FW在线升级方案,保证SSD的稳定性;
当SAS遇上分布式存储
我们再来看一下分布式存储系统是如何将SAS的强大网络特性发挥到极致的。
所谓分布式存储,就是用多台独立的Server+网络来将资源整合起来。其在硬件上的本质就是DAS,用SAS Raid卡或者HBA卡,接入十几块本地SATA/SAS硬盘,形成一个node,再用分布式软件管理层虚拟成一个存储池,上面加上应用成为超融合、一体机之类。这些网红开发者们,其实并不是在做硬件,而是在做软件,基于开源软件,也就是所谓软件定义,他们并不太多关心系统的底层架构。也并不了解SAS网络其实大有可用武之地。
然而,书生云公司的SurFS分布式文件系统,却是个比较独特的存在。其并没有像多数其他架构那样采用标准服务器+本地盘方式搭建分布式存储,而是对底层硬件架构做了充分的功课,充分利用了SAS网络化的优势。在如今大量的所谓“软件定义存储“在市场上叫嚣的大环境下,SurFS书生云在底层架构方面能够静下心来研究和尝试不得不让冬瓜哥佩服。
看一下SurFS的基本架构,它的本质上仍然是一个分布式文件系统,但是它的每个节点从后端获取存储资源的方式,却很不同,每个节点并不用固定盘位配置的本地盘,而是利用从SAS交换机后挂的JBOD中获取任意数量的硬盘,充分做到了随用随取的灵活性。通过SAS Switch+JBOD,可以将任意硬盘分配给任意节点,而且这个过程中不需要重启,不影响业务。
这个架构的另外一个优点是,可以抛弃传统分布式集群极度浪费空间的多副本冗余机制,只需要使用传统的Raid或Erasure Code等容错机制即可。因为当某个节点宕机之后,其原先挂载的硬盘并不像传统分布式系统那样变得完全不可访问,而是可以通过对SAS Switch的配置,瞬间将其原先挂载的硬盘全部分配给任意一台其他节点,从而继续提供服务。这在效果上与多副本分布式集群接近,但是却大大节省成本。
与传统固定配置服务器节点的分布式集群相比,这种架构可以极大简化服务器节点的设计复杂度,甚至可以不设计任何硬盘槽位,这样就可以提升节点密度。
SurFS 这种独特设计,使得分布式系统能在享受共享式架构带来的各种优点的同时避免了使用外置SAN存储,避免了浪费空间的多副本冗余机制,扬长避短。不失为一种很好的可行方案。对于云计算环境下的存储系统,无疑需要分布式集群所带来的良好的扩展性,但是SurFS独创了一种“共享存储池型分布式集群”架构。
后续SurFS会在后端存储层引入更多共享式思想的优势,比如将集群文件系统的元数据放置在一个共享的SSD上,所有节点均可以共享式读写,而抛弃传统分布式系统那样的通过IO节点上的agent与元数据控制器通信来获取元数据并读写数据块,后者需要通过前端的慢速网络,来回多个round trip,会导致很高的时延,而共享式读写则是每个节点通过后端高速SAS网络一跳直达,并且通过锁的形式来保证一致性。
图:SAS交换机
综上,冬瓜哥为大家介绍了目前业界的两个厂商针对SAS这个技术在次时代存储系统中的应用做了个好表率。总之,SAS真可谓是宝刀未老。纵观NVMe网红,其轻装上阵初出茅庐,所要走的路还有很长,有很多其实是在走SAS/SCSI体系的老路,比如双端口NVMe盘(应对多控同时连接)、NVMe over Fabric(重走SCSI overFC/SAS/IB/Ethernet的路)、JBOF enclosure service(重走SCSI Enclosure Service的路,或者干脆就利用现成的SES框架)。小心呦,别到了最后发现还是得背上一身的包袱。