Найти в Дзене
Т.Е.Х.Н.О Windows & Linux

🔧 NTFS на максимум: кластеры, MFT и дефрагментация — от теории к практике 💻

NTFS работает под капотом каждой Windows, но большинство пользователей даже не подозревают, как она устроена. Между тем, понимание механики распределения кластеров, управления Master File Table (MFT) и отключения лишних операций может дать вам реальный прирост производительности на 10–30% — без покупки нового железа. Особенно актуально для разработчиков, администраторов и контент-крейторов, которые работают с большими объёмами данных.​ Статья будет полезна тем, кто: Запускает на Windows приложения с интенсивным I/O (базы данных, видеоредакторы) Администрирует серверы и хранилища Хочет выжать максимум из SSD или механического диска Работает с файловыми системами в DevOps-сценариях (Hyper-V, контейнеризация) Использует Linux и интересуется различиями в подходах (ext4 vs NTFS) Актуальное состояние и новое в 2024–2025 Windows 11 24H2 и ReFS: Microsoft активно развивает ReFS (Resilient File System), а не NTFS. На Dev Drives с включённым Block Cloning копирование 10GB файла работает в 92% б
Оглавление

NTFS работает под капотом каждой Windows, но большинство пользователей даже не подозревают, как она устроена. Между тем, понимание механики распределения кластеров, управления Master File Table (MFT) и отключения лишних операций может дать вам реальный прирост производительности на 10–30% — без покупки нового железа. Особенно актуально для разработчиков, администраторов и контент-крейторов, которые работают с большими объёмами данных.​

Статья будет полезна тем, кто:

  • Запускает на Windows приложения с интенсивным I/O (базы данных, видеоредакторы)
  • Администрирует серверы и хранилища
  • Хочет выжать максимум из SSD или механического диска
  • Работает с файловыми системами в DevOps-сценариях (Hyper-V, контейнеризация)
  • Использует Linux и интересуется различиями в подходах (ext4 vs NTFS)

Актуальное состояние и новое в 2024–2025

Windows 11 24H2 и ReFS: Microsoft активно развивает ReFS (Resilient File System), а не NTFS. На Dev Drives с включённым Block Cloning копирование 10GB файла работает в 92% быстрее (641 мс вместо 7.964 с). Однако NTFS остаётся основной файловой системой для боотов и пользовательских данных.​

NTFS 3.1 стабилен: текущая версия (3.1, в Windows 10/11) полностью поддерживает все рассматриваемые нами параметры. Проблемы с деduplication и сжатием на больших файлах (>2TB) были исправлены в Windows Server 2016 SP1 и позже.​

Linux ext4 vs NTFS: ext4 требует разных параметров при создании FS. Например, bytes-per-inode соотношение, которое нельзя изменить после форматирования. NTFS гибче благодаря реестру, но требует понимания этой гибкости.​

Раздел 1: Размер кластера — святой Грааль эффективности

Что такое кластер и почему это важно

Кластер — это минимальная единица дискового пространства, которую может выделить NTFS. Если файл занимает 1 байт, ему всё равно выделяется весь кластер. Размер кластера = значительная фрагментация малых файлов или отходы на больших файлах.​

-2

Рекомендации Microsoft по кластерам

Стандартное правило: используйте 4K для 99% случаев. Microsoft явно рекомендует это, так как 4K кластеры:

  • Минимизируют I/O amplification (каскадные I/O операции)​
  • Экономят место на дисках с миллионами мелких файлов
  • Совместимы со сжатием NTFS

64K имеет смысл:

  • SQL Server (его экстент = 64KB, совпадение даёт максимальную производительность)​
  • Hyper-V с большими VHD образами
  • Хранилища с данными деduplcation или сжатием​
  • Тома, где риск достижения фрагментации лимита (см. раздел 2)

Как установить нужный размер

При форматировании (только для нового диска):

# Windows PowerShell (админ)
# 4K (дефолт)
Format-Volume -DriveLetter D -FileSystem NTFS -AllocationUnitSize 4096

