EN JA
DA(4)
DA(4) FreeBSD Kernel Interfaces Manual DA(4)

名称

daSCSI ダイレクトアクセスデバイスドライバ

書式

device da

解説

da ドライバは、サポートされた SCSI ホストアダプタを通してシステムに取り付けられたダイレクトアクセスクラスのすべての SCSI デバイスのサポートを行ないます。ダイレクトアクセスクラスは、ディスク、光磁気ディスク、と半導体デバイスを含んでいます。

また、 SCSI ホストアダプタは、 SCSI ダイレクトアクセスデバイスを設定する前に、システムに別々に設定されなければなりません。

キャッシュ効果

多くのダイレクトアクセスデバイスは、読み込み、および/または、書き込みキャッシュを備え付けています。デバイスのキャッシュに影響するパラメータは、キャッシュ制御ページである、モードページ 8 に格納されています。 camcontrol(8) ユーティリティによってモードページを調査して修正することができます。

読み込みキャッシュは、使用頻度の高いデータと同様にデバイスで開始される先読み制御されたデータを格納するために使用されます。読み込みキャッシュは、ユーザに透過的であり、少しの悪影響なしで有効にすることができます。読み込みキャッシュがあるほとんどのデバイスは、それが有効にされて工場から出荷されます。キャッシュ制御モードページの RCD (Read Cache Disable (読み込みキャッシュ無効)) ビットを設定することによって、読み込みキャッシュを無効にすることができます。

書き込みキャッシュは、書き込み操作の遅延を大幅に減らすことができ、効率と性能を増加させるためにデバイスを再編成することを可能にします。この性能の増加は、かなりの犠牲をともないます。万一、書き込み操作が行なわれていないキャッシュを含んでいる間にデバイスの電源が切れるならば、それらの書き込みは、失われます。ファイルシステムでの書き込み処理を損失する影響は、不確定的であり、不正な状況を引き起こすかもしれません。ほとんどのデバイスは、最近完了したと報告された小数のトランザクションのみに脆弱性を制限するために書き込み処理をエージング (寝か) しますが、それにもかかわらず、書き込みキャッシュが有効にされたデバイスと一体となり、無停電電源 (Uninterruptible Power Supply (UPS)) が備わっているシステムが推薦されます。 da デバイスドライバは、デバイスの最後のクローズ、または予期されないシャットダウン (パニック) イベントでキャッシュとメディアが同期することを保証します。これは、オペレーティングシステムが停止したことを報告した時点で、電源を切断しても安全であることを保証します。キャッシュ制御モードページの WCE (Write Cache Enable (書き込みキャッシュ有効)) ビットを設定することによって、書き込むキャッシュを有効にすることができます。

タグ付きキューイング

da デバイスドライバは、タグ付きキューイングとして知られている SCSI 機能を最大限に活用します。タグ付きキューイングは、デバイスが同時に多数のトランザクションを処理することを可能にし、しばしばシークの数と長さを減らすためにそれらを再順序付けします。直ちに完了される現在のヘッド位置の近くでのサービス要求によって無期限に延期されるかもしれない、メディアの遠い部分へのトランザクションを保証するために、順序付けれたタグ付きトランザクションは、デバイスの操作が連続している間に 15 秒ごとに送られます。

不良ブロックの復旧

ダイレクトアクセスデバイスは、欠陥があるメディアの一部のマッピングを外す能力があります。メディアの修復パラメータは、読み書きエラー修復モードページである、モードページ 1 にあります。ほとんどの重要なメディアの再マッピング機能は、読み書きエラー修復ページの AWRE と ARRE ビットでそれぞれ有効にできる、´自動書き込み再割り付け (Auto Write Reallocation)' と´自動読み込み再割り付け (Auto Read Reallocation)' です。多くのデバイスは、これらの機能を有効にされて工場から出荷されません。 camcontrol(8) ユーティリティによってモードページを調査して修正することができます。

カーネルの設定

1 つの da デバイスを明示的に設定することだけが必要です。 SCSI バス上でディスクが見つけられるときに、データ構造は、動的に割り付けられます。

SYSCTL 変数

次の変数は、 sysctl(8) 変数と loader(8) 調整変数の両方で利用可能です:
kern.cam.da.retry_count

この変数は、 da ドライバが何回 READ または WRITE コマンドを再試行するかを決定します。これは、プローブ時の間か、または da ドライバのダンプルーチンで使用される再試行の数に影響しません。この値は、現在デフォルトで 4 です。

kern.cam.da.default_timeout

この変数は、 da ドライバが発行されたコマンドが時間切れになる前にどれくらい長い間待つかを決定します。この値のための単位は、秒です、そして、デフォルトは、現在 60 秒です。

kern.cam.da.%d.minimum_cmd_size

この変数は、与えられた da ユニットの最小の READ/WRITE CDB サイズがどのくらいであるかを決定します。 (上記の %d は、 da ドライバのユニット番号、例えば、1、2、4、8 など、を意味します。) 有効な最小のコマンドサイズ値は、6、10、12、および 16 バイトです。デフォルトは、6 バイトです。

da ドライバは、問題のデバイスが話すプロトコル (例えば、ATAPI) が 6 バイトのコマンドを通常許容しないかどうか決定するためにプローブ時に CAM Path Inquiry CCB を発行します。そうしないなら、 da ドライバは、少なくとも 10 バイトの CDB を使用することをデフォルトとします。 6 バイトの READ または WRITE が ILLEGAL REQUEST エラーで失敗するなら、 da ドライバは、次にデバイスのためのデフォルトの CDB サイズを 10 バイトまで増加させて、コマンドを再試行します。 CDB サイズは、問題の READ または WRITE の指定された最小のコマンドサイズ、LBA、および長さを満たす最も小さい READ/WRITE CDB として常に選択されます。 (例えば、2^32 より大きい LBA への書き込みは、16 バイトの CCB を必要とします。)

デバイスが無効になるなら (メディアは、取り外され、デバイスは、反応しなくなります)、カーネルの中に保持されたデバイスについてのディスクラベルと情報は、無効になります。新しく挿入されたメディアの一部または置き換えられるデバイスの破損を回避するために、古いデバイスを参照する最後のファイル記述子がクローズされるまで、デバイスへのすべてのアクセスは、破棄されます。この期間中は、すべての新しくオープンする試みは、拒絶されます。

関連ファイル

/dev/da*
SCSI ディスクデバイスノード

診断

なし。

歴史

da ドライバは、 CAM SCSI サブシステムのために Justin T. Gibbs によって書かれました。多くのアイデアは、 Julian Elischer によって書かれ Mach 2.5 から移植された sd デバイスドライバから収集されました。
February 8, 2012 FreeBSD