Loading

清理WSL2的磁盘占用

翻译自 How to Shrink a WSL2 Virtual Disk

我是WSL的铁粉,特别是 WSL2,它使用虚拟技术提高了 WSL 的性能和兼容性(例如 Docker )。不过,因为 WSL2 使用了虚拟磁盘,意味着它可能只有 15GB 的数据,但是虚拟磁盘占用了 100GB 的空间。如果你往 WSL2 中放了大量的数据,然后就删掉,会发现WSL2的磁盘占用没有降下来,这就是虚拟磁盘造成的。

我找了一些方法来去压缩 WSL2 的虚拟磁盘,发现了一个对我有效的方法,希望它对你来说也同样适用。

准备工作

在压缩虚拟磁盘前,需要将 WSL2 先关闭。

可以先使用命令行来检查它的状态:

wsl.exe --list --verbose

如果没有关闭(状态是 Running ),再用命令行去关闭它:

wsl.exe --terminate 

关闭WSL2

虽然这个方法对我来说有效,但你的环境可能跟我不同,这样做可能会导致你的数据发生损坏,建议你先备份一下WSL2的数据

使用 diskpart 来压缩WSL2的虚拟磁盘

我发现可以使用 diskpart 工具来压缩WSL2的虚拟磁盘,它会根据WSL2中数据的大小来重新申请磁盘空间。

在命令行启动 diskpart 工具:

diskpart

它会自己打开一个新的窗口。

diskpart

接下来需要确定虚拟磁盘文件的位置。

WSL2的虚拟磁盘文件在C:\Users\{user}\AppData\Local\Packages\下面,不同的WSL2发行版对应的名称不同,例如 PengwinWhitewaterFoundryLtd.CoUbuntuCanonicalGroupLimitedDebian
TheDebianProject 。找到了你的 WSL2 的文件夹,就能在它下面找到 LocalState\ext4.vhdx 这个磁盘文件。

例如,我的磁盘文件是 C:\Users\ontheroad\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

diskpart 选择这个文件:

select vdisk file="{vhdx文件名}"

再执行压缩命令:

compact vdisk

压缩过程需要几分钟。

压缩磁盘文件

压缩完成后可以关掉 diskpart 窗口,整个过程也完成了。可以再看看文件管理器中的磁盘使用,应该减少了很多。

posted @ 2021-01-02 13:42  enrio  阅读(23543)  评论(3编辑  收藏  举报