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

マスターファイルテーブル: Master File TableMFT)とは、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にディレクトリとしてアクセスしようとするとシステムがフリーズしてしまう」というバグが存在したためである[2]

脚注 編集

  1. ^ 共通の特徴としてメタファイルは全て最初の1文字が$で始まる。しかし、完全ファイル名がメタファイル実体と結びつけられている為、ユーザーが$で始まるファイルを作成しても良く、そのファイルはメタファイルとは認識されない。
  2. ^ ZDNet Japan (2017年5月30日). “旧「Windows」をクラッシュさせるNTFSのバグが発覚”. 2020年5月2日閲覧。