Corrigindo uso de disco do WSL compactando o VHD
Passo a passo para recuperar espaço de disco no WSL2 compactando o arquivo VHD. Solução rápida para problema de crescimento excessivo do disco.
Corrigindo uso de disco do WSL compactando o VHD
O Windows Subsystem for Linux (WSL) deixa você rodar uma distro Linux no Windows. Às vezes o disco cresce mesmo após apagar arquivos porque o VHD (.vhdx) não encolhe sozinho.
Veja um passo a passo rápido para compactar o .vhdx e recuperar espaço.
Context
O WSL2 guarda o sistema de arquivos em ext4.vhdx. Mesmo apagando arquivos, o .vhdx mantém o tamanho até ser compactado. Workloads pesados com arquivos grandes deixam isso mais visível.
Para resolver, desligue o WSL e compacte o .vhdx.
Step-by-Step Solution
Siga estes passos para liberar espaço:
1. Shut Down WSL
Garanta que nenhuma distribuição WSL esteja rodando:
1
wsl --shutdown
Isso desliga o WSL por completo e libera o .vhdx.
2. Locate the VHDX File
Descubra o caminho do .vhdx da distro (troque <distribution-name> por algo como Ubuntu-24.04):
1
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"
Exemplo de saída:
1
C:\Users\YourUser\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx
3. Compact the VHDX File
Com o caminho em mãos, compacte o disco com o DiskPart:
- Open PowerShell as Administrator.
- Run the
diskpartcommand to enter the DiskPart utility. -
Select the virtual disk file using this command:
1
select vdisk file="C:\Users\YourUser\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
-
Mount the disk as read-only:
1
attach vdisk readonly
-
Now, compact the disk:
1
compact vdisk
-
Finally, detach the virtual disk:
1
detach vdisk
4. Restart WSL
After successfully compacting the .vhdx file, restart WSL:
1
wsl
Reinicia o WSL já com o disco compactado.
Conclusion
Assim você recupera espaço do WSL sem reinstalar a distro. Rode isso depois de grandes deleções ou periodicamente em workloads pesados.
References: