随着NAND Flash价格的不断下降,NVMe SSD正在慢慢普及。NVMe SSD由于极高的性能常被用作数据缓存,即使NVMe SSD发生故障,数据还在持久化介质中存储,不会导致数据丢失等严重事件。随着NVMe SSD的大量使用,其逐渐被用作持久化存储介质,替代传统磁盘。一旦NVMe SSD被用作持久化介质,便提出了数据保护的需求。传统磁盘采用RAID或者多副本的方式实现数据保护,那么在NVMe SSD上如何进行数据保护?是否还可以采用传统的硬RAID卡为NVMe SSD提供数据保护服务?
业内Broadcom今年中旬的时候推出了全球首款多模ROC控制器,ROC控制器是硬RAID卡的核心控制器。原有的ROC控制器提供了SAS/SATA接口,支持SAS/SATA盘。多模控制器在原有接口的基础上支持NVMe接口,不仅可以支持传统的存储盘接口,而且可以支持NVMe SSD。这是不是意味着传统硬RAID可以扩展到NVMe SSD应用领域?要想回答这些问题,要从硬RAID的基本原理进行分析。
以LSI的硬RAID为例,其通常采用ROC控制器为核心。ROC是一种RAID SOC控制器,内部集成了多个微控制器,PCIe控制器以及SATA/SAS接口控制器。如果采用这样的SOC来构建NVMe RAID,那么其基本的结构如下图所示:
硬RAID卡一端扩展多个NVMe接口;另一端扩展X16 PCIe接口与主机相连。一个U.2 接口的NVMe SSD普遍采用X4 PCIe链路,那么4块盘就可以把与主机相连的PCIe接口跑满。如果想要扩展更多的NVMe SSD,那么与主机相连的PCIe接口就会成为性能瓶颈。
另外,在SOC中需要运行RAID固件,RAID是数据通路的核心软件,如果需要发挥多块SSD盘的性能,那么需要性能优异的SOC控制器,否则SOC本身将会成为严重的性能瓶颈。在NVMe SSD内部的控制器,通常都会采用多核架构,例如一个SSD内部采用16个控制器核,单盘可以运行到80万左右的IOPS。如果想要发挥多NVMe SSD的性能,该嵌入式RAID控制器一定要进行特殊设计,并且采用众核设计思想,通过高并发发挥NVMe SSD多盘性能。目前Broadcom发布的多模控制器似乎并不能很好的发挥多盘性能,是NVMe RAID的性能瓶颈所在。
从Latency的角度来看,NVMe SSD本身采用PCIe接口,如果中间再插入硬RAID,那么IO延迟势必会增加不少。所以,从NVMe 硬RAID的设计来分析,由于NVMe SSD性能实在太高,硬RAID很多地方将会出现性能瓶颈。在不考虑性能的前提下,采用传统RAID架构的NVMe RAID是可以提供数据保护服务的。但是,如果在保证性能的前提下,为NVMe SSD提供数据保护,那么PCIe接口需要升级,SOC的设计需要突破。
在NVMe存储时代,硬RAID遇到了性能问题,如何才能更好的为NVMe SSD提供数据保护服务?以软件为核心的数据保护解决方案是一种很好的选择,相信软RAID是NVMe RAID的未来。