中华民族伟大复兴的路上,计算机系统的国产化道路可谓任重道远。本篇,冬瓜哥就来分析一下,打造一款全国产存储系统,到底需要哪些部件,以及国产化现状。
在《存储系统权协议栈总结》一文中,冬瓜哥给出了存储系统中的权协议栈分析,其可作为一个了解存储系统架构的基础文章。
目前的存储系统部件关系基本是这样的:存储介质(磁盘、NAND、光盘)--->介质驱动器/控制器(硬盘驱动器控制器、SSD控制器、光驱控制器)---> I/O接口控制器(SATA/SAS/PCIE) ---> I/O通道扩展器/交换器(SAS Expander、PCIE Switch) ---> I/O通道主机总线适配器(SAS/SATA HBA/Raid适配器)---> CPU/桥片。
在这条完整的I/O路径上,目前来讲,可以说,从头到尾全国产化,基本看不到边。
一. 存储介质和硬盘
先说说机械硬盘,当年长城硬盘算是国产,但是,其内部也并没有实现全部件国产,曾经尝试过使用一些国产部件,但是都以失败告终,不得不换成日产部件,导致成本居高不下,最后夭折,演绎了一段悲情奏鸣曲。从此,再没有人搞机械硬盘,市场被国外垄断,如今只剩下三家在玩,而且面对固态硬盘的围堵,玩也是毫无动力。
再说说固态硬盘,固态硬盘的门槛比机械盘可谓是低得多,其没有精密机械部件和模拟信号处理部件,全都在数字域,而SATA/SAS/PCIE,以及SCSI/NVMe协议都是标准开放的,所以用fpga就可以实现一个SSD控制器。但是企业级NAND颗粒和SDRAM颗粒占了SSD整个成本的90%左右,而目前来讲,这方面国产一片空白。紫光的3D NAND据息明年可以量产上市,这是个良好的开端,在固态存储时代实现弯道超车,从存储介质开始。
SSD控制器虽然不是SSD的成本的主要核心,却是其他一切的核心,包括性能、可靠性、兼容性、寿命、开发成本等。在这方面国产公司雨后春笋,其中大部分是中低端产品,而中高端产品则一直被国外产品垄断,包括Intel、Microsemi(收购了PMC的Flashtec系列控制器)、三星以及其它厂商。不得不说,国外的这些SSD控制器在可靠性和成熟度、市场推广能力和生态建设能力上都更胜一筹,但是其高价格也相对高。
SSD整盘方面,目前国产产品中较为高端的为Memblaze(忆恒创源)的PBlaze5系列产品,其采用了高规格的主控制器和3D NAND颗粒,固件+算法完全是自主研发,算是国产SSD厂商中唯一一个可以做到100万IOPS以上的全系列企业级产品线的。另外,PBlze5系列产品还率先支持了NVMe双端口设计,为NVMe固态盘在企业存储系统中的广泛应用扫清了一道关键障碍。企业级存储系统的一个重要特征就是双冗余部件,什么都是双份或者多份。纵使可以使用Raid技术实现硬盘的冗余,但是为了防止单个控制器故障,其要求单个硬盘提供两个物理上独立的接口,分别接入到两个控制器中的各一个。
这个特性在SAS接口上得到了完美的实现,SAS硬盘都是双端口,但是在新兴的NVMe+PCIE接口的固态硬盘上却一直没有人推出,直到PBlze5。该特性可以通过软件控制来变更,也就是原本一个x4 PCIE通道的U.2接口,可以被配置为分裂成2个x2通道的逻辑接口,然后通过背板或者专用连接器,将这两路的x2信号分别导向两个控制器中的一个上的CPU一端,这样,当其中一个控制器故障时,依然可以通过另一个控制访问该盘,从而实现冗余。
光存储应该说是存储领域长期默默无闻的角色,但是俗话说,三十年河东三十年河西。光存储或许会是将来的一匹黑马。目前,光存储系统已经基本上实现了全面国产化。其典型代表为国内的紫晶光存储系统,紫晶是目前中国最大的蓝光光盘和蓝光光存储系统提供商,也是拥有全自主研发的软硬件和介质的厂商。
紫晶光存储系统有3个系列:分别为柜式中低端的BD系列(光盘库)、柜式高端的ZL系列(光存储系统)以及桌面式的MHL系列(光存储系统)。BD系统更像是以光盘为边界的光盘管理系统,其上存储的数据格式符合标准格式,可以被任意标准光驱读写。其他来源的标准格式存储的光盘也可以纳入BD系统的管理范围。而ZL系列更像是个比较封闭的光存储系统,其有自己的存储格式,用户感知不到光盘,而只感知到NFS/CIFS目录空间。
ZL系列在一个标准机柜内最多可装载 12240 张光盘,存储容量按型号的不同从 180TB 到 1.2PB,属于业界领先水平。支持可48个光驱并发,支持万兆网传输。提供数据冗余技术,用户可按需要配置冗余级别,实现数据的最高安全化。MHL系列为4U高度的机架式光存储系统。
小结:固态硬盘全国产化,指日可待!但是随着Intel推出3d Xpoint介质和对应产品,NAND介质以及其附属生态是否会迎来发展瓶颈,也是值得思考和观察的。
二. I/O通道和Serdes
硬盘的主控前端,是I/O接口控制器,包括SATA、SAS和PCIE这三者。其核心技术并不在于连接器形态,这些都根不不是事。其核心技术也并不过多的在于其交互协议,因为这些协议都是开放的、标准的,其无非就是一堆事务数据包编码格式。其真正的核心在SATA/SAS/PCIE的PHY层,或者说,Serdes层,或者说,Serdes中的信号完整性处理层。
目前,中低端的SAS/SATA I/O控制器基本上被Marvell垄断,而中高端的(性能、可靠性、扩展性都要更高)基本被Microsemi和Broadcom垄断。Intel一度想把SAS控制器集成到桥片内部,但是最后出了bug,据说也是Serdes方面的问题,后面就再也没玩了,只搞PCIE,以及后续的Ominipath接口。
那么,这个Serdes又是什么东西呢?它是Serial De-Serial的全称,起作用就是在并行和串行信号之间进行转换,按理说这个功能并不算什么,移位寄存器,或者Mux级联就可以搞定。关键是其转换完之后的对信号的整形,包括预加重、去加重、各种均衡(DFE、FIR)等等,以及运行时动态调整均衡参数的能力,这块需要一些独特的算法和经验积累,甚至需要一小块DSP进行信号分析并最终给出新参数。这方面搞不好,就谈不上系统稳定性,链路时断时续,或者发送一些上层信号时没有问题,而另一些信号就会出现问题。Serdes里面的信号处理是核心技术,国内目前在这方面还是有相当差距的。
企业级存储系统中经常使用FC HBA作为前端网络,曾经,国内某个公司推出过一款自研的FC HBA,冬瓜哥并不了解其所使用芯片的背景,不好评论,但是基本上其核心知识还是国外的。
I/O路径上另一个关键部件是SAS Expander,这方面目前也是被Microsemi和Broadcom垄断。其核心技术在于对SAS协议的遵循,以及SAS PHY层中的Serdes中的信号完整性部分,这是一道很难逾越的技术壁垒。而SAS体系已经是太过成熟的东西,国内也不可能再有人去耕耘这个产业,也根本无法竞争。
I/O接口方面,GenZ目前被广泛认为是下一代最具潜力的外部I/O+访存一体化网络。然而,就国内目前的芯片产业来看,也不可能有任何一家公司有实力和魄力去参与GenZ相关芯片的开发,因为GenZ这个生态非常复杂,其牵扯到很多桥接和交换,只有那些有影响力的巨头公司敢去碰它。目前,PCIE控制器的知识产权也都是国外公司的,这些公司紧靠一个IP就可以坐拥知识产权和专利费,一本万利。
再来看SAS/SATA接口的主机总线适配器方面,由于Intel在SAS上搞怕了,或者说Intel也不想把生态给做绝,所以继续留下这个难啃的骨头给Microsemi和Broadcom去玩,所以SAS/SATA到PCIE接口的转接适配器,也就是SATA/SAS HBA以及带有Raid功能的Raid卡,目前依然占据较大的市场份额。这种控制器国内也不可能再有人去自主研发了,因为很难竞争,除非用于一些特定领域要求纯国产的领域。后续某个时间点,可能会全面过渡到PCIE,或者GenZ接口上。
再来看看以太网控制器/网卡和交换机。交换机方面已经实现了纯国产化,但是Host端的网络控制器基本上都是被国外垄断。
最后,CPU、I/O桥、SDRAM等,也是任重道远,国内的龙芯、飞腾、申威等这几年逐渐发展,逐渐羽翼丰满,但是在应用场景上非常首先,龙芯从一开始定位到消费市场替代Intel,到转向军工、工控等特种领域,申威则更像是一款HPC专用芯片,成功让神威太湖之光计算机群登顶世界超算平台。而飞腾目前基于ARM指令集核心构建,面向更加通用的市场,目前发展也很快。
三. 国产化存储系统
单个部件/器件,相比整个系统来讲,后者的复杂度也是相当惊人的。企业级SAN/NAS存储系统由于考虑了冗余性和扩展性以及性能,架构比较复杂,其中包含了大量的部件,系统要将多个部件之间有机的联系起来,其工作量不亚于单个部件内部的逻辑。
比如对JBOD以及其中硬盘的管理,包括加电顺序、各种信息收集监控、热插拔管理、坏盘判断、数据重构、固件升级等等,这方面牵扯到SES(SCSI Enclosure Service)协议、不同的SAS HBA和Expander的兼容性、信号完整性影响等诸多方面因素的作用。
除了管理此外,还需要优化I/O路径以提升性能,性能与可管理性、冗余性、扩展性其实是矛盾的,比如,提升了可管理性,可能会影响到性能,必须需要记录更多更详细的日志,此时会耗费更多CPU和内存资源。
所以,存储系统的OS平台以及其内部运行存储管理程序(或者统称为存储系统的固件),是整个存储系统的核心关键技术。对于存储系统而言,只要固件拥有自主产权,基本上就可以称之为一款国产存储系统。因为在系统级层面,底层的各个部件的功能变得更加透明和一致,只要遵循相同的标准,是否国产化其实都能被驱动。所以,系统级考察的东西与部件级是不同的。
更换到国产CPU平台的步骤是什么?1.把Intel CPU从主板上拿下来。2. 换上国产CPU。3. 开机。当然,这是个段子。要换CPU,意味着指令集可能会变化,这就意味着需要重新修改和编译内核,此外,之前的一些底层设备驱动程序也需要进行修改移植。除了指令集不同之外,不同CPU的缓存架构、内存管理、任务管理、中断机制和流程、I/O和DMA架构可能都不相同,而底层软件中有些逻辑可能是与CPU的这些架构紧耦合的,需要移植工作。比如网卡、SAS HBA/Raid卡、显卡各类HBA的驱动,这方面的负担很重,如果对应板卡厂商不愿意或者没有资源去开发基于该CPU、对应OS版本的驱动的话,CPU厂商倒是可以基于这些板卡的Linux开源驱动进行移植,但是在不知道寄存器手册和板卡上I/O控制器架构的前提下,很多地方只能猜测,然后通过黑盒测试去穷举问题,这个过程真是焦头烂额。
不同CPU的桥片和主板设计不同,不过,PCB设计其实并不是什么问题,而外围桥片上各个部件的驱动程序这方面牵扯到较大工作量的开发和跨平台移植工作。
另外,BIOS的开发其实也够喝一大壶了。所以,做个CPU,除了性能高、功耗低、I/O接口扩展性高之外,还得要求生态要完善,后者其实才是核心挑战。
但是,冬瓜哥很欣喜的看到,国内纯自研存储厂商宏杉科技推出了基于飞腾平台的自主国产存储产品。欲知详情,且听冬瓜哥下回分解。