# 64K для SQL/Hyper-V
Format-Volume -DriveLetter D -FileSystem NTFS -AllocationUnitSize 65536

Или из CMD:

rem 4K
format D: /FS:NTFS /A:4096

rem 64K
format D: /FS:NTFS /A:65536

Проверка текущего размера:

# PowerShell - рекомендуется
Get-Volume -DriveLetter C | Select-Object AllocationUnitSize

# Либо fsutil (требует админ)
fsutil fsinfo ntfsinfo C:

Ищите строку Bytes Per Cluster — это ваш текущий размер в байтах.

Миграция на другой кластер (без потери данных):

  1. Купите новый диск или создайте виртуальный VHD
  2. Отформатируйте его нужным размером кластера
  3. Скопируйте данные (robocopy сохраняет права доступа):

robocopy C:\Users\Data D:\Backup /E /COPYALL /R:3 /W:5

Раздел 2: Master File Table (MFT) — сердце NTFS 💓

Что такое MFT и почему она фрагментируется

MFT — это таблица, где хранятся метаданные всех файлов на диске: имена, размеры, права доступа, временные метки, расположение на диске. Каждому файлу — минимум одна запись в MFT. MFT сама хранится в файле $MFT в начале диска.​

Проблема фрагментации MFT:

  • Когда вы удаляете файл, NTFS не сжимает MFT, а просто помечает запись как свободную
  • Новые файлы заполняют эти дыры, но не всегда подряд
  • Результат: MFT разбивается на фрагменты, диску нужны дополнительные обращения для чтения метаданных
  • Это замедляет все операции с диском, включая копирование и поиск
🔖Дорогие гости и подписчики канала. Если наши материалы приносят вам пользу, вы всегда можете поддержать команду символическим переводом. Любая помощь мотивирует писать для Вас больше полезного и качественного контента безо всяких подписок.🙏🤝🙏🤝🙏
-3
💰ПОДДЕРЖАТЬ КАНАЛ МОЖНО ТУТ ( ОТ 50 РУБЛЕЙ )💰
Или сделать любой перевод по QR-коду через СБП. Быстро, безопасно и без комиссии.(Александр Г.)
С уважением, Команда "Т.Е.Х.Н.О Windows & Linux".

Лимиты фрагментации и параметр /L

Стандартный лимит: один файл может иметь максимум ~1,5 млн экстентов (фрагментированных кусков). Это жёсткий лимит, вызывающий ошибку 0x80070299 ("Requested operation could not be completed due to a file system limitation").​

Решение: при форматировании используйте флаг /L (увеличенный fragmentation limit):

format D: /FS:NTFS /L

Это увеличивает лимит до ~6 млн экстентов и резервирует больше места в MFT для этих структур. Особенно важно для:

  • SQL Server баз данных
  • Хранилищ с data deduplication
  • NTFS compression на больших файлах
  • Томов с частыми изменениями​

NtfsMftZoneReservation: резервирование для MFT

По умолчанию NTFS резервирует определённый процент диска для будущего роста MFT, чтобы она оставалась максимально контигуозной (не фрагментировалась).​

Система резервирования:

-4

Как установить:

# Редактор реестра (для новых томов)
# Запустите regedit и перейдите к:
# HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem

# Добавьте DWORD значение:
# Имя: NtfsMftZoneReservation
# Значение: 1, 2, 3 или 4

# Или через PowerShell (админ):
New-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\FileSystem" `
-Name "NtfsMftZoneReservation" -Value 2 -PropertyType DWord -Force

# Перезагрузиться!

Важно: параметр вступает в силу при форматировании диска, не для существующих томов. Изменение реестра не переформатирует уже созданную FS.

Дефрагментация и компактификация MFT

Windows автоматически дефрагментирует диски раз в неделю (по расписанию). Для ручного запуска:

# Встроенная оптимизация (включая MFT)
Optimize-Volume -DriveLetter C -Defrag

# Или GUI: Параметры → Система → Хранилище → Оптимизация диска

