压缩 WSL 2 的虚拟磁盘文件
压缩 WSL 2 的虚拟磁盘文件

压缩 WSL 2 的虚拟磁盘文件

阅读时长 ≈1 分, 9 秒

WSL 2 使用虚拟硬盘 (VHD) 来存储 Linux 文件。 在 WSL 2 中,VHD 在 Windows 硬盘驱动器上表示为 .vhdx 文件。WSL 2 VHD 使用 ext4 文件系统, 此 VHD 会自动调整大小以满足存储需求。

但是,在删除文件后,VHD 不会自动降低空间占用。这时候就需要手动执行压缩,压缩只会将 VHD 占用的磁盘空间缩小,不会改变 VHD 内文件内容。并且在后续使用 WSL 2 时,VHD 仍然会自动调整大小。

若要压缩 VHD,请执行以下操作:

  1. 使用 wsl --shutdown 命令终止所有 WSL 实例
    • 你也可以使用 wsl -l 来获取实例名(”distro”),并使用 wsl -t <distro> 来终止需要压缩的单个实例
    • 例如:wsl -t Ubuntu-20.04
  2. 查找你的分发版安装包名称(”PackageFamilyName”):
    • 使用 PowerShell(其中,”distro” 是分发版名称)输入以下命令:
    • Get-AppxPackage -Name "*<distro>*" | Select PackageFamilyName
    • 例如: Get-AppxPackage -Name "*Ubuntu*" | Select PackageFamilyName
  3. 使用生成的 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
  4. 通过完成以下命令压缩 WSL 2 VHD 的大小:
    • 以管理员权限打开 Windows 命令提示,然后输入:
    • diskpart
    • DISKPART> select vdisk file="<pathToVHD>"
    • DISKPART> compact vdisk
    • 等待虚拟磁盘文件压缩完成
    • DISKPART> exit

发表回复