我在 Windows Server 2008 系統上有一個完全格式化的 8TB NTFS 硬碟。我正在使用一些並行的 robocopies 將 6TB 的文檔複製到上面。有大量小文件(約 1.5 億)。這些分佈在多個目錄中。總體而言,文件太大而無法內聯到 MFT 中。大約經過四分之三的時間,副本的性能顯著下降。
從 procmon 來看,瓶頸似乎是 MFT 擴充。我看到每個 robocopy 進程在 CreateFile 上花費約 3.5 秒。在發出第一個呼叫後,我立即在 $Mft 上看到 IRP_MJ_READ 返回檔案結束。就在 CreateFile 成功之前,我在另一個 $Mft 讀取中看到成功。
一些相關資訊:MFT 已經很大~115GB。然而,這遠小於預設預留的 12.5% 驅動器。 MFT 正在迅速分裂。 Contig.exe 報告 100,000 個片段。新片段被頻繁添加(每秒多次)。
我的問題:
我可以使 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
區域很小,這樣正常嗎?
答案1
最新版本的 SysInternals contig 可以回報可用空間。
contig64 -f
表明:
Free cluster space : 2,838,753,701,888 bytes
Free space fragments : 89,747,382 frags
Largest free space block : 90,112 bytes
我認為這可以解釋一切。儘管有超過 2TB/8TB 的可用空間 (25%),但可用空間完全碎片化。這將影響 MFT 的成長,除了查看碎片整理選項之外,現階段我無能為力。
我不確定是否有辦法可以從一開始就避免這種情況。感覺您應該能夠將已知大小的檔案並行複製到新格式化的磁碟,而不會出現這種等級的碎片。