在日常使用 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通过观察该文件的大小,你可以看到未使用空间被成功释放。
注意事项
- 关闭 WSL:在执行 --set-sparse命令时,WSL 必须处于关闭状态,否则命令可能无法成功执行。
- 持久生效:Sparse VHD 功能一旦为某个发行版启用,无需每次启动 WSL 时重新运行命令。
- .wslconfig 文件配置:.wslconfig中的配置是全局的,它确保 WSL 支持稀疏 VHD,但你仍需要为每个发行版手动启用。
总结
通过启用 Sparse VHD 功能,你可以自动优化 WSL2 虚拟磁盘的大小管理,避免虚拟磁盘占用过多的硬盘空间。这一功能对于那些经常在 WSL 中进行大量文件操作的用户来说尤为有用。按照本文的步骤,你可以轻松启用此功能,并确保 WSL 的虚拟磁盘始终保持高效和轻量化。
参考资料:
- 微软开发者博客










