如何在引導期間跳過/排除一個 SCSI 匯流排掃描?
“Linux debian 3.2.0-0.bpo.3-amd64 #1 SMP Thu Aug 23 07:41:30 UTC 2012 x86_64 GNU/Linux”系統至少有 5 個 SCSI 主機:
root@debian:~# ls /sys/class/scsi_host host0 host1 host2 host3 host4 root@debian:~# cat /sys/class/scsi_host/host0/proc_name mpt2sas root@debian:~# cat /sys/class/scsi_host/host1/proc_name ata_piix root@debian:~# cat /sys/class/scsi_host/host2/proc_name ata_piix root@debian:~# cat /sys/class/scsi_host/host3/proc_name ata_piix root@debian:~# cat /sys/class/scsi_host/host4/proc_name ata_piix
mpt2sas SCSI 匯流排連接了 32 個驅動器。在啟動時(重新啟動後),驅動器大多處於待機狀態(降速)。這會導致每個驅動器按順序旋轉。典型驅動器的啟動時間為 8 到 9 秒。因此,重新啟動後的啟動將需要將近 5 分鐘。
將核心配置為掃描 scsi 匯流排非同步
GRUB_CMDLINE_LINUX="scsi_mod.scan=async"
不會改善重啟時間後的啟動。並且設置scsi_mod.scan=none
使系統根本無法啟動。最終目標是通過 USB 引導,這是另一個 scsi_host:
# cat /sys/class/scsi_host/host5/proc_name usb-storage
如何配置此系統以排除 mpt2sas 或(mpt2sas 和 ata_piix)匯流排在重新啟動後啟動期間啟動所有驅動器?
由於大型陣列位於單獨類型(品牌和型號,或者更確切地說:晶片組)的控制器上,並且系統啟動過程不需要任何內容,您可以通過強制延遲控制器初始化來解決此問題。最簡單的方法是簡單地將執行核心初始化的核心模組列入黑名單,然後在啟動過程的後期手動載入它。
**注意:**非常重要的是,僅對不包含系統正常啟動所需的任何內容的控制器執行此操作。否則,您會發現自己的啟動失敗 - 從服務無法啟動或在錯誤的位置讀取/寫入文件,到徹底的核心恐慌。在實施這樣的方案之前請記住這一點。
首先,找出哪個核心模組處理有問題的控制器。根據問題中提供的資訊進行的快速 Google 搜尋表明,這可能確實是該
mpt2sas
模組。其次,確保程式碼實際編譯為模組;類似的東西find "/lib/modules/$(uname -r)" -name 'mpt2sas*' -print
會做得很好。(是的,我知道這lsmod | grep mpt2sas
.然後,將該模組添加到模組黑名單文件中。您可以將其添加到 /etc/modprobe.d/blacklist.conf 或單獨的配置文件,例如 /etc/modprobe.d/mpt2sas.conf。只需將以下行添加到這樣的文件中。
blacklist mpt2sas
這將禁用相關模組的自動載入。我們將利用它仍然可以使案例如 modprobe手動載入的事實- 其中“手動”可以表示“從腳本”。
在編輯器中打開 /etc/rc.local(在所有其他 rc 腳本之後執行),並在其中的某處添加以下行:
modprobe mpt2sas mount -a
你可能想把它放在文件的後面,但顯然是在任何
exit
或類似的指令之前。可能需要也可能不需要,這mount -a
取決於文件系統實際上是否要在引導時掛載,以及它們是否在核心磁碟分區探測發現它們時自動掛載。您可以先嘗試不使用它,如果您願意並且感到安全,如果它不起作用,您可以訪問系統。如果您需要任何特殊的東西來啟動 RAID 或類似的東西,那介於modprobe
和之間mount
。如果任何特定服務需要大型陣列可用,您可以創建一個單獨的 rc 腳本來啟動陣列並指定它應該在任何此類服務啟動之前執行。您可以通過將其包裝在子shell中使其在後台執行,語法如下( commands ) &
,但這可能會對結果產生任何顯著影響,也可能不會,因為分區探測是在核心中完成的。hdparm
如果驅動器很少被訪問,您可以在安裝分區後使用它來降低驅動器的轉速。簡而言之,這是您可能希望根據您的特定需求定制的部分。
update-initramfs -u
然後,通過以 root 身份執行來更新您的 initramfs 。如果沒有任何問題,您現在應該能夠使用
reboot
您的系統並享受延遲磁碟啟動和分區探測的好處。