File_Allocation_Table
[Wikipedia|▼Menu]

File Allocation Table (ファイル・アロケーション・テーブル、FAT、日: ファイル割当て表[1]) とは、MS-DOSファイルシステム(および、その前身となったMicrosoft DISK-BASICのファイルシステム)におけるディスク内のファイルの位置情報などを記録するための領域である。これが転じて現在ではMS-DOSに採用されていたFATを用いるファイルシステムの名前としてFATファイルシステム、さらにそれを略してFATと呼ぶことも多い(なお後者でDISK-BASICのそれを指すことはまずない)。
概要

オリジナルのFile Allocation Tableは1977年に、ビル・ゲイツとマーク・マクドナルド(英語版)によって開発され、DISK-BASICの中のファイル管理仕様として採用された。

DISK-BASIC以降、MS-DOSのファイルシステムでもFATが採用され、MS-DOSがDOSとしてのデファクトスタンダードを確立し、さらにその後Windows NTで新しいファイルシステムNTFSを普及させた後も、FATを採用したファイルシステムは使われ続けている。

MS-DOS以降は、Windows Meまでの一般家庭向けのOSの標準ファイルフォーマットとして使用されていた。Windows NT系のOSでも使用可能であるが、他のWindowsからのアップグレードやリムーバブルメディアのために用意されているものであり、セキュリティなどの観点から必ずしも利用が推奨されておらず、FATを利用している状況下での動作制限も存在する。

フロッピーディスクの時代の設計を元にしてあるため、ディスク総容量に対し管理領域が少なくて済む、高速にアクセスできるなどの利点があるが、その反面、堅牢でない、大容量ディスクでは非効率、拡張性に乏しい、ファイル名が8文字+拡張子3文字までしか扱えない(VFAT非対応の場合)、タイムスタンプがローカル時間なのでタイムゾーンをまたいで使ったり夏時間・冬時間が違ったりすると正しく(意図した)ファイル変更時刻が表示できないことがあるなど様々な欠点がある。それでも、その特徴と実装の容易さ、読み書きできるオペレーティングシステムが多いことから、フロッピーディスクや小容量メモリーカード用のファイルシステムとして依然使われ続けている。現在はデジタルカメラビデオゲーム機などでも広く使われている。

FATは、クラスタ番号の管理ビット数によって「FAT12」、「FAT16」、「FAT32」の3種類がある(なお、DISK-BASICでは8ビットであった)。Windowsでは、FAT32を除いてFATと表示している。また、俗に「FAT64」と言う記述を見かけることがあるが、これは「Windows NT系で使用可能なクラスタサイズが64キロバイトのFAT16」[2]または「exFAT」[3]を示し、クラスタ番号のビット数を示すものでは無い。

上記のようにリムーバブルメディアファイルフォーマットとしてはFAT16またはFAT32が多く使用されているが、ボリュームとファイルのサイズ制限が問題になっている。このほか種々の問題を解決するため、exFATが開発された。

なお、VFATとexFATを除いた仕様は国際規格としてECMA-107とISO/IEC 9293として標準化されている。日本ではJIS X 0605規格として登録されている。.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この節の加筆が望まれています。

仕様

フロッピーディスク(後にハードディスクも)の記録単位としてセクタがあり、1以上のセクタをまとめてクラスタとして管理する。FATは言わばクラスタ番号による巨大な一次元配列であり、ディスクの最初から最終までのクラスタ番号ごとに、そのクラスタが使用中なのか、空き領域なのか(または、システム予約領域、バッドクラスタ:エラー)などの状態を保持する。

そして、ディスク上の1つのファイルは、1つ以上のクラスタの連鎖として管理される。すなわち、あるファイルの最初のクラスタ番号がディレクトリ・エントリに格納されており、ファイルの最初のデータはそのクラスタ番号の領域に格納されている。そして、最初のクラスタ番号に対応するFAT上のエントリは、その次に繋がるクラスタ番号を保持するか、またはそこが最終クラスタであるマークを保持している。

このように、FATはディスクの管理上、最重要なデータテーブルであり、もしこの情報が損なわれると、ディスク上のファイル等が正常に読み出せなくなってしまう。そのため、FATを実現しているファイルシステムでは、FATのテーブルの複数のコピーを保持するのが一般的である。

DISK-BASICの時代等は、例えばN-DISK-BASICの場合、FATはマウント命令(BASICのコマンド名はMOUNT)によって主記憶に読み込まれて、ファイルの更新とともに主記憶上でだけ更新され、アンマウント命令(BASICのコマンド名はREMOVE)によって初めてディスクへ書き戻されるのが一般的であった。これは、ファイルを更新するたびにFATに書き戻すことが無いよう、高速化を図った仕様ではあるが、他方、ユーザーのアンマウント命令の実行忘れにより、FATだけが古い状態のままになり、ファイルの不整合が生じてデータを損なう事故が多発した。

MS-DOS以降では、バッファリング・遅延書き込みにより、ディスクの最終書き込みまでにはFATを必ず自動的に書き戻す仕様になっているため、アクセスの途中にディスクを抜かない限りは、データ不整合が発生するおそれは殆どなくなり、マウント・アンマウントをユーザが意識することはなくなった(ただし、USB接続の大容量リムーバブルメディアの普及により、遅延書き込みのフラッシュの保証のために、「ハードウェアの安全な取り外し」として再認識されるに至っている)。

この節の加筆が望まれています。

実装

FAT12FAT16FAT32exFAT
開発者
マイクロソフト
正式名File Allocation Table
(12ビット ver)(16ビット ver)(32ビット ver)extended バージョン
導入1977年,
(Microsoft Disk BASIC)1987年11月,
(Compaq DOS 3.31)1996年8月,
(Windows 95 OSR2)Windows Embedded CE 6.0
パーティション識別子0x01 (MBR)0x04, 0x06, 0x0E (MBR)0x0B, 0x0C (MBR)
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)0x07 (MBR)

EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
構造
ディレクトリテーブル
領域管理リンクリストリンクリスト、ビットマップ
不良ブロッククラスタタグ
限度
最大ファイルサイズ32MiB2GiB
4GiB (NT)4GiB - 1 byte16EiB
クラスタサイズ512byte ? 32KiB512byte ? 32KiB(NT系では64KiB、セクタサイズが512バイトより大きい場合は 256KiB)512byte ? 32KiB(NT系では64KiB、セクタサイズが512バイトより大きい場合は 256KiB)512byte ? 32MiB
最大ファイル数4,07765,517268,435,437ディレクトリ毎に 2,796,202
最大ボリュームサイズ32MiB2GiB
4GiB (NT)2TiB
8TiB(2KiBセクタ)TBU
最大ファイル名長8.3形式、または255文字255文字
特徴
記録可能なタイムスタンプ作成(精度は10ミリ秒)、修正(精度は2秒)、アクセス(精度は1日)
(長いファイル名がサポートされている時のみ、作成時間とアクセス日付が更新できる)作成(精度は10ミリ秒)、修正(精度は10ミリ秒)、アクセス(精度は2秒)
日付範囲1980年1月1日 - 2107年12月31日
フォークnot natively


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:53 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef