Então aqui está o problema: estou usando o Ubuntu 20.04 no WSL2 no Windows 10 e notei que, após remover os arquivos no Ubuntu, não estava recuperando o espaço ocupado pelos arquivos removidos. Por exemplo: Antes de excluir arquivos no Ubuntu, ele mostrava no Windows Explorer que meu espaço livre na unidade (C:) era de cerca de 46 GB. Então, depois de excluir cerca de 10 GB de arquivos, que no meu caso eram alguns sites temporários do Gatsby, resultou em ainda menos espaço livre, em torno de 45 GB. O que eu achei muito estranho.
Então, acho que minha pergunta é: como posso recuperar esses bits não utilizados? Existe algum comando de terminal que eu possa usar ou posso fazer algo através do gui do Windows ou algo assim.
PS Minha pergunta anterior foi fechada por falta de detalhes. Espero que desta vez seja suficiente. Além disso, por favor, não rejeite isso sem algum comentário sobre o porquê, mas pelo menos me dê algumas informações sobre o porquê.
Há um problema do WSL Github aberto neste tópico. O WSL aumentará automaticamente o disco virtual (ext4.vhdx), mas reduzi-lo para recuperar o espaço não utilizado é algo que deve ser feito manualmente.
A primeira coisa que você precisa fazer é saber a localização do seu ext4.vhdx. Para uma instalação padrão do Ubuntu, deve estar em algo como
%PROFILE%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\
Depois, existem várias técnicas que você pode usar para remover o espaço não utilizado. Eu recomendo que você comece com um
wsl --shutdown
e copie o vhdx como backup para iniciar. Se você estiver executando o Docker Desktop, desligue-o também, caso contrário, ele pode inadvertidamente tentar reiniciar o WSL após o seu--shutdown
.Se você estiver no Windows Professional ou superior, poderá instalar o Hyper-V e usar o commandlet Optimize-VHD conforme descrito na edição original . .
No Windows Home (e superior), você pode usar
diskpart
conforme descrito neste comentário .Exportar a distribuição WSL e reimportá-la para uma nova instância WSL (como neste comentário ) também recuperará o espaço. Observe que você precisará redefinir o nome de usuário padrão após uma importação. Veja aqui .
Eu testei e confirmei pessoalmente a segunda e a terceira técnicas.
wsl.exe --shutdown
cd C:\Users\<user>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\
optimize-vhd -Path .\ext4.vhdx -Mode full
Quando o comando let
optimize-vhd
não estiver disponível em seu sistema, faça o seguinte:Com este script Self-elevate, você pode compactar vários vhdx de uma só vez.
btw, com um pequeno ajuste, você também pode executá-lo na inicialização ("Iniciar o Docker ao fazer login" deve ser desativado)