マスター ファイル テーブル

マスターファイルテーブル（、）とは、NT File System (NTFS) において、ファイルシステム上に存在するすべてのファイルのエントリを管理するファイルである。MFTには$Mftというファイル名が割り当てられ、MFT自身もMFT上にエントリが存在する。

 メタファイル 
B+木でファイル名とファイル実体への関連付けが行われている。この他、$LogFileトランザクションジャーナルファイルによる、ファイルアクセストランザクションの管理、$Bitmapによるファイルロケーションのビットマップの管理、$BadClusファイルによる不良クラスタマップ等があり、さらにNTFSのバージョンによってはその他の機能を実装した各種ファイルがある。

共通の特徴として、メタファイルは全て最初の1文字が$で始まる。しかし、完全ファイル名がメタファイル実体と結びつけられているため、ユーザーが$で始まるファイルを作成してもよく、そのファイルはメタファイルとは認識されない。

 ファイルシステムの構造 
また、トランザクションジャーナルはファイルシステムの一貫性を保証し、突然のシステムダウンや稼動時の欠陥クラスタ発見など不意の障害が発生した場合にファイルシステム全体の破綻を招かないよう、常にファイルシステムへの操作が$MFTと$LogFileあるいはその両方に存在し、信頼性を確実なものにしている。ファイルシステムへの操作は$LogFileに次々と書き加えられていくが、$MFTと$LogFileはファイルシステム上に固定的に存在する領域としてカーネルのntfs.sysドライバから管理されている為、ファイルシステムの構造から独立しており、重要なトランザクションのアクセスはファイルシステムの論理層をバイパスしてハードディスクに直接書き込まれ、定期的に$LogFileから$MFTに転記が行われる。

MFTの断片化はパフォーマンスの悪化に繋がるため、NTFSは連続した領域をMFT専用として予約している。この領域のことをMFT領域と呼び、アクセスプライオリティ上ユーザーファイルがMFT領域に書き込まれないようになっている。しかし、この規則は絶対的ではなく、ファイルシステム容量が不足してくるとMFT領域にもユーザーファイルを保存する様になる。

MFT領域としてラベルされる領域のサイズはWindowsのバージョンによって異なる。Windows XP以前まではファイルシステムの12.5%が予約されていたが、Windows Vistaからは200MBをMFT領域として扱う。

 $MFT問題 
$MFT問題は、Windows 7/8/8.1におけるNTFSの実装のバグを突いて、対象のコンピュータをフリーズさせる攻撃を行えるという問題である。"C:\$MFT\test" 等、ディレクトリ名に"$MFT"を含むウェブページを用意して、それをクリックさせるなどという風に悪用された。これは、Windows 7/8/8.1に「$MFTにディレクトリとしてアクセスしようとするとシステムがフリーズしてしまう」というバグが存在したためである。

 脚注 

Category:マイクロソフトのAPI
Category:OSのファイルシステム
Category:Windowsのコンポーネント

en:NTFS#Internals