在日常使用 Windows Subsystem for Linux (WSL2) 时,随着文件的不断创建与删除,WSL 虚拟磁盘(如 ext4.vhdx)的体积会逐渐增大,甚至在删除文件后依然占据大量的磁盘空间。为了更有效地管理磁盘使用,微软在 2023 年9月的 WSL 更新中推出了 Sparse VHD 功能,使虚拟磁盘能够自动释放未使用的空间。

本篇文章将详细介绍如何启用 Sparse VHD 以及相关的步骤和注意事项。

Sparse VHD 的功能介绍

Sparse VHD 功能允许 WSL 的虚拟磁盘自动识别未使用的空间,并动态调整其大小。启用此功能后,当你在 WSL 中删除文件时,虚拟磁盘的大小会随着空闲空间的增多而自动减小,从而减少 ext4.vhdx 文件对硬盘空间的占用。

如何启用 Sparse VHD 功能

要启用此功能,你需要按照以下步骤进行操作。

步骤 1:编辑 .wslconfig 文件

首先,在你的用户主目录(例如 C:\Users\<YourUsername>\)下创建或编辑 .wslconfig 文件。如果你已经有 .wslconfig 文件,可以直接在其中加入以下配置:

[experimental]
sparseVhd=true

该配置启用 WSL 支持稀疏 VHD,但这只是全局配置的一部分,真正激活还需要为具体的发行版执行额外的命令。

步骤 2:关闭 WSL

在启用 Sparse VHD 之前,WSL 需要处于关闭状态。你可以使用以下命令来关闭所有正在运行的 WSL 实例:

wsl --shutdown
步骤 3:为指定的 WSL 发行版启用 Sparse VHD

使用 PowerShell 或命令提示符运行以下命令,为指定的 WSL 发行版启用 Sparse VHD:

wsl --manage <发行版名称> --set-sparse true

例如,如果你使用的是 Ubuntu-20.04,那么命令如下:

wsl --manage Ubuntu-20.04 --set-sparse true

该命令只需运行一次,之后该发行版的 Sparse VHD 功能将保持启用状态,无需每次启动时重新运行。

验证功能是否成功启用

执行完上述步骤后,WSL 会自动根据空闲的磁盘空间进行调整。为了验证虚拟磁盘的大小是否成功减小,你可以检查 ext4.vhdx 文件的大小变化。

文件路径通常位于:

C:\Users\<YourUsername>\AppData\Local\Packages\<DistroPackage>\LocalState\ext4.vhdx

通过观察该文件的大小,你可以看到未使用空间被成功释放。

注意事项

  1. 关闭 WSL:在执行 --set-sparse 命令时,WSL 必须处于关闭状态,否则命令可能无法成功执行。
  2. 持久生效:Sparse VHD 功能一旦为某个发行版启用,无需每次启动 WSL 时重新运行命令。
  3. .wslconfig 文件配置.wslconfig 中的配置是全局的,它确保 WSL 支持稀疏 VHD,但你仍需要为每个发行版手动启用。

总结

通过启用 Sparse VHD 功能,你可以自动优化 WSL2 虚拟磁盘的大小管理,避免虚拟磁盘占用过多的硬盘空间。这一功能对于那些经常在 WSL 中进行大量文件操作的用户来说尤为有用。按照本文的步骤,你可以轻松启用此功能,并确保 WSL 的虚拟磁盘始终保持高效和轻量化。

参考资料: