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-номерами можно удалить вручную для освобождения места на диске.
Вопрос: для чего нужна служба SQL Server Launchpad (я остановил службу и отключил)
Служба SQL Server Launchpad (её системное имя в Windows —
MSSQLLaunchpad) — это специальный менеджер изоляции и запуска внешних скриптов.Она появилась в SQL Server вместе с компонентом Machine Learning Services и выполняет следующие задачи:
1. Безопасный запуск внешнего кода
Когда вы пишете хранимую процедуру в базе данных с использованием языков Python или R, SQL Server сам по себе не умеет их выполнять. Вместо этого он обращается к службе Launchpad, а та берет на себя всю работу по запуску интерпретатора.
2. Изоляция процессов (Песочница)
Чтобы сторонний код на Python или R не мог «уронить» сам сервер баз данных или получить несанкционированный доступ к файловой системе, Launchpad создает для каждого выполнения изолированные рабочие процессы (отдельные учетные записи-изоляторы и те самые временные папки с длинными ID).
3. Контроль ресурсов
Служба следит за тем, сколько памяти и процессорного времени потребляют скрипты машинного обучения, чтобы они не исчерпали все ресурсы, предназначенные для самого SQL Server.
Нужно ли она вам?
-
Если вы активно используете Machine Learning Services в базах данных (например, запускаете сложные математические модели, анализ данных или нейросети прямо внутри SQL): служба нужна, отключать её нельзя.
-
Если вы не используете Python или R в SQL Server, но эта служба установлена и работает (или даже запускается автоматически при старте Windows), она просто тратит оперативную память. Её можно перевести в «Ручной» (Manual) режим запуска в диспетчере служб (
services.msc), чтобы она не запускалась зря и не плодила временные файлы.
Вопрос: в папке PYTHON_SERVICES_20f02472-8f99-49e8-b8c0-5059b8cf545b большую часть места занимают библиотеки, можно как-то отказаться от этой службы?
Да, от этой службы можно полностью отказаться, если вы не используете Python или R внутри баз данных MS SQL.
Поскольку стандартные библиотеки Python (особенно для машинного обучения, такие как NumPy, Pandas, Scikit-learn и т.д.) весят несколько гигабайт, отключение этой службы и удаление компонента поможет существенно разгрузить диск C:.
Как полностью отключить и удалить этот компонент:
1. Остановка и отключение службы
Сначала остановите службу, чтобы она перестала занимать файлы и ресурсы:
-
Нажмите комбинацию клавиш
Win + R, введитеservices.mscи нажмитеEnter. -
Найдите в списке службу
SQL Server Launchpad (MSSQLLaunchpad)(она может содержать имя вашего экземпляра SQL Server, например,MSSQLLaunchpad$SQLEXPRESS). -
Нажмите по ней правой кнопкой мыши -> «Остановить» (Stop).
-
Затем зайдите в её «Свойства» и измените «Тип запуска» с Автоматически на «Отключено» (Disabled).
2. Удаление компонента через установщик MS SQL
Чтобы папки и тяжелые библиотеки больше не создавались при обновлениях, лучше официально удалить Machine Learning Services через официальный деинсталлятор:
-
Откройте Панель управления -> Установка и удаление программ (или «Установленные приложения» в Windows 10/11).
-
Найдите в списке Microsoft SQL Server (версия) и нажмите «Изменить / Удалить» (Uninstall/Change).
-
В появившемся окне мастера установки выберите пункт «Удалить» (Remove).
-
Выберите нужный экземпляр SQL Server.
-
На шаге выбора компонентов найдите и снимите галочку с Machine Learning Services (Database In-Database) (или компонента интеграции Python/R).
-
Завершите работу мастера.
3. Ручная очистка хвостов
После удаления службы и компонента вы можете вручную удалить оставшуюся папку
PYTHON_SERVICES_... (и аналогичные ей, если их несколько), чтобы вернуть свободное место на диске C:. Если система напишет, что файлы заняты, перезагрузите компьютер и повторите удаление.Я остановил и отключил службу и вручную удалил папку через проводник. Через MS SQL Installer удалить не получилось.