Provided by: manpages-ja_0.5.0.0.20140515+dfsg-2_all ![bug](/img/bug.png)
![bug](/img/bug.png)
名前
raw - Linux raw キャラクタデバイスをバインドする
書式
raw /dev/raw/raw<N> <major> <minor> raw /dev/raw/raw<N> /dev/<blockdev> raw -q /dev/raw/raw<N> raw -qa
説明
raw は Linux raw キャラクタデバイスを ブロックデバイスにバインドするために用いられる。 どんなブロックデバ イスでも利用できる。 またバインドする時にデバイスドライバがアクセス可能でなくてもかまわない (つまりオンデ マンドでロードされるカーネルモジュールであってもかまわない)。 raw の利用法には 2 つのモードがある。一つは raw デバイスのバインドを 設定する動作であり、もう一つは存在し ているバインドに対する問合わせをする 動作である。 raw デバイスの設定をするときは、 /dev/raw/raw<N> はファ イルシステム中に存在している raw デバイスのノードのデバイス名である。 バインド先のブロックデバイスは、 major と minor 番号で示しても良いし、存在しているブロックデバイスファイルのパス名 /dev/<blockdev> で示し ても良い。 既に存在しているバインドに対して、 -q オプションによって問合わせを行うことができる。 この際には、問合わせ る raw デバイスのファイル名を指定しても良いし、 -a オプションを用いればバインド済みの全ての raw デバイス が対象となる。 major と minor を 0 に指定することにより、アンバインドすることができる。 いったん raw デバイスをブロックデバイスにバインドすると、 その raw デバイスはバインド先のブロックデバイス と同じように オープンしたり read/write できる。しかし raw デバイスの動作は ブロックデバイスと全く同じでは ない。特に違う点としては、 raw デバイスへのアクセスは、 カーネルのブロックバッファキャッシュを全く用いな い。 全ての I/O は、その I/O を行ったプロセスのアドレス空間に対して 直に行われる。もし下層にあるブロック デバイスドライバが DMA をサポートしていると、データコピーを全く行わなくても I/O を完了することができる。 raw I/O では、プロセスのアドレス空間が割り付けられた物理メモリに 直接的なハードウェアアクセスを行うの で、例外的な制限がいくつか存在する。 全ての I/O はメモリやディスク上で正しくアラインされていなければなら ない。 すなわちディスク上のセクタ先頭から始まり、セクタ長の整数倍で、 かつ仮想メモリ上のデータバッファも セクタ長の整数倍でなければならない。 ほとんどのデバイスでは、セクタのサイズは 512 バイトである。
オプション
-q 問合わせモード。 raw は新たなバインドを設定する代わりに、 既存のバインドに対する問合わせを行う。 -a -q オプションとともに用い、既存のバインド済み raw デバイスすべてに対して問合わせを行う。 -h 使用方法の要約を表示する。
バグ
Linux の dd(1) コマンドは、現在のところバッファを正しくアラインしない。 したがって raw デバイスには用いる ことができない。 raw I/O デバイスは、 Linux ブロックデバイスのバッファキャッシュとの キャッシュの整合性を管理しない。バッ ファキャッシュに既に存在するデータを raw I/O を用いて上書きすると、そのバッファキャッシュの指す記憶装置の デバイスの実際の内容との不整合が発生する。 これは恣意的なものであるが、 質問した人によって、回答はバグで あったり仕様であったりするだろう!
著者
Stephen Tweedie (sct@redhat.com)