导出并取消注册docker-desktop-data后,哪个WSL发行版正在使用AppData \ Local \ Docker \ wsl \ data \ ext4.vhdx

问题描述

由于WSL的空间消耗增加,我不得不将WSL发行版移动到另一个磁盘。
Ubuntu
docker-desktop
docker-desktop-data

我使用了这些命令。
wsl --shutdown
wsl --export (on all three of those distros)
wsl --import (already on another disk)

现在我的环境运行良好,但是 AppData \ Local \ Docker \ wsl \ data 中的 ext4.vhdx 仍然存在,由于以下原因我无法将其删除它仍在使用。

当我看过程的麻烦时

enter image description here

它仍然被系统使用,并不能说明很多问题。

如果我运行WSL --shutdown,则磁盘 E:中存在的所有虚拟磁盘都将丢失其句柄,而磁盘 C:中的虚拟磁盘仍在使用。

>

enter image description here

您知道如何找出WSL的哪一部分,甚至WSL正在使用吗? 由于关闭WSL不会删除该句柄,因此它可能会被其他东西使用。 它不是使用桌面的docker-for-desktop。

感谢您的建议。

解决方法

从WSL1升级到WSL2有点混乱,但是将docker-desktop重置为其默认设置,然后从WSL中清除数据(使用docker-desktop的问题排查)为我清除了此信息。

,

Docker Desktop for Windows 使用 WSL2,将所有图像和容器文件存储在单独的虚拟卷 (vhdx) 中。这个虚拟硬盘文件可以在需要更多空间(达到一定限制)时自动增长。不幸的是,如果您回收一些空间,即通过删除未使用的图像,vhdx 不会自动缩小。幸运的是,您可以通过在 PowerShell 中(以管理员身份)调用此命令来手动减小其大小:

Optimize-VHD -Path $Env:LOCALAPPDATA\Docker\wsl\data\ext4.vhdx -Mode Full

如果上述命令失败

The system failed to compact 'C:\Users\Maxx\AppData\Local\Docker\wsl\data\ext4.vhdx':
The process cannot access the file because it is being used by another process. (0x80070020).

退出 Docker Desktop 或使用该文件停止服务和任务:

net stop com.docker.service
taskkill /IM "docker.exe" /F
taskkill /IM "Docker Desktop.exe" /F
wsl --shutdown

我回收了 40Gb 中的 15Gb。

Origin 的解决方案。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...