スポンサーリンク

DA(4) FreeBSD カーネルインタフェースマニュアル DA(4)

名称

da − SCSI ダイレクトアクセスデバイスドライバ

書式

device da0

device da1 at scbus0 target 4 lun 0

解説

da ドライバは、サポート済みの SCSI ホストアダプタを用いてシステムに接続さ れているダイレクトアクセス型のすべての SCSI デバイスのサポートを提供しま す。ダイレクトアクセス型はディスク、光磁気、そして半導体デバイスを含みま す。

SCSI ホストアダプタは SCSI ダイレクトアクセスデバイスが設定される前にシス テムの中で別に設定されることが必要です。

区画割り (パーティショニング)

da ドライバはディスクに 2 つのレベルの区画割りを持つことを許可します。 1 つ目の層は、 ‘‘スライス層’’ と呼ばれ、ほかのオペレーティングシステムで使 用されている領域から、 FreeBSD のディスクの領域を分離するために用いられま す。 2 つ目の層は、 4.4BSD に固有の区画構成で、 disklabel(5) によって、個 々のファイルシステムとスワップ空間のための領域に FreeBSD のスライスを再分 割するために用いられます。より詳しい情報は、それぞれ、 fdisk(8)disklabel(8) を見てください。

もし、初期化されていないディスクを開いた場合には、ディスク全体を計測し て、仮の FreeBSD スライスを用いて、スライステーブルの初期化が行われます。 同様に、初期化されていない (または非 FreeBSD) スライスが開かれた場合、そ のディスクラベルはドライブによって返されるパラメータで初期化され、単一の ‘c’ パーティションでスライス全体を包括します。

キャッシュの効果

多くのダイレクトアクセスデバイスは、読み込みと書き込みの両方もしくは一方 のキャッシュを持っています。デバイスキャッシュの効果をもたらすパラメータ はモードページ 8、すなわちキャッシュ制御ページに納められています。モード ページは camcontrol(8) ユーティリティによって調べて、変更することができま す。

読み込みキャッシュは、何度も用いられるデータだけでなく、デバイスによる先 読み操作のデータを格納するために用いられます。読み込みキャッシュはユーザ に透過であり、有効にしてもまったく害はありません。読み込みキャッシュを 持ったほとんどのデバイスは、工場出荷時にこの機能が有効にされています。読 み込みキャッシュはキャッシュ制御モードページの RCD (読み込みキャッシュ不 許可) ビットをセットすることで、不許可にできます。

書き込みキャッシュは書き込み操作による遅延を大幅に減らすことができ、効率 と性能を増加させるために、書き込みを再編成することをデバイスに認めます。 この性能の増加にはかなりの代償が発生します。もし、書き込み操作が終了して いないキャッシュを含んでいるときに、デバイス電源が消失すると、これらの書 き込みは失われるでしょう。書き込み処理の失敗の影響は、ファイルシステムに 不確定性をもたらし、不正な状況を引き起こすでしょう。多くのデバイスでは、 書き込みトランザクションをエージングし、最近完了報告した少数のトランザク ションのみに弱点を限定します。しかし、それでもなお、無停電電源装置 (UPS) を備えた書き込みキャッシュを可能にしたデバイスのシステムでは、推奨されま す。 da デバイスドライバは、デバイスの最後のクローズ、または予期しない シャットダウン (パニック) イベントのときに、キャッシュとメディアが同期す ること保証します。これにより、オペレーティングシステムが停止したことを報 告した後では、電源を切断しても安全であることが保証されます。書き込み キャッシュはキャッシュ制御モードページの WCE (書き込みキャッシュ許可) ビットをセットすることで許可に出来ます。

タグ付きキューイング

da デバイスドライバは、タグ付きキューイングとして知られている SCSI 機能の 利点を完全に利用します。タグ付きキューイングはデバイスが同時に多数のトラ ンザクションを処理することを可能にし、しばしばシークの数と長さを減らすた めに、それらを並べ変えます。現在のヘッドの位置により近いサービスの要求に よって、メディアの遠い部分へのトランザクションが不確定に延期させられるか もしれません。このようなトランザクションが適切な時期に完了することを保証 するために、デバイスの操作が続いている間、順番付けされたタグ付きトランザ クションが 1 つ 15 秒ごとに送られます。

