Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all
名前
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)