WSL 删除文件后,并未释放磁盘空间,所以需要在Windows上使用diskpart命令进行VHD空间的释放
背景
在 WSL 中,删除文件后,并不会直接释放磁盘空间,因为 WSL 使用虚拟硬盘 (VHD) 文件来存储整个 Linux 文件系统。也就是说,WSL 中删除文件时,对于 Windows 来说,这个 VHD 文件大小并没有变化。
解决方案
首先,打开 PowerShell,先关闭正在运行的 WSL:
运行 diskpart 命令(需要管理员权限):
1
2
3
4
5
6
| diskpart
select vdisk file="C:\Users\[YourUsername]\AppData\Local\Packages\[WSLDistro]\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
|
这样就可以将 VHD 占用的空间缩小。
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| $ diskpart
Microsoft DiskPart 版本 10.0.22621.1
Copyright (C) Microsoft Corporation.
在计算机上: DESKTOP-LMR
DISKPART> select vdisk file="C:\Users\LMR\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx"
DiskPart 已成功选择虚拟磁盘文件。
DISKPART> attach vdisk readonly
100 百分比已完成
DiskPart 已成功连接虚拟磁盘文件。
DISKPART> compact vdisk
100 百分比已完成
DiskPart 已成功压缩虚拟磁盘文件。
DISKPART> detach vdisk
DiskPart 已成功分离虚拟磁盘文件。
DISKPART> exit
退出 DiskPart...
|