日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
CAM(4) FreeBSD カーネルインタフェースマニュアル CAM(4) 名称 CAM -- 共通アクセスメソッド (Common Access Method) 記憶域サブシステム 書式 device scbus device ada device cd device ch device da device pass device pt device sa options CAMDEBUG options CAM_DEBUG_BUS=-1 options CAM_DEBUG_TARGET=-1 options CAM_DEBUG_LUN=-1 options CAM_DEBUG_COMPILE=CAM_DEBUG_INFO|CAM_DEBUG_CDB|CAM_DEBUG_PROBE options CAM_DEBUG_FLAGS=CAM_DEBUG_INFO|CAM_DEBUG_CDB options CAM_MAX_HIGHPOWER=4 options SCSI_NO_SENSE_STRINGS options SCSI_NO_OP_STRINGS options SCSI_DELAY=8000 解説 CAM サブシステムは、さまざまな SCSI, ATA, NVMe と MMC / SD デバイスを制御 して、ホストアダプタドライバを通して異なる SCSI, ATA, NVMe と MMC / SD ホ ストアダプタを利用するためのドライバの実装のための均一でモジュール化され たシステムを提供しています。システムがバスをプローブ (調査) するとき、適 切なドライバを見つけるどんなデバイスもアタッチします。pass(4) ドライバが カーネルで設定されているなら、すべてのデバイスをアタッチします。 カーネルの設定 CAM サブシステムのための多くのジェネリックカーネル設定オプションがありま す: CAM_BOOT_DELAY カーネルの静的な部分が実行した後に待つ追加の時間 は、USB のアタッチされた記憶域のような、接続する時 間かかるかもしれない追加のデバイスの発見するため に、許可されます。 CAM_IOSCHED_DYNAMIC 記憶デバイスのヒントと現在の性能に基づき、I/O スケ ジューラでの動的な決定を有効にします。 CAM_IO_STATS periph デバイスのための統計の収集を有効にします。 CAM_TEST_FAILURE I/O の失敗をシミュレーションする能力を有効にしま す。 CAMDEBUG このオプションは、すべての CAM デバッグの printf コードをコンパイルします。それ自体が含まれていると きでも、実際になんのデバッグ情報も印刷しません。詳 細に関して下記を参照してください。 CAM_MAX_HIGHPOWER=4 これは、同時 (並列) "high power" コマンドの最大許 容数を設定します。"high power" コマンドは、より多 くの電力を必要とするコマンドです。この例は、SCSI START UNIT コマンドです。ディスクを始動すると、し ばしば通常の操作より多くの電力を必要とします。SCSI ディスクの始動には、通常のディスクの操作よりかなり 多くの電力をしばしば必要とします。このオプション で、コンピュータの電源の供給の負荷なしで同時にどの くらいの high power コマンドが発行できるかユーザが 指定できるようにします。 SCSI_NO_SENSE_STRINGS これは、それぞれの SCSI Additional Sense Code と Additional Sense Code Qualifier の組のテキスト記述 を削除します。これがかなり大きいテキストデータベー スであるので、それを削除するとカーネルのサイズは、 いくらか減少します。これは、主としてブートフロッピ と他の低ディスク空間か低メモリ空間環境で必要です。 多くの場合、SCSI エラーメッセージの解釈を促進する ので、これは、有効にされるべきです。利用者は、" カーネル膨張" 熱狂者にならないようにしてください -- 利用者のカーネルにおけるセンス (sense) 記述を残 してください! 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 です。1 つの特別なケースは、SCSI_DELAY が 0 に設定された場合、"可能な最も低い値" を意味して それを受け取ります。その場合、SCSI_DELAY は、100ms にリセットされます。 すべてのデバイスとバスは、動的な割り付けをサポートするので、デバイスとコ ントローラの上位の番号は、設定する必要はありません。device da は、いくつ ものディスクドライバに十分です。 デバイスは、特定のデバイスユニットとして現れる wired (配線された) か、次 の利用可能な未使用のユニットとして現れる counted (数えれた) のいずれかで す。 ユニットは、カーネル環境ヒントを設定することによって配線ダウンされます。 (訳注: 配線ダウン, 意味不明。) これは、通常、loader(8) から対話形式で行う か、または /boot/device.hints ファイルによって自動的に行われます。基本的 な構文は、次の通りです: hint.device.unit.property="value" 個々の CAM バス番号は、次と同様の設定行がある特定のコントローラに配線ダウ ンすることができます: hint.scbus.0.at="ahd1" これは、CAM バス番号 0 を ahd1 ドライバインスタンスに割り当てます。1 つ以 上のバスをサポートしているコントローラについては、次のように特定のバスを 割り当てることができます: hint.scbus.0.at="ahc1" hint.scbus.0.bus="1" これは、CAM バス番号 0 を ahc1 上のバス 1 インスタンスに割り当てます。周 辺機器ドライバは、次のように特定のバス、ターゲットおよび lun に配線ダウン することができます: hint.da.0.at="scbus0" hint.da.0.target="0" hint.da.0.unit="0" これは、da0 をターゲット 0、scbus 0 のユニット (lun) 0 に割り当てます。 ターゲットかユニットのヒントを省略することは、ワイルドカードとしてそれら を取り扱うように CAM に指示して、最初のそれぞれの counted インスタンスを 使用します。これらの例は、周辺機器が任意の特定のコントローラ、バス、ター ゲット、そして/または、ユニットインスタンスに配線されるのを許すために一緒 に結合することができます。 また、これは、同様に nvme(4) ドライブとともに動作します。 hint.nvme.4.at="pci7:0:0" hint.scbus.10.at="nvme4" hint.nda.10.at="scbus10" hint.nda.10.target="1" hint.nda.10.unit="12" hint.nda.11.at="scbus10" hint.nda.11.target="1" hint.nda.11.unit="2" これは、PCI バス 7 にある NVMe カードを scbus 10 に割り当てます (PCIe に おいて、スロットと関数は、めったに使用されず、通常 0 です)。nda(4) デバイ スのためのターゲットは、常に 1 です。ユニットは、ドライブからの名前空間の 識別子です。名前空間 id 1 は、nda10 としてエクスポートされ、名前空間 id 2 は、nda11 としてエクスポートされます。 利用者が配線ダウンと counted デバイスの混合物を持っているとき、counting は、特定のタイプのために最初の非配線ダウンユニットで始まります。すなわ ち、利用者が device da1 としてディスクの配線ダウンを持っているなら、最初 の非配線ディスクは、da2 として認識されることになります。 アダプタ システムでは、共通のデバイスドライバは、多くの異なったタイプのアダプタで 動作できます。アダプタは、上側のレイヤから要求を受け取って、SCSI, ATA, NVMe または MMC / SD バスとシステムの間ですべての IO を行ないます。転送の 最大サイズは、アダプタによって決定されます。ほとんどのアダプタは、1 つの 操作で 64KB を転送できますが、多くのものは、よりはるかに多く転送できま す。 ターゲットモード いくつかのアダプタは、システムが別のシステムによって開始された操作に応じ て、デバイスとして作動することができるターゲットモードをサポートします。 タゲットモードは、いくつかのアダプタのためにサポートされますが、CAM SCSI サブシステムのこのバージョンにはまだ完全ではありません。 アーキテクチャ CAM サブシステムは、システムの上位のレイヤを記憶域デバイスにともに接合し ます。PERIPH デバイスは、GEOM とシステムの他の上位のレイヤからの記憶域要 求に受け付け、それらをプロトコル要求に変換します。XPT (転送) は、これらの プロトコル要求を SIM ドライバにディスパッチします。SIM ドライバは、プロト コル要求を取り、それらを、プロトコル要求、と (もしあるなら) データを記憶 デバイスに転送するために、ホストのアダプタが理解しているハードウェアコマ ンドに変換します。CCB は、メッセージとして周りの、これらの要求を転送しま す。 CAM 共通アクセス方式 (Common Access Method) は、ディスクドライブに通信するた めに 1990 年代に定義された標準でした。FreeBSD は、このモデルを完全に実装 する少数のオペレーティングシステムの 1 つです。CAM の異なった部分の間のイ ンタフェースは、CCB (または、CAM 制御ブロック) です。各 CCB は、要求と ディスパッチ情報、とコマンド特有部分のタイプを含んでいる、標準のヘッダが あります。CAM Periph は、要求を生成します。XPT レイヤは、これらの要求を適 切な SIM にディスパッチします。いくつかの CCB は、即時の処理のための SIM に直接送信されまが、一方他は、I/O が終了するとき、キューに入れられ、完了 します。SIM は、CCB を取り、関連するデータのための DMA を設定するととも に、SCSI CDB または他のプロトコル制御ブロックを周辺機器にプッシュするため に、それらをハードウェア特有コマンドに変換します。 periph デバイス periph ドライバは、どのように、標準の要求を、SIM がハードウェアに供給する ことができるプロトコルメッセージに変換するかを知っています。これらの要求 は、あらゆる上位のレイヤのソースから来ることができますが、bio 要求として GEOM を通して主に入って来ます。それらは、また、テープと通過するコマンドの ためにキャラクタデバイス要求から直接入って来ることができます。 CAM のディスクデバイス、またはダイレクトアクセス (da) は、周辺機器の 1 つ のタイプのです。これらのデバイスは、``da'' で終わるカーネルデバイスにそれ ら自体を提示します。各プロトコルは、ユニークなデバイス名があります: da(4) I/O として SCSI CDB を受け付ける SCSI または SAS デバイス、またはデバイ ス。 ada(4) ATA または SATA デバイス。 nda(4) NVME デバイス。 mda(4) sdda(4) SD または MMC ブロック記憶域デバイス。 テープデバイスは、CAM のシリアルアクセス (sa(4)) を呼び出します。それら は、キャラクタデバイスを通してシステムにインタフェースし、テープドライブ のための ioctl(2) 制御を提供しています。 pass(4) デバイスは、ユーザランドからの CCB 要求を直接 SIM に通過します。 デバイスは、デバイスに読み込む、書き込む、トリム (trim) またはフラッシュ (flush) する以外のコマンドを送信するために使用されます。camcontrol(8) コ マンドは、このデバイスを使用します。 XPT ドライバ 転送ドライバは、periph を SIM と接続します。それは、別々に設定されませ ん。それは、また、それら自体を列挙しないそれらの SIM ドライバのためのデバ イスの発見について責任があります。 SIM ドライバ SIM は、SCSI インタフェースモジュールを表すために使用されます。今や、それ は、SCSI 以外のプロトコルを理解しているので、それはまさに SIM です。2 つ のタイプの SIM ドライバがあります: バーチャルと物理的です。物理的な SIM は、通常、ホストのバスアダプタ (HBA) と呼ばれますが、一般的ではありませ ん。仮想の SIM ドライバは、仮想マシンのホストと通信するためです。 関連ファイル 他の CAM デバイスエントリを参照してください。 診断 XPT_DEBUG CCB は、カーネルにコンパイルされたオプションのリストからあらゆ る特定のバス/デバイスでさまざまな量のトレース情報を有効にするために使用す ることができます。現在、コンパイルされ、使用される 7 つのデバッグフラグが あります: CAM_DEBUG_INFO このフラグは、問題となっているデバイスまたは複数のデ バイスのための一般的な情報の printf を有効にします。 CAM_DEBUG_TRACE このフラグは、関数レベルのコマンドのフロートレースを 有効にします、すなわち、カーネルの printf は、さまざ まな関数の入口と出口で起こります。 CAM_DEBUG_SUBTRACE このフラグは、さまざまな関数への内部のデバッグ出力を 有効にします。 CAM_DEBUG_CDB このフラグによって、カーネルは、特定のデバイスまたは 複数のデバイスに送られた ATA と SCSI コマンドをすべて 印刷します。 CAM_DEBUG_XPT このフラグは、コマンドのスケジューラトレースを有効に します。 CAM_DEBUG_PERIPH このフラグは、周辺機器のドライバのメッセージを有効に します。 CAM_DEBUG_PROBE このフラグは、デバイスプローブプロセスのトレースを有 効にします。 これらのフラグのいくつか、中でも注目すべきは CAM_DEBUG_TRACE と CAM_DEBUG_SUBTRACE は、EXTREME 番号のカーネルの printf を作成します。 ユーザは、次のカーネル設定オプションを使用することによって、それらのカー ネル設定ファイルからデバッグを有効にすることができます: CAMDEBUG これは、すべての可能な CAM デバッグをカーネルに構築し ます。 CAM_DEBUG_COMPILE これは、上に記述されたデバッグフラグが、カーネルに構築 されるべきサポートを指定します。ユーザが複数のデバッグ レベルのための printf を見たいなら、フラグは、ともに論 理和 (OR) することができます。 CAM_DEBUG_FLAGS これは、カーネル設定ファイルからさまざまなデバッグフラ グを設定します。 CAM_DEBUG_BUS デバッグするバスを指定します。すべてのバスをデバッグす るためには、これを -1 に設定します。 CAM_DEBUG_TARGET デバッグするターゲットを指定します。すべてのターゲット をデバッグするためには、これを -1 に設定します。 CAM_DEBUG_LUN デバッグする lun (論理ユニット番号) を指定します。すべ ての lun をデバッグするためには、これを -1 に設定しま す。 また、ユーザは、カーネルに必要なオプションを構築するなら、camcontrol(8) ユーティリティを使用することによって、急いでデバッグを有効にすることがで きます。詳細については、camcontrol(8) を参照してください。 関連項目 コマンド: camcontrol(8), camdd(8) ライブラリ: cam(3) Periph ドライバ: ada(4), da(4), nda(4), pass(4), sa(4) SIM デバイス: aac(4), aacraid(4), ahc(4), ahci(4), ata(4), aw_mmc(4), ciss(4), hv_storvsc(4), isci(4), iscsi(4), isp(4), mpr(4), mps(4), mpt(4), mrsas(4), mvs(4), nvme(4), pms(4), pvscsi(4), sdhci(4), smartpqi(4), sym(4), tws(4), umass(4), virtio_scsi(4) 非推奨または不十分にサポートされた SIM デバイス: ahd(4), amr(4), arcmsr(4), esp(4), hpt27xx(4), hptiop(4), hptmv(4), hptnr(4), iir(4) mfi(4), sbp(4), twa(4) 歴史 CAM SCSI サブシステムは、FreeBSD 3.0 ではじめて登場しました。CAM ATA サ ポートは、FreeBSD 8.0 で追加されました。 作者 CAM SCSI サブシステムは、Justin Gibbs と Kenneth Merry によって書かれまし た。CAM ATA サポートは、Alexander Motin <mav@FreeBSD.org> によって追加さ れました。CAM NVMe サポートは、Warner Losh <imp@FreeBSD.org> によって追加 されました。 FreeBSD 13.2 June 18, 2020 FreeBSD 13.2