阅读时长 ≈1 分, 9 秒
WSL 2 使用虚拟硬盘 (VHD) 来存储 Linux 文件。 在 WSL 2 中,VHD 在 Windows 硬盘驱动器上表示为 .vhdx 文件。WSL 2 VHD 使用 ext4 文件系统, 此 VHD 会自动调整大小以满足存储需求。
但是,在删除文件后,VHD 不会自动降低空间占用。这时候就需要手动执行压缩,压缩只会将 VHD 占用的磁盘空间缩小,不会改变 VHD 内文件内容。并且在后续使用 WSL 2 时,VHD 仍然会自动调整大小。
若要压缩 VHD,请执行以下操作:
- 使用
wsl --shutdown
命令终止所有 WSL 实例- 你也可以使用
wsl -l
来获取实例名(”distro”),并使用wsl -t <distro>
来终止需要压缩的单个实例 - 例如:
wsl -t Ubuntu-20.04
- 你也可以使用
- 查找你的分发版安装包名称(”PackageFamilyName”):
- 使用 PowerShell(其中,”distro” 是分发版名称)输入以下命令:
Get-AppxPackage -Name "*<distro>*" | Select PackageFamilyName
- 例如:
Get-AppxPackage -Name "*Ubuntu*" | Select PackageFamilyName
- 使用生成的
PackageFamilyName
查找 WSL 2 安装使用的 VHD 文件fullpath
,这将是你的pathToVHD
。 若要查找完整路径:- 在“开始”菜单中,输入“%LOCALAPPDATA%\Packages”并选择打开 %LOCALAPPDATA%\Packages 文件夹。
- 接下来,搜索分发版的
PackageFamilyName
。 打开该文件夹 (如 CanonicalGroupLimited.Ubuntu20.04onWindows_79xxxxx)。 - 在
PackageFamilyName
文件夹中,打开“LocalState”文件夹并找到<disk>.vhdx
文件。 - 复制该文件的路径,它应如下所示:
%LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx
- 例如,Ubuntu 20.04 的
<pathToVHD>
应如下所示:%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79xxxx\LocalState\ext4.vhdx
。
- 通过完成以下命令压缩 WSL 2 VHD 的大小:
- 以管理员权限打开 Windows 命令提示,然后输入:
diskpart
DISKPART> select vdisk file="<pathToVHD>"
DISKPART> compact vdisk
- 等待虚拟磁盘文件压缩完成
DISKPART> exit