经常使用WSL2的朋友有时候会遇到release版之前用过的文件都被删除了,而Windows下release版VHDX仍然占用巨大空间的情况。这个时候就很容易了可以想到用diskpartdiskpart>selectvdiskfile="C:\Users\\AppData\Local\Packages\\LocalState\ext4.vhdx"diskpart>compactvdisk或使用Hyper-V提供的Optimize-VHDPS>Optimize-VHD-ModeFull-Verbose"C:\Users\\AppData\Local\Packages\\LocalState\ext4.vhdx"到shrink,执行后VHDX文件确实变小了,但没那么小。这时候应该进入WSL2,运行zerofree将ext4文件系统中未使用的块用零填充,但是zerofree不能在已经挂载为rw的文件系统上运行,那么就把文件系统挂载为readonly即可。wsl2>mount/dev/sda-oremount,rowsl2>zerofree/dev/sda运行后关闭WSL2PS>wsl--shutdownwindows下再运行初始diskpartcompact或Optimize-VHD可以将WSL2的VHDX缩小到一个大小非常接近使用的空间。仅供参考,不能使用Resize-VHD缩小WSL2的VHDX,会报“Unabletoadjustthesizeofthevirtualdisk”“Unabletocompletetherequestoperationbecausethelowersafesizeofthevirtualdiskcouldnotbedetermined.这可能是因为分区表丢失或损坏。(0xC03A0026)。“报错好像是因为WSL2的VHDX里面没有分区表,整个分区都是EXT4格式。