Sysinternals Contig — для точечной дефрагментации критичных файлов:

contig.exe -a -s C:\
rem Анализ фрагментации всех файлов рекурсивно

contig.exe -v $MFT
rem Дефрагментация самой MFT (требует перезагрузки)

Раздел 3: Отключение NTFS LastAccessUpdate — легкая победа 🏃

Суть проблемы

Каждый раз, когда вы открываете файл, NTFS обновляет временную метку "Время последнего доступа" ($FILE_NAME атрибут в MFT). Это дополнительная запись на диск, даже если вы только читали файл:

  • На механических дисках: головка ищет запись в MFT → обновляет timestamp → это может быть медлительнее, чем само чтение
  • На SSD: меньше вреда, но всё равно бесполезные I/O операции
  • В системных журналах: шум, сложнее отследить реальные изменения

Системный vs. Пользовательский режим

NTFS имеет два режима управления LastAccessUpdate:​​

-5

Рекомендация

Установите 1 (User Managed Disabled) на:

  • Рабочих ПК и ноутбуках
  • Серверах хранения (NAS)
  • Томах с интенсивным I/O

# Как админ
fsutil behavior set disablelastaccess 1

# Проверка:
fsutil behavior query disablelastaccess
# Вывод: DisableLastAccess=1 (включено отключение)

# Перезагрузка не требуется (действует сразу)

Прирост производительности:

  • На механических дисках: 5–15% при операциях поиска
  • На SSD: 1–3% (не столь критично, но всё равно экономия)
  • Особенно заметно на серверах с тысячами обращений в секунду​​

Влияние на функциональность: минимальное. Вы потеряете точные временные метки в свойствах файла, но это редко кому нужно 😊

Раздел 4: Диагностика и профилирование 📊

Утилиты для анализа NTFS

fsutil — встроенная команда Windows (требует админ):

# Общая информация о NTFS томе
fsutil fsinfo ntfsinfo C:
# Выводит: версию NTFS, количество кластеров, MFT Start LCN, Zone Start/End

# Статистика I/O операций
fsutil fsinfo statistics C:
# Показывает: UserFileReads, MetaDataReads, Disk Reads/Writes

# Информация о дисках
fsutil fsinfo drives
fsutil fsinfo drivetype D:

PowerShell — более удобный вывод:

$volume = Get-Volume -DriveLetter C
$volume | Select-Object FileSystemLabel, FileSystem, AllocationUnitSize, Size, SizeRemaining

# Проверка фрагментации (работает на Win 10+)
$defrag = Get-Volume -DriveLetter C | Optimize-Volume -Defrag -Analyze
Write-Host "Фрагментация: $defrag %"

Sysinternals Contig — точечный анализ файлов:

contig.exe -a "C:\Path\To\File.exe"
rem Показывает количество фрагментов и fragmentation %

contig.exe -a -s C:\
rem Полный анализ всего диска (может занять время на больших томах)

Метрики производительности до и после оптимизации

Используйте встроенные инструменты Windows Performance Analyzer или просто отследите:

# До оптимизации
$before = (Get-ChildItem -Path "C:\TestData" -Recurse | Measure-Object -Sum Length).Sum
$beforeTime = Measure-Command { Copy-Item -Path "C:\TestData" -Destination "D:\Backup" -Recurse }
Write-Host "Before: $($beforeTime.TotalSeconds)s for $($before / 1GB) GB"

# После оптимизации (следующая запись)
# ...аналогично...

Раздел 5: Сжатие NTFS и Data Deduplication — ножницы с подвохом ✂️

NTFS Compression

Плюсы: может дать +50% экономии места и даже ускорение на маленьких томах.​

Минусы:

  • CPU загрузка: 30–80% при компрессии и декомпрессии​
  • Несовместимо с 64K кластерами (работает только с 4K)​
  • На больших файлах (>4GB) производительность падает
  • Невозможно использовать с NTFS compression и data deduplication одновременно

Когда использовать:

  • Архивы документов, видео резервные копии (редко открываются)
  • Тома <512GB с текстовыми данными
  • Системные диски с мощным CPU

