一.清理wsl磁盘空间
清除不必要的文件(在wsl的终端上运行)
sudo apt clean
sudo apt autoremove
sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
sudo journalctl --vacuum-size=50M
sudo rm -rf /tmp/*
二.手动压缩wsl虚拟磁盘
在Windows的命令行提示符上运行
C:\Users\{用户名}\AppData\Local\Docker\wsl\data\ext4.vhdx
这是WSL的虚拟机文件。这个文件看起来是只增长,不回收硬盘空间的,所以,需要手动回收硬盘空间。
step1
停止所有wsl
wsl --shutdown
python
运行
step2
运行diskpart释放空间
依次执行,执行一个,回车一个,记得替换路径为你自己的用户名
diskpart
select vdisk file="C:\Users\<你的用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
python
运行
❗注意事项:压缩操作不会删除你的容器或数据,是 安全的;
compact vdisk 只会释放那些已经在 Linux 系统内部被标记为“已删除”的空间;
请确保 Docker Desktop 没有在运行,或者至少 WSL 的 Docker 后端(即 ext4.vhdx)没有在使用中,否则会提示无法挂载;
建议在执行前:退出 Docker Desktop;
或在 WSL 中执行:wsl --shutdown。
⭐⭐到这里就结束了,后面是可能遇到的问题和解决方法⭐⭐
示例过程
C:\Windows\System32> diskpart
DISKPART> select vdisk file="C:\Users\<用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx"
DISKPART> attach vdisk readonly
DISKPART> compact vdisk
DISKPART> detach vdisk
DISKPART> exit
python
运行
问题
如果遇到类似失败的问题,说明 DiskPart 无法启动虚拟磁盘服务,可能是由于 "虚拟磁盘 (Virtual Disk)" 服务未运行,或者系统某些策略限制了该服务的使用。
按 Win + R,输入: services.msc,回车。
找到服务列表中的 “Virtual Disk”(中文系统可能叫“虚拟磁盘”)。
双击打开它,设置:
启动类型:手动 或 自动
然后点击【启动】
启动后,重新以管理员身份打开 cmd 再执行 diskpart。
方法二:通过命令行启动服务你也可以在管理员命令行中直接运行:
sc start vds
python
运行
如果提示服务未安装或无法启动,再尝试:
net start vds
python
运行
然后再次执行:
diskpart
python
运行
这是我的解决方法:
我遇到的是功能未启用
确认 Hyper-V 和 VHD 功能已启用
DiskPart 的 vdisk 依赖系统中的 Hyper-V 相关功能:
打开控制面板 → 程序和功能 → 启用或关闭 Windows 功能;
勾选以下内容:
✅ “Hyper-V”
✅ “虚拟机平台”
✅ “Windows 虚拟化平台”
✅ “容器(Containers)”
✅ “Windows 子系统用于 Linux”
确认这些启用后重启系统,再试一次。
这样就可以按照流程一行一行执行diskpart的命令了