起動中にSCSIバススキャンをスキップまたは除外する方法は?

起動中に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システムがまったく起動できなくなります。

最後の目標は、別のscsi_hostであるUSB経由で起動することです。

# cat /sys/class/scsi_host/host5/proc_name
usb-storage

再起動後の起動中にmpt2sasまたは(mpt2sasとata_piix)バスがすべてのドライブを回転させないようにこのシステムを設定するにはどうすればよいですか?

ベストアンサー1

大規模アレイは別々のコントローラタイプ(メーカーとモデルまたはチップセット)にあり、システム起動プロセスには何も必要ないため、遅延コントローラの初期化を強制することでこの問題を解決できます。最も簡単な方法は、カーネル初期化を実行するカーネルモジュールをブラックリストに追加し、起動プロセスの最後に手動でロードすることです。

メモ:これは、システムが正常に起動するために必要なものを含まないコントローラでのみ実行されることが非常に重要です。そうしないと、サービスの起動に失敗した、間違った場所でファイルを読み書きする、完全なカーネルパニックなど、起動に失敗する可能性があります。そのような計画を実行する前に、この点に注意してください。

まず、問題のコントローラを処理するカーネルモジュールを見つけます。質問に記載されている情報に基づくクイックGoogle検索は、これが実際にモジュールである可能性があることを示唆していますmpt2sas。次に、コードが実際にモジュールにコンパイルされていることを確認してくださいfind "/lib/modules/$(uname -r)" -name 'mpt2sas*' -print。 (はい、これがデフォルトで-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スクリプトを作成して配列を起動し、そのサービスを開始する前に実行するように指定できます。などの構文を使用してサブシェルにラップしてバックグラウンドで実行することができますが、( commands ) &パーティション検索はカーネルで実行されるため、結果に大きな影響を与えない可能性があります。ドライブにほとんどアクセスできない場合は、hdparmパーティションをマウントした後にスピンダウンドライブを使用できます。要するに、これは、特定の要件に合わせてカスタマイズできるセクションです。

その後、rootとして実行してinitramfsを更新しますupdate-initramfs -u

問題がない場合は、rebootシステムにアクセスして遅延ディスクブートとパーティション検出の利点を享受できます。

おすすめ記事