在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_sas rdloaddriver=qla4xxx root=UUID=d44cb995-39d0-4882-a25b-43803b3b9d4b
initrd /boot/initramfs-2.6.32-220.el6.x86_64.img
Leave a Reply