ブートブロック、スーパーブロック、inode群、データブロック群だけが存在していた。初期のUNIXで使っていた小さいディスクではこれで十分であったが、技術の進歩と共にディスク容量が大きくなり、inodeのある部分とデータブロックの間をヘッドが行き来することによる効率の激しい低下が無視できなくなってきた。これは、シリンダグループという概念を発明したもので、ディスクを小さい部分に分け、それぞれにinodeとデータブロックを配置する構成である。データブロックとそれに関連するメタデータを同じシリンダグループに配置することでアクセスを局所化しようとしたものであり、理想的には1つのディレクトリのコンテンツが(データブロックも対応するメタデータも)同じか近いシリンダグループに配置され、ディレクトリのコンテンツがディスク全体に分散配置されることによるフラグメンテーションを低減する。スーパーブロックには性能に関わるパラメータとして、トラック数、セクタ数、回転速度、ヘッド速度、トラック間のセクタ配置などの情報がある。完全に最適化されたシステムでは、プラッタの回転を待つ間に近接するトラック間でヘッドを移動させ、不連続に配置されているセクタを読むことができる。ディスク容量が大きくなると、セクタレベルの最適化は効果を発揮できなくなってきた(特に、トラック当たりのセクタ数が一定でない場合)。ディスクが大容量化しファイルが巨大化すると、読み込みが断片化することがさらに大きな問題となってきた。これにはいくつかの効果がある。ファイルのセクタが連続確保される可能性が大きくなる。ファイルのブロックをリストで保持するオーバーヘッドを低減できる。ブロック数を保持するビットフィールドで表現できるファイルサイズ上限が大きくなる。ブロックサイズが大きくなると、小さいファイルがたくさんある場合は領域を無駄に消費することになる。そこでBSDではブロックレベルのフラグメント化を導入した。ファイルの最後の部分はブロックサイズ未満になるので、それをブロックを分割したサブブロックに格納することで領域を有効活用できるようにする。これをブロックのサブアロケーション、テールマージ、テールパッキングなどとも呼ぶ。商用UNIXではUFSを導入した。その多くは独自の拡張を施したため、別のベンダーのUFSを認識することができない。元のブロックサイズやデータフィールド幅は保持されていることが多く、ある程度の互換性は保持されている。ディスクを異機種間で共有する場合、事前に互換性を確認することが重要である。他にも巨大ファイルを扱うための拡張、巨大ディスクを扱うための拡張など様々な拡張がなされている。いうタイムスタンプを新たに追加するなどの拡張をしたものである。UFS1およびUFS2両方でのスナップショット機能を導入している。サポートしている[2]。実装は2つの層に分かれている。して実装されているデータコンテナを扱う。これは従来からのFFSとLFSというログ構造ファイルシステムで共通部分を共有するための仕組みである。