WSL发行版磁盘镜像占用空间过大,删除大文件后未释放空间的解决办法咨询
WSL发行版磁盘镜像占用空间过大,删除大文件后未释放空间的解决办法咨询
嗨,这种情况在WSL里太常见啦!你删除了大文件,但WSL的虚拟磁盘(.vhdx)不会自动缩小空间,得咱们手动操作来释放。别担心,步骤很简单,跟着来就行:
- 第一步:先确认WSL里的大文件已经彻底删除(包括回收站里的哦),然后退出WSL终端,打开管理员权限的PowerShell或者命令提示符。
- 第二步:关闭所有WSL实例,输入命令:
wsl --shutdown,确保所有WSL相关进程都停掉,不然后面操作会失败。 - 第三步:(可选但推荐)先在WSL内部做前置清理:如果还没关机的话,先在WSL里执行
sudo fstrim /,这个命令会标记文件系统里的空闲空间,让后面的压缩更彻底。执行完再回到Windows执行wsl --shutdown。 - 第四步:启动磁盘工具压缩镜像:
- 在PowerShell里输入
diskpart,回车进入diskpart环境。 - 输入
select vdisk file="你的WSL磁盘镜像路径",这里要替换成实际路径,比如默认Ubuntu的路径大概是C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04Lts_79rhkp1fndgsc\LocalState\ext4.vhdx,记得把路径用双引号括起来。 - 接着输入
attach vdisk readonly,只读挂载虚拟磁盘,避免操作时出意外。 - 输入
compact vdisk,这个命令会开始压缩磁盘,释放那些被删除文件占用的空闲空间,等待完成即可。 - 最后输入
detach vdisk,卸载虚拟磁盘。
- 在PowerShell里输入
做完这些,你再去看WSL的.vhdx文件大小,应该就已经变小了,Windows硬盘的可用空间也会回来啦!
小提醒:操作前最好备份一下.vhdx文件,以防万一;另外这个方法只适用于WSL 2,WSL 1因为直接使用Windows文件系统,一般不会有这种磁盘空间不释放的问题。
备注:内容来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

