Laravel: Trabalhando com whereHas e with de forma simples
Quando trabalhamos com Eloquent no Laravel, frequentemente precisamos realizar consultas baseadas em relacionamentos entre modelos. Para isso, o Laravel oferece... Leia mais
Desenvolvedor de Software
O ext4.vhdx é o disco virtual do WSL. Ele cresce conforme você usa, mas não encolhe sozinho quando você apaga coisas dentro do WSL. Por isso, mesmo que você rode docker system prune e libere 80GB, o arquivo .vhdx no Windows continua com o mesmo tamanho. O diskpart + compact vdisk é o que devolve esse espaço pro Windows.
Se você rodar o compact vdisk antes de limpar o Docker, ele não vai liberar quase nada, porque o espaço ainda está ocupado de verdade.
Olhando seus números: 57.92GB recuperáveis em imagens + 30.06GB em build cache. Tem quase 90GB pra recuperar aí.
bash# Remove build cache (os 30GB)
docker builder prune -a -f
# Remove imagens não usadas por nenhum container (os ~58GB)
docker image prune -a -f
# Remove containers parados
docker container prune -f
# Remove volumes órfãos (cuidado, veja abaixo)
docker volume prune -f
Atenção com volume prune: ele remove volumes que não estão anexados a nenhum container. Se você tem um volume com dados do banco do proseleta e o container está parado no momento, esse volume vai junto. Antes de rodar, confere:
docker volume ls
Se tiver algum volume importante (tipo proseleta_mysql_data ou similar), pula o volume prune e remove só os que você sabe que são lixo:
docker volume rm nome_do_volume
Atalho que faz tudo de uma vez (menos volumes):
docker system prune -a -f
Depois confere quanto sobrou:
docker system df
Agora sim, no PowerShell do Windows como Administrador (não no WSL):
wsl --shutdown
Espera uns 10 segundos pra garantir que o WSL desligou de verdade. Depois:
diskpart
Vai abrir o prompt do diskpart. Antes de mais nada, você precisa achar o caminho real do seu ext4.vhdx. Aquele {seuUsuario} e {caminho_unico_por_maquina} são placeholders.
Abra o Explorer do Windows e navegue até:
C:\Users\<SeuUsuárioWindows>\AppData\Local\Packages\
Procure uma pasta que começa com CanonicalGroupLimited.Ubuntu... (o nome completo varia, algo tipo CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc). Dentro dela, vá em LocalState\ e confirme que tem o arquivo ext4.vhdx. Copia o caminho completo.
Se você usa Docker Desktop com o backend WSL2, o disco que cresce mais é geralmente o do Docker, não o do Ubuntu. Ele fica em:
C:\Users\<SeuUsuário>\AppData\Local\Docker\wsl\disk\docker_data.vhdx
ou em versões mais novas:
C:\Users\<SeuUsuário>\AppData\Local\Docker\wsl\data\ext4.vhdx
Vale compactar os dois.
De volta ao diskpart, com o caminho em mãos:
select vdisk file="C:\Users\paulo\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
O attach vdisk readonly é importante — sem ele, o compact vdisk em versões mais recentes do Windows reclama. Algumas versões funcionam sem, mas com o readonly funciona sempre.
Pra compactar o disco do Docker, sai do diskpart, repete o wsl --shutdown (por garantia) e roda de novo com o outro caminho.
Optimize-VHDSe você tem Windows Pro/Enterprise com Hyper-V habilitado, dá pra fazer tudo em uma linha no PowerShell admin:
wsl --shutdown
Optimize-VHD -Path "C:\Users\paulo\AppData\Local\Docker\wsl\disk\docker_data.vhdx" -Mode Full
No Windows Home não funciona porque não tem o módulo Hyper-V.
Antes de começar, anota o tamanho atual do .vhdx (botão direito → propriedades). Depois de compactar, confere de novo. Você deveria ver uma redução considerável — provavelmente algo entre 60 e 80 GB no seu caso, dado o que o docker system df mostrou.
Se a compactação não reduzir muito, geralmente é porque (1) o Docker não foi limpo antes, ou (2) o WSL não foi totalmente desligado e o .vhdx ainda estava em uso. Roda wsl --list --running no PowerShell pra confirmar que nada está rodando antes do compact.
Quando trabalhamos com Eloquent no Laravel, frequentemente precisamos realizar consultas baseadas em relacionamentos entre modelos. Para isso, o Laravel oferece... Leia mais
Nesta semana o Postgres vem me desafiando, e meu pc também, porque por algum motivo o PGADMIN está demorando uma... Leia mais
No dia de hoje(17/08/2022) me deparei com o seguinte problema onde recebiamos um array javascript contendo textos e cujas chaves... Leia mais
Adicionar e remover classes CSS com JQUERY é uma atividade muito simples, mas também através do javascript puro conseguimos o... Leia mais