WSL/Docker 虚拟硬盘瘦身指南(Windows)
Windows Subsystem for Linux(WSL) 为 Windows 用户提供了方便好用的 Linux 应用层接口,而 Docker 提供了良好的容器服务。这些系统的本质依旧是虚拟机,其硬盘使用 vhdx
镜像文件,支持自动扩容,但无法自动缩容,导致该文件会逐渐“吃胖”,让本就不大的硬盘雪上加霜。
这个文件一般储存在 ~/AppData/Local/Packages/XXX/LocalState/YYY.vhdx
(WSL) 或 ~/AppData/Local/Docker/wsl/data/YYY.vhdx
(使用 WSL 的 Docker)。
XXX
对应着你选择的 WSL 发行版YYY
一般对应着该系统的文件系统,如ext4
如下图所示。
瘦身方法
启动 Powershell,关闭 WSL:
1 | wsl --shutdown |
使用 Docker 则需关闭所有 container、退出 Docker Desktop。
进入 diskpart:
1 | diskpart |
在 diskpart 中选择该磁盘文件(其中路径应该替换为你的文件路径):
1 | select vdisk file="[YOUR_VHDX_FILEPATH_HERE]" |
然后执行硬盘缩容:
1 | compact vdisk |
FAQ
Service Error
当遇到如下报错:
1 | Virtual Disk Service error: |
则以 readonly 模式重新连接硬盘:
1 | detach vdisk |
然后执行硬盘缩容即可。