中国数据存储服务平台

阿里是怎么做(用)SSD的

阿里需要什么样的SSD

笔者最早是在2017年才听说阿里在做SSD,2018年年初,阿里巴巴发布AliFlash V3 SSD,支持Open Channel和NVMe双模,阿里作为拥有超大规模数据中心的互联网巨头,自己做SSD首先肯定考虑了成本,国内外的超大规模数据中心在基础设施领域的创新不断,超大规模的创新经常会带来巨大的成本效益,其次,超大规模数据中心里的需求跟许多企业级数据中心用户还是有很大不同的,实际中到底有什么不同呢?这个问题也只有阿里巴巴自己的专家说的清楚了。

2019全球闪存峰会上,来自阿里巴巴的高级技术专家,阿里云基础设施存储部件研发专家杜宇介绍了阿里巴巴SSD上的创新,这次分享介绍了阿里为什么要自己做SSD这种存储硬件厂商在做的东西,阿里对于SSD的需求以及阿里SSD的实际产品路线和使用场景。

阿里为什么要自己做SSD?

从杜宇的介绍中了解到,原来阿里巴巴在2016年就开始在做自研的AliFlash SSD了。一直以来,阿里内部对SSD的需求非常大,一方面,需要采购市场上标准化的产品,一方面,通过自研SSD技术,加深对SSD的理解,以求更有效地运用SSD。

2016年,阿里巴巴推出的第一代自研AliFlash V1,累计上线数万片SSD,先后稳定服务了阿里的多个业务。2017年,阿里开发基于NVMe接口的AliFlash V2版本。从这以后,阿里开始思考自研SSD的产品发展路径。考虑到SSD是市场竞争比较激烈的专业化硬件产品,阿里自研AliFlash如果只是跟随一些SSD大厂的产品演进步伐,未来作为同类竞争产品,AliFlash很难发挥出差异化的优势。

带着这种想法,从AliFlash V3开始,阿里制定了Open Channel开放式接口规范。希望通过这个规范和所有SSD硬件厂商一起去打造面向大规模云数据中心的定制SSD生态。对于传统NVMe SSD,FTL处理的工作全部由SSD自身的控制器来完成。对于符合Open Channel开放式接口规范的SSD,FTL处理工作都交给了主机CPU来执行。通过主机端加载不同的FTL软件驱动,可以实现SSD的深度定制。

2019年,阿里开放式接口规范已经演进到AliFlash V5版本,在V3的基础上加入了对FPGA支持,实现存储内的加速计算任务。实际应用方面,杜宇介绍说,通过FPGA在SSD上的加速作用,业务特定应用场景的IO处理性能得到明显提升,这是2019年的最新进展。

到底阿里对于SSD有什么特殊的要求呢?

作为超大规模数据中心用户,阿里发现传统SSD最大的问题就是黑盒化。用户看不到SSD内部在做什么。当SSD出现一些故障或者性能问题,用户很难精确的去分析和定位问题,也没有有效的办法去快速解决和规避这些问题。阿里希望SSD提供白盒化的底层接口, 通过这些底层接口去精确的了解和控制SSD的运行状态。阿里白盒化SSD的想法都写在了“阿里巴巴开放式接口SSD规范(以下简称阿里规范)”,包括定义了支持规范所需要提供的一些特殊SSD硬件功能。不过问题又来了,制定规范相对比较容易,但是还是需要厂商制作符合规范的产品,这样规范才能落地。

为了引导SSD厂商加入阿里巴巴开放式接口SSD生态,阿里特地自研定制了AliFSC V1 SSD控制器。这是首款能够完整支持阿里规范的商用SSD控制器。该控制器支持16个NAND通道,支持主流NAND供应商。基于AliFSC V1开发的AliFlash V3 SSD,硬件性能可以和目前的SSD大厂的主流企业级产品基本保持一致单盘IOP。

由于采用的是白盒化规范,阿里白盒化开放式SSD架构带来了很大变化。传统架构下,存储数据的NAND颗粒通过接口连接到SSD控制器,控制器上运行着固件(Firmware),控制着面向NAND的读写访问操作,传统架构下应用只能访问到抽象的块设备层。白盒化的开放式接口SSD直接使用了NAND底层接口,可以直接让上层软件直接读写NAND颗粒。

AliFlash V3采用的是Open Channel开放式接口。上文也提到了,传统FTL固件代码不在控制器里运行了。这样做的好处在于,它提供了更灵活的访问方式,能精确控制数据在SSD上放置的位置,能看到SSD上有多少通道,多少个NAND颗粒,每个NAND颗粒有多少个物理块等等深入的信息,所有这些信息都直接可以让主机端的驱动和上层软件看到。由于所有NAND IO调度都是主机端发送的,主机端可以精确地控制SSD内部正在处理的读写命令的数量。应用可以控制SSD的GC操作。以上都是阿里白盒SSD规范定义的开放能力。

