Windows Server 2008システム上にきれいにフォーマットされた8TB NTFSドライブがあります。私はいくつかの並列ロボットを使って6TBの文書をコピーしています。多数の小さなファイルがあります(〜1億5000万)。これらは多数のディレクトリに分散しています。全体として、ファイルは大きすぎてMFTには収まりません。これまでの約4分の3の間に、コピーのパフォーマンスは大幅に低下しました。
procmonを見ると、ボトルネックはMFTの拡張であるように見えます。それぞれのrobocopyプロセスがCreateFileに約3.5秒かかることがわかります。最初の呼び出しが発行された直後に、$ MftのIRP_MJ_READがEND OF FILEを返しています。 CreateFileが成功する直前に、別の$ MftがSUCCESSを読んでいるのが見えます。
いくつかの関連情報: MFTはすでに最大115GBです。しかし、これはドライブの12.5%のデフォルト予約よりはるかに少ないです。 MFTは急速に断片化しています。 Contig.exeは100,000のフラグメントを報告します。新しいフラグメントが頻繁に追加されています(1秒間に複数回)。
私の質問:
MFTをもっと大きな塊に拡張することはできますか?
MFTが予約サイズをはるかに下回っていてもフラグメント化されているのはなぜでしょうか。私はMFTが予約サイズから始まらないことを知っています、しかしそれがそれに隣接して成長することができないなら予約のポイントは何ですか。ドライブにはまだ33%の空き容量があるため、通常のデータではまだ予約を使用してはいけません。
更新 fsutil fsinfo ntfsinfoは、MFTに関する次の情報を提供します。
Mft Valid Data Length: 0x0000001ca90c0000
Mft Start Lcn: 0x0000000000000000
Mft Zone Start: 0x000000003c828360
Mft Zone End: 0x000000003c828380
ゾーンは非常に小さいです、これは普通ですか?