Очистка диска C на Windows Server: WinSxS, SoftwareDistribution и ещё 8 папок
Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. За 15 лет сопровождения Windows-серверов я каждый месяц минимум на одном клиенте получаю заявку «у нас диск C красный, срочно!». И каждый раз это одно и то же: кэш Windows Update разросся до 20 ГБ, WinSxS нахватал 45 ГБ, профили терминальных пользователей забили 80% тома. В статье — проверенный список того, что можно безопасно чистить на Windows Server 2019/2022, и конкретные команды. У меня на практике после такой очистки типично освобождается 40–60 ГБ на сервере, который «никуда не ест».
Куда уходит место на системном диске
| Папка | Типичный размер | Безопасно чистить |
|---|---|---|
| C:\Windows\WinSxS | 15-50 ГБ | Да, через DISM |
| C:\Windows\SoftwareDistribution | 5-20 ГБ | Да, после остановки wuauserv |
| C:\Windows\Installer | 3-15 ГБ | Частично, с осторожностью |
| C:\Windows\Logs\CBS | 2-10 ГБ | Да, после остановки trustedinstaller |
| C:\Windows\ccmcache | до 30 ГБ | Да, через SCCM-клиент |
| C:\Users\*\AppData\Local\Temp | 1-10 ГБ на пользователя | Да |
| C:\ProgramData\Microsoft\Windows Defender\Scans\History | 2-8 ГБ | Да |
| C:\Windows\Temp | 0.5-5 ГБ | Да |
| C:\pagefile.sys | размер RAM | Можно перенести |
| C:\hiberfil.sys | 70% RAM | Отключить на серверах |
1. Чистим WinSxS через DISM
WinSxS — хранилище компонентов Windows. Содержит файлы для установки/отката всех ранее выпущенных обновлений. Без очистки за 3 года набирает 40–50 ГБ. Важно: нельзя удалять руками! Только через DISM.
# Анализ размера
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
# Очистка отменяемых обновлений
Dism.exe /Online /Cleanup-Image /StartComponentCleanup
# Агрессивная очистка (необратимо — нельзя будет откатить обновления)
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
# Проверка (должно занять 3-5 минут)
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
У нас на практике на Windows Server 2022, который в продуктиве 2 года, WinSxS с 48 ГБ после /StartComponentCleanup становится 18 ГБ, после /ResetBase — 11 ГБ.
2. Очистка кэша Windows Update
Папка C:\Windows\SoftwareDistribution\Download содержит скачанные обновления. После установки они там же и остаются, не удаляются сами. Чистка:
Stop-Service wuauserv, bits, cryptsvc, msiserver -Force
Remove-Item -Path "C:\Windows\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "C:\Windows\System32\catroot2\*" -Recurse -Force -ErrorAction SilentlyContinue
Start-Service wuauserv, bits, cryptsvc, msiserver
Эта процедура — первое, что я делаю на любом сервере с забитым диском C. Среднее освобождение — 8–15 ГБ.
3. Чистим C:\Windows\Installer
Папка Installer хранит MSI/MSP установщиков. Нужна для удаления/восстановления установленных программ. Напрямую удалять нельзя, но можно использовать утилиту PatchCleaner, которая находит осиротевшие .msp-файлы (от удалённых программ):
# Скачиваем PatchCleaner (homedev.com.au/Free/PatchCleaner)
# Запускаем в Analyze Mode, смотрим orphaned files
# Move to another location (не delete, на всякий случай)
# Альтернативный способ через PowerShell-анализ
Get-WmiObject Win32_Product | Select-Object Name, LocalPackage, Version
Я всегда переношу в другую папку, а не удаляю. Если что-то отвалится — возвращаю обратно. После недели без проблем — удаляю окончательно.
4. Очистка логов CBS и Windows Update
# Очистка CBS.log (может быть до 10 ГБ)
Stop-Service trustedinstaller -Force
Remove-Item -Path "C:\Windows\Logs\CBS\*" -Recurse -Force
Start-Service trustedinstaller
# Журналы Windows Update
Remove-Item -Path "C:\Windows\WindowsUpdate.log" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "C:\Windows\Logs\WindowsUpdate\*" -Recurse -Force -ErrorAction SilentlyContinue
5. Встроенный cleanmgr в Windows Server 2019+
В Windows Server 2012R2 cleanmgr требовал установки роли. В 2019/2022 он доступен сразу. Настраиваем preset и запускаем:
# Настраиваем, что чистить (один раз)
cleanmgr /sageset:1
# Откроется окно — отмечаем галки:
# - Windows Update Cleanup
# - Temporary files
# - Recycle bin
# - Thumbnails
# - Delivery Optimization Files
# - Windows Error Reporting Files
# Нажимаем OK
# Запускаем очистку по сохранённому preset
cleanmgr /sagerun:1
# Можно добавить в планировщик на еженедельный запуск
schtasks /create /tn "Weekly Cleanup" /tr "cleanmgr /sagerun:1 /verylowdisk" /sc weekly /d SUN /st 03:00 /ru SYSTEM
6. Профили пользователей на RDS-сервере
На терминальных серверах самая агрессивная растущая папка — пользовательские профили. Особенно в C:\Users\*\AppData. Кэши Chrome/Edge, Teams, Outlook OST могут сожрать по 5–10 ГБ на одного пользователя.
# Топ-10 самых больших профилей
Get-ChildItem "C:\Users" -Directory | ForEach-Object {
$size = (Get-ChildItem $_.FullName -Recurse -Force -ErrorAction SilentlyContinue |
Measure-Object -Property Length -Sum).Sum / 1GB
[PSCustomObject]@{Name=$_.Name; SizeGB=[math]::Round($size,2)}
} | Sort SizeGB -Descending | Select -First 10
# Удаление Temp-файлов у всех пользователей
Get-ChildItem "C:\Users" -Directory | ForEach-Object {
$temp = "$($_.FullName)\AppData\Local\Temp"
if (Test-Path $temp) {
Remove-Item "$temp\*" -Recurse -Force -ErrorAction SilentlyContinue
}
}
# Удаление старых профилей (не логинились > 90 дней)
Get-CimInstance Win32_UserProfile | Where-Object {
$_.LastUseTime -lt (Get-Date).AddDays(-90) -and -not $_.Special -and -not $_.Loaded
} | Remove-CimInstance
7. Отключаем hiberfil.sys и уменьшаем pagefile
На сервере гибернация не нужна — файл C:\hiberfil.sys в 70% RAM просто занимает место. Отключаем:
powercfg /hibernate off
# Файл исчезнет, освободится 45 ГБ на сервере с 64 ГБ RAM
# Pagefile — если у вас 256 ГБ RAM, pagefile по умолчанию 256 ГБ
# Перенесём на отдельный диск D:
# Control Panel → System → Advanced system settings → Performance → Settings
# → Advanced → Virtual memory → Change
# Либо через powershell:
$pagefile = Get-WmiObject Win32_PageFileSetting
$pagefile.Name = "D:\pagefile.sys"
$pagefile.InitialSize = 8192
$pagefile.MaximumSize = 16384
$pagefile.Put()
8. Defender Scans History
# Очистка истории сканирования Defender
$defenderHistory = "C:\ProgramData\Microsoft\Windows Defender\Scans\History"
Remove-Item -Path "$defenderHistory\*" -Recurse -Force -ErrorAction SilentlyContinue
Скрипт полной автоочистки
Я всегда оставляю клиентам такой скрипт в C:\Scripts\ServerCleanup.ps1 и ставлю в Task Scheduler на еженедельное ночное выполнение:
# /Scripts/ServerCleanup.ps1
$LogFile = "C:\Scripts\cleanup-$(Get-Date -Format yyyyMMdd).log"
function Log($msg) { "$(Get-Date -Format 'HH:mm:ss') $msg" | Tee-Object -Append $LogFile }
Log "=== Cleanup start ==="
# WU cache
Stop-Service wuauserv, bits -Force
Remove-Item -Path "C:\Windows\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue
Start-Service wuauserv, bits
Log "Windows Update cache cleaned"
# Temp files
Remove-Item -Path "C:\Windows\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue
Get-ChildItem "C:\Users" -Directory | ForEach-Object {
Remove-Item "$($_.FullName)\AppData\Local\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue
}
Log "Temp cleared"
# CBS logs
Stop-Service trustedinstaller -Force
Remove-Item -Path "C:\Windows\Logs\CBS\*" -Recurse -Force -ErrorAction SilentlyContinue
Start-Service trustedinstaller
Log "CBS cleaned"
# Defender
Remove-Item -Path "C:\ProgramData\Microsoft\Windows Defender\Scans\History\*" -Recurse -Force -ErrorAction SilentlyContinue
Log "Defender history cleaned"
# DISM
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /Quiet | Out-Null
Log "WinSxS cleaned"
# Диск после очистки
$drive = Get-PSDrive C
Log "Free: $([math]::Round($drive.Free/1GB,2)) GB / $([math]::Round(($drive.Used+$drive.Free)/1GB,2)) GB"
Log "=== Cleanup end ==="
Реальный кейс: освобождение 280 ГБ на терминальной ферме
В марте 2026 года к нам обратилась производственная компания — 3 терминальных сервера Windows Server 2019 на 60 пользователей каждый, диски C заполнены на 95–98%. Пользователи жаловались на медленную работу, периодически падал Outlook и Office.
Зашли по RDP на каждый сервер, разобрались по списку:
- WinSxS: 54 ГБ → 14 ГБ после DISM /StartComponentCleanup /ResetBase (экономия 40 ГБ).
- SoftwareDistribution: 22 ГБ → 0 (экономия 22 ГБ).
- Профили пользователей: 270 ГБ, нашли 18 сотрудников, не входивших больше 120 дней — удалили (экономия 38 ГБ).
- AppData\Local\Temp по всем пользователям: 45 ГБ (экономия 45 ГБ).
- hiberfil.sys: 90 ГБ на трёх серверах (по 30 ГБ каждый) — отключили (экономия 90 ГБ).
- CBS logs, Defender History, Windows Temp: суммарно 45 ГБ.
Итого на трёх серверах освободилось 280 ГБ. Диски C после очистки — 58%, 63%, 51% от заполнения. Пользователи отметили «заметно ускорился вход в сессию». Настроили автоматический скрипт очистки раз в неделю и алерт в Zabbix при > 80% заполнения. Работы заняли 3 часа, стоимость — 12 000 руб.
Типичные ошибки при очистке
- Удаление WinSxS руками. Сломает систему — dism будет жаловаться на отсутствующие компоненты. Только через DISM.
- Удаление C:\Windows\Installer полностью. Не смогут удаляться установленные программы, msiexec ругается. Только через PatchCleaner.
- Чистят кэш SCCM руками. Ломается клиент SCCM, потом он не видит раздачи. Используйте SCCM-консоль.
- Забывают перезапустить службы. После остановки trustedinstaller и удаления CBS.log некоторые обновления не ставятся. Запускайте службу обратно.
- Не мониторят после очистки. Через 3 месяца ситуация повторяется. Автоматизация + Zabbix-алерт обязательны.
Почистим и автоматизируем обслуживание Windows Server
Полная очистка диска C, настройка скриптов еженедельной автоочистки, мониторинг в Zabbix, обслуживание 1С-серверов и терминальных ферм. Работаем с Windows Server 2012R2/2016/2019/2022/2025 в составе ежемесячного сопровождения либо по разовому запросу.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы
- Почему диск C на Windows Server постоянно забивается?
- Главные виновники — кэш Windows Update (SoftwareDistribution), хранилище компонентов WinSxS, файлы CBS.log, установщики MSI в C:\Windows\Installer, профили пользователей с кэшем браузеров на RDS.
- Безопасно ли чистить WinSxS?
- Чистить через DISM с параметром /StartComponentCleanup — безопасно. Не удаляйте файлы руками. /ResetBase необратимо удаляет возможность отката обновлений.
- Можно ли очистить SoftwareDistribution?
- Да, останавливаете службу wuauserv, удаляете папку C:\Windows\SoftwareDistribution\Download, запускаете службу. Типично освобождается 5-20 ГБ.
- Что такое CCMCache и когда его чистить?
- CCMCache — кэш SCCM/MECM клиента в C:\Windows\ccmcache. Чистится через консоль SCCM Client (Control Panel → Configuration Manager → Cache → Delete).
- Помогает ли cleanmgr на Server 2019+?
- Да. В Windows Server 2019/2022 cleanmgr доступен по умолчанию. Команда cleanmgr /sagerun:1 после предварительной настройки /sageset:1 чистит системные файлы автоматически.