由于AliFlash V3没有使用传统的块设备访问接口,阿里巴巴同时开发了通用块设备FTL驱动,以此来保证现有的软件能够无缝运行在符合阿里规范的开放式接口的SSD上。阿里巴巴开发的块设备FTL和传统FTL有非常类似的地方,但有几个地方和传统FTL有很大不同。

第一,阿里块设备FTL的设计理念和传统厂商不一样。传统SSD厂商通常强调SSD硬件的极限IO跑分性能。阿里块设备FTL驱动更关注SSD在业务场景条件下的实际性能,不对极限IO跑分场景做过度优化。

第二,除了把SSD硬件性能发挥出来,稳定性也是阿里FTL驱动重点考虑的方面。对于超大规模数据中心,由于上线的SSD数量非常大,哪怕非常小的设计缺陷都可能带来很大的稳定性风险。为了优先保障驱动稳定性,阿里对驱动代码实现做了尽可能多的简化。

第三,阿里块设备FTL需要在主机端实现掉电数据保护。由于主机端运行环境的限制,一些传统的FTL掉电数据保护实现技巧不再适用于主机端的驱动。驱动代码架构必须通过极简化的设计,才能保证提供可靠的掉电数据保护。

第四,针对不同的部署条件,阿里阿里巴巴通用块设备FTL驱动可以支持内核态和用户态两种运行模式。

第五点,作为超大规模数据中心用户,SSD监控特性支持十分重要。比如,当监控平台检查看到IO性能抖动,传统SSD由于监控参数信息比较匮乏,导致很难准确定位性能抖动的原因。当FTL驱动运行在主机端的话,更多关于SSD的指标信息在主机端都可见,可以帮助更精确的定位并解决问题。

对于开放式接口SSD,由于的FTL存在于主机端,当它做固件热升级的时候,升级速度会比传统SSD要快很多。这里的原因是传统SSD需要有一个下电再上电,对盘的FTL运行状态进行重建的过程。对于开放接口SSD来说,盘的FTL运行状态都保留在主机端,固件升级过程中不需要重建盘的FTL运行状态。所以它可以把固件热升级的时间控制的很短。结合上层存储软件的优化,可以实现业务无感知的快速固件升级。

除了SSD内部运行指标监控和快速固件热升级这些基本的功能,开放式接口可以支持一系列深度的定制优化。杜宇介绍了目前阿里巴巴正在进行的几个定制化工作。

首先是支持多流。通过在应用层对IO打标,冷热数据被写入不同的数据流,可以有效降低SSD写放大,降低读写延迟。

Key Value (简称KV) SSD是一个目前比较热门的方向。通过支持KV接口的KV FTL驱动可以减少软件堆栈,以此来显著减少SSD写放大,提升IO效率和SSD寿命。但是KV SSD的实现通常需要针对具体到业务场景做深度的定制优化,否则很难发挥性能优势。基于阿里的开放接口架构,可以有效的支持这种类型的业务深度定制开发,并且通过大规模部署运用来取得收益。事实再次证明,超大规模数据中心是各种新技术的先锋实践者。

此外,开放式接口也可以支持另一粗/细颗粒度QoS隔离。粗颗粒度的QoS隔离方式是把整个SSD分割成多个独立的物理分区。不同的应用跑在不同的物理分区上,实现不同应用的IO隔离。细颗粒度的QoS隔离则通过增加数据拷贝数量来实现。FTL驱动可以精确控制SSD上的读写操作,确保读写IO请求发送到不同的NAND颗粒上,减少读写IO请求之间的排队延迟。业务可以根据具体的业务场景需求来选择合适的QoS隔离手段。

结语

传统的SSD产品在功能上还存在局限性。针对业务场景进行SSD定制化可以给业务带来更多价值。SSD定制化也要考虑经济性。如果只是在硬件层面去做创新,成本会比较高。各家SSD厂商的能力和侧重也不一样,很难让所有的厂商提供完全一致的定制SSD硬件产品。

阿里巴巴的开发式接口SSD生态是从AliFlash V3开始的。之所以采用开放式架构,可以让硬件厂商提供统一的基于阿里巴巴开放式接口规范的SSD硬件。阿里巴巴则在软件方面定制实现一些传统SSD没有的功能。通过这种软硬件一体的定制优化方式,和SSD硬件厂商深度合作,实现超大规模数据中心的SSD定制化。

未经允许不得转载:存储在线 » 阿里是怎么做(用)SSD的
分享到: 更多 (0)