NTFS がマスター ファイル テーブル (MFT) の領域を予約する方法

この記事では、NTFS がマスター ファイル テーブル (MFT) の領域を予約する方法について説明します。

適用対象: Windows 10 - すべてのエディション、Windows Server 2012 R2
元の KB 番号: 174619

概要

NTFS ファイル システムのコアには、マスター ファイル テーブル (MFT) と呼ばれるファイルが含まれています。 MFT には、NTFS ボリューム上のすべてのファイル (MFT 自体を含む) に少なくとも 1 つのエントリがあります。

NTFS ボリュームを最適化するユーティリティは MFT エントリを移動できません。また、MFT の断片化が過剰に行われるとパフォーマンスに影響を与える可能性があるため、NTFS は MFT を可能な限り連続した状態に保つために MFT の領域を予約します。

Windows では、defrag ユーティリティによって MFT がデフラグされます。

defrag ユーティリティ

MFT に対するデフラグ操作は、MFT ファイルを 1 に結合し、ディスク上のシーケンシャルではない複数の場所に格納されないようにします。 この操作クラスでは、MFT ファイルの方がシーケンシャルです。 ただし、MFT ファイルがデフラグ操作の前にあったサイズです。

大量のファイルが削除されていたボリュームの場合、MFT が大きすぎる可能性があります。 削除されたファイルは、MFT の内部ホールを引き起こします。 これらのホールは、ファイルによって使用されない重要な領域です。 この領域を再利用することはできません。 これは、ライブ NTFS ボリュームでは少なくとも当てはまります。

詳細

NTFS では、MFT エントリを使用して、対応するファイルを定義します。 ファイルに関するすべての情報 (サイズ、時刻、日付スタンプ、アクセス許可、データ コンテンツなど) は、MFT エントリまたは MFT の外部の領域に格納されますが、MFT エントリによって記述されます。

(MFT の外部にあるディレクトリ エントリには、ファイルに関する冗長な情報も含まれています。ただし、NTFS に関するすべての構造については、この記事の範囲外です)。

ファイルが NTFS ボリュームに追加されると、さらに多くのエントリが MFT に追加されるため、MFT のサイズが大きくなります。 NTFS ボリュームからファイルが削除されると、その MFT エントリは空きとしてマークされ、再利用できますが、MFT は圧縮されません。 したがって、これらのエントリで使用される領域はディスクから解放されません。

MFT から NTFS への重要性と、このファイルが非常に断片化された場合のパフォーマンスへの影響が考えられるため、NTFS では、このファイルを連続した状態に保つために特別な作業を行います。 NTFS は、ボリュームの残りの部分が使い切らなければ、MFT を排他的に使用するためにボリュームの 12.5% を予約します。 したがって、ファイルとディレクトリの領域は、他のすべての領域が最初に割り当てられるまで、この MFT ゾーンから割り当てません。

注:

NtfsMFTZoneReservation レジストリ キーを変更して、Windows のボリュームを増やすことができます。 MFT の詳細については、「最適化による Windows 2000 ピーク パフォーマンスの維持」の「ディスク最適化プロセスの重要な要素」セクションを参照してください。

平均ファイル サイズやその他の変数によっては、ディスクの容量がいっぱいになると、予約済み MFT ゾーンまたはディスク上の予約されていない領域がもう一方の前に使用される場合があります。

比較的大きなファイルの数が少ないボリュームでは、最初に予約されていない領域が使い果たされ、比較的小さいファイルの数が多いボリュームでは最初に MFT ゾーン領域が使い果たされます。 どちらの場合も、1 つのリージョンまたはもう 1 つのリージョンが満杯になると、MFT の断片化が開始されます。 予約されていない領域がいっぱいになると、ユーザー ファイルとディレクトリの領域が MFT ゾーンから割り当てられ始め、割り当てのために MFT と競合します。 MFT ゾーンがいっぱいになると、新しい MFT エントリの領域がディスクの残りの部分から割り当てられ、もう一度他のファイルと競合します。

新しいレジストリ パラメーターを使用すると、NTFS がマスター ファイル テーブル用に予約するボリュームの割合を増やすことができます。 NtfsMftZoneReservation は、1 から 4 の値を受け取ることができるREG_DWORD値です。1 は最小 MFT ゾーン サイズに対応し、4 は最大値に対応します。 パラメーターが指定されていない場合、または無効な値が指定されている場合、NTFS はこのパラメーターに既定値の 1 を使用します。 各設定に対応する正確な比率は、標準化されておらず、将来のリリースで変更される可能性があるため、文書化されていません。 環境に最適な設定を把握するには、さまざまな値を試す必要がある場合があります。

Windows コンピューター上の MFT の現在のサイズを確認するには、NTFS ボリュームでコマンドを入力 dir /a $mft します。

Windows コンピューター上の MFT の現在のサイズを確認するには、ディスク デフラグツールを使用して NTFS ドライブを分析し、[ レポートの表示] をクリックします。 これにより、現在の MFT サイズやフラグメント数など、ドライブの統計情報が表示されます。

ディスク デフラグツールは、システム ファイルと呼ばれるものに緑色で表示され、NTFS 形式のボリュームでは、これは単に MFT、pagefile.sys (このボリュームに存在する場合) と、MFT 拡張の "MFT ゾーン" または予約領域の組み合わせです。 最適化レポートには、ページファイルと MFT に関する情報のみが表示されます。MFT ゾーンは、ディスク使用率や容量に影響しないため、MFT ゾーンをメンションしません。

MFT ゾーンは、ユーザー データ ファイルに使用される使用可能な (空き) ドライブ領域から減算されず、最後に使用される領域のみです。 たとえば、MFT のサイズを増やす必要がある場合 (たとえば、新しいファイルやディレクトリを作成した場合)、最初に MFT ゾーンから取得されるため、MFT の断片化が減少し、MFT パフォーマンスが最適化されます。

既定の MFT ゾーンは、ボリュームをマウントするときに Ntfs.sys によって計算および予約され、ボリューム サイズに基づきます。 以下に記載されているレジストリ エントリを使用して MFT ゾーンを増やすことができますが、既定の MFT ゾーンを、Ntfs.sys によって計算される値よりも小さくすることはできません。 MFT ゾーンを増やすと、ユーザーがデータ ファイルに使用できるディスク領域が減少することはありません。

注:

dir コマンドによって返される結果は、現在の値ではない可能性があります。 dir コマンドによって報告されるサイズは、システムが正常にシャットダウンされた後に開始された時点の MFT のサイズを反映するキャッシュされたデータを反映している可能性があります。

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリをバックアップおよび復元する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。

この値を追加するには、次の手順を実行します。

  1. レジストリ エディター (Regedt32.exe) を実行し、次のサブキーに移動します。

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem

  2. [ 編集 ] メニューの [ 値の追加] をクリックします。

  3. ダイアログ ボックスに次の情報を入力します。

    • 値名: NtfsMftZoneReservation
    • データ型: REG_DWORD
    • データ: (有効な範囲は 1 から 4)
  4. レジストリ エディターを終了し、コンピューターを再起動します。

注:

これは実行時パラメーターであり、ボリュームの実際の形式には影響しません。 代わりに、NTFS が特定のシステム上のすべてのボリュームに領域を割り当てる方法に影響します。 したがって、完全に有効にするには、ボリュームがフォーマットされた時点から、およびボリュームの有効期間を通じてパラメーターが有効である必要があります。 レジストリ パラメーターが下方に調整または削除された場合、MFT ゾーンはそれに応じて縮小されますが、既に割り当てられ、使用されている MFT 領域には影響しません。