查看原文
其他

Linux磁盘乱序问题:RAID卡有另一种解决方案

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

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(固件设备排序)简称FDO,早在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工具版本。供参考

参考资料

https://infohub.delltechnologies.com/p/firmware-device-order-for-perc-h750-h755-h350-and-h355-storage-controllers-linux-only/

扩展阅读《PERC12 (H965i) RAID卡测试配置更正& 报告分享


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


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

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


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

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



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

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

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