Post

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

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:

  1. Open PowerShell as Administrator.
  2. Run the diskpart command to enter the DiskPart utility.
  3. 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"
    
  4. Mount the disk as read-only:

    1
    
     attach vdisk readonly
    
  5. Now, compact the disk:

    1
    
     compact vdisk
    
  6. 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:

Esta postagem está licenciada sob CC BY 4.0 pelo autor.