Solaris のシステム管理 (第 1 巻)

UFS 直接入出力

直接入出力の目的は、大容量入出力処理のスピードを速くすることです。大容量入出力処理では、大規模ファイル (256K バイトを超える) を転送するために、大容量のバッファーサイズを使用します。

大容量入出力処理の例としては、大量のデータがファイルに書き込まれる衛星データのダウンロードなどがあります。直接入出力では、オペレーティングシステムのページキャッシュ機構のオーバーヘッドは使用されず、データの書き込みと読み取りが直接メモリーとで行われます。

直接入出力の起動には潜在的な欠点があります。入出力を要求したファイルがすでに別のアプリケーションによってマップされていた場合、そのページがメモリーからフラッシュされるまで直接入出力処理を開始できません。

詳細は、directio(3C) のマニュアルページを参照してください。

mount コマンドに forcedirectio オプションを使用しても、直接入出力をファイルシステムで有効にできます。直接入出力を有効にしてパフォーマンスが向上するのは、ファイルシステムが大量の連続するデータを転送するときだけです。

forcedirectio オプションでファイルシステムをマウントするとき、データはユーザーのアドレス空間とディスクの間で直接伝送されます。直接入出力がファイルシステムで無効な場合、ユーザーのアドレス空間とディスクの間で転送されるデータは、まず、カーネルアドレス空間にバッファーされます。

デフォルトでは、UFS ファイルシステムでは直接入出力は行われません。詳細は、mount_ufs(1M) のマニュアルページを参照してください。