Linux下SAS RAID/HBA卡的磁盘乱序现象,估计不少朋友都遇到过。该问题与Linux内核的驱动加载顺序、RAID卡设备发现/枚举机制等有关。
还记得多年前我曾请教过同事PERC RAID卡对VD(即RAID Virtual Drive)和非RAID(JBOD)磁盘的排序,当时讨论的卡,是Non-RAID盘按照服务器机箱的槽位顺序排在前面,比如从/dev/sda开始,然后才是RAID磁盘组。
上图就是我在《350万IOPS:NVMe SSD RAID 卡性能测试解析》中曾经讨论过的,Dell PowerEdge RAID Controller 11系列中的PERC H755阵列卡。
本文参考自Dell技术文档《Firmware Device Order for PERC H750, H755, H350, and H355 Storage Controllers (Linux Only)》。
注:Firmware Device Order(固件设备排序)简称FD,早在2021年就有了,也不算一个太新的技术吧。
PERC H75x和PERC H35x 默认磁盘排序机制不同
PERC H75x即带有缓存和掉电保护的全功能RAID卡;H35x没有缓存,可以大致理解为在SAS/NVMe HBA的基础上,固件层面加入了简单的RAID功能,如果只是用个基础的RAID 0, 1, 10倒也还ok。
两个系列的卡默认都是Non-RAID在Linux里的盘符排在前面,H75x是按照机箱/槽位的顺序,而H35x则是按发现的顺序而不是槽位;
往后排就是RAID Virtual Drives,这里又不一样了,H35x是按照RAID组创建的顺序来排,而H75x则是按照RAID组创建的逆序——下图是一个示例。
这个图表大家一看就清楚,不用我重复赘述。
PERC 11 RAID卡的FDO(固件设备排序)选项
在启用了Firmware Device Order Linux枚举功能之后,Boot device的盘符可以排在最前面,然后依次是RAID Virtual Drivers、Non-RAID盘。
FDO的一个价值,就是把H75x和H35x的使用习惯统一起来
更具体一点,在多个Virtual Drivers之中,PERC H75x和H35x统一按照创建的顺序来排盘符;Non-RAID也是统一按照发现顺序,而不是基于机箱槽位。
Firmware Device Order有两种途径打开和关闭,一个是RAID卡固件的HII配置工具(即我们通常所说的UEFI/BIOS设置界面)。Select Main Menu > Controller Management > Advanced Controller Properties,Select Firmware Device Order,应用修改后重启生效。
另一种方法就是perccli工具。
To query the current setting:
# perccli /cx show deviceorderbyfirmware
To enable Firmware Device Order:
# perccli /cx set deviceorderbyfirmware=on
To disable Firmware Device Order:
# perccli /cx set deviceorderbyfirmware=off
where x is the controller instance for the PERC 11-series controller being targeted.
FDO支持的Linux版本(不支持Windows和VMware)
以上是PERC 11 Firmware Device Order支持的Linux发行版(或比这些高的版本),注意RedHat、Suse和Ubuntu自带的RAID卡驱动版本。
注意:较高版本Linux 5.x内核,即使打开FDO,设备顺序也可能不一致。
Linux 5.x kernels and above probe for block devices asynchronously. Device ordering can be inconsistent because of this, even with FDO enabled. See the OS documentation for custom persistent device alternatives.
如果在打开Firmware Device Order选项的情况下启动了Windows或者VMware ESXi系统,则驱动会找不到RAID卡上的盘,重启之后您会收到上图这样的提示。也就是说,非Linux或者Linux版本不在FDO支持范围的用户,需要关闭FDO。
以上是PERC H75x和H35x支持FDO的最低组件版本要求:包括RAID卡固件、Linux设备驱动,以及perccli工具版本。供参考
参考资料
扩展阅读《PERC12 (H965i) RAID卡测试配置更正& 报告分享》
作者: 唐僧 huangliang
原文:企业存储技术
推荐阅读
- NVMe/TCP 性能对比、部署和自动化
- SmartNICs/DPU Summit 2023会议资料分享(共28份ppt+pdf)
- Xeon w9-3495X 56核工作站测试(2):CPU与GPU渲染之争结束了吗?
欢迎关注企业存储技术极术专栏,欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。