NTFS のすべてのファイルは、その内容を保持する $DATA 属性を持ちます。ほとんどのファイルでは $DATA は 非常駐 — ボリューム上の別の場所にあるクラスタ ランの一覧を指します。しかしファイルが十分に小さい場合、そのバイトは MFT レコード自体の中に住み着きます。
「十分に小さい」とはどれくらい?
MFT レコードは 1,024 バイトです。レコード ヘッダー、$STANDARD_INFORMATION、少なくとも 1 つの $FILE_NAME、その他のメタデータを差し引くと、$DATA に使えるのはおよそ 700 バイトほどになります。
それより小さなファイル — 設定の断片、レジストリ値、ショートカットのリンク先、バッチ スクリプト、ある種のログ行 — は、MFT の中だけで完結することがよくあります。
なぜこれが重要か
常駐の $DATA 属性は、ディスクの残り部分を読まなくても復元できます。$MFT のコピーがあれば、すでに次のものが手元にあります。
- 小さなテキスト ファイルの完全な内容
- ディレクトリの
$INDEX_ROOTデータ - 短い代替データ ストリーム
- リパース ポイントとシンボリック リンクの参照先
たった 1 つの 200 MB 程度の抽出物に、驚くほど多くの証拠が詰まっています。
常駐 ≠ 安定
常駐のファイルが空き領域を超えて大きくなると、NTFS はそれを非常駐に変換します — データはクラスタへ移り、$DATA はランリストになります。逆に閾値より小さくなったファイルが再び常駐に戻ることもあり得ますが、Windows が自発的にこれを行うことはまれです。
トリアージでは、かつて大きかったのに今は常駐になっているファイルは異例です。よく観察する価値があります。