SCSI
Section: Devices and Network Interfaces (4)
索引
jman
BSD mandoc
FreeBSD 3.0
索引
名称
SCSI
CAM
- CAM SCSI サブシステム
索引
書式
controller scbus0
controller scbus1 at ahc0
controller scbus3 at ahc1 bus 0
controller scbus2 at ahc1 bus 1
device cd0
device ch0
device da0
device pass0
device pt0
device sa0
device ch1 at scbus0 target 4 unit 0
optionsCAMDEBUG
optionsCAM_DEBUG_BUS=-1
optionsCAM_DEBUG_TARGET=-1
optionsCAM_DEBUG_LUN=-1
optionsCAM_DEBUG_FLAGS=CAM_DEBUG_INFO|CAM_DEBUG_CDB
optionsCAM_MAX_HIGHPOWER=4
optionsSCSI_NO_SENSE_STRINGS
optionsSCSI_NO_OP_STRINGS
optionsSCSI_DELAY=8000
索引
解説
CAM
SCSI
サブシステムは、
各種の
SCSI
デバイスを制御するドライバや、ホストアダプタドライバを経由して異なる
SCSI
ホストアダプタを利用するドライバを実装するための、
均質でモジュール化されたシステムを提供します。
システムが
SCSI
バスをプローブし、発見したデバイスを適切なドライバにアタッチします。
pass(4)
ドライバがカーネルに組み込まれていれば、すべての
SCSI
デバイスがアタッチされます。
索引
カーネルの設定
CAM
SCSI
サブシステム用に一般的なカーネル設定オプションがいくつかあります:
- CAMDEBUG
-
このオプションは、CAM デバッグ用の printf コードを有効にします。
実際には、このオプションだけではデバッグ情報は出力されません。
出力するためには追加設定が必要です。詳細は下記を参照して下さい。
- CAM_MAX_HIGHPOWER=4
-
同時使用できる "high power" コマンドの最大数を設定します。
"high power" コマンドとは、
他のコマンドに比べて、実行するのにより多くの電力を必要とするコマンドです。
その一例は
SCSI
START UNIT コマンドです
(現在のところ "high power" の烙印を押されている唯一のコマンドです)。
SCSI ディスクを起動するには、通常のディスク操作に比べて
かなり大きな電力を消費します。
このオプションで、コンピュータの電源に負荷をかけ過ぎずに
"high power" コマンドを同時にいくつまで発行できるかを指定できます。
- SCSI_NO_SENSE_STRINGS
-
SCSI
Additional Sense Code と Additional Sense Code Qualifier の組についての
解説文をすべて除去します。
この文は本当に大きなテキストデータベースなので、
除去すれば、カーネルのサイズを少し削減できます。
このオプションは、主としてブートフロッピや、
他のディスク空間あるいはメモリ空間が小さい環境で必要となります。
他の環境でも、
多くの場合はこのオプションを有効にすべきです。
SCSI
のエラーメッセージの解釈を速めることになるからです。
カーネルを無用に膨張 ("kernel bloat") させることばかりに熱中しないで、
あなたのカーネルに解説文を残さないようにしましょう!
- SCSI_NO_OP_STRINGS
-
SCSI
opcode の解説文をすべて無効にします。
このオプションは、前述した sense 文字列と場合と同様、主として
カーネルサイズが重要なブートフロッピのような環境で役に立ちます。
通常の使用環境でこのオプションを有効にすることは推奨されません。
SCSI
の障害のデバッグを遅らせるからです。
- SCSI_DELAY=8000
-
SCSI
のバスが安定するまでの遅延 ("bus settle delay") です。
CAM の場合、
ミリ秒
単位で指定します。
以前の
SCSI
層で使われていた秒単位ではありません。
カーネルはブート時にバスリセットを各
SCSI
バスに送り、各デバイスが転送ネゴシエーションやその他の設定を
デフォルトの状態に自分自身でリセットするよう通知します。
ほとんどの
SCSI
デバイスは、バスリセットから復帰するのに、ある程度の時間を必要とします。
最近のディスクは 100ms 程度の短かい時間しか必要としませんが、
古くて遅いデバイスはもっと長い時間を必要とするかもしれません。
SCSI_DELAY
を指定しなければ、デフォルトでは 2 秒になります。
SCSI_DELAY
の最小値は "100"、すなわち 100ms です。
唯一特殊なケースは
SCSI_DELAY
に 0 を指定した場合で、"できるだけ小さい値" を意味します。
この場合、
SCSI_DELAY
は 100ms にリセットされます。
すべてのデバイスおよび SCSI バスはブート時の割当てをサポートしているので、
上位の番号のデバイスおよびコントローラを設定する必要はありません;
device da0
は任意の番号のディスクドライバに対して十分な記述です。
デバイスは、特定のデバイスユニットとして認識される
wired
(束縛される) か、
その次に有効な未使用ユニットとして認識される
counted
(数え上げられる) のどちらかです。
カーネル内のドライバがデバイスを束縛しないように設定するには、
device ch0
のような設定行を記述して、チェンジャドライバを組み込んで下さい。
ユニットを束縛するには、
device ch1 at scbus0 target 4 unit 0
のような設定行を記述して、
チェンジャ 1 を SCSI バス 0 上の SCSI ID 4、SCSI 論理ユニット 0 の
チェンジャに割り当てます。
各 SCSI バスを指定したコントローラに束縛するには、
controller scbus0 at ahc0
のように設定行を記述します。
これは、SCSI バス 0 を ahc ドライバを用いる最初のユニットに割り当てます。
複数のバスをサポートするコントローラの場合、
特定のバスを
controller scbus3 at ahc1 bus 1
の形式で指定できます。
これは、SCSI バス 1 を ahc1 デバイス上で 2 番目にプローブされたバスに
割り当てます。
wired デバイスと counted デバイスが混在している場合、
そのデバイスタイプについての最初の非 wired ユニットから数え始めます。
すなわち、wired ディスク
device da1
があると、最初の非 wired ディスクは
da2
として認識されることになります。
索引
アダプタ
このシステムでは、たくさんの種類の異なるアダプタに
共通のデバイスドライバを使用することが可能です。
アダプタは上位層から要求を受けて、
SCSI
バスとシステムの間のすべての IO を実行します。
転送の最大サイズはアダプタによって支配されます。
ほとんどのアダプタが一度の操作で 64KB を転送できますが、
多くのアダプタはもっと大量に転送できるかもしれません。
索引
ターゲットモード
いくつかのアダプタは、
ターゲットモード
をサポートしています。
このモードでは、
システムをひとつのデバイスとして操作することが可能となり、
別のシステムが発行した操作に応答するようになります。
ターゲットモードは、いくつかのアダプタでサポートされていますが、
このバージョンの CAM
SCSI
サブシステムではまだ完全ではありません。
索引
関連ファイル
他の SCSI デバイスのエントリを参照して下さい。
索引
診断
カーネルが options CAMDEBUG 付きでコンパイルされている場合、
XPT_DEBUG CCB を用いれば、
任意の指定したデバイスに関して、さまざまな量のトレース情報を
取得可能になります。
トレースされていないデバイスはトレース情報を生成しません。
現在は 4 つのデバッグフラグをオンにできます:
- CAM_DEBUG_INFO
-
該当するデバイス (群) について一般的な情報の printf 出力が可能になります。
- CAM_DEBUG_TRACE
-
関数レベルでのコマンドフローのトレースが可能になります。
すなわち、関数の入口と出口でカーネルの printf 出力が発生します。
- CAM_DEBUG_SUBTRACE
-
関数内部でのデバッグ出力が可能になります。
- CAM_DEBUG_CDB
-
特定のデバイス (群) に送信されたすべての
SCSI
コマンドをカーネルが印字するようになります。
これらのフラグのうち、特に
CAM_DEBUG_TRACE
と
CAM_DEBUG_SUBTRACE
は膨大な量のカーネルの printf 出力を発生しますので、
あまり有益ではありません。
CAM_DEBUG_INFO
のレベルでログ出力されるものは多くはありませんので、
これもそれほど有益ではありません。
最も有益なデバッグフラグは
CAM_DEBUG_CDB
フラグです。
以下のカーネルオプションを使用して、
カーネル設定ファイルからデバッグを有効にできます:
- CAMDEBUG
-
CAM のデバッグを有効にします。
このオプションなしでは、ユーザランドから
camcontrol(8)
を経由してデバッグを有効にすることもできません。
- CAM_DEBUG_FLAGS
-
上に述べたような各種のデバッグフラグを、
カーネル設定ファイルで設定することが可能になります。
フラグの論理和を取れば、
複数のデバッグレベルでの printf 出力を見ることもできます。
- CAM_DEBUG_BUS
-
デバッグの対象とするバスを指定します。
すべてのバスをデバッグするには、この値を -1 に設定します。
- CAM_DEBUG_TARGET
-
デバッグの対象とするターゲットを指定します。
すべてのターゲットをデバッグするには、この値を -1 に設定します。
- CAM_DEBUG_LUN
-
デバッグの対象とする論理ユニット番号を指定します。
すべての論理ユニット番号をデバッグするには、この値を -1 に設定します。
あるバス、ターゲット、もしくは論理ユニット番号を指定する場合には、
上述した 3 つのバス/ターゲット/論理ユニット番号のオプションを
すべて指定することが必須となります。
ワイルドカードを使用すれば、
ほとんどの機器についてデバッグを有効にすることができます。
CAMDEBUG
オプションを設定ファイルに含めていれば、
camcontrol(8)
ユーティリティを使用して、起動中に printf デバッグを有効にすることもできます。
詳細は
camcontrol(8)
を参照して下さい。
索引
関連項目
aha(4),
ahb(4),
ahc(4),
bt(4),
cd(4),
ch(4),
da(4),
pass(4),
pt(4),
sa(4),
xpt(4),
camcontrol(8)
索引
歴史
CAM
SCSI
サブシステムは
Fx 3.0
で初めて登場しました。
索引
作者
CAM
SCSI
サブシステムは Justin Gibbs と Kenneth Merry によって書かれました。
索引
Index
- 名称
-
- 書式
-
- 解説
-
- カーネルの設定
-
- アダプタ
-
- ターゲットモード
-
- 関連ファイル
-
- 診断
-
- 関連項目
-
- 歴史
-
- 作者
-
Time: 07:07:21 GMT, January 12, 2009