camcontrol(8) FreeBSD 一般コマンドマニュアル

camcontrol

前のページ 上に戻る 次のページ

camcontrol


     camcontrol devlist [-v]
     camcontrol periphlist [device id] [-n dev_name] [-u unit_number]
     camcontrol tur [device id] [generic args]
     camcontrol inquiry [device id] [generic args] [-D] [-S] [-R]
     camcontrol start [device id] [generic args]
     camcontrol stop [device id] [generic args]
     camcontrol eject [device id] [generic args]
     camcontrol rescan <bus[:target:lun]>
     camcontrol reset <bus[:target:lun]>
     camcontrol defects [device id] [generic args] <-f format> [-P] [-G]
     camcontrol modepage [device id] [generic args] <-m page> [-P pgctl] [-e]
                [-d]
     camcontrol cmd [device id] [generic args] <-c cmd [args]> [-i len fmt]
                [-o len fmt [args]]
     camcontrol debug [-I] [-T] [-S] [-c] <all|off|bus[:target[:lun]]>
     camcontrol tags [device id] [generic args] [-N tags] [-q] [-v]
     camcontrol negotiate [device id] [generic args] [-c] [-D enable|disable]
                [-O offset] [-q] [-R syncrate] [-T enable|disable] [-U]
                [-W bus_width] [-v]
     camcontrol format [device id] [generic args] [-q] [-w] [-y]
     camcontrol help