# Включить компрессию папки
compact /c /s "C:\MyFolder"

# Отключить
compact /u /s "C:\MyFolder"

# Анализ степени компрессии
compact /q /s "C:\MyFolder"

Data Deduplication

Впечатляющие результаты: NTFS deduplication достигает 93% сжатия на некоторых наборах данных (см. раздел 1.5.1 источника).​

Но есть ловушка: deduplication работает в фоне, требует:

  • Много CPU и памяти (обслуживание chunk store)
  • Осторожность с файлами >2TB (баги в Server 2016 были)​
  • Регулярное обслуживание (PowerShell cmdlets)

Включение (только на Windows Server):

Enable-DedupVolume -Volume "D:" -UsageType Default

# Запуск оптимизации
Start-DedupJob -Volume "D:" -Type Optimization

# Мониторинг
Get-DedupStatus -Volume "D:"

Рекомендация: используйте на серверах хранения с избыточной памятью (16GB+), а не на рабочих ПК.

Раздел 6: Безопасность, риски и миграция 🔒

Риски при изменении параметров NTFS

-6

Откат параметров

Невозможно откатить размер кластера — требуется полное переформатирование. Но можно:

  1. Создать второй том с дефолтными параметрами
  2. Скопировать данные robocopy
  3. Удалить старый том

robocopy D:\ E:\ /E /COPYALL /R:1 /W:1 /LOG+:migration.log

Откат NtfsMftZoneReservation: удалите ключ реестра и переформатируйте.

Миграция NTFS ↔ ReFS

ReFS не поддерживает сжатие, но это более современная FS с лучшей производительностью на больших файлах (Dev Drives в Windows 11 24H2).​

# Форматирование в ReFS (только на Windows 11 24H2 и Server 2022+)
Format-Volume -DriveLetter D -FileSystem ReFS -Confirm:$false

# Копия данных
robocopy C:\Users\
Data D:\Backup /E /COPYALL

Linux ext4: если вам нужна взаимозаменяемость, рассмотрите ext4. На Linux это стандарт.​

Раздел 7: Производительность — метрики и узкие места 📈

Сценарии и типичные узкие места

-7

Бенчмарки: до и после

Данные из источников (реальные тесты):

  • Копирование 10GB файла: NTFS — 8 сек, ReFS с Block Cloning — 0.6 сек (92% прирост)​
  • Отключение LastAccessUpdate: прирост на 5–15% в операциях файлового поиска на механических дисках​
  • 64K vs 4K на SQL Server: ~10% улучшение при операциях с большими таблицами (зависит от паттернов доступа)

Важно: ваши результаты будут отличаться в зависимости от типа диска (HDD vs SSD), нагрузки и паттернов доступа.

Раздел 8: Примеры кода и конфигураций 💾

PowerShell скрипт для полной диагностики NTFS

# Диагностика.ps1
# Проверка параметров NTFS и рекомендации

param(
[Parameter(Mandatory=$true)]
[char]$DriveLetter
)

$drive = $DriveLetter.ToString().ToUpper() + ":"

Write-Host "=== NTFS Diagnostic Report for $drive ===" -ForegroundColor Green

# 1. Базовая информация
Write-Host "`n1. Basic Information:"
$volume = Get-Volume -DriveLetter $DriveLetter.ToString().ToUpper()
$volume | Select-Object FileSystemLabel, FileSystem, AllocationUnitSize,
@{N='Size(GB)';E={[math]::Round($_.Size/1GB,2)}},
@{N='Free(GB)';E={[math]::Round($_.SizeRemaining/1GB,2)}} | Format-Table

# 2. NTFS специфичная информация (требует fsutil)
Write-Host "`n2. NTFS Details (fsutil):"
$ntfsInfo = fsutil fsinfo ntfsinfo "$drive\"
$ntfsInfo | Select-String "Bytes Per Cluster", "MFT Zone", "NTFS Version"

