Windows: чистка системного диска
Проблема: забился системный диск, далее у меня диск C:. Чистка кэшей браузеров и использование системной утилиты результатов не дало. Пришлось прибегнуть к развернутому анализу.
Установил WizTree, portable - версию.
Сначала нашел все большие файлы, которые можно удалять безопасно, дальше начались сложности. Работаю с Gemini.
Вопрос: что находится в файле $MFT (трогать его не надо)?
Файл
$MFT (Master File Table) — это не обычный файл с документами или программами, а главная служебная база данных файловой системы NTFS, которая хранит информацию абсолютно обо всех файлах и папках на диске. Сам по себе
$MFT тоже физически оформлен как файл, который лежит в начале каждого диска NTFS. Что именно записано внутри $MFT?
Каждому файлу и папке на диске (включая скрытые и системные) выделяется отдельная запись в этой таблице размером обычно 1 КБ. Внутри этой записи хранится вся метаинформация:
-
Атрибуты файла: Полное имя файла, путь к нему и родительский каталог.
-
Временные метки (Timestamps): Точное время создания, последнего изменения, доступа и модификации файла (поэтому этот файл так любят программы для цифровой криминалистики).
-
Права доступа (Security Descriptors): Информация о том, какому пользователю или группе разрешено открывать или менять этот файл.
-
Физическое расположение (Указатели/Pointers):
-
Если файл очень маленький (например, текстовый файл на пару строчек), то его содержимое может поместиться прямо внутри самой записи
$MFT. -
Если файл большой,
$MFTхранит карту секторов (кластеров) диска, где физически разбросаны кусочки этого файла.
-
Почему программы вроде WizTree используют $MFT?
Обычные программы при сканировании диска поочередно заходят в каждую папку, запрашивают у Windows список файлов, переходят дальше и т.д. Это долго.
Утилиты вроде WizTree поступают хитрее: они напрямую считывают весь файл
$MFT целиком. Поскольку $MFT — это уже готовая, структурированная таблица, где собраны размеры и имена всех файлов на диске, программа мгновенно «видит» всю структуру за пару секунд и сразу понимает, какие папки занимают больше всего места.Вопрос: файл $MFT заполнен на 25%, можно ли его сжать (я не сжимал, оставил как есть)?
Нет, штатно средствами Windows уменьшить (сжать) физический размер файла
$MFT на работающем диске нельзя. Почему так происходит?
-
Архитектура NTFS: Когда файловая система Windows создает новые файлы,
$MFTавтоматически расширяется под их количество. Однако когда вы удаляете файлы, их записи в таблице помечаются как «пустые» и могут использоваться заново, но физически выделенное под$MFTдисковое пространство назад не возвращается и размер файла не уменьшается. -
Ограничения ОС: 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 изолирует выполнение кода и автоматически создает временные рабочие директории для каждого сеанса или задачи.Почему папка стала большого размера?
-
Зависание сеансов или утечка данных: Иногда при выполнении тяжелых скриптов (обработка больших датафреймов через Pandas/NumPy, сохранение моделей машинного обучения или кэширование) временные файлы не удаляются автоматически после завершения скрипта.
-
Накопление мусора: Со временем в таких папках могут оставаться временные файлы сессий, лог-файлы или кэш пакетного менеджера, если скрипты выполнялись часто.
Что с этим делать?
-
Безопасная очистка: Сначала убедитесь, что в данный момент не выполняются активные расчеты или хранимые процедуры с использованием Python.
-
Перезапуск службы: Перезапустите службу SQL Server Launchpad (через оснастку
services.msc), чтобы она сбросила текущие активные процессы. -
Удаление: Если служба остановлена и файлы не заблокированы системой, содержимое старых неактивных папок с длинными GUID-номерами можно удалить вручную для освобождения места на диске.