A Forma Correta de Liberar Espaço no WSL 2
O que é o WSL 2?
O WSL 2 (Windows Subsystem for Linux 2) é a versão atual e padrão do subsistema que permite executar um ambiente Linux completo dentro do Windows. Ele utiliza uma máquina virtual leve para rodar um kernel Linux real, oferecendo compatibilidade total com chamadas de sistema e desempenho significativamente superior ao WSL 1.
Essa abordagem torna o WSL 2 ideal para desenvolvedores que precisam de ferramentas baseadas em Linux integradas ao ambiente Windows, sem a necessidade de instalar uma máquina virtual tradicional ou realizar dual boot.
Como funciona o armazenamento de disco do WSL no Windows
O WSL 2 utiliza um disco virtual dinâmico para armazenar todos os arquivos do sistema Linux, independentemente da distribuição utilizada. Esse disco é um arquivo com a extensão .vhdx (Virtual Hard Disk), armazenado no sistema de arquivos do Windows.
Esse arquivo funciona como se fosse um HD interno dedicado ao Linux, contendo todo o sistema de arquivos da sua distribuição, como Ubuntu, Debian, entre outras.
Uma característica importante desse disco virtual é que ele é dinâmico: ele cresce automaticamente à medida que você adiciona mais arquivos ou instala pacotes dentro do WSL. Isso significa que você não precisa se preocupar com alocação manual de espaço, pois o WSL vai expandindo esse disco conforme necessário.
Dinâmica da liberação de espaço
O ponto negativo é que, mesmo que você apague arquivos ou remova pacotes dentro do WSL, o tamanho do arquivo .vhdx não diminui automaticamente. O espaço dentro do disco é marcado como “livre” para o Linux, mas o tamanho do arquivo no Windows continua o mesmo, mantendo o tamanho físico.
Se você copiar um arquivo de 5 GB para o WSL, o .vhdx crescerá proporcionalmente. No entanto, ao deletar esse mesmo arquivo, o espaço será reutilizável dentro do Linux, mas o tamanho do .vhdx continuará com os 5 GB a mais no armazenamento do seu disco.
Com o tempo, esse comportamento pode gerar uso desnecessário de espaço no armazenamento interno, especialmente se você instala e remove muitos pacotes, arquivos grandes, ou trabalha com ferramentas como Docker.
A única forma de realmente recuperar esse espaço e reduzir o tamanho do .vhdx no Windows é realizando uma compactação manual do disco.
Liberando o espaço do disco dinâmico manualmente
Para recuperar esse espaço e realmente reduzir o tamanho físico do arquivo .vhdx, é necessário compactar o disco manualmente. Você pode fazer isso utilizando a ferramenta diskpart, que já vem com o Windows.
A primeira etapa é você identificar onde está o arquivo da sua distro, chamado ext4.vhdx, que geralmente está em:
C:\Users\<SeuUsuario>\AppData\Local\Packages\<Distro>\LocalState
ou
C:\Users\<SeuUsuario>\AppData\Local\wsl\<Distro>
Encontrando o diretório correto, simplesmente utilize o diskpart, que é uma ferramenta de linha de comando do Windows usada para gerenciar discos físicos e virutais (VHD e VHDX), permitindo executar tarefas como criar, excluir e formatar partições, por exemplo.
Então, abra o PowerShell como administrador e execute os seguintes comandos:
wsl --shutdown
diskpart
select vdisk file="C:\..\..\..\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
Seguindo a ordem acima, você vai:
- Desligar o WSL;
- Inicia a ferramenta diskpart, que permite o gerenciamento de discos via linha de comando;
- Seleciona o disco virtual que se deseja manipular. O comando “vincula” as operações seguintes a esse arquivo específico;
- Anexa/”monta” o disco virtual ao sistema, permitindo que o Windows o trate como se fosse um disco físico. O modificador readonly garante que não se altere dados dentro do disco durante o processo;
- Compacta o disco virtual, removendo os blocos de dados “marcados como livres”, reduzindo o tamanho físico do arquivo .vhdx;
- Desanexa/”desmonta” o .vhdx do sistema de forma segura, encerrando a sessão de uso;
- Sai do ambiente do diskpart e retorna ao prompt normal do PowerShell.
Liberando o espaço do disco dinâmico de forma automática
A Microsoft introduziu uma funcionalidade experimental que permite habilitar a compactação automática dos discos virtuais usados pelo WSL 2. Essa funcionalidade depende de uma configuração no arquivo .wslconfig.
Ao ativar a opção sparseVhd, todos os discos .vhdx recém-criados serão configurados como discos esparsos, o que permite que o Windows libere espaço automaticamente à medida que o conteúdo interno é apagado, ou seja, a compactação deixa de ser um processo manual.
Leia mais na documentação oficial da Microsoft sobre as configurações experimentais do WSL.
Post realizado originalmente no meu blog: freitaschz.com
Referências: