给 Windows WSL2 虚拟磁盘瘦身

2026-06-03#WSL

使用 Windows 一段时间后,尽管没有安装大型软件,但 C 盘剩余空间不足,已经显示为红色。最终怀疑是 WSL2 导致的,很可能是因为最近在多个项目中运行了 npm install,安装了大量的软件包。经过排查,确实如此:WSL2 的虚拟磁盘空间不断增长,但在 WSL2 里删除文件后,它并不会主动把磁盘空间归还给 Windows 系统。不过可以使用多种方法对 WSL2 的虚拟磁盘进行瘦身,比如使用 diskpart 压缩磁盘文件。

确认虚拟磁盘使用情况 🔗

在 WSL2 中查看磁盘使用情况:

df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdd        251G   76G  163G  32% /

可以看到虚拟磁盘大小为 251G,但只使用了 32%,有大量空闲空间并未归还给宿主机。

压缩虚拟磁盘文件 🔗

找到虚拟磁盘文件,路径通常为 C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu...\LocalState\ext4.vhdx。复制文件路径。

以管理员身份打开 PowerShell,输入 diskpart 打开磁盘管理工具,然后使用 select vdisk 选择虚拟磁盘文件:

DISKPART> select vdisk file="<磁盘文件地址>"
DiskPart successfully selected the virtual disk file.

依次执行 attach vdisk readonlycompact vdiskdetach vdisk 来压缩虚拟磁盘:

DISKPART> attach vdisk readonly
  100 percent completed
DiskPart successfully attached the virtual disk file.
DISKPART> compact vdisk
  100 percent completed
DiskPart successfully compacted the virtual disk file.
DISKPART> detach vdisk
DiskPart successfully detached the virtual disk file.
DISKPART> exit

确认瘦身结果 🔗

再次打开"我的电脑",即可看到 C 盘剩余空间增加了许多。