WSL 很像一个勤奋但不爱收拾桌面的室友。你在 Ubuntu 里 apt install、拉 Docker 镜像、跑构建缓存、下载数据集,Linux 里面看起来一切正常;等回到 Windows,C 盘却突然少了几十 GB。更有意思的是,你在 WSL 里删掉大文件以后,Windows 资源管理器里的剩余空间也不一定立刻回来。
2026 年还在说“WSL 需要空间清理工具”,并不是怀旧式折腾,而是一个很现实的问题:WSL 2 默认把 Linux 文件系统放进一个动态扩展的虚拟磁盘文件里。这个文件通常叫 ext4.vhdx。它会长大,但不会总是主动缩小。微软自己的 WSL 磁盘空间文档也把扩容、查找 VHD 位置和压缩虚拟磁盘列为需要单独处理的事情。
几条网友反馈很典型。网友 v 说自己会在 PowerShell 里进入 DiskPart,选择 WSL 磁盘并压缩;网友 J 说 ChatGPT 也推荐过这个方向,因为删除 WSL 里的大文件后,虚拟磁盘不会自动变小;网友 L 提到自己是被 Gemini 推荐后开始使用;网友 p 直接表示一直用 WizTree;网友 k 觉得它和 WinDirStat 很像,但会把对应文件大小显示得更直接;网友 N 则补充,WizTree 利用了 NTFS 文件系统特性,出结果很快,可以替代 WinDirStat。评论区没有给出一个“唯一正确答案”,但它把问题拆得很准:
- 你要先知道空间被谁吃掉了。
- 你要再决定哪些东西能删。
- 你还要让 WSL 的虚拟磁盘把已经释放的空间还给 Windows。
少了第三步,清理就像把房间垃圾装进袋子,却一直放在门口。
WinDirStat:慢一点,但适合把问题看清楚#

这张图是 WinDirStat 的实际清理画面。右侧按扩展名统计里,.vhdx 文件已经占到 90.2 GiB;左侧路径落在 Users > AppData > Local > Packages > CanonicalGroupLimited...,这基本就是 Windows Store 版 Ubuntu/WSL 发行版所在的位置。也就是说,C 盘不是被“神秘系统垃圾”吃掉了,而是 WSL 的虚拟磁盘已经长到很大。
WinDirStat 的优点是直观:上方目录树告诉你路径,下方 treemap 用色块把大文件怼到你眼前。它是免费开源软件,项目代码在 GitHub,许可证为 GPL-2.0。可信度上,它属于老牌 Windows 磁盘可视化工具,适合从官网或 GitHub 发布页下载。
它的缺点也很明显:扫描大盘会慢,界面也带着一种“Windows XP 时代的可靠感”。不过这类工具不需要漂亮,它只要告诉你“90GB 到底在哪里”。
WizTree:更快,但不是开源软件#
多位网友提到 WizTree。这不是偶然。WizTree 很快,尤其在 NTFS 磁盘上,它会读取文件系统的主文件表信息,因此扫描速度常常比传统遍历目录的工具快很多。对开发者来说,这种“秒出结果”的体验很容易上瘾:你刚怀疑 C 盘胖了,它已经把嫌疑人排好队了。
但授权要说清楚。WizTree 不是开源软件。按官网说明,它可供个人使用免费;商业/企业使用需要购买许可证。可信度方面,建议只从 diskanalyzer.com 官方站点下载,不要从二次打包站拿安装包。
所以推荐方式是:
- 个人电脑:WizTree 很值得装,尤其适合快速定位大文件。
- 公司电脑:先看授权要求,别把“个人免费”误读成“企业也免费”。
- 开源洁癖用户:用 WinDirStat,或者搭配其他开源磁盘分析器。
DiskPart:系统内置,但别把它当玩具#
评论里第一条提到的 DiskPart 是 Windows 自带工具,不收费,也不是第三方软件。微软文档里有 compact vdisk 命令,用来压缩动态扩展虚拟硬盘文件。它适合处理 WSL 这种 .vhdx 已经释放内部空间、但外层文件还没缩回去的情况。
典型流程是:
wsl --shutdown
diskpart
select vdisk file="C:\Users\<你>\AppData\Local\Packages\<发行版>\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit注意几点:
- 先
wsl --shutdown,不要在发行版运行时压缩它的 VHDX。 select vdisk file=...路径必须确认,不要凭感觉选。- 压缩前最好在 WSL 里先删除缓存、大镜像、大构建目录。
- 如果你有 Hyper-V 管理模块,也可能用
Optimize-VHD,但 Windows 家庭版和功能安装状态会影响可用性。
DiskPart 的可信度最高,因为它是微软系统工具;风险也最高,因为它离磁盘太近。它适合按文档操作,不适合半夜凭记忆乱敲。
2026 年推荐的 WSL 清理顺序#
第一步,先在 WSL 里查内部占用:
du -h --max-depth=1 ~ | sort -h
sudo du -h --max-depth=1 /var | sort -h
docker system df常见大户包括 Docker 镜像和 volume、node_modules、包管理器缓存、编译产物、Python/Conda 环境、下载的数据集、日志,以及临时测试文件。
第二步,清理你确认不需要的内容:
sudo apt autoremove
sudo apt clean
docker system pruneDocker 的 prune 要谨慎,尤其是 -a 和 volume 清理。它们不是“优化按钮”,而是删除按钮。
第三步,用 WinDirStat 或 WizTree 在 Windows 侧确认 .vhdx 是否仍然很大。WinDirStat 更透明、开源;WizTree 更快、个人免费但闭源。
第四步,关闭 WSL 并压缩 VHDX:
wsl --shutdown然后按微软文档使用 DiskPart compact vdisk,或在可用环境里使用 Optimize-VHD。这一步才是把 Linux 里释放出来的空间真正还给 Windows。
该推荐哪一个工具?#
如果只选一个给普通用户,我会推荐 WinDirStat:免费、开源、可信、截图表达力强,适合写教程,也适合让读者自己验证。它慢一点,但慢得明明白白。
如果给经常清理开发机的人,我会推荐 WizTree 加 DiskPart:WizTree 负责快速定位,DiskPart 负责压缩 VHDX。前者要注意授权,后者要注意路径。
如果你是在 2026 年第一次认真使用 WSL,我建议把这三件事分开记:
- WinDirStat/WizTree:告诉你空间在哪里。
- WSL/Linux 命令:告诉你哪些内容可以安全删除。
- DiskPart/Optimize-VHD:让虚拟磁盘真正变小。
WSL 的问题不在于它“吃空间”,而在于它吃得太安静。等你看见 C 盘红了,它已经默默把缓存、镜像、依赖和构建产物都装进了一个大号 .vhdx。空间清理工具的价值,就是把这个黑箱重新变成一张地图。
参考来源#
- Microsoft Learn: How to manage WSL disk space
- Microsoft Learn: compact vdisk
- WinDirStat: Official site and GitHub repository
- WizTree: Official site and commercial license page