检查点过多导致磁盘爆满需分三步处理:先用PowerShell或docker命令定位真实占用,再安全清理可删的.tar等检查点文件,最后关闭自动检查点并设置硬性限额(如Docker启用builder gc并限5G)。
检查点(checkpoint)过多导致宿主机磁盘爆满,常见于使用 wsl2、docker desktop 或某些虚拟化平台的场景。这类问题本质是“快照类数据只增不缩”,系统持续写入但不主动回收已删除或过期的检查点,最终撑爆磁盘。处理需分三步:定位、清理、约束。
确认是否为检查点真实占用
不能仅凭“最近建过检查点”就下结论。先验证它是不是真凶:
- WSL2 用户:在 PowerShell 运行 Get-ChildItem "$env:LOCALAPPDATA\Packages" -Recurse -Filter "ext4.vhdx" | Select FullName, @{Name='SizeGB';Expression={[math]::Round($_.Length/1GB,2)}} | Sort SizeGB -Descending,看 .vhdx 是否异常膨胀(如 >10GB 且无对应数据);
- Docker Desktop 用户:执行 docker builder ls --all 和 docker system df,关注 Build Cache 的 RECLAIMABLE 是否占比过高(常达 70%+);
- 若用第三方工具(如 Multipass、Rancher Desktop)创建过检查点,查其默认存储路径(如 %LOCALAPPDATA%\multipass\instances\),直接看子目录大小。
安全清理已有检查点
清理前务必区分“可删”与“不可删”:
- WSL2 检查点:WSL2 本身不提供原生检查点管理,所谓“检查点”多来自手动导出(wsl --export)生成的 tar 文件,或 Docker Desktop 自动备份。进对应发行版后运行 ls -lh ~/Downloads/*.tar ~/.wslconfig /mnt/c/Users/*/Downloads/,删除明确命名含 backup、checkpoint、export 的 tar 包;
- Docker 构建检查点:执行 docker builder prune -f --filter until=24h,只删 24 小时前的构建缓存;如需更激进,加 --keep-storage 2G 限制缓存总容量;
- 通用原则:所有检查点文件(.tar、.qcow2、.vdi 等)必须确认无业务依赖再删。例如数据库容器导出的 checkpoint,删前应核对是否已迁移到新环境。
关闭自动检查点并设硬性限额
救火之后必须堵漏,否则几天内会重演:
- WSL2:禁用 Windows 备份集成,在 PowerShell 中运行 Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss" -Name "DisableBackup" -Value 1;
- Docker Desktop:进入 Settings → Docker Engine,添加配置项 "builder": {"gc": {"enabled": true, "defaultKeepStorage": "5G"}},重启生效;
- CI/CD 场景:在流水线脚本末尾强制插入清理命令,例如 GitHub Actions 中加一步 run: docker builder prune -f --filter until=6h,确保每次构建后只保留最近 6 小时缓存。
检查点不是备份,而是临时状态快照。放任不管等于在磁盘上堆雪球——越滚越大,直到崩盘。定期清理 + 明确限额 + 关闭非必要自动保存,三者缺一不可。


















