昇腾故障案例详情页

Atlas 800-3010 3508 RAID卡升级驱动后,RAID卡下的硬盘设备的scsi host id概率性发生变化

2021/09/02

45

暂无评分

问题信息

问题来源产品大类产品子类关键字
研发问题安装部署驱动固件SCSI、RAID、AHCI

现象、问题描述

Atlas 800-3010安装RHEL 7.5后,在reboot测试过程中,3508扣卡上面硬盘的scsi host id不能保持相同,如下图所示,前一次重启后的3508 scsi host id是14,下一次却变成了6。

关键过程、根本原因分析

  1. 在讨论根本原因前我们先明确scsi host id的分配原则:scsi host id的分配原则是哪个HBA卡的先被驱动初始化,那么它的scsi host id就先获得,然后加1。由于这是通过一个全局变量来控制的,因此先初始化的HBA卡的scsi host id总是比后初始化的HBA卡的小。
  2. 出现问题的3508卡的驱动版本是07.703.09.00,但是RHEL 7.5自带的3508卡inbox驱动并没有这个问题。
  3. 3508 RAID卡inbox驱动先于SATA Controller驱动achi初始化,所以根据scsi host id的分配原则,此时3508 RAID卡的scsi host id比SATA Controller的scsi host id小。

  4. 3508 RAID卡非Inbox驱动后于SATA Controller驱动初始化,所以根据scsi host id的分配原则,此时3508 RAID卡的scsi host id比SATA Controller的Host ID大。

  5. 进一步分析发现,这是OS对Inbox和非Inbox驱动加载时处理的差异导致驱动的初始化顺序发生了改变。

结论、解决方案及效果

结论:scsi host id发生变化本身并不会对硬盘的时候有影响,但是HBA卡的驱动初始化顺序却会影响盘符发生变化。

解决方案:对于3508卡安装非inbox驱动,我们可以使用内核命令行参数来控制不同HBA卡的驱动的加载顺序来固定scsi host id。
  • 3508卡和SATA Controller都接硬盘的情况,如果需要3508卡的硬盘的盘符在前,同时scsi host id较小,则可在内核的命令行加入以下参数:

    rdloaddriver=megaraid_sas rdloaddriver=ahci

  • 如果需要SATA Controller的硬盘的盘符在前,同时scsi host id较小,则可在内核的命令行加入以下参数:

    rdloaddriver=ahci rdloaddriver=megaraid_sas

经验总结、预防措施和规范建议

备注

本页内容

该页面对您有帮助吗?
我要评分