解説

     camcontrol は、ユーザが FreeBSD CAM サブシステムにアクセスし制御できるよ
     うにする方法を提供するために設計されたユーティリティです。

     camcontrol を不適切に使用すると、データの損失や、システムクラッシュにつな
     がる可能性があります。経験豊富なユーザであっても、このコマンドを使用する
     際には注意を払うことをお勧めします。素人さんはこのユーティリティに近付い
     てはいけません。

     camcontrol はいくつかの主機能を持っています。その多くは、省略可能なデバイ
     ス識別子をサポートします。デバイス識別子は、次の 3 種類の書式のいずれかを
     取り得ます:

     deviceUNIT      デバイス名とデバイス番号の組み合わせを、"da5" や "cd3" の
                     ように指定します。キャラクタデバイスノード名 (例えば
                     /dev/rsd0.ctl) は、ここでは許され ないことに注意してくだ
                     さい。

     bus:target      バス番号とターゲット id を指定します。バス番号は
                     ``camcontrol devlist'' の出力により決定可能です。論理ユ
                     ニット番号 (lun) はデフォルトの 0 になります。

     bus:target:lun  デバイスのバス (bus) とターゲット (target) と論理ユニット
                     番号 (lun) を、 (例えば 1:2:0 のように) 指定します。

     デバイス識別子は、指定された場合には、機能名の直後にかつ、すべての共通引
     数または機能固有引数の前に置かれることが 必要です。後述する -n-u の引
     数は、その前に指定されるデバイス名やユニット番号をオーバライドすることに
     注意してください。しかし、 -n-u の引数は、bus:target または bus:tar-
     get:lun の指定はオーバライドしません。

     -n dev_name     操作を行なうデバイスのタイプを指定します。これは例えば
                     "da", "ca" です。

     -t timeout      SCSI コマンドのタイムアウトを秒単位で指定します。指定した
                     コマンドのすべてにおいて、これで指定する値はデフォルトの
                     タイムアウトより優先されます。

     -u unit_number  デバイスユニット番号を指定します。デフォルトは 0 です。

     -v              冗舌になります。SCSI コマンドに失敗するとセンス情報を表示
                     します。

     主コマンド機能は次のとおりです。

     devlist     CAM サブシステムに接続されたすべての物理デバイス (論理ユニッ
                 ト) のリストを表示します。このリストには各デバイスに接続され
                 た周辺ドライバの一覧も含まれます。引数 -v を指定すると、SCSI
                 バス番号、アダプタ名、ユニット番号もあわせて表示されます。

     periphlist  指定した物理デバイス (論理ユニット) に接続されたすべての周辺
                 ドライバのリストを表示します。

     tur         指定したデバイスに SCSI test unit ready (0x00) コマンドを送信
                 します。 camcontrol は、そのデバイスがレディ状態であるかどう
                 かを報告します。

     inquiry     デバイスに SCSI inquiry (0x12) コマンドを送信します。デフォル
                 トでは、 camcontrol 標準の inquiry データ、デバイスのシリアル
                 番号、転送レート情報を表示します。特定のタイプの inquiry デー
                 タだけを表示するように指定することもできます。

                 -D    標準 inquiry データを得ます。

                 -S    シリアル番号を表示します。このフラグだけが指定された場
                       合、 camcontrol は、ドライブが返す値の前に "Serial Num-
                       ber" を表示しません。これはスクリプトを書く際に役立ちま
                       す。

                 -R    転送レートの情報を表示します。

     start       指定したデバイスに、start ビットをセットした SCSI Start/Stop
                 Unit (0x1B) コマンドを送信します。

     stop        指定したデバイスに、start ビットをクリアした SCSI Start/Stop
                 Unit (0x1B) コマンドを送信します。

     eject       指定したデバイスに、start ビットをクリアし eject ビットをセッ
                 トした SCSI Start/Stop Unit (0x1B) コマンドを送信します。

     rescan      カーネルに指定したバス (XPT_SCAN_BUS)、もしくは bus:tar-
                 get:lun (XPT_SCAN_LUN) をスキャンさせ、新規のデバイスや外され
                 (PLIST)、増分ディフェクトリスト (GLIST) を組み合わせて表示し
                 ます。

                 -f format    書式オプションは以下の 3 つです。 block, リスト
                              を論理ブロック形式で表示します。 bfi, リストをイ
                              ンデックスからのバイト数の形式で表示します。
                              phys, リストを物理セクタ形式で表示します。書式引
                              数は必須です。ほとんどのドライブは、物理セクタ形
                              式をサポートしています。一部のドライブは論理ブ
                              ロック形式をサポートしています。指定した書式をサ
                              ポートしていない場合、多くのドライブは、指定した
                              データ書式をサポートしていないことを示すセンス情
                              報とともに、別の書式でデータを返します。
                              camcontrol は、それを検知してドライブが返す書式
                              ならどのようなものでも表示しようとします。ドライ
                              ブが指定した書式をサポートしていないことを報告す
                              る際に、非標準のセンスコードを用いた場合、
                              camcontrol は、おそらくそのエラーをリクエスト完
                              了に失敗したためのものと見なすでしょう。

                 -G           増分ディフェクトリストを表示します。これは、工場
                              出荷時以降に再マップされた不良ブロックのリストで
                              す。

                 -P           初期ディフェクトリストを表示します。

                 -P-G もどちらも指定していない場合、 camcontrol は、ドライ
                 ブから返された READ DEFECT DATA ヘッダから得られるディフェク
                 ト数を表示します。

     modepage    SCSI モードページを表示します。もしくは、オプション指定により
                 ユーザがモードページを編集できるようにします。 modepage の書
                 式は /usr/share/misc/scsi_modes にあります。環境変数
                 SCSI_MODES に別のファイルが指定されている場合はそちらが優先さ
                 れます。 modepage コマンドは以下のようないくつかの引数を取り
                 ます。

                 -d            モードセンスのためのブロック記述子を禁止しま
                               す。

                 -e            このフラグを指定することで、ユーザはモードペー
                               ジ中の値を編集することができます。

                 -m mode_page  ユーザが表示/編集したいモードページ番号を指定し
                               ます。この引数は必須です。

                 -P pgctl      このフラグを指定することで、ユーザはページ制御
                               フィールドを指定することができます。指定可能な
                               値は次の通りです。
                               0    現在の値
                               1    変更可能な値
                               2    デフォルトの値
                                    示するかとを指定します。書式が `-' である
                                    場合、 len バイトのデータがデバイスから読
                                    み込まれ、標準出力に書き出されます。

                 -o len fmt [args]  これは、デバイスに書き出すデータの量と、書
                                    き出されるデータとを指定します。書式が `-'
                                    である場合、 len バイトのデータが標準入力
                                    から読み込まれデバイスに書き出されます。

     debug       カーネルの CAM デバッグ用 printf をオンにします。カーネルの設
                 定ファイル中に CAMDEBUG オプションが指定されている必要があり
                 ます。注意: 現在のところ、デバッグ用 printf を使えるようにす
                 ると、極めて多数のカーネル printf が生じることになります。一
                 度デバッグ用 printf をスタートさせてしまうと、停止させるのは
                 難しいでしょう。というのは、カーネルはメッセージを表示するの
                 に忙しくなるので、他のリクエストをすぐにサービスすることがで
                 きなくなるからです。 debug 機能はいくつかの引数を取ります。

                 -I                  CAM_DEBUG_INFO printf を有効にします。

                 -T                  CAM_DEBUG_TRACE printf を有効にします。

                 -S                  CAM_DEBUG_SUBTRACE printf を有効にしま
                                     す。

                 -c                  CAM_DEBUG_CDB printf を有効にします。これ
                                     により、カーネルが、指定したデバイスに送
                                     信した SCSI CDB を表示することになりま
                                     す。

                 all                 すべてのデバイスについてデバッグ出力を有
                                     効にします。

                 off                 すべてのデバイスについてデバッグ出力を無
                                     効にします。

                 bus[:target[:lun]]  指定したバス、ターゲット、論理ユニット番
                                     号(lun)についてデバッグ出力を有効にしま
                                     す。論理ユニット番号、もしくはターゲット
                                     と論理ユニット番号が指定されない場合は、
                                     ワイルドカード指定されたものとして扱いま
                                     す。(すなわち、バスだけを指定すると、その
                                     バスのすべてのデバイスについてデバッグ用
                                     printf が有効になります。)

     tags        "tagged openings" の数を、表示または設定します。この値は、特
                 定のデバイスに対して同時にキューイング可能なトランザクション
                 数です。デフォルトでは、コマンド固有の引数が無いと (一般的な
                 引数のみを指定すると)、 tags コマンドは、対象のデバイスにキュ
                 ーイング可能なトランザクション数の "soft" 最大値を表示しま
                 す。さらに詳細な情報を得るには、次に説明する -v 引数を指定し
                 てください。
                          す。このフラグを指定すると camcontrol
                          は、XPT_GDEV_TYPE CCB のタグ付きキューイング関連フィ
                          ールドを表示します:

                          dev_openings   指定されたデバイスに対してキューイン
                                         グ可能なトランザクションの総数です。

                          dev_active     指定されたデバイスに対して現在キュー
                                         イングされているトランザクション数で
                                         す。

                          devq_openings  トランザクション用のカーネルキュー空
                                         間です。通常この数は dev_openings を
                                         反映します。エラーリカバリ時は例外で
                                         あり、対象デバイスのキューは凍結され
                                         るか (デバイスはコマンド受信を許され
                                         ません)、 dev_openings の数が減じられ
                                         るか、トランザクションの再実行が行わ
                                         れます。

                          devq_queued    カーネルキュー内でデバイスが空くのを
                                         待っているトランザクション数です。エ
                                         ラーリカバリ中でなければ、通常この数
                                         は 0 です。

                          held           held 数は、周辺装置ドライバが保持する
                                         CCB 数です。このような CCB は、丁度完
                                         了したものであるか、デバイスによって
                                         サービスを受けるために転送層に渡され
                                         ようとしているものです。保持されてい
                                         る CCB は、対象のデバイスに空きを予約
                                         します。

                          mintags        同時にデバイスにキューイング可能なト
                                         ランザクション数の、現在の "hard" 最
                                         小値です。既出の dev_openings 値はこ
                                         の数より小さくはなり得ません。
                                         mintags のデフォルト値は 2 ですが、デ
                                         バイスによってはより大きくまたはより
                                         小さく設定され得ます。

                          maxtags        同時にデバイスにキューイング可能なト
                                         ランザクション数の、現在の "hard" 最
                                         大値です。既出の dev_openings はこの
                                         値より大きくはなり得ません。 maxtags
                                         のデフォルト値は 255 ですが、デバイス
                                         によってはより大きくまたはより小さく
                                         設定され得ます。

     negotiate   様々な通信パラメータを、表示またはネゴシエートします。コント
                 ローラによっては、特定の値の設定や変更をサポートしません。例
                 えば Adaptec 174x コントローラは、デバイスの同期レートやオフ
                                    コマンドを送ります。

                 -c                 現在のネゴシエーション設定を、表示または設
                                    定します。これがデフォルトです。

                 -D enable|disable  切断 (disconnection) を、有効または無効に
                                    します。

                 -O offset          コマンド遅延オフセットを設定します。

                 -q                 静かになり、なにも表示しません。一般的に
                                    は、パラメータを設定したいが状態情報は不要
                                    であるときに有用です。

                 -R syncrate        デバイスの同期レートを変更します。同期レー
                                    トは、MHz で指定される浮動小数点値です。例
                                    えば `20' としては、 `20.000' が正しい値で
                                    す。

                 -T enable|disable  デバイスのタグ付きキューイングを、有効また
                                    は無効にします。

                 -U                 ユーザのネゴシエーション設定を、表示または
                                    設定します。デフォルトでは、現在のネゴシエ
                                    ーション設定を表示または設定します。

                 -v                 冗長フラグは、 `negotiate' サブコマンドに
                                    対しては特殊な意味があります。このフラグを
                                    指定すると camcontrol は、コントローラデバ
                                    イスに送った Path Inquiry (XPT_PATH_INQ)
                                    CCB の内容を表示します。

                 -W bus_width       デバイスとネゴシエートするバス幅を指定しま
                                    す。バス幅はビット数で指定します。指定可能
                                    な値は、8, 16, 32 のいずれかのビット数で
                                    す。設定が効果を持つためには、そのバス幅を
                                    コントローラがサポートする必要があります。

                 一般的には、あるデバイスの同期レートとオフセット設定が効果を
                 あらわすのは、そのデバイスに対してコマンドが送られてからで
                 す。前述の -a スイッチは、ネゴシエーションパラメータが効果を
                 あらわすようにするため、自動的に Test Unit Ready をデバイスに
                 送ります。

     format      SCSI FORMAT UNIT コマンドを指定したデバイスに送ります。

                 警告! 警告! 警告!

                 ディスクをローレベルフォーマットすると、ディスク上の「すべ
                 て」のデータを破壊します。このコマンドを発行するときには、非
                 常に注意してください。本当はローレベルフォーマットが不要な
                 ディスクに対し、多くのユーザがローレベルフォーマットを行って
                 にはサポートをしていないため、すなわちコマンドを受け付けて数
                 分待ってから戻るだけであるためです。

                 `format' サブコマンドはいくつかの引数を取り、デフォルトの動作
                 を変えます。 -q および -y の引数は、スクリプトにおいて有用で
                 す。

                 -q      静かになり、状態メッセージを表示しません。しかしなが
                         ら、本オプションは、質問は無効化しません。質問を無効
                         化するには、後述の -y 引数を使用してください。

                 -w      非即時のフォーマットコマンドを発行します。デフォルト
                         では、 camcontrol は FORMAT UNIT コマンドを即時ビット
                         (immediate bit) をセットして発行します。これは、フォ
                         ーマットが実際に完了する前に、即時にフォーマットコマ
                         ンドを返すよう、デバイスに指示します。そして
                         camcontrol が SCSI センス情報を毎秒デバイスから収集
                         し、フォーマット処理の進捗を判断します。 -w 引数が指
                         定されると、 camcontrol は非即時のフォーマットコマン
                         ドを発行します。この場合、ディスクの何パーセントが
                         フォーマットされたのかをユーザへ知らせるための表示は
                         行われません。

                 -y      質問をしません。デフォルトでは、 camcontrol はユーザ
                         に対し、対象のディスクを本当にフォーマットしたいの
                         か、そしてフォーマットコマンドのデフォルトタイムアウ
                         トで良いかを質問します。タイムアウトをコマンドライン
                         で指定した場合、タイムアウトは質問されません。

     help        冗長な、使用方法に関する情報を表示します。


環境変数

     変数 SCSI_MODES によって、別のモードページの書式ファイルを指定することが
     できます。

     変数 EDITOR によって、 camcontrol は、モードページの編集を行なう際にどの
     テキストエディタを起動するかを決定します。


関連ファイル

     /usr/share/misc/scsi_modes  SCSI モード書式データベース。
     /dev/xpt0                   トランスポート層デバイス。
     /dev/pass*                  CAM アプリケーションパススルーデバイス。


使用例

           camcontrol eject -n cd -u 1 -v

     cd1 から CD をイジェクトし、コマンド実行に失敗した場合は SCSI センス情報
     を出力します。

           camcontrol tur da0

     SCSI test unit ready コマンドを da0 に送信します。 camcontrol はそのディ

     READ BUFFER コマンド (0x3C) を cd1 に対して発行します。cd1 のバッファサイ
     ズと cd1 のキャッシュの最初の 10 バイトを表示します。コマンド実行に失敗し
     た場合 SCSI センス情報を表示します。

           camcontrol cmd -n cd -u 1 -v -c "3B 00 00 00 00 00 00 00 0e 00" \
                   -o 14 "00 00 00 00 1 2 3 4 5 6 v v v v" 7 8 9 8

     WRITE BUFFER コマンド (0x3B) を cd1 に対して発行します。(予約済の) 4 バイ
     トヘッダを含まないデータ 10 バイトを書き出します。コマンド実行に失敗した
     場合センス情報を表示します。このコマンドには細心の注意を払って下さい。不
     適切に使用した場合、データが破壊されるかもしれません。

           camcontrol modepage da3 -m 1 -e -P 3

     da3 のモードページ 1 (Read-Write Error Recover ページ)を編集し、編集結果
     をそのドライブにセーブします。モードページ 1 には、ディスクドライブの読み
     出し、書き込みの自動再配置の設定などが含まれます。

           camcontrol rescan 0

     SCSI バス 0 を再スキャンし、追加、削除、変更されたデバイスを探します。

           camcontrol rescan 0:1:0

     SCSI バス 0, ターゲット 1, 論理ユニット番号 0 を再スキャンし、そのデバイ
     スが追加、削除、変更されたかどうかを調べます。

           camcontrol tags da5 -N 24

     da5 の同時トランザクション数を 24 に設定します。

           camcontrol negotiate -n da -u 4 -T disable

     da4 のタグ付きキューイングを無効にします。

           camcontrol negotiate -n da -u 3 -R 20.000 -O 15 -a

     同期レート 20MHz とオフセット 15 を、da3 とネゴシエートします。その後
     Test Unit Ready コマンドを送り、設定が効果をあらわすようにします。


関連項目

     cam(3), cam_cdbparse(3), cam(4), pass(4), xpt(4)


歴史

     camcontrol コマンドは、 FreeBSD 3.0 で最初に現れました。

     モードページ編集のコードと任意の SCSI コマンドのコードは、 Julian Elis-
     cher と Peter Dufault が書いた、かつての scsi(8) ユーティリティと scsi(3)
     ライブラリのものに基づいています。 scsi(8) プログラムが最初に出現したのは
     386BSD 0.1.2.4 で、 FreeBSD で最初に出現したのは、 FreeBSD 2.0.5 です。

     方法は、常に camcontrol 共通引数をコマンド固有の引数の前に指定しているこ
     とを確認することです。

FreeBSD 4.4                   September 14, 1998                   FreeBSD 4.4

ABELNET VPSサービス