好き嫌いに関係なく、ファイル 1 つにレコード 1 つ
$MFT は隠された NTFS システムファイルです。ボリューム上のすべてのファイルとフォルダーに対して、通常 1 キロバイトのレコードを 1 つずつ持つデータベースです。各レコードには名前、タイムスタンプ、セキュリティ記述子、データクラスターへのポインターが格納され、レコードはシステムのインデックスにおけるそのファイルの登録項目です。$MFT がエクスプローラーに見えないのは、ほかのすべてを表示するためにまさにエクスプローラー自身が読んでいるからです。
小さなファイルはこれをさらに進めます。約 700 バイト未満のものはすべて自分のレコード内に完全に収まり、データクラスターを一切占有しません。これは効率的です ― ボリュームが何百万もの細かいファイルを抱え込み、MFT 自身が数 GB に育つまでは。node_modules のツリー、ブラウザーのプロファイルキャッシュ、メールストアは古典的な MFT 膨張要因です。
MFT ゾーン:成長のために予約された領域
NTFS は空いているところならどこでも MFT を育てるのではなく、連続した予約 ― MFT ゾーン ― を維持して、テーブルをひとつに保ちメタデータの読み取りを高速に保ちます。ゾーンのサイズはポリシー設定で、fsutil behavior query mftzone で確認でき、そのデフォルトは人を驚かせます。空き容量にとってそれが何を意味するかは以下のとおりです。
- デフォルトの予約はボリュームの約 8 分の 1 ― MFT が断片化せずに成長できるよう確保された 12.5 パーセント
- ゾーンはポリシーであって割り当てではありません。エクスプローラーでは使用領域として表示されません
- 通常の空き容量が少なくなると、NTFS はゾーンの一部を通常ファイルのために解放します
- $MFT ファイル自体は、どの可視ファイルにも属さない実際の使用領域です ― 数百万のファイルを持つボリュームでは数 GB に及ぶことも
- ゾーンを増やす(fsutil behavior set mftzone を 2~4 に設定)のは将来の成長にのみ影響し、膨大な小さなファイルのコレクションを置く予定のボリュームでだけ意味があります
MFT の肥大化は再フォーマットまで永続します
ファイルを削除するとレコードは再利用に開放されますが、$MFT が縮むことは決してありません。テーブルは到達した最高水準のまま永久にとどまります。一時期、何百万もの一時ファイルをホストしたドライブは、徹底的なクリーンアップの後でも太った MFT を抱えたままで、リセットできるのは再フォーマットだけです。損害を見たいなら、詳細出力の chkdsk が MFT サイズ、レコード数、断片化状況を表示してくれます。
HDD では、断片化した MFT はメタデータ主体の作業 ― 巨大フォルダーを開く、検索、ウイルススキャン ― を確実に遅くし、それが「ドライブの最適化」のスケジュールが存在する理由です。SSD ではシークペナルティが消え、MFT の配置はほとんど問題になりません。Windows は同じツールをそこでは TRIM パスに切り替えます。MFT 肥大への実用的な対処は予防です。何百万もの細かいファイルを生むプロジェクトは専用のボリュームに置くか、少なくとも儀式なく再フォーマットできるボリュームに置いてください。
よくある質問
ハードディスク上の $MFT ファイルとは何ですか?
NTFS のマスターデータベースです。ファイルごとに 1 つのレコードがあり、名前、タイムスタンプ、データの場所を保持します。ファイルサイズではなくファイル数に応じて成長し、開けるフォルダーには属さないまま使用領域としてカウントされます。
空き容量を増やすために $MFT を削除できますか?
できません。それはボリューム上のすべてのファイルの索引であり、削除や破損はデータを読めなくします。Windows がこれを隠すのはまさに、得るものが何もなく失うものがすべてだからです。
購入前にライセンスの内容をご確認ください。
一度限りの 30 分試用では基本ツールを利用できます。PRO 機能は有料ライセンスを有効にするまでロックされています。
次に読む記事
お問い合わせ: [email protected]