CP/Mで最初に開発され、MS-DOSやMicrosoft Windowsで拡張を重ねて使用されているファイルシステム(ディスク管理方法)の一つ。
ディスクは、次の領域に分けられる。
ディスク上の領域は、クラスタと呼ばれる単位で管理される。このクラスタのつながり状態(リンク情報)をFAT領域に記録することで、データ領域にある実際のデータがディスク上にどのように存在するのかを管理することができる。
ディスクはセクタと呼ばれる単位で構成され、幾つかのセクタをまとめてクラスタとする。ファイルシステムは、セクタ単位ではなく、クラスタ単位でディスクを管理する。
クラスタ番号を記憶するサイズ(ビット数)により幾つか種類がある。
使用するビット数が多いほど、扱えるクラスタ数が増え、大容量ディスクを効率良く管理することができる。
ビット数が多い分だけ管理できるクラスタ数が増え、大容量ディスクが扱えることになるが、その分FAT情報領域が増えてディスク容量を消費してしまうため、媒体の容量に応じたビット数が使われる。
具体的には次の種類がある。
ファイルの名称等の情報は全て「ディレクトリエントリ」に格納される。
サブディレクトリのディレクトリエントリはファイルと同様の管理が内部でされているが、ディレクトリエントリに「ディレクトリである」というフラグが付けられている。
FATにおける基本的な仕様は次の通り。
FATには、2108年問題が存在する。
ディレクトリエントリは一つにつき32バイトであり、次の順に格納される。
この構造は、CP/Mの構造の上位互換である。
Windows NT以降で、予約領域が拡張されている。
Windows NT以降では、従来未使用だった領域に情報が書き込まれるようになった。
以下は、Microsoft Extensible Firmware Initiative FAT32 File System Specification
による。
日時関係は、次の仕様となる。
最終アクセス日はDIR_LstAccDateに記録されるが、時刻は保存されない。但し書き込みをした場合、DIR_WrtTimeに時刻が書き込まれる。
なお、最終更新日時とされる情報は、旧来のシステム(MS-DOSの時代)にはファイル作成日として使われていた。
Windows 95以降で対応したロングファイル名も、同様に1つ以上のディレクトリエントリを用いて情報を記録する。
この旧来に対する拡張情報は、ファイル属性(R+H+S+V)とした特殊な領域に格納される。これは互換性を考慮した結果と思われる。
OSからはVFATという仮想レイヤーを経由してアクセスされる。結果としてディスクがFATであれば、従来と互換性を保つために特殊な隠しファイルとしてファイル属性(R+H+S+V)としたものをディレクトリエントリに書き込む。