查看原文
其他

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

唐僧 huangliang 企业存储技术
2024-12-09

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


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

 

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



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

 

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

 

疑问1GRAIDmdraid、操作系统卷管理器的关系

 

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

 

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

 


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

 

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

 


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

 


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

 

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

 


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

 


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

 

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

 


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

 


上图是运行列出虚拟盘的命令。我们看到的/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也有一个针对机械盘的“条带缓存”功能。

 


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

 

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

 

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

 

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

 

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

 

参考资料

https://www.graidtech.com/solution

https://pan.baidu.com/s/1le_QKeZ-HYp5yhnrIPZBzg?pwd=tcyd

提取码:tcyd



扩展阅读:企业存储技术》文章分类索引(微信公众号专辑)


:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。进一步交流可加微信:490834312。如果您想在这个公众号上分享自己的技术干货,也欢迎联系我:)


尊重知识,转载时请保留全文,并包括本行及如下二维码。感谢您的阅读和支持!《企业存储技术》微信公众号:HL_Storage

长按二维码可直接识别关注


历史文章汇总:http://www.toutiao.com/c/user/5821930387/

http://www.zhihu.com/column/huangliang



点击下方“阅读原文”,查看更多历史文章↓↓↓
修改于
继续滑动看下一个
企业存储技术
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存