問題
CentOS/RHEL 7 で systool コマンドを実行すると、次のエラー メッセージが報告されます:
# systool -c fc_host -v Error opening class fc_host
解決策
エラーが発生するのは、scsi_transport_fc /sys/class/fc_host/ のコンテンツの入力を担当するモジュール ディレクトリがシステムにロードされていません。
1. scsi_transport_fc モジュールを手動でロードし、modules.dep および System.map ファイルを生成します。
# modprobe scsi_transport_fc # depmod
# lsmod | grep scsi_transport_fc scsi_transport_fc 57344 0
2. systool(1) コマンドを再実行して、予想される出力が表示されることを確認します。例:
# systool -c fc_host Class = "fc_host" Class Device = "host2" Device = "host2" Class Device = "host3" Device = "host3"
3. 初期 RAM ディスク イメージを再構築します。
a.現在実行中のカーネル バージョンの既存の初期 RAM ディスク ファイルをバックアップします。例:
# cp -p /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
b.現在実行中のカーネル バージョンの初期 RAM ディスク ファイルを再構築します。
# dracut -f
注意 :ビルドしている初期 RAM ディスク バージョンとは異なるカーネル バージョンを実行している場合 (または Linux レスキュー モードで実行している場合)、完全なカーネル バージョン/アーキテクチャを指定する必要があります。例:
# dracut -f /boot/initramfs-5.4.17-2102.201.3.el7uek.x86_64.img 5.4.17-2102.201.3.el7uek.x86_64
4. サーバーを再起動します。再起動時に、システムは scsi_transport_fc カーネル モジュールを自動的にロードする必要があります。例:
# lsmod | grep scsi_transport_fc scsi_transport_fc 57344 0
5. systool(1) コマンドを再実行して、予想される出力が表示されることを確認します。例:
# systool -c fc_host Class = "fc_host" Class Device = "host2" Device = "host2" Class Device = "host3" Device = "host3"