# 3. LastAccessUpdate статус
Write-Host "`n3. Last Access Update Status:"
$lastAccess = fsutil behavior query disablelastaccess
Write-Host $lastAccess

# 4. Рекомендации
Write-Host "`n4. Recommendations:"
$allocationUnit = $volume.AllocationUnitSize
if ($allocationUnit -eq 4096) {
Write-Host "✓ Cluster size 4K - optimal for general use"
}
elseif ($allocationUnit -eq 65536) {
Write-Host "✓ Cluster size 64K - suitable for SQL/Hyper-V"
}
else {
Write-Host "⚠ Non-standard cluster size: $allocationUnit bytes"
}

if ($lastAccess -like "*0*") {
Write-Host "✓ Last access update: ENABLED (reconsider for perf)"
}
else {
Write-Host "✓ Last access update: DISABLED (good for perf)"
}

Использование:

.\Диагностика.ps1 -DriveLetter C

Скрипт переформатирования с оптимизацией

@echo off
REM OptimizeNTFS.bat
REM Требуется администратор!
REM Использование: OptimizeNTFS.bat D 64K

setlocal enabledelayedexpansion

if "%1"=="" (
echo Использование: %0 [DriveLetter] [ClusterSize]
echo Примеры:
echo %0 D 4096 - 4K кластер
echo %0 D 65536 - 64K кластер для SQL
exit /b 1
)

set DRIVE=%1:
set CLUSTER=%2

if not "%CLUSTER%"=="" (
echo Formatting %DRIVE% with cluster size %CLUSTER% bytes...
format %DRIVE% /FS:NTFS /A:%CLUSTER% /L /Q

if errorlevel 1 (
echo ERROR: Format failed!
exit /b 1
)
echo Format complete!
) else (
echo ERROR: Please specify cluster size
exit /b 1
)

REM Установка реестра для MFT Zone (требует перезагрузки)
echo Configuring MFT Zone Reservation...
reg add "HKLM\System\CurrentControlSet\Control\FileSystem" ^
/v NtfsMftZoneReservation /t REG_DWORD /d 2 /f

REM Отключение LastAccessUpdate
echo Disabling LastAccessUpdate for performance...
fsutil behavior set disablelastaccess 1

echo.
echo ✓ NTFS optimization complete!
echo ⚠ Please restart computer for changes to take effect.

Python скрипт для мониторинга фрагментации

#!/usr/bin/env python3
# monitor_ntfs_fragmentation.py

import subprocess
import json
from datetime import datetime

def get_volume_info(drive_letter):
"""Получить информацию о томе через fsutil"""
try:
result = subprocess.run(
f'fsutil fsinfo ntfsinfo {drive_letter}:',
capture_output=True,
text=True,
shell=True
)
return result.stdout
except Exception as e:
print(f"Error: {e}")
return None

def parse_fsutil_output(output):
"""Распарсить вывод fsutil"""
data = {}
for line in output.split('\n'):
if ':' in line:
key, val = line.split(':', 1)
data[key.strip()] = val.strip()
return data

def monitor_drives():
"""Мониторить все NTFS диски"""
result = subprocess.run('fsutil fsinfo drives', capture_output=True, text=True, shell=True)
drives = result.stdout.strip().split("Drives: ")[1].split()

print(f"[{datetime.now().isoformat()}] NTFS Fragmentation Report\n")

for drive in drives:
drive = drive.rstrip('\\').replace('\\', '')
info = get_volume_info(drive)
if info:
parsed = parse_fsutil_output(info)
print(f"Drive {drive}:")
print(f" NTFS Version: {parsed.get('NTFS Version', 'N/A')}")
print(f" Bytes Per Cluster: {parsed.get('Bytes Per Cluster', 'N/A')}")
print(f" Free Clusters: {parsed.get('Free Clusters', 'N/A')}")
print()

if __name__ == '__main__':
monitor_drives()

Раздел 9: Типичные ошибки и диагностика 🐛

-8

Диагностика MFT фрагментации:

# Проверить количество фрагментов MFT
fsutil fsinfo statistics C: | Select-String "MFT"

