在WSL2中删除文件后,磁盘空间未释放怎么办
我在WSL中删掉了一些文件,但是磁盘剩余空间并没有增加,于是去搜索了相关内容,找到了原因和解决办法
1.原因分析
不同于 WSL1,WSL2 本质上是虚拟机,所以 Windows 会自动创建 vhdx 后缀的虚拟磁盘文件作为存储
这个 vhdx 后缀的虚拟磁盘文件特点是可以自动扩容,但是一般不会自动缩容
一旦有很多文件把它“撑大”,即使把这些文件删除它也不会自动“缩小”
所以删除文件后还需要我们手动进行压缩才能释放磁盘空间
2.第一步,找到并确定要压缩的虚拟磁盘文件
如果默认WSL安装在C盘,那么Linux 发行版的.vhdx文件一般都会在下面的路径中
C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
3.第二步,打开PowerShell 并顺序使用以下命令
# 关闭 WSL2 中的 linux distributions
wsl --shutdown
# 运行管理计算机的驱动器的 DiskPart 命令
diskpart
# 选择虚拟磁盘文件
select vdisk file="C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhd"
# 只读 附加磁盘镜像文件
attach vdisk readonly
# 压缩 vhdx 磁盘镜像文件
compact vdisk
# 分离 vhdx 磁盘镜像文件
detach vdisk
# 退出
exit
之后在文件资源管理器中就能看到C
盘的存储空间得到了释放