Skip to main content

Windows: чистка системного диска

Проблема: забился системный диск, далее у меня диск C:. Чистка кэшей браузеров и использование системной утилиты результатов не дало. Пришлось прибегнуть к развернутому анализу.

Установил WizTree, portable - версию. 

Сначала нашел все большие файлы, которые можно удалять безопасно, дальше начались сложности. Работаю с Gemini.

Вопрос: что находится в файле $MFT (трогать его не надо)?

 

Файл $MFT (Master File Table) — это не обычный файл с документами или программами, а главная служебная база данных файловой системы NTFS, которая хранит информацию абсолютно обо всех файлах и папках на диске.

Сам по себе $MFT тоже физически оформлен как файл, который лежит в начале каждого диска NTFS.

Что именно записано внутри $MFT?

Каждому файлу и папке на диске (включая скрытые и системные) выделяется отдельная запись в этой таблице размером обычно 1 КБ. Внутри этой записи хранится вся метаинформация:

  1. Атрибуты файла: Полное имя файла, путь к нему и родительский каталог.

  2. Временные метки (Timestamps): Точное время создания, последнего изменения, доступа и модификации файла (поэтому этот файл так любят программы для цифровой криминалистики).

  3. Права доступа (Security Descriptors): Информация о том, какому пользователю или группе разрешено открывать или менять этот файл.

  4. Физическое расположение (Указатели/Pointers):

    • Если файл очень маленький (например, текстовый файл на пару строчек), то его содержимое может поместиться прямо внутри самой записи $MFT.

    • Если файл большой, $MFT хранит карту секторов (кластеров) диска, где физически разбросаны кусочки этого файла.

Почему программы вроде WizTree используют $MFT?

Обычные программы при сканировании диска поочередно заходят в каждую папку, запрашивают у Windows список файлов, переходят дальше и т.д. Это долго.

Утилиты вроде WizTree поступают хитрее: они напрямую считывают весь файл $MFT целиком. Поскольку $MFT — это уже готовая, структурированная таблица, где собраны размеры и имена всех файлов на диске, программа мгновенно «видит» всю структуру за пару секунд и сразу понимает, какие папки занимают больше всего места.

Вопрос: файл $MFT заполнен на 25%, можно ли его сжать (я не сжимал, оставил как есть)?

Нет, штатно средствами Windows уменьшить (сжать) физический размер файла $MFT на работающем диске нельзя.

Почему так происходит?

  1. Архитектура NTFS: Когда файловая система Windows создает новые файлы, $MFT автоматически расширяется под их количество. Однако когда вы удаляете файлы, их записи в таблице помечаются как «пустые» и могут использоваться заново, но физически выделенное под $MFT дисковое пространство назад не возвращается и размер файла не уменьшается.

  2. Ограничения ОС: Windows не умеет «усекать» (shrink) занятые зоны $MFT "на лету", так как этот файл критически важен для работы всей файловой системы и закреплен за определенными областями диска.

Что можно сделать?

  • Стороннее ПО: Существуют специализированные утилиты для работы с разметкой дисков (например, Paragon Hard Disk Manager), в которых есть функции оптимизации и дефрагментации/сжатия $MFT. Они умеют переносить служебные записи и усекать пустые хвосты.

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

Примечание: Если $MFT заполнен всего на 25%, это абсолютно нормальное рабочее состояние (система держит большой запас на будущее, чтобы избежать сильной фрагментации таблицы при создании новых файлов). Сами по себе эти «пустые» 75% внутри $MFT не блокируют свободное место на диске критическим образом, если у вас не стоит задача высвободить каждый мегабайт под сжатие самого раздела.

Вопрос: в папке с MS SQLServer есть папка PYTHON_SERVICES_20f02472-8f99-49e8-b8c0-5059b8cf545b большого размера, что это такое?

Папка PYTHON_SERVICES_<уникальный_id> связана с компонентом SQL Server Machine Learning Services.

Что это такое?

Этот каталог создается службой расширения SQL Server (Launchpad). Когда в базе данных запускаются скрипты на Python (например, через процедуру sp_execute_external_script), SQL Server изолирует выполнение кода и автоматически создает временные рабочие директории для каждого сеанса или задачи.

Почему папка стала большого размера?

  1. Зависание сеансов или утечка данных: Иногда при выполнении тяжелых скриптов (обработка больших датафреймов через Pandas/NumPy, сохранение моделей машинного обучения или кэширование) временные файлы не удаляются автоматически после завершения скрипта.

  2. Накопление мусора: Со временем в таких папках могут оставаться временные файлы сессий, лог-файлы или кэш пакетного менеджера, если скрипты выполнялись часто.

Что с этим делать?

  1. Безопасная очистка: Сначала убедитесь, что в данный момент не выполняются активные расчеты или хранимые процедуры с использованием Python.

  2. Перезапуск службы: Перезапустите службу SQL Server Launchpad (через оснастку services.msc), чтобы она сбросила текущие активные процессы.

  3. Удаление: Если служба остановлена и файлы не заблокированы системой, содержимое старых неактивных папок с длинными GUID-номерами можно удалить вручную для освобождения места на диске.