不良ブロックの修復

ダイレクトアクセスデバイスは欠陥のあるメディアの部分をマップアウトする能 力を持っています。メディアの修復パラメータはモードページ 1、すなわち読み 書きエラー修復モードページに位置しています。ほとんどの重要なメディアの再 配置機能は ’自動書き込み再割り当て’ と ’自動読み込み再割り当て’ であり、 それぞれ、読み書きエラー修復ページの AWRE ビットと ARRE ビットを有効にす ることで機能します。多くのデバイスは、工場出荷時にこれらの機能が無効にさ れています。モードページは camcontrol(8) ユーティリティによって調べて、変 更することが出来ます。

カーネルの設定

ひとつの da デバイスを明示的に設定することのみが必要です。 SCSI バス上に 見つかったディスクごとにデータ構造が動的に割り当てられます。

IOCTL

次の ioctl(2) 呼び出しは他のディスクと同様に SCSI ドライブにも適用されま す。それらは、ヘッダファイル ⟨sys/disklabel.h⟩ の中で定義されています。

       DIOCSBAD

一般にディスクの不良ブロックのマッピングシステムのセットアッ プに用いられます。 SCSI デバイスはそれら自身に不良ブロック マッピングが組み込まれているので、このコマンドは実装されてい ません。

DIOCGDINFO
ドライブのディスクラベルの in-core コピーをカーネルから読み込 みます。もし、ドライブが一度も初期化されていないときは、仮の ディスクラベルを与え、その場合には、 SCSI の inquiry コマンド から、読み込んだ情報を含んでいます。

DIOCSDINFO
使用する新しいディスクラベルをドライバに与えます。ドライバは ディスクに新しいディスクラベルを書き込み ません。

DIOCWLABEL
ディスク上のディスクラベルに対する、ドライバのソフトウェア書 き込みプロテクトを有効または無効にします。

DIOCWDINFO
使用する新しいディスクラベルをドライバに与えます。ドライバは ディスクに新しいディスクラベルを書き込み ます。

もし、デバイスが無効になると (メディアが取り外される, デバイスが応答しな くなる)、カーネル中に保持されているディスクラベルやデバイスについての情報 は無効になります。新たに挿入されたメディアや置き換えられたデバイスの破壊 を防ぐために、古いデバイスを参照している最後のファイル記述子が閉じられる まで、デバイスへのすべてのアクセスは破棄されます。この間は、すべての新し いファイルを開こうとする試みは拒否されます。

関連ファイル

       /dev/rdau

raw モード SCSI ディスクユニット u, 区画割りされていないデ バイスとしてアクセスされます
/dev/dausn
block モード SCSI デバイスユニット u, スライス n, 区画割り されていないデバイスとしてアクセスされます
/dev/rdausn
raw モード SCSI ディスクユニット u, スライス n, 区画割りさ れていないデバイスとしてアクセスされます
/dev/daup
block モード SCSI ディスクユニット u, 初めの FreeBSD スラ イス, パーティション p
/dev/dadup
raw モード SCSI ディスクユニット u, 初めの FreeBSD スライ ス, パーティション p
/dev/dausnp
block モード SCSI ディスクユニット u, n 番目のスライス, パーティション p
/dev/dadusnp
raw モード SCSIディスクユニット u,n番目のスライス, パー ティション p

診断

なし。

関連項目

wd(4),disklabel(5),disklabel(8),fdisk(8),da(9)

歴史

daドライバは CAMSCSIサブシステム用に Justin T. Gibbs が書きました。 Julian Elischer が Mach2.5 から移植して書いた sdデバイスドライバから、多 くのアイデアが集められました。スライスのサポートは Bruce Evans が書きまし た。

FreeBSD October 15, 1998 FreeBSD

スポンサーリンク