WSL2的ext4.vhdx文件因动态扩展机制只涨不跌,需手动关闭WSL、用diskpart以只读模式挂载后执行compact vdisk才能真实释放空间。

你在Windows 11中长期使用WSL2后,发现C盘被ext4.vhdx文件越占越大——明明Linux里只用了30GB,文件却膨胀到120GB且不自动收缩,必须用Diskpart手动压缩才能真实释放空间。
先彻底关闭WSL运行环境
打开PowerShell(管理员权限),执行:
wsl --shutdown
这一步必须做,否则diskpart无法以只读模式挂载vhdx文件,后续所有压缩操作都会失败。系统不会自动提示你是否已关机,要自己确认——执行完后在任务管理器“详细信息”页签里搜索vmmem进程,若已消失才算真正关闭。
定位你的ext4.vhdx虚拟磁盘文件
默认路径在:
【C:\Users\{用户名}\AppData\Local\Packages\{发行版ID}\LocalState\ext4.vhdx】
例如Ubuntu 22.04的典型路径是:
C:\Users\21945\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx
注意:AppData是隐藏文件夹,需在文件资源管理器地址栏直接粘贴完整路径并回车,或先开启“显示隐藏的项目”。不要靠手动逐层点开,容易进错目录。
用Diskpart执行精准压缩
第一步:以管理员身份运行命令提示符或PowerShell,输入:
diskpart
第二步:依次执行以下三条命令(每行回车):
select vdisk file="C:\Users\21945\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
第三步:等待命令执行完成(无进度条,光标回到DISKPART>即表示成功),再输入:
detach vdisk
exit
关键提醒:【attach vdisk readonly必须加】——漏掉这句会导致compact vdisk报错“虚拟磁盘处于脱机状态”,整个流程中断。readonly不是可选项,是强制安全前提。
验证压缩结果
回到文件资源管理器,刷新查看原ext4.vhdx文件大小,对比压缩前数值。通常能缩减30%~60%,具体取决于Linux内部是否已清理过缓存与日志。若未明显变小,请返回WSL终端先执行sudo apt clean && sudo journalctl --vacuum-size=50M再重试整套流程。

















