NTFS がマスター ファイル テーブル (MFT) の領域を予約する方法
この記事では、NTFS がマスター ファイル テーブル (MFT) の領域を予約する方法について説明します。
元の KB 番号: 174619
まとめ
NTFS ファイル システムのコアには、マスター ファイル テーブル (MFT) と呼ばれるファイルが含まれています。 MFT 自体を含め、NTFS ボリューム上のすべてのファイルに対して、少なくとも 1 つのエントリが MFT に存在します。
NTFS ボリュームを最適化するユーティリティは MFT エントリを移動できません。また、MFT の過剰な断片化がパフォーマンスに影響を与える可能性があるため、NTFS は MFT の容量を確保して、MFT を可能な限り連続して維持します。
Windows では、デフラグ ユーティリティによって MFT がデフラグされます。
デフラグ ユーティリティ
MFT に対するデフラグ操作は、MFT ファイルを 1 に結合し、ディスク上のシーケンシャルではない複数の場所に格納されないようにします。 このクラスの操作では、MFT ファイルの方が順次です。 ただし、MFT ファイルがデフラグ操作の前にあったサイズです。
ボリュームに削除されたファイルが多数ある場合、MFT が大きすぎる可能性があります。 削除されたファイルにより、MFT の内部ホールが発生します。 これらの穴は、ファイルで使用されない重要な領域です。 この領域を再利用することはできません。 これは、少なくとも、ライブ NTFS ボリュームでは当てはまります。
詳細
NTFS は MFT エントリを使用して、対応するファイルを定義します。 ファイルに関するすべての情報 (サイズ、時刻と日付のスタンプ、アクセス許可、データ コンテンツを含む) は、MFT エントリまたは MFT の外部の領域に格納されますが、MFT エントリによって記述されます。
(MFT 外部のディレクトリ エントリには、ファイルに関する冗長な情報も含まれています。ただし、NTFS 上のすべての構造については、この記事では説明しません)。
ファイルが NTFS ボリュームに追加されると、より多くのエントリが MFT に追加されるため、MFT のサイズが大きくなります。 NTFS ボリュームからファイルが削除されると、MFT エントリは無料としてマークされ、再利用できますが、MFT は圧縮されません。 したがって、これらのエントリで使用される領域はディスクから再利用されません。
NTFS に対する MFT の重要性と、このファイルが非常に断片化された場合のパフォーマンスへの影響が考えられるため、NTFS では、このファイルを連続した状態に保つために特別な作業を行います。 NTFS は、ボリュームの残りの部分が使い切られるまで、および使用しない限り、MFT を排他的に使用するためにボリュームの 12.5% を予約します。 したがって、ファイルとディレクトリの領域は、他のすべての領域が最初に割り当てられるまで、この MFT ゾーンから割り当てされません。
Note
NtfsMFTZoneReservation レジストリ キーを変更して、Windows のボリュームを増やすことができます。 MFT の詳細については、「最適化による Windows 2000 のピーク パフォーマンスの維持」の「ディスク最適化プロセスの Key 要素」セクションを参照してください。
ファイルの平均サイズやその他の変数によっては、ディスクが容量にいっぱいになる前に、予約済みの MFT ゾーンまたはディスク上の予約されていない領域が使い切られる可能性があります。
比較的大きなファイルの数が少ないボリュームでは、最初に予約されていない領域が使い果たされ、比較的小さいファイルの数が多いボリュームでは最初に MFT ゾーン領域が使い果たされます。 どちらの場合も、一方のリージョンまたはもう一方のリージョンがいっぱいになると、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 サイズやフラグメント数など、ドライブの統計情報が表示されます。
Disk Defragmenter は、システム ファイルと呼ばれるものについて NTFS 形式のボリュームに表示されます。これは、単に MFT、pagefile.sys (このボリュームに存在する場合) と、"MFT ゾーン" または MFT 拡張用の予約済み領域の組み合わせです。 最適化レポートには、ページファイルと MFT に関する情報のみが表示されます。MFT ゾーンは、ディスクの使用率や容量に影響を与えないので、MFT ゾーンには言及しません。
MFT ゾーンは、ユーザー データ ファイルに使用される使用可能な (空き) ドライブ領域から減算されるのではなく、最後に使用される領域のみです。 たとえば、新しいファイルとディレクトリを作成した場合、MFT のサイズを増やす必要がある場合は、最初に MFT ゾーンから取得されるため、MFT の断片化が減少し、MFT のパフォーマンスが最適化されます。
既定の MFT ゾーンは、ボリュームをマウントするときにNtfs.sysによって計算および予約され、ボリューム サイズに基づきます。 以下に示すレジストリ エントリを使用して MFT ゾーンを増やすことができますが、既定の MFT ゾーンを、Ntfs.sysによって計算される値よりも小さくすることはできません。 MFT ゾーンを増やすと、ユーザーがデータ ファイルに使用できるディスク領域が減少することはありません。
Note
dir コマンドによって返される結果が最新ではない可能性があります。 dir コマンドによって報告されるサイズには、システムが順番にシャットダウンされた後に開始された時点の MFT のサイズを反映するキャッシュ・データが反映される場合があります。
重要
このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 したがって、次の手順を注意深く実行してください。 保護のために、レジストリを変更する前に、バックアップします。 その後、問題が起こった場合は、レジストリを復元できます。 レジストリのバックアップと復元方法の詳細は、「Windows のレジストリのバックアップおよび復元の方法」を参照してください。
この値を追加するには、次の手順を実行します。
レジストリ エディター (Regedt32.exe) を実行し、次のサブキーに移動します。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem
Edit メニューの [値の追加] をクリック。
ダイアログ ボックスに次の情報を入力します。
- 値の名前: NtfsMftZoneReservation
- データ型: REG_DWORD
- データ: (有効な範囲は 1 ~ 4)
レジストリ エディターを終了し、コンピューターを再起動します。
Note
これは実行時パラメーターであり、ボリュームの実際の形式には影響しません。 代わりに、NTFS が特定のシステム上のすべてのボリュームに領域を割り当てる方法に影響します。 したがって、完全に有効にするには、ボリュームがフォーマットされた時点から、およびボリュームの有効期間を通してパラメーターが有効である必要があります。 レジストリ パラメーターを下方向に調整または削除すると、それに応じて MFT ゾーンが減りますが、既に割り当てられ、使用されている MFT 領域には影響しません。