.\" Copyright (c) 1996 .\" Julian Elischer . All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %Id: da.4,v 1.12 1998/10/16 03:28:12 ken Exp % .\" $FreeBSD$ .\" .\" WORD: solid-state 半導体 .\" WORD: partitioning 区画割り .\" .Dd October 15, 1998 .Dt DA 4 .Os FreeBSD .Sh 名称 .Nm da .Nd SCSI ダイレクトアクセスデバイスドライバ .Sh 書式 .Cd device da0 .Cd device da1 at scbus0 target 4 lun 0 .Sh 解説 .Nm da ドライバは、サポート済みの .Tn SCSI ホストアダプタを用いてシステムに接続されているダイレクトアクセス型のすべての .Tn SCSI デバイスのサポートを提供します。 ダイレクトアクセス型はディスク、光磁気、 そして半導体デバイスを含みます。 .Pp .Tn SCSI ホストアダプタは .Tn SCSI ダイレクトアクセスデバイスが設定される前に システムの中で別に設定されることが必要です。 .Sh 区画割り (パーティショニング) .Nm ドライバはディスクに 2 つのレベルの区画割りを持つことを許可します。 1 つ目の層は、 .Dq スライス層 と呼ばれ、 ほかのオペレーティングシステムで使用されている領域から、 .Tn FreeBSD のディスクの領域を分離するために用いられます。 2 つ目の層は、 .Bx 4.4 に固有の区画構成で、 .Xr disklabel 5 によって、 個々のファイルシステムとスワップ空間のための領域に .Tn FreeBSD のスライスを再分割するために用いられます。 より詳しい情報は、それぞれ、 .Xr fdisk 8 と .Xr disklabel 8 を見てください。 .Pp もし、初期化されていないディスクを開いた場合には、 ディスク全体を計測して、 仮の .Tn FreeBSD スライスを用いて、スライステーブルの初期化が行われます。 同様に、初期化されていない (または非 .Tn FreeBSD ) スライスが開かれた場合、そのディスクラベルは ドライブによって返されるパラメータで初期化され、 単一の .Sq Li c パーティションでスライス全体を包括します。 .Sh キャッシュの効果 多くのダイレクトアクセスデバイスは、読み込みと書き込みの両方もしくは一方の キャッシュを持っています。 デバイスキャッシュの効果をもたらすパラメータはモードページ 8、 すなわちキャッシュ制御ページに納められています。 モードページは .Xr camcontrol 8 ユーティリティによって調べて、変更することができます。 読み込みキャッシュは、何度も用いられるデータだけでなく、 デバイスによる先読み操作のデータを格納するために用いられます。 読み込みキャッシュはユーザに透過であり、 有効にしてもまったく害はありません。 読み込みキャッシュを持ったほとんどのデバイスは、 工場出荷時にこの機能が有効にされています。 読み込みキャッシュはキャッシュ制御モードページの .Tn RCD (読み込みキャッシュ不許可) ビットをセットすることで、 不許可にできます。 書き込みキャッシュは書き込み操作による遅延を大幅に減らすことができ、 効率と性能を増加させるために、書き込みを再編成することをデバイスに 認めます。 この性能の増加にはかなりの代償が発生します。 もし、 書き込み操作が終了していないキャッシュを含んでいるときに、 デバイス電源が消失すると、これらの書き込みは失われるでしょう。 書き込み処理の失敗の影響は、ファイルシステムに不確定性をもたらし、 不正な状況を引き起こすでしょう。 多くのデバイスでは、書き込みトランザクションをエージングし、 最近完了報告した少数のトランザクションのみに弱点を限定します。 しかし、それでもなお、無停電電源装置 (UPS) を備えた書き込みキャッシュを 可能にしたデバイスのシステムでは、推奨されます。 .Nm da デバイスドライバは、 デバイスの最後のクローズ、または予期しないシャットダウン (パニック) イベントの ときに、キャッシュとメディアが同期すること保証します。 これにより、オペレーティングシステムが停止したことを報告した後では、 電源を切断しても安全であることが保証されます。 書き込みキャッシュはキャッシュ制御モードページの .Tn WCE (書き込みキャッシュ許可) ビットをセットすることで 許可に出来ます。 .Sh タグ付きキューイング .Nm da デバイスドライバは、タグ付きキューイングとして知られている SCSI 機能の利点を 完全に利用します。 タグ付きキューイングはデバイスが同時に多数のトランザクションを処理することを 可能にし、しばしばシークの数と長さを減らすために、それらを並べ変えます。 現在のヘッドの位置により近いサービスの要求によって、 メディアの遠い部分へのトランザクションが 不確定に延期させられるかもしれません。 このようなトランザクションが適切な時期に完了することを保証するために、 デバイスの操作が続いている間、 順番付けされたタグ付きトランザクションが 1 つ 15 秒ごとに送られます。 .Sh 不良ブロックの修復 ダイレクトアクセスデバイスは欠陥のあるメディアの部分を マップアウトする能力を持っています。 メディアの修復パラメータはモードページ 1、すなわち読み書きエラー修復モード ページに位置しています。 ほとんどの重要なメディアの再配置機能は '自動書き込み再割り当て' と '自動 読み込み再割り当て' であり、それぞれ、読み書きエラー修復ページの AWRE ビットと ARRE ビットを有効にすることで機能します。 多くのデバイスは、工場出荷時にこれらの機能が無効にされています。 モードページは .Xr camcontrol 8 ユーティリティによって調べて、変更することが出来ます。 .Sh カーネルの設定 ひとつの .Nm da デバイスを明示的に設定することのみが必要です。 .Tn SCSI バス上に見つかったディスクごとに データ構造が動的に割り当てられます。 .Sh IOCTL 次の .Xr ioctl 2 呼び出しは 他のディスクと同様に .Tn SCSI ドライブにも適用されます。 それらは、ヘッダファイル .Aq Pa sys/disklabel.h の中で定義されています。 .Pp .Bl -tag -width DIOCSDINFO .It Dv DIOCSBAD 一般にディスクの不良ブロックのマッピングシステムのセットアップに 用いられます。 .Tn SCSI デバイスはそれら自身に不良ブロックマッピングが組み込まれているので、 このコマンドは実装されていません。 .It Dv DIOCGDINFO ドライブのディスクラベルの in-core コピーをカーネルから 読み込みます。もし、ドライブが一度も初期化されていないときは、 仮のディスクラベルを与え、その場合には、 .Tn SCSI の inquiry コマンドから、読み込んだ情報を含んでいます。 .It Dv DIOCSDINFO 使用する新しいディスクラベルをドライバに与えます。 ドライバはディスクに新しいディスクラベルを書き込み .Em ません 。 .It Dv DIOCWLABEL ディスク上のディスクラベルに対する、ドライバの ソフトウエア書き込みプロテクトを有効または無効にします。 .It Dv DIOCWDINFO 使用する新しいディスクラベルをドライバに与えます。 ドライバはディスクに新しいディスクラベルを書き込み .Em ます 。 .El .Sh 注 もし、デバイスが無効になると (メディアが取り外される, デバイスが 応答しなくなる)、 カーネル中に保持されているディスクラベルやデバイスついての情報は 無効になります。 新たに挿入されたメディアや置き換えられたデバイスの破壊を防ぐために、 古いデバイスを参照している最後のファイル記述子が閉じられるまで、 デバイスへのすべてのアクセスは破棄されます。 この間は、すべての新しいファイルを開こうとする試みは拒否されます。 .Sh 関連ファイル .Bl -tag -width /dev/rsdXXXXX -compact .It Pa /dev/rda Ns Ar u raw モード .Tn SCSI ディスクユニット .Ar u , 区画割りされていないデバイスとしてアクセスされます .Sm off .It Pa /dev/da Ar u Pa s Ar n .Sm on block モード .Tn SCSI デバイスユニット .Ar u , スライス .Ar n , 区画割りされていないデバイスとしてアクセスされます .Sm off .It Pa /dev/rda Ar u Pa s Ar n .Sm on raw モード .Tn SCSI ディスクユニット .Ar u , スライス .Ar n , 区画割りされていないデバイスとしてアクセスされます .It Pa /dev/da Ns Ar u Ns Ar p block モード .Tn SCSI ディスクユニット .Ar u , 初めの .Tn FreeBSD スライス, パーティション .Ar p .It Pa /dev/dad Ns Ar u Ns Ar p raw モード .Tn SCSI ディスクユニット .Ar u , 初めの .Tn FreeBSD スライス, パーティション .Ar p .Sm off .It Xo .Pa /dev/da .Ar u .Pa s .Ar n .Ar p .Xc .Sm on block モード .Tn SCSI ディスクユニット .Ar u , .Ar n 番目のスライス, パーティション .Ar p .Sm off .It Xo .Pa /dev/dad .Ar u .Pa s .Ar n .Ar p .Xc raw モード .Tn SCSI ディスクユニット .Ar u , .Ar n 番目のスライス, パーティション .Ar p .El .Sh 診断 なし。 .Sh 関連項目 .Xr wd 4 , .Xr disklabel 5 , .Xr disklabel 8 , .Xr fdisk 8 , .Xr da 9 .Sh 歴史 .Nm ドライバは .Tn CAM .Tn SCSI サブシステム用に Justin T. Gibbs が書きました。 Julian Elischer が .Tn Mach 2.5 から移植して書いた .Nm sd デバイスドライバから、多くのアイデアが集められました。 スライスのサポートは Bruce Evans が書きました。