怎么给wsl占用的硬盘空间做下瘦身

wsl出来这些年感觉在windows里使用linux,或者ubuntu真的是方便了很多,不用搞虚拟机这些
但是也有一些明显的问题,首先就是默认它是在C盘中安装,长久使用占用的空间就会越来越大,而且对于一些临时使用占用空间后,即使删除了文件,windows并不会对已经扩容的虚拟磁盘文件进行缩容
所以就介绍下怎么手动来给它释放空间
首先可以看下安装的系统有哪些

1
wsl -l -v

比如我这就是一个ubuntu 20.04

1
2
  NAME            STATE           VERSION
* Ubuntu-20.04 Running 2

然后我们需要寻找下虚拟磁盘的所在位置
我的是在
C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
可以按文件名 ext4.vhdx 进行查找
当然在操作之前我们还是要做好备份工作,并且还有特殊功效

1
2
3
4
# 首先进行关机
wsl --shutdown
# 然后做打包备份到制定路径,放心这里打包的大小就是实际大小
wsl --export Ubuntu-20.04 X:\Ubuntu-20.04.tar

然后我们运行 diskpart 命令,这是windows用来管理磁盘文件的工具
运行后会进入到 diskpart 工具的命令状态下

1
select vdisk file="C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx"

接着我们再运行select vdisk命令来选中这个文件
选中以后会提示
DiskPart 已成功选择虚拟磁盘文件。
接着运行压缩命令

1
compact vdisk

运行时会有个压缩进度展示,压缩完成后会显示以下内容

1
2
3
  100 百分比已完成

DiskPart 已成功压缩虚拟磁盘文件。

最终我们运行

1
detach vdisk

分离命令就可以了
这样子我们的wsl因为扩容后无法自动收回的空间就被我们压缩出来了