[rhel7]RHEL 6系统启动时盘符漂移问题解决办法

更新时间:2018-08-24    来源:linux    手机版     字体:

【www.bbyears.com--linux】

在RHEL 6中安装新的SCSI设备后,可能出现盘符漂移情况,如原来系统盘所在的盘符为/dev/sda,加入新设备,重启系统后,盘符变为最后一个,如/dev/ssda。

盘符漂移原因

Linux内核中,SCSI硬盘盘符的分配与驱动扫描到的硬盘先后顺序有关,即第一块扫描到的硬盘盘符为/dev/sda,第二块盘符为/dev/sdb … 依次类推。

一般情况下,驱动扫描到的硬盘顺序与不同类型SAS/RAID控制器驱动加载顺序有关。如先加载megaraid_sas驱动,则该RAID控制器下的硬盘会首先分配盘符,即/dev/sda所对应的硬盘在该RAID控制器下。若先加载FC驱动,则FC下面的硬盘会首先得到盘符,此时/dev/sda就在FC控制器下面的硬盘。

RHEL 6系统中,添加新设备后,发生盘符漂移的原因为SAS/RAID控制器的驱动加载顺序发生了变化。而加载顺序是udev机制配置文件决定。

 盘符漂移解决办法

在intramfs内核启动文件中,我们可以看到cmdline/目录下的启动脚本01parse-kernel.sh。在通过udev机制加载驱动前,先执行该脚本。在该脚本中,可以看到解析内核参数rdloaddriver,即内核先加载参数中的rdloaddriver。

 代码如下

 [root@RH2285 cmdline]# ls

01parse-kernel.sh  10parse-resume.sh     20parse-blacklist.sh  30parse-crypt.sh          30parse-lvm.sh

01version.sh       10parse-root-opts.sh  20parse-i18n.sh       30parse-dmsquash-live.sh  95parse-block.sh

[root@RH2285 cmdline]#

[root@RH2285 cmdline]# cat 01parse-kernel.sh

#!/bin/sh

 

for p in $(getargs rdloaddriver=); do

       modprobe $p

done

 

盘符发生漂移的机器上,执行驱动加载顺序即可。如先加载megaraid_sas驱动,再加载qla4xxx驱动。

 代码如下

title Red Hat Enterprise Linux Server (2.6.32-220.el6.x86_64)

       root (hd0,2)

     kernel  /boot/vmlinuz-2.6.32-220.el6.x86_64 ro rdloaddriver=megaraid_sasrdloaddriver=qla4xxx  root=UUID=d44cb995-39d0-4882-a25b-43803b3b9d4b

       initrd /boot/initramfs-2.6.32-220.el6.x86_64.img

本文来源:http://www.bbyears.com/caozuoxitong/43843.html