Ir para o conteúdo

Como reduzir tamanho disco do WSL2

O WSL2 é uma ótima ferramenta para desenvolvedores que utilizam Windows. Com ele, você pode rodar um sistema Linux dentro do Windows, sem precisar de uma máquina virtual. Porém, com o tempo, o disco do WSL2 pode ficar muito grande, e isso pode ser um problema. Neste artigo, vou mostrar como reduzir o tamanho do disco do WSL2, comumente chamado de “wsl shrink”.

Modo automático#

A forma mais simples de reduzir o tamanho do disco do WSL2 é utilizando um programa chamado wsl-manager. Ele não é um software oficial, mas facilita bastante a vida, já que não terá que ficar digitando diversos comandos no terminal.

Modo manual#

Para reduzir o tamanho do disco do WSL2, precisaremos passar por alguns passos:

  1. Descobrir onde está o disco do WSL2
  2. Desligar a distribuição do WSL2
  3. Compactar o disco

Descobrir onde está o disco do WSL2#

Regedit#

Para descobrir onde está o disco do WSL2 existem duas maneiras. A que recomendo, mas requer muito cuidado é abrir os registros do Windows e procurar pelo disco do WSL2.

Para isso, abra o regedit e navegue até a chave HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss. Lá, você verá existem algumas chaves e uma delas será a chave da distribuição do WSL2 que você quer diminuir.

Dentro dessa chave, haverá uma chave chamada BasePath. O valor desse BasePath corresponde ao caminho para o disco do WSL2. Salve o valor do BasePath em algum lugar, pois vamos precisar dele mais tarde.

Imagem dos registros do Regedit

Observação

Veja que além do BasePath, existem outras chaves. Essas outras chaves podem ser do seu interesse para outras coisas, como por exemplo, o usuário padrão ou nome da distribuição.

Explorador de arquivos#

A outra maneira é abrindo a pasta C:\Users\%USERNAME%\AppData\Local\Packages e procurando por um arquivo chamado ext4.vhdx. Esse arquivo é o disco do WSL2. Mas tome cuidado, pois pode ter mais de um arquivo com esse nome. O arquivo que você quer é o que está dentro da pasta da distribuição do WSL2 que você deseja diminuir.

Desligar a distribuição do WSL2#

É necessário desligar a distribuição do WSL2 para que o disco pare de ser usado. Portanto, abra o terminal e digite o comando abaixo:

CUIDADO!

O comando a seguir irá desligar todas as distribuições do WSL2.

wsl --shutdown

Vale ressaltar que o subsistema estiver sendo usado por algum programa, pode acontecer do sistema ser reiniciado. Então é bom conferir se o sistema foi desligado corretamente. Basta executar o comando abaixo:

wsl --list --verbose

Isso deve gerar uma saída parecida com a imagem abaixo. Se a distribuição estiver desligada, o campo State deverá conter o valor Stopped.

Exemplo de saída do comando

Compactar o disco#

Agora que a distribuição do WSL2 está desligada, podemos compactar o disco.

CUIDADO!

Se se seu sistema for interrompido durante o processo de compactação ou a distribuição for executada durante este processo, o disco pode ficar corrompido. Então, se tiver receio faça um backup do disco antes de compactar.

Para isso, vamos utilizar o programa diskpart. Abra o terminal e digite o comando abaixo:

diskpart

Isso irá abrir o programa diskpart. Agora, compactar o disco da distribuição. Para isso, digite o comando abaixo:

select vdisk file=<caminho_do_arquivo_ext4.hvdl>
compact vdisk
exit

Onde <caminho_do_arquivo_ext4.hvdl> é o caminho para o arquivo ext4.vhdx que você salvou anteriormente. Por exemplo, se o arquivo estiver na pasta C:\Users\meu_usuario\AppData\Local\Packages\Ubuntu\LocalState\ext4.vhdx, o comando ficaria assim:

select vdisk file=C:\Users\meu_usuario\AppData\Local\Packages\Ubuntu\LocalState\ext4.vhdx
compact vdisk
exit

Depois disso o tamanho do arquivo ext4.vhdx já deve ter diminuído. Agora você poderá voltar a usá-lo normalmente.

Observações#

Há outra forma de reduzir o tamanho do disco do WSL22, que é utilizando o comando optimize-vhd. Porém, esse comando não funciona em algumas versões do Windows.

Referências#