UFS は、Solaris オペレーティング環境内のデフォルトのディスクベースファイルシステムです。ほとんどの場合、ディスクベースのファイルシステムを管理するときには、UFS を管理していることになります。UFS ファイルシステムの機能は次の通りです。
状態フラグ - ファイルシステムの状態を、クリーン、安定、使用中、ロギング処理、または不明として示します。これらのフラグにより、必要のないチェックをファイルシステム上で行わなくて済みます。ファイルシステムが「クリーン」状態、「安定」状態、または「ロギング処理」状態になっていると、ファイルシステムのチェックは実行されません。
拡張基礎タイプ (EFT) - 32 ビットのユーザー ID (UID)、グループ ID (GID)、およびデバイス番号
大規模ファイルシステム - UFS ファイルシステムの最大サイズは 1T バイト (テラバイト) です。Solaris オペレーティング環境では、論理スライスの大きさを 1T バイトのファイルシステムに対応させるストライプ機能はサポートされていませんが、Sun 提供の Solstice DiskSuiteTM ソフトウェアには、この機能が含まれています。
大規模ファイル - デフォルトでは、UFS ファイルシステムは 2G バイト (ギガバイト) を超える通常ファイルを持つことができます。2G バイトの最大ファイルサイズ制限を有効にするには、nolargefiles マウントオプションを明示的に使用しなければなりません。
UFS ファイルシステムの詳細は、第 32 章「ファイルシステムの参照情報」を参照してください。
UFS ファイルシステムを作成すると、ディスクスライスは、1 つまたは複数の連続するディスクシリンダから構成されるシリンダグループに分割されます。シリンダグループはさらに、位置指定可能なブロックに分割され、このブロックによって、シリンダグループ内のファイルの構造が編成され、制御されます。各種のブロックは、ファイルシステム内で特定の機能を持っています。
UFS ファイルシステムには、次の 4 種類のブロックがあります。
ブートブロック - システムのブート時に使用される情報が格納される。
スーパーブロック - ファイルシステムに関する大部分の情報が格納される。
i ノード - ファイル名を除く、ファイルに関するすべての情報が格納される。
記憶域またはデータブロック - 各ファイルのデータが格納される。
各ブロックタイプの詳細については、「UFS ファイルシステムのシリンダグループの構造」を参照してください。
newfs コマンドまたは mkfs コマンドの引数を使用してファイルシステムをカスタマイズするには、これらのパラメータの変更方法について第 32 章「ファイルシステムの参照情報」を参照してください。
UFS ロギングは、トランザクション (完全な UFS 操作を構成する変更) をログに保存してから、そのトランザクションを UFS ファイルシステムに適用するプロセスです。保存されたトランザクションは、後でファイルシステムに適用できます。
システムはリブート時に、不完全なトランザクションを廃棄しますが、完結している操作のトランザクションは適用します。完結しているトランザクションだけが適用されるために、ファイルシステムの整合性が保たれます。通常であればシステムコールの実行が中断され、UFS ファイルシステムの整合性が確保できないシステムクラッシュ時にも、ファイルシステムの整合性が保たれます。
UFS ロギングには 2 つの長所があります。まず、ファイルシステムの整合性が保持されるため、fsck(1M) を実行する必要がなくなります。また、fsck を省略できるため、システムがクラッシュしたり、異常停止 (クリーンではない停止) した場合でもシステムをリブートするのに要する時間を短縮できます。クリーンではない停止についての詳細は、「fsck でチェックして修復される内容」を参照してください。UFS ロギングを使用すれば、特に、通常であれば fsck による読み込みと確認に時間がかかる大規模ファイルシステムを持つシステムのブート時間を短縮できます。
UFS ロギングが作成するログは、いっぱいになるとフラッシュされます。また、ファイルシステムがマウント解除されたとき、あるいは lockfs -f コマンドを実行したときにも、ログはすべてフラッシュされます。
デフォルトでは、UFS ロギングは無効です。UFS ロギングを有効にするには、ファイルシステムをマウントするときに、-o logging オプションを指定して mount(1M) コマンドを実行しなければなりません。ログはファイルシステムの空きブロックから割り当てられ、1G バイトのファイルシステムごとに約 1M バイトのサイズ (合計で 64M バイトまで) が割り当てられます。ログは、ルート (/) ファイルシステムを含む、任意の UFS で有効にできます。また、fsdb コマンドには、UFS ロギングをサポートするための新しいデバッグオプションが追加されています。
ファイルシステムの配置を決めるときには、要求が競合する可能性があることを考えなければなりません。推奨事項は次の通りです。
作業負荷を異なる入出力システムやディスクドライブ間でできるだけ均等に分散します。/export/home を分散させたり、ディレクトリを入れ替えたりして、異なるディスクに負荷を均等に割り当てます。
プロジェクトの個々の部分やグループのメンバーを同じファイルシステム内に入れます。
1 ディスク当たりのファイルシステム数をできるだけ少なくします。通常、システム (またはブート) ディスク上には、/、/usr、スワップ空間の 3 つのファイルシステムがあります。他のディスク上では、1 つまたは通常は 2 つのスライスを作成します。多数の小型ファイルシステムに分割しすぎるよりもファイルシステム数を少なくして余地を設ける方が、ファイルがフラグメントに分割される可能性が小さくなります。容量の大きいテープドライブを使用し、ufsdump で複数のボリュームを処理できるようにしておけば、大型ファイルシステムでも簡単にバックアップをとることができます。
絶えずきわめて小さいファイルを作成するユーザーがいる場合は、i ノード数を増やして別のファイルシステムを作成することを検討します。ただし、ほとんどのサイトでは、類似するタイプのファイルを同じファイルシステム内で保管するようにする必要はありません。
デフォルトのファイルシステムパラメータや、新しいファイルシステムを作成するときの前提条件と手順については、第 27 章「ファイルシステムの作成手順」を参照してください。