系统盘空间耗尽、WinSxS 或日志占用异常的定位与清理。
系统盘剩余空间变成红色,资源管理器提示磁盘空间不足;Windows 更新报 0x80070070,应用无法写临时文件,用户登录后提示“配置文件加载失败”或桌面只剩临时配置。也可能机器仍能运行,但虚拟内存告警、休眠失败、系统还原无法创建还原点,事件日志和备份任务连续报错。
系统盘满不一定是用户文件多。WinSxS、休眠文件、页面文件、卷影副本、更新缓存、IIS 与应用日志、崩溃转储都可能占掉大量空间,而且其中一部分在资源管理器里显示的大小并不准确。
先确认卷的真实容量和剩余空间,再按一级目录统计占用。递归统计很慢,应在维护窗口执行:
Get-Volume -DriveLetter C | Format-List DriveLetter,FileSystemLabel,Size,SizeRemaining
Get-PSDrive C | Select-Object Used,Free
Get-ChildItem C:\ -Directory -Force -ErrorAction SilentlyContinue |
ForEach-Object {
$sum = (Get-ChildItem $_.FullName -Recurse -File -Force -ErrorAction SilentlyContinue |
Measure-Object Length -Sum).Sum
[pscustomobject]@{ Path = $_.FullName; GB = [math]::Round($sum / 1GB, 2) }
} | Sort-Object GB -Descending | Select-Object -First 15
重点检查系统目录、日志、休眠与页面文件:
Get-ChildItem C:\Windows\Temp,C:\Windows\SoftwareDistribution\Download -Recurse -File -Force -ErrorAction SilentlyContinue |
Measure-Object Length -Sum
Get-ChildItem C:\Windows\Logs -Recurse -File -Force -ErrorAction SilentlyContinue |
Sort-Object Length -Descending | Select-Object -First 20 FullName,@{n='MB';e={[math]::Round($_.Length/1MB,1)}}
Get-ChildItem C:\ -Force -File | Where-Object Name -in 'hiberfil.sys','pagefile.sys','swapfile.sys' |
Select-Object Name,@{n='GB';e={[math]::Round($_.Length/1GB,2)}}
vssadmin list shadowstorage
组件存储不能用资源管理器的大小判断,必须让 DISM 分析。WinSxS 中大量文件是硬链接,重复计数会显得异常大:
dism /online /cleanup-image /analyzecomponentstore
如果怀疑虚拟磁盘膨胀,可先定位 WSL 或容器的 vhdx 文件;不要在 WSL 运行时压缩:
Get-ChildItem $env:LOCALAPPDATA\Packages -Recurse -Filter *.vhdx -ErrorAction SilentlyContinue |
Sort-Object Length -Descending | Select-Object -First 5 FullName,@{n='GB';e={[math]::Round($_.Length/1GB,2)}}
WinSxS 组件存储和 CBS 日志长期增长。hiberfil.sys、pagefile.sys、swapfile.sys 按内存规模占用,内存越大事越大。Windows.old、回收站、崩溃转储和临时安装文件。按“低风险到高风险”的顺序处理,每一步后重新看剩余空间,避免一次改太多无法回退。
先清回收站、临时目录和系统日志目录中明确可删除的内容。临时文件被占用时跳过即可,不要强删正在使用的文件:
Clear-RecycleBin -DriveLetter C -Force -ErrorAction SilentlyContinue
Remove-Item C:\Windows\Temp\* -Recurse -Force -ErrorAction SilentlyContinue
更新缓存要在停止服务后清理,下载目录删除后补丁会重新下载:
Stop-Service wuauserv,bits -Force
Remove-Item C:\Windows\SoftwareDistribution\Download\* -Recurse -Force -ErrorAction SilentlyContinue
Start-Service bits,wuauserv
组件存储清理优先用 DISM。startcomponentcleanup 删除被取代的组件,通常安全;/resetbase 会让已安装更新无法卸载,生产机不要随意使用:
dism /online /cleanup-image /startcomponentcleanup
休眠文件按需处理。关闭休眠会删除 hiberfil.sys 并同时关闭快速启动;内存很大的机器收益明显,但会失去休眠和快速启动能力:
powercfg /a
powercfg /hibernate off
如果仍需要休眠但想缩小文件,可先确认系统支持再改为精简模式:
powercfg /h /type reduced
页面文件不要直接删。先看是否为系统托管,再决定保留大小或迁到其他盘:
Get-CimInstance Win32_ComputerSystem | Select-Object AutomaticManagedPagefile
Get-CimInstance Win32_PageFileUsage
在“系统属性 → 高级 → 性能 → 虚拟内存”中调整。系统盘没有页面文件会影响完整内存转储和故障分析;禁用页面文件也可能让内存压力下的程序更早失败,不建议为省空间盲目关闭。
卷影副本要先用 vssadmin list shadowstorage 确认使用量,再设置上限或删除最旧快照。注意:快照可能承载系统还原点、备份历史或文件历史,删除前确认恢复需求:
vssadmin resize shadowstorage /for=C: /on=C: /maxsize=10%
vssadmin delete shadows /for=C: /oldest
Windows.old 不要手工删,权限和组件链接容易删不干净。用“磁盘清理 → 清理系统文件”移除,客户端也可通过存储感知处理;同样,C:\Windows\Installer 和 C:\ProgramData\Package Cache 虽然占空间,但用于修复和卸载,不能当普通缓存清理。
日志类目录先确认轮转策略,再删除旧文件;IIS 日志默认在 C:\inetpub\logs\LogFiles,应用日志按厂商文档处理。事件日志不建议用 wevtutil cl 清空,审计场景可能违规;应设置大小上限或归档。若清理后空间仍不释放,检查卷影副本和是否有进程持有已删除文件,再考虑重启相关服务或主机。最后的手段是扩容分区或把数据迁到其他卷,操作前备份并确认分区布局。
合上页面,先回答,再展开对照。
WinSxS 有几十 GB,能不能直接删除该目录?WinSxS 是组件存储,里面大量文件是硬链接,资源管理器会重复计数。应先用 dism /online /cleanup-image /analyzecomponentstore 判断,再用 startcomponentcleanup 清理;/resetbase 不可逆,不能随意执行。hiberfil.sys,同时失去休眠和快速启动;调整或移除页面文件可能影响完整内存转储和内存压力下的稳定性。应按机器用途和故障分析需求选择。vssadmin list shadowstorage 和资源监视器进一步确认。
小程序版
微信扫码,随时查命令