4

ハードウェアの SSD が正しいデバイス ドライバーによって検出されない状況をデバッグしようとしています。SSD を所有するデバイス ドライバーは、ミラーリング モードで 2 つの SSD を自動的に構成するソフトウェア RAID ドライバー (megasr) です。megasr ドライバーが SSD を検出/所有していないことは確かですが、どのドライバーが実際にそれらを検出するかはわかりません。

/dev ディレクトリ内の特定のディスクを所有しているデバイス ドライバを特定できる Linux の方法はありますか。

したがって、たとえば、どのドライバーがデバイス /dev/sda を所有しているかを判断したいと思います。

OSはRHEL6.xです。

どうもありがとう。

4

2 に答える 2

7

カーネルログを見ることができます

dmesg | grep sda
<...>
[    0.618438] sd 2:0:0:0: [sda] Attached SCSI disk
<...>

ログは scsi ディスクに関するもので、sd 2:0:0:0はそのメッセージを生成したデバイスです。詳細については、sysfs を調べることができます。

cd /sys/block/
cd /sys/block/sda/

ここでは、すべてのブロック デバイスに関する情報を確認できます。特定のデバイスのディレクトリを調べると、その情報が表示されます。

ここでは、SCSI バスに関する情報を示します。driversdevicesの 2 つのディレクトリがあります。

cd /sys/bus/scsi
cd /sys/bus/scsi/devices
cd /sys/bus/scsi/drivers

ここに scsi バスのドライバーのリストがあります。

ls /sys/bus/scsi/drivers
 sd  sr

ログにはsd 2:0:0:0とありました

cd /sys/bus/scsi/drivers/sd/2:0:0:0

ここに私のデバイスがあるので、sdが私のドライバーです。

ディスクはブロック デバイスです。ディレクトリブロックが表示されます。

cd /sys/bus/scsi/drivers/sd/2:0:0:0/block/sda

おそらく、これを自動的に行うプログラムがあります:)

間違ったドライバーがデバイスを処理している場合は、そのドライバーからデバイスのバインドを解除し、別のドライバーにバインドできます。

ls /sys/bus/scsi/drivers/sd
 2:0:0:0  bind  uevent  unbind

アンバインド ファイルにデバイス識別子を記述して、そのデバイスをドライバーから切り離すことができます。

echo -n "2:0:0:0" > unbind

次に、デバイスを別のドライバーに接続できます

cd /sys/bus/scsi/drivers/<a-driver>
echo -n "2:0:0:0" > bind

明らかに (1)、SCSI デバイスを非 SCSI ドライバにバインドすることはできません。明らかに(2)、これは特定の問題に対する答えではありませんが、問題を解決するために必要な情報を取得する方法です

于 2013-07-27T08:14:30.943 に答える