# Если "Mft Valid Data Length" > 100MB и фрагменты = высокие числа:
# Требуется дефрагментация
Optimize-Volume -DriveLetter C -Defrag

Раздел 10: Чек-лист применения оптимизации 📋

Перед началом:

  • Полная резервная копия важных данных
  • Запустить диагностику (см. Раздел 8)
  • Выключить антивирус на время операций (может помешать)

Для новых томов (чистое форматирование):

  • Выбрать размер кластера: 4K (обычно) или 64K (SQL/Hyper-V)
  • Использовать /L флаг при форматировании для critical систем
  • Установить NtfsMftZoneReservation в реестре (1–3)
  • Отключить LastAccessUpdate: fsutil behavior set disablelastaccess 1

Для существующих томов:

  • Дефрагментация: Optimize-Volume -DriveLetter C -Defrag
  • Отключить LastAccessUpdate (не требует переформатирования)
  • Отключить NTFS compression (если включена и замедляет)
  • Планировать дефрагментацию еженедельно (по умолчанию)

После оптимизации:

  • Перезагрузиться
  • Провести бенчмарк операций I/O
  • Проверить размер MFT через fsutil (должна быть компактнее)
  • Документировать параметры для будущих миграций

Раздел 11: Linux ext4 — краткое сравнение 🐧

ext4 параметры при создании:

  • Block size: аналог NTFS кластера, по умолчанию 4K
  • Inode size: по умолчанию 256 байт (аналог MFT записи)​
  • Bytes-per-inode: соотношение как в NTFS MFT Zone​

# Создание ext4 с оптимизацией для большых файлов
mkfs.ext4 -b 4096 -i 16384 /dev/sdb1

# Проверка параметров
tune2fs -l /dev/sdb1 | grep -E "Block size|Inode size"

Отключение access time (аналог LastAccessUpdate):

# В /etc/fstab добавить noatime опцию:
/dev/sdb1 /mnt/storage ext4 defaults,noatime 0 2

# Или временно:
mount -o remount,noatime /mnt/storage

Ключевое отличие: ext4 требует планирования при форматировании (как NTFS), но параметры не меняются реестром. Это делает ext4 более строгой, но и более предсказуемой.

Таблица Q&A

-9

Заключение: Применяйте знания, получайте результаты 🚀

NTFS — это не "чёрный ящик". Понимание кластеров, MFT, фрагментации и параметров реестра даёт вам реальное преимущество в производительности без покупки нового оборудования.

Главные выводы:

  1. 4K кластер — универсальный выбор; 64K — для высоконагруженных баз и Hyper-V​
  2. MFT фрагментация — серьезная проблема; используйте /L при форматировании SQL/Exchange серверов​
  3. Отключение LastAccessUpdate — легкий выигрыш в 5–15% без потерь функциональности​​
  4. Data Deduplication — впечатляет на сервере, но требует ресурсов​
  5. ReFS — будущее; Windows 11 24H2 показала улучшения на 92% для копирований​

Применяйте рекомендации поэтапно, профилируйте результаты и адаптируйте под вашу конкретную нагрузку. Успехов в оптимизации! 💪

📢 Подпишитесь на канал T.E.X.H.O Windows & Linux

Следите за новыми статьями о системной оптимизации, разработке на Python, сетевом мониторинге и открытом ПО. Включайте уведомления — не пропустите обновления! 🔔

-10

#NTFS #ОптимизацияWindows #FileSystem #MFT #Производительность #Windows11 #MasterFileTable #ДефрагментацияДиска #SystemOptimization #WindowsRegistry #Кластеры #SSD #HDD #DataDeduplication #FileSystemTuning #ITOptimization #WindowsServer #SQL #Hyper-V #ОткрытыеТехнологии #TechChannel #DevOps #Python #Linux #ext4 #ReFS #TECHXO #Администрирование #Системадминистратор #ПрофессиональныеТехнологии #ПроизводительностьСистемы #КонфигурацияOC #WindowsOptimization #ТехнологиииПрактика