Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名前

       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 デバイスのノードのデバ
       イス名である。  バインド先のブロックデバイスは、 majorminor 番号で示しても良いし、存在
       しているブロックデバイスファイルのパス名 /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)