用过 WSL 的开发者大概都遇到过同一个痛点——磁盘空间像黑洞一样被吞噬。WSL2 的虚拟磁盘文件(.vhdx)会随着使用不断膨胀,哪怕你在 Linux 里删掉了大文件,宿主机上的 VHDX 也不会自动缩小。再加上多个发行版实例的管理全靠命令行敲 wsl --list,体验谈不上友好。
WSL Dashboard v0.8.0 的发布,把这两个问题一起解决了。它是一个开源的 WSL 实例管理工具,主打轻量、低内存占用,这次更新最硬核的新功能就是 VHDX 压缩。
VHDX 压缩:终于能回收磁盘空间了
WSL2 的每个发行版背后都是一个 VHDX 虚拟磁盘。这个磁盘采用动态扩展格式,写入时自动增长,但删除文件后空间不会自动归还给宿主机。一个用了几个月的 Ubuntu 实例,VHDX 可能从初始的 1GB 涨到 20GB,哪怕你清理了 Docker 镜像和日志,宿主机上依然占着 20GB。
v0.8.0 引入了两种压缩策略:
- 快速优化:调用
optimize-vhd,只释放已删除数据占用的空间,速度快,几秒到几十秒完成。适合日常定期维护。 - 完整重建:对 VHDX 进行彻底压缩重组,回收效果更彻底,但耗时更长。适合长期未清理、空间浪费严重的场景。
在 WSL Dashboard 的界面里,选择实例后点击压缩按钮,选策略,一键执行。不需要手动关 WSL、找 VHDX 路径、再开 PowerShell 敲命令。
手动压缩:对比一下就知道 Dashboard 真省事
如果你没用 Dashboard,手动压缩 VHDX 的流程是这样的:
# 第一步:关闭所有 WSL 实例
wsl --shutdown
# 第二步:找到 VHDX 文件路径(通常在以下位置)
# 默认路径: %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu...\LocalState\ext4.vhdx
# 自定义导入的实例:你指定的目录下
# 第三步:用 DiskPart 或 Hyper-V 工具压缩
# DiskPart 方式(无需 Hyper-V 功能)
diskpart
# 在 diskpart 交互界面中依次执行:
select vdisk file="C:\Users\YourName\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
# 或者用 Hyper-V 的 optimize-vhd(需要开启 Hyper-V 功能)
Optimize-VHD -Path "C:\Users\YourName\...\ext4.vhdx" -Mode Full
整个过程要关 WSL、找路径、敲命令、再重启实例。路径还经常藏在深层目录里,不同发行版的 Package 名不一样,很容易搞错。WSL Dashboard 把这些步骤封装成界面操作,背后自动处理 shutdown、路径定位和压缩策略选择。
实例管理:不止是压缩
除了 VHDX 压缩,WSL Dashboard 作为管理工具,覆盖了日常操作:
- 查看所有已安装的 WSL 实例及其运行状态
- 启动、停止、重启指定实例
- 快速导入/导出实例(
wsl --import/wsl --export的可视化版本) - 查看各实例的磁盘占用和内存使用
对于维护多个发行版(比如同时跑 Ubuntu 做 Web 开发、Debian 做测试、Arch 玩新工具)的开发者,一个面板比反复敲 wsl -l -v 要高效得多。
实践建议:把压缩纳入日常维护
WSL 的磁盘膨胀不是一次性问题,而是持续发生的。Docker 镜像拉了又删、日志写了又清、npm 缓存定期清理——这些操作在 Linux 侧释放了空间,但 VHDX 不缩。建议这样安排:
# 在 WSL 内部,定期清理大占用目录(示例)
# 查看 Docker 镜像占用
docker system df
# 清理未使用的 Docker 资源
docker system prune -a --volumes
# 清理 npm 缓存
npm cache clean --force
# 清理 apt 缓存
sudo apt-get clean
sudo apt-get autoremove -y
# 查看当前实例磁盘占用(在 WSL 内)
df -h /
清理完 Linux 侧之后,再在 WSL Dashboard 里跑一次快速优化。频率建议每月一次,或者做完大规模删除操作后立即执行。完整重建可以每季度做一次,或者当 VHDX 文件大小明显超出实际使用量时再做。
采纳前需要知道的几件事
- 压缩前会自动关闭实例:压缩要求 VHDX 不被挂载,Dashboard 会先执行
wsl --shutdown。如果你有正在运行的服务,记得先保存状态。 - 快速优化 vs 完整重建的选择:日常用快速优化就够了,回收率通常在 30%-60%。完整重建回收率更高但耗时可能数分钟到十几分钟,取决于 VHDX 大小。
- Hyper-V 功能要求:完整重建模式依赖 Hyper-V 的
Optimize-VHD命令。如果你的 Windows 版本没有开启 Hyper-V,快速优化(基于 DiskPart)仍然可用。 - 低内存占用是设计目标:工具本身内存占用控制在较低水平,不会给已经吃紧的宿主机再添负担。
WSL Dashboard v0.8.0 把 WSL 开发者最头疼的磁盘膨胀问题推到了前台解决,同时让多实例管理不再依赖命令行记忆。如果你日常使用 WSL2 且磁盘空间经常告急,这个版本值得立刻试一下。