本文章給大家介紹一篇關於RHEL 6系統啟動時盤符漂移問題解決辦法,希望有碰到此問題的朋友可參考此文章解決。
在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 |