UFS ファイルシステムを作成すると、ディスクスライスがシリンダグループに分割されます。「シリンダグループ」は、1 つ以上の連続したディスクシリンダで構成されます。シリンダグループはさらにアドレス指定可能なブロックに分割され、このブロックによって、シリンダグループ内のファイルの構造が編成され、制御されます。各種のブロックは、ファイルシステム内で特定の機能を持っています。UFS ファイルシステムには、次の 4 種類のブロックがあります。
ブロックの種類 |
格納されている情報の種類 |
---|---|
ブートブロック |
システムブート時に使用される情報 |
スーパーブロック |
ファイルシステムに関する大部分の情報 |
i ノード |
ファイルに関する名前以外のすべての情報 |
記憶域またはデータブロック |
各ファイルのデータ |
次の節では、これらのブロックの編成と機能について説明します。
ブートブロックには、システムのブート時に使用されるオブジェクトが格納されます。ファイルシステムがブートに使用されなければ、ブートブロックは空白のままです。ブートブロックは最初のシリンダグループ (シリンダグループ 0) にのみ置かれ、スライス内の最初の 8K バイトです。
スーパーブロックには、次のようなファイルシステムに関する大部分の情報が格納されます。
ファイルシステムのサイズと状態
ラベル (ファイルシステム名とボリューム名を含む)
ファイルシステムの論理ブロックのサイズ
最終更新日時
シリンダグループのサイズ
シリンダグループ内のデータブロック数
集計データブロック
ファイルシステムの状態
最後のマウントポイントのパス名
スーパーブロックには重要なデータが入っているので、ファイルシステムの作成時には複数のスーパーブロックが作成されます。
集計情報ブロックは、スーパーブロック内に保管されます。集計情報ブロックは複製されませんが、通常はシリンダグループ 0 内の主スーパーブロックと一緒のグループに分類されます。集計ブロックには、ファイルシステムが使用されるときに発生する変更が記録されます。さらに、ファイルシステム内の i ノード数、ディレクトリ数、フラグメント数、および記憶ブロック数が表示されます。
i ノードには、ファイルに関して名前以外のすべての情報が入っており、ディレクトリ内に保管されます。i ノードは 128 バイトです。i ノード情報はシリンダ情報ブロック内に保管され、次の情報が入っています。
ファイルのタイプ
通常ファイル
ディレクトリ
ブロック型特殊ファイル
キャラクタ型特殊ファイル
FIFO (名前付きパイプとも呼ぶ)
シンボリックリンク
ソケット
その他の i ノード – 属性ディレクトリとシャドウファイル (ACL 用)
ファイルのモード (読み取り権 - 書き込み権 - 実行権のセット)
ファイルへのハードリンク数
ファイルの所有者のユーザー ID
ファイルが属するグループ ID
ファイル内のバイト数
15 個のディスクブロックアドレスの配列
ファイルの最終アクセス日時
ファイルの最終変更日時
i ノードの変更日時
15 個のディスクブロックアドレスの配列 (0 - 14) は、ファイルの内容が格納されているデータブロックを指します。最初の 12 個は直接アドレスです。つまり、ファイルの内容のうち最初の 12 個の論理記憶ブロックを直接指します。ファイルが論理ブロック 12 個分より大きい場合は、13 番目のアドレスは間接ブロックを指します。間接ブロックには、ファイルの内容ではなく直接ブロックのアドレスが入っています。14 番目のアドレスは、二重間接ブロックを指します。二重間接ブロックには、間接ブロックのアドレスが入っています。15 番目のアドレスは三重間接アドレス用です。次の図に、i ノードから始まるこのアドレスブロックチェーンを示します。
ファイルシステムに割り当てられた残りの領域には、データブロック (記憶ブロックともいう) が入っています。これらのデータブロックのサイズは、ファイルシステムの作成時に決定されます。デフォルトでは、データブロックは、2 つのサイズに割り当てられます。 8K バイトの論理ブロックサイズと 1K バイトのフラグメントサイズです。
通常ファイルの場合、データブロックにはファイルの内容が入っています。ディレクトリの場合、データブロックにはディレクトリ内のファイルの i ノード番号とファイル名を示すエントリが入っています。
現在、i ノード、間接アドレスブロック、または記憶ブロックとして使用されていないブロックには、シリンダグループマップ内で空きを示すマークが付けられます。また、このマップはフラグメントを追跡し、断片化によるディスクパフォーマンスの低下を防止します。
UFS ファイルシステムの内容の構造を理解しやすいように、次の図に、一般的な UFS システム内の一連のシリンダグループを示します。