298 字
1 分钟
WSL2 虚拟磁盘空间压缩指南
WSL2 使用动态虚拟硬盘(VHDX),有一个问题:磁盘空间只增不减。即使删除了大量文件,VHDX 文件的实际占用也不会自动释放。
解决方案
NOTE以下方法仅适用于 WSL2。
方法一:设置 Sparse 磁盘
较新版本的 WSL 支持 Sparse 模式,可自动释放未使用空间:
# 将 Ubuntu 替换为你的发行版名称wsl --manage Ubuntu --set-sparse true缺点是可能无法释放已占用的空闲空间。
方法二:使用 Diskpart 压缩(推荐)
这是微软官方推荐的方法。
压缩前务必备份重要数据!
1. 关闭 WSL
wsl --shutdown2. 找到 VHDX 文件
# 列出所有 WSL 的 VHDX 文件Get-ChildItem -Path "$env:USERPROFILE\AppData\Local\Packages\*" -Filter "ext4.vhdx" -Recurse -ErrorAction SilentlyContinue常见路径:
- Ubuntu:
%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu*\LocalState\ext4.vhdx - Debian:
%USERPROFILE%\AppData\Local\Packages\TheDebianProject.DebianGNULinux*\LocalState\ext4.vhdx
3. 使用 Diskpart 压缩
以管理员身份运行:
diskpart在 Diskpart 中输入:
select vdisk file="C:\Users\用户名\AppData\Local\Packages\...\LocalState\ext4.vhdx"compact vdiskexitTIP路径需使用完整绝对路径,不能用
%USERPROFILE%变量。
等待显示 DiskPart successfully compacted the virtual disk file 即可。
预防建议
- 定期清理 WSL 内部缓存:
sudo apt clean && sudo apt autoremove - 大型数据存放在 Windows 文件系统,通过
/mnt/c/访问 - 使用 Docker 时定期运行
docker system prune
WSL2 虚拟磁盘空间压缩指南
https://fuwari.vercel.app/posts/wsl2-compress-disk/