跳转至

WSL存储文件占用空间不会减少的解决方法

WSL(特指WSL2)在实现方式上与虚拟机类似,它会以一个磁盘映像文件的形式存储在电脑上。其一个特性(也可能是Bug)是所占空间只会不断扩大,而当其中的文件被删除后,磁盘映像文件占用的空间并不会自动减少,而是会保持其到达的最大值。

解决方法

尽管磁盘映像文件不会自动减少占用空间,但是可以通过下列方法手动压缩其大小。

首先找到需要压缩的WSL2系统的磁盘映像文件所在的位置。 alt text

其文件名一般是形如ext4.vhdx这样的。

打开PowerShell,首先关闭WSL2子系统(如果有多个分发版,需要指定关闭的分发版名称):

PowerShell
wsl --shutdown

然后打开diskpart工具:

PowerShell
diskpart

在diskpart中,运行

PowerShell
select vdisk file="G:\Ubuntu20.04\ext4.vhdx" 
选定需要压缩的磁盘映像文件。其中file后面的路径需要替换为实际的磁盘映像文件路径。

然后运行

PowerShell
compact vdisk
对其进行压缩。