File Allocation Table
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ファイル・アロケーション・テーブル (File Allocation Table、FAT)とは、MS-DOSのファイルシステムにおけるディスク内のファイルの位置情報などを記録するための領域のことをいう。
Windowsの時代に入り、FATは、ファイルシステムそのものを指すようになった。
目次 |
[編集] 概要
FATファイルシステムは、MS-DOSや初期のMicrosoft Windowsで使用される。現在のNT系Windowsでも使用可能であるが、セキュリティなどの観点から必ずしも推奨されているものではない。
FATファイルシステムには、クラスタ(クラスター)番号のビット数によって「FAT12」、「FAT16」、「FAT32」の3種類がある。 また、まれに「FAT64」と言う記述を見かけることがあるが、これはWindows NTで使用可能なクラスタサイズが64キロバイトのFAT16を示し、クラスタ番号のビット数を示すものでは無い。
フロッピーディスクの時代に考案されたため、ディスク総容量に対し管理領域が少なくて済む、FAT12であればその全体をディスクバッファ上に保持して高速にアクセスできるという特徴があるが、堅牢でない、大容量ディスクでは非効率、拡張性に乏しい、ファイル名が8文字+拡張子3文字までしか扱えないなど様々なデメリットがある。それでも、その特徴と実装の容易さ、読み書きできるOSが多いことからフロッピーディスクや小容量メモリーカード用のファイルシステムとして依然使われ続けている。
大容量のディスクではFAT16は非効率となるため、FAT32が使われることが増えてきている。デジタルカメラ(特にSDメモリーカードを記録媒体に使用する機種)などではFAT16までの対応が多かったため、4GB以上のメモリーカードを使用するのに制限がある機種もある。FAT32は、プレイステーション3のハードディスクフォーマットなど、大容量ディスクにも広く使われている。
[編集] 実装
FATシステムでは、ディスク上のセクタは、クラスタと呼ばれる単位にまとめられて管理される。管理できるクラスタ数はFAT12でFF4h(4084)個、FAT16でFFF4h(65524)個。通常は1クラスタ内のセクタはディスク上では物理的に連続した場所に配置される。ファイルはその大きさにより一つのクラスタ、あるいは複数のクラスタで構成される。ファイル・アロケーション・テーブル (FAT)は一つのメディアの全クラスタ数と同じ大きさを持ち、ファイル・アロケーション・テーブルの1要素が1クラスタに対応する。各要素に記録されるのは、あるクラスタのデータの続きがどのクラスタにあるか、という情報である。ファイル・アロケーション・テーブルとは別にルートディレクトリテーブルとサブディレクトリテーブルがあり、そこにファイル名とファイルの属性、そのファイルを構成する最初のクラスタ番号が記録されている。ディレクトリの情報に記録された先頭クラスタ番号と組み合わせることにより1つのファイルが複数のクラスタにまたがって存在する状況を記録している。
記録されているのは続きのデータが入っているクラスタ番号であると述べたが、一部予約されている番号が存在する。それは以下の通りである(以下の数値はFAT16の場合)。
- 0000h: 未使用クラスタである
- 0001h: (予約)
- FFF7h: 不良クラスタとしてマークされている
- FFF8h - FFFFh: 最後のクラスタである
なお、FATは2重に記録されており、破損したとしても復旧することが可能である。ただし、通常は自動で不整合が検出されることはなく、手動で修復プログラムを実行する必要がある。
FATはマウント命令によって主記憶に読み込まれ、アンマウント命令によってディスクへ書き戻されるが、ほとんどのOSではこの作業をファイルアクセスの際に自動的に行なっているため、ユーザが意識することはない。
[編集] VFAT
Windows 95から、長いファイル名(LFN:最長255文字)を扱えるよう拡張された。これを俗にVFAT (Virtual FAT)と呼ぶ。Virtualと冠に付いてはいるが、ファイルシステム上はディレクトリエントリの扱いが若干異なる程度で、下位互換性も不十分ながら保たれている。
VFATは、FAT互換の8.3形式の短いファイル名の直前のディレクトリエントリにボリュームラベルbitの立ったエントリが存在した場合、それがこのファイルの長いファイル名であると解釈する。
そのため、従来のFATしかサポートしないOSからVFATを参照した場合には、短いファイル名のみが見える事となり、一応のアクセスは可能となる。しかし、ファイルの書き込みを行ったり、MS-DOS時代のディレクトリエントリを最適化するプログラムやツールを使用した場合、長いファイル名が破壊されてしまうため、互換性が不十分であると言われている。
厳密にはVFATはWindows for Workgroups 3.11->Windows 95->98->Meと引き継がれてきた仮想デバイスドライバの1つであり、WindowsアプリケーションがMS-DOSファイルをアクセスする時に、386の保護仮想アドレスモード (Protected Virtual Address Mode)上からMS-DOSシステムを呼ばずに済むようにするためのものである。
[編集] FAT32
Windows 95 OSR2以降で利用可能となったFAT。その名の通り、クラスタ番号を32ビットで管理するが、実際には28ビットしか使用しない仕様となっている。
そのため論理的には、FF FFFF4h個(268,435,444個)のクラスタ(32キロバイトクラスタ時、約8テラバイト)を扱える筈であるが、スキャンディスクの実装上の問題でWindows 9x系上では事実上、3F C000h個(4,177,920個)のクラスタしか利用できない(32キロバイトクラスタ時、およそ124.55ギガバイト)。
- 注)FATサイズが16メガバイトを越える事を想定していなかっただけとの説もある。
最大容量を2テラバイトとしている資料もあるが、これはセクタ数が最大FFFFFFFFh個、セクタサイズが通常512バイトであることから求められた上限である。FATの仕様上は4096バイトまでのセクタを使用することが可能である。
Windows 2000以降からNT系Windowsでも利用可能となったが、NT上からは意図的に32ギガバイト迄しかフォーマットできない制限を設けている。
[編集] 関連項目
- NT File System(NTFS)
- WinFS
- Logical Block Addressing(LBA)
- マスターブートレコード(MBR)
- ブートセクタ