У меня чисто отформатированный диск NTFS 8 ТБ в системе Windows Server 2008. Я копирую 6 ТБ документов на него, используя несколько параллельных робокопий. Существует большое количество небольших файлов (~ 150 миллионов). Они распределены по ряду каталогов. В целом, файлы слишком велики, чтобы вписать их в MFT. Примерно через три четверти производительности копии значительно снизились.
Глядя на procmon, кажется, что узким местом является расширение MFT. Я вижу, что каждый из процессов Robocopy занимает ~ 3,5 с на CreateFile. Сразу после первого вызова я вижу IRP_MJ_READ в $ Mft, возвращающем END OF FILE. Непосредственно перед успехом CreateFile я вижу УСПЕХ на другом чтении $ Mft.
Некоторая уместная информация: MFT уже большой ~ 115 ГБ. Однако это намного меньше, чем резервирование по умолчанию 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
Зона очень маленькая, это нормально?