CAMCONTROL(8) FreeBSD システム管理者マニュアル CAMCONTROL(8)
名称
camcontrol − CAM コントロールプログラム |
書式
camcontrol 〈command〉 [device id] [generic args] [command args] |
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 load [device id] [generic args] |
camcontrol eject [device id] [generic args] |
camcontrol rescan 〈all | bus[:target:lun]〉 |
camcontrol reset 〈all | bus[:target:lun]〉 |
camcontrol defects [device id] [generic args] 〈−f format〉 [−P] [−G] |
camcontrol modepage [device id] [generic args] 〈−m page | −l〉 [−P pgctl] [−b | −e] [−d] |
camcontrol cmd [device id] [generic args] 〈−c cmd [args]〉 [−i len fmt] [−o len fmt [args]] |
camcontrol debug [−I] [−P] [−T] [−S] [−X] [−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] [−r] [−w] [−y] |
camcontrol help |
解説 |
camcontrol ユーティリティは、ユーザが FreeBSD CAM サブシステムにアクセス し制御できるようにする方法を提供するために設計されています。 camcontrol ユーティリティを不適切に使用すると、データの損失や、システムク ラッシュにつながる可能性があります。経験豊富なユーザであっても、このコマ ンドを使用する際には注意を払うことをお勧めします。素人さんはこのユーティ リティに近付いてはいけません。 camcontrol ユーティリティはいくつかの主機能を持っています。その多くは、省 略可能なデバイス識別子をサポートします。デバイス識別子は、次の 3 種類の書 式のいずれかを取り得ます: |
deviceUNIT
デバイス名とデバイス番号の組み合わせを、"da5" や "cd3" の ように指定します。キャラクタデバイスノード名 (例えば /dev/da0) は、ここでは許され ないことに注意してください。 bus:target bus:target:lun デバイス識別子は、指定された場合には、機能名の直後にかつ、すべての共通引 数または機能固有引数の前に置かれることが 必要です。後述する −n と −u の引 数は、その前に指定されるデバイス名やユニット番号をオーバライドすることに 注意してください。しかし、 −n と −u の引数は、bus:target または bus:target:lun の指定はオーバライド しません。 camcontrol の主機能の多くは下に示す共通引数 (generic argument) をサポート します: −C count −E −n dev_name −t timeout −u unit_number −v 主コマンド機能は次のとおりです。 devlist periphlist tur inquiry −D −S −R start stop load eject rescan reset defects −f format −G −P −P も −G もどちらも指定していない場合、 camcontrol は、ドライ ブから返された READ DEFECT DATA ヘッダから得られるディフェク ト数を表示します。 modepage −d −b −e −l −m mode_page −P pgctl cmd −c cmd [args] −i len fmt −o len fmt [args] debug −I −P −T −S −X −c all off bus[:target[:lun]] tags −N tags −q −v dev_openings dev_active devq_openings devq_queued held mintags maxtags negotiate −a −c −D enable|disable −O offset −q −R syncrate −T enable|disable −U −v −W bus_width 一般的には、あるデバイスの同期レートとオフセット設定が効果を あらわすのは、そのデバイスに対してコマンドが送られてからで す。前述の −a スイッチは、ネゴシエーションパラメータが効果を あらわすようにするため、自動的に Test Unit Ready をデバイスに 送ります。 format 警告! 警告! 警告! ディスクをローレベルフォーマットすると、ディスク上の「すべ て」のデータを破壊します。このコマンドを発行するときには、非 常に注意してください。本当はローレベルフォーマットが不要な ディスクに対し、多くのユーザがローレベルフォーマットを行って います。ローレベルフォーマットが必要となる状況は、比較的少な いです。ローレベルフォーマットが必要となる理由のひとつは、 ディスクの物理セクタの大きさを変えた後でディスクを初期化する ためです。ローレベルフォーマットが必要となる別の理由は、ディ スクへの読み込みまたは書き込みの要求に対して "medium format corrupted" (メディアフォーマットが壊れている) エラーとなる場 合に、そのディスクを復活させるためです。 ディスクによっては、他のディスクよりもフォーマットに時間がか かります。フォーマットが完了するために十分なタイムアウト値 を、ユーザが指定する必要があります。デフォルトのフォーマット タイムアウトは 3 時間です。ハードディスクによっては、非常に短 い期間 (5 分以下の単位) でフォーマット操作が完了します。この ような場合のほとんどは、 FORMAT UNIT コマンドをドライブが実際 にはサポートをしていないため、すなわちコマンドを受け付けて数 分待ってから戻るだけであるためです。 ‘format’ サブコマンドはいくつかの引数を取り、デフォルトの動作 を変えます。 −q および −y の引数は、スクリプトにおいて有用で す。 −q −r −w −y help 環境変数 |
変数 SCSI_MODES によって、別のモードページの書式ファイルを指定することが できます。 変数 EDITOR によって、 camcontrol は、モードページの編集を行う際にどのテ キストエディタを起動するかを決定します。 |
関連ファイル
/usr/share/misc/scsi_modes
SCSI モード書式データベース。 使用例 |
camcontrol eject -n cd -u 1 -v |
cd1 から CD をイジェクトし、コマンド実行に失敗した場合は SCSI センス情報 を出力します。 |
camcontrol tur da0 |
SCSI test unit ready コマンドを da0 に送信します。 camcontrol ユーティリ ティはそのディスクがレディ状態であるかどうかを報告しますが、 −v スイッチ が指定されていないため、コマンド実行に失敗してもセンス情報を表示しませ ん。 camcontrol tur da1 -E -C 4 -t 50 -v SCSI test unit ready コマンドを da1 に送信します。カーネルエラーリカバリ を有効にします。リトライカウントを 4 に、タイムアウトを 50 秒に設定しま す。コマンド実行に失敗した場合 (−v フラグがあるので) センス情報が出力され ます。エラーリカバリが設定されているので、ディスクが回転していない場合は 回転させられます。 camcontrol ユーティリティはディスクがレディ状態かどう かを報告します。 camcontrol cmd -n cd -u 1 -v -c "3C 00 00 00 00 00 00 00 0e 00" \ |
-i 0xe "s1 i3 i1 i1 i1 i1 i1 i1 i1 i1 i1 i1" |
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 all |
システム中のすべての SCSI バスに対し、追加/削除/変更されたデバイスを再ス キャンします。 |
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 コマンドを送り、設定が効果をあらわすようにします。 |
関連項目
歴史
camcontrol ユーティリティは、 FreeBSD 3.0 ではじめて登場しました。 モードページ編集のコードと任意の SCSI コマンドのコードは、 Julian Elischer と Peter Dufault が書いた、かつての scsi(8) ユーティリティと scsi(3) ライブラリのものに基づいています。 scsi(8) プログラムは 386BSD 0.1.2.4 ではじめて登場し、 FreeBSD では、 FreeBSD 2.0.5 ではじめて登場し ました。 |
作者
Kenneth Merry 〈ken@FreeBSD.org〉 |
バグ
コマンド行引数を解釈するコードは、どのサブコマンドが複数の引数を取るかを 知りません。ですから、たとえば、 camcontrol cmd -n da -u 1 -c "00 00 00 00 00 v" 0x00 -v のようなことを試みた場合、test unit ready コマンドで得られるセンス情報は 出力されません。というのは、 −c の 2 番目の引数 (0x00) を見た時点で、 camcontrol の最初の getopt(3) 呼び出しが終ってしまうためです。この動作を 修正するには、ある程度の規模のコードを書き加えるか、 getopt(3) インタ フェースを変更するかのどちらかが必要でしょう。この問題を回避するもっとも 良い方法は、常に camcontrol 共通引数をコマンド固有の引数の前に指定してい ることを確認することです。 FreeBSD 10.0 September 14, 1998 FreeBSD 10.0 |