現在 SCSI サブシステムに接続している(認識されている) SCSI デバイスを 表示するには、cat /proc/scsi/scsi としてください。
出力は下記のようになります。
Attached devices: Host: scsi0 Channel: 00 Id: 02 Lun: 00 Vendor: PIONEER Model: DVD-ROM DVD-303 Rev: 1.10 Type: CD-ROM ANSI SCSI revision: 02 Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: IBM Model: DNES-309170W Rev: SA30 Type: Direct-Access ANSI SCSI revision: 03 |
「Attached devices:」行に続き、認識されているデバイスそれぞれについて、3 行 ずつが表示されます。これらのうちの最初の行は、Section 3.1で 論じた SCSI アドレスの情報です。 あとの 2 行は、デバイスの接続時に実行された INQUIRY コマンドから得たデータ です。これらのデバイスの順序と sg ドライバでの順序との関係については、 Section 9.4を見てください(たいていの場合は同じ)。
既存のデバイスは、 echo "scsi remove-single-device <h> <b> <t> <l>" > /proc/scsi/scsi を使って削除できます。引数は、ホストとバス(チャネル)、ターゲット(SCSI ID)、 LUN です。このコマンドが成功したかどうかは、そのコマンドの後に cat /proc/scsi/scsi を実行すればわかります。デバイス が busy だと(例えばデバイスがファイルシステムにマウントされていれば)削除は 失敗するでしょう。
新規のデバイスは、 echo "scsi add-single-device <h> <b> <t> <l>" > /proc/scsi/scsi を使って追加できます。引数は、ホストとバス(チャネル)、ターゲット(SCSI ID)、 LUN です。このコマンドが成功したかどうかは、そのコマンドの後に cat /proc/scsi/scsi を実行すればわかります。 [1]
SCSI サブシステムは、SCSI デバイスのホットプラグをサポートしていません (SCSI パラレルバスに関連した電気的な問題もある)。 add+remove-single-device して、接続し直そうとする場合は、その SCSI バス上の 他のデバイスも間違いなく停止させてください。
内部 SCSI コマンドをまとめてリスト出力するには、 echo "scsi dump <n>" > /proc/scsi/scsi を使ってください。<n> の数値は何でもかまいません。数値に興味を持つのは、 恐らく SCSI サブシステム内部のバグを追跡する方だけでしょう。
ロギング情報をコンソールやログに出したり止めたりするには、 echo "scsi log <token> <n>" > /proc/scsi/scsi を使用してください。 <token> には、「all、none、error、timeout、scan、mlqueue、mlcomplete、 llqueue、llcomplete、hlqueue、hlcomplete、ioctl」のどれか 1 つを指定します。 <n> は、0 から 7 の数字です。「all」と「none」は、<n> 引数 をとりません。接頭辞の意味は下記の通りです。
hl 高レベルのドライバ(例外:sg は「timeout」を使う] ml 中間レベル ll 低レベルのドライバ (アダプタドライバには独自のフラグがあることがよくある) |
Warning |
警告:「scsi log all」(および同様の他の指定)とすると、ログファイル (たいてい /var/log/messages)が SCSI ディスクにある 場合、ログの無限ループを引き起こすかもしれません。カーネルのロギングデーモン を無効にするか、出力を SCSI デバイスではないデバイスへ向けてください。 |
[1] | 「add-single-device」と「remove-single-device」でのパーズは融通が利き ません。 よって余分な空白(やタブ)を入れず、例で挙げた書き方そのままにするように してください。 |