企业存储技术 · 2022年05月06日

110 GB/s、1900万 IOPS:使用GPU的RAID卡及其背后

使用GPU来做RAID卡的GRAID我不是第一次听说,但之前并没仔细研究。昨天看到一篇新闻(_https://news.mydrivers.com/1/...)说他们推出了新品——SupremeRAID SR-1010号称全球最快的NVMe/NVMeoF RAID卡。

fdaf1b791f6adf3df1397efd7d6928e5.png

没错,这块卡硬件上就是NVIDIA RTX A2000,半高双宽,只是把金属I/O挡片换了,没有显示输出接口而已。

下面来看看性能(_图片点开后可放大,以下同_):

71cd5d20228cdb2479243fcf1ae49a54.png

注意,上图左/右分别是Linux、Windows环境的性能;上半部分为RAID优化状态,下半部分则是Rebuild修复时。仅看性能数字,确实比使用Broadcom等芯片的传统服务器SAS/NVMe RAID卡要高很多(扩展阅读:《_350万IOPS:NVMe SSD RAID卡性能测试解析_》)。

首先是Linux下4K随机读1900万IOPS;随机写RAID 10可达600万,RAID 5则是150万IOPS。顺序读带宽110 GB/s(差不多要把服务器主板的PCIe/NVMe带宽都用起来吧),不同RAID级别的顺序写都在20多GB/s。

疑问1:GRAID与mdraid操作系统卷管理器的关系

Windows下的性能比Linux要低许多,特别是随机I/O,这让我想起了依赖操作系统软RAID/卷管理器的Intel RST/VROC。唯一例外的是,GRAID Windows RAID 10顺序写能跑到比Linux还快的35 GB/s(正好是随机读的一半)。

至于在Rebuild重建时的性能衰减,也是Windows下的读速度下降比例更大。GRAID独特的一点是,Rebuild时的写性能普遍影响较小,这个我们结合看下面的原理图应该更好理解。

c28864d7bb827783e633485d11887a10.png

根据GRAID架构图,它在用户数据读取时是不经过GRAID控制卡(GPU)的,也就是说驱动软件里有维护RAID算法和结构。而写数据时要经过GPU卡,计算校验位(也有读取数据更新校验块的时候)之后写入NVMe SSD。

再看前面GRAID的写带宽,在GPU卡接口PCIe Gen4 x16的情况下,能跑到20GB/s以上已经效率挺高了。
8d8b66afb7753f8970eefd436b10e83e.png

上图引用自GRAID-SupremeRAID用户手册。在这个预安装的软件包中,就包括NVIDIA的GPU显卡驱动。再看手动安装过程,会有更多的发现哦:)

675407aeacb534d8fd8a0ac17c8f02b9.png

如上图,大家看到GRAID依赖的包里有什么了吧?mdadm是MDRAID管理工具。

当然,与VROC不同的是,Intel经过优化还是让MDRAID跑在CPU上,而GRAID则是用GPU来跑(所以算硬RAID?)。

eed4b9916831e206e6ae2021cca128d1.png

那么是不是任何一块NVIDIA GPU都可以支持GRAID软件呢?根据上面这段说明,我感觉License Key有可能是与GPU序列号绑定的。

60bec578525f196a6c403142a7a42491.png

上图中的层级结构,如果对传统RAID技术熟悉的朋友应该不难理解。GRAID首先要用/dev/nvme0n1这样的SSD设备创建/dev/gpd0n1物理盘(用于进一步管理),然后创建驱动器组即RAID,最后在RAID组上划分/dev/gvd0n1“VirtualDrive”逻辑磁盘给操作系统用。

启动盘能否做RAID呢?GRAID不像传统RAID卡那样有主机引导时预加载的Option Rom,也没有Intel那样的生态能把这部分做进BIOS。所以只有在安装Linux系统时,先用MD创建软RAID 1,等graidctl工具等装好后,再转换为GRAID。如下图命令:

91e307dc4f1002e54f1e7a10ba3d9c92.png

这应该就是相当于把之前mdraid中的镜像盘拆出来,直接移到GRAID中。

5f3352d6a4c5e68af96da8c275db8e4a.png

上图是运行列出虚拟盘的命令。我们看到的/dev/mdXXX所在的DG磁盘组ID 4,我猜就是从mdraid转换过来的。而直接用GRAID新建出来的VD路径应该是DG0上的/dev/gvdXXX这种格式。

我还看到了“Stripe Cache”,这又是什么呢?

使用Stripe Cache来改进HDD RAID 5/6的性能

我们知道传统RAID卡、存储阵列控制器上缓存的重要性,特别是做RAID 5/6是否开Write Back Cache对写性能影响较大。GRAID也有一个针对机械盘的“条带缓存”功能。

59336135b3754467bfc16198eb60c050.png

如上图:这一段命令是先在DG0上创建一个4GB的VD(推荐用于Stripe Cache的大小),然后在DG1(应该是机械盘RAID组)上也创建VD(5TB)。接着将4GB的VD配置为5TB VD的“条带缓存”,最终用户访问的VD设备名应该是/dev/mapper/dg1vd0,这里是不是调用了device mapper的Cache功能呢?

具体到这个Stripe Cache所在的DG0,如果是SSD RAID对机械盘加速效果应该更好。另外,上面还介绍了一条刷新stripe cache的命令。

关于掉电保护和数据完整性

最后我还想到一个小问题,比如像Intel VROC这样不带掉电保护写缓存的软RAID,如果需要严格保证写入的一致性不丢数据,可以选择在SSD上配置一个log,有影响性能但保证完整性。GRAID虽然有GPU卡上的显存,但我没看提到掉电保护相关,他们的数据写入完整性是怎么实现的?

GRAID还有NVMe-oF方面的支持,比如通过网络连接外部的NVMe-oF SSD,或者创建NVMe-oF Target供别的主机访问。受限于时间精力,我先不在这里讨论了。大家有什么想交流的,也可以在下面留言:)

作者:唐僧 huangliang
原文:企业存储技术

推荐阅读

欢迎关注企业存储技术极术专栏
推荐阅读
关注数
5615
内容数
264
关注存储、服务器、图形工作站、AI硬件等方面技术。WeChat:490834312
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息