Due architetture, due modelli di archiviazione
WSL1 non ha alcun kernel Linux: traduce le system call Linux in chiamate Windows in tempo reale, e i suoi file stanno in una cartella normale — storicamente %LOCALAPPDATA%\Packages\<Distro>\LocalState\rootfs — pienamente visibile agli strumenti Windows. Lo rende leggero sul disco e veloce quando gli script toccano file su /mnt/c, ma la traduzione è incompleta: Docker, systemd e tutto ciò che vuole syscall esotiche non funziona. WSL2 fa girare un kernel Linux vero in una utility VM leggera, che sistema la compatibilità — ma l'intero filesystem della distro ora vive dentro un ext4.vhdx: un'immagine disco virtuale che Windows monta ma non interpreta.
Il vhdx sta sotto %LOCALAPPDATA%\Packages per le distro installate dallo Store e sotto %LOCALAPPDATA%\wsl per le installazioni più recenti, e ha una proprietà odiosa: cresce su richiesta e non si restringe mai da solo. Eliminare file dentro la distro libera spazio dentro il disco virtuale, ma il file .vhdx mantiene il suo livello massimo finché non lo compattate. Controllare la dimensione del file in Esplora risorse subito dopo una grande pulizia interna è la delusione classica: il numero non si è mosso.
Dove ciascuno nasconde i suoi gigabyte
Nessuna delle due versioni pulisce dopo di sé, e lo spazio sparisce in sorprendentemente pochi posti:
- L'ext4.vhdx di WSL2 — ogni distro ne ha uno; un setup di sviluppo carico di Docker lo spinge di routine oltre 30 GB
- Il disco dati di Docker Desktop stesso (docker_data.vhdx), che segue la stessa regola del solo-crescere
- La cartella rootfs di WSL1 — modesta al confronto, ma le vecchie distro abbandonate tengono ancora l'intera installazione
- Cache di pacchetti e build Linux dentro la distro — cache di apt, node_modules, target/ e cartelle di build che gonfiano il vhdx in modo permanente
- I backup di wsl --export e le immagini di distro scaricate, parcheggiate in Download e dimenticate
Recuperare spazio senza sfasciare la distro
Prima pulite dentro: apt autoremove e apt clean, docker system prune in Docker Desktop, purge delle cache di npm e pip — tutto ciò che svuota il disco virtuale prima di stringere il suo contenitore. Poi eseguite wsl --shutdown, perché una distro in esecuzione blocca il suo vhdx, e compattate l'immagine: Optimize-VHD con l'opzione -Mode Full se avete il tooling Hyper-V, oppure diskpart con select vdisk file="<path>", attach vdisk, compact vdisk, detach vdisk su qualsiasi Windows. Le versioni recenti di WSL offrono wsl --manage <Distro> --set-sparse true, che lascia il vhdx rilasciare spazio in automatico — un'impostazione genuinamente migliore sul lungo periodo.
Due ultime risorse si meritano i loro nomi. wsl --export impacchetta la distro in un .tar che potete importare su un altro disco con wsl --import — il modo pulito di spostare un'installazione WSL2 da un C: pieno. E wsl --unregister <Distro> elimina la distro e il suo vhdx per intero — quel comando non ha undo, quindi trattatelo come la bomba che è. Già che ci siete, mettete un tetto all'appetito della VM con un file .wslconfig che limiti memoria e processori; le VM WSL2 inattive altrimenti tengono gigabyte di RAM per niente.
Domande e risposte
Come riduco il file ext4.vhdx di WSL2?
Prima pulite dentro la distro, eseguite wsl --shutdown, poi compattate il vhdx con diskpart (select vdisk file, attach vdisk, compact vdisk, detach vdisk) o Optimize-VHD. Su WSL recente, wsl --manage <Distro> --set-sparse true fa rilasciare lo spazio in automatico.
Meglio WSL1 o WSL2?
WSL2 è il default e l'unica scelta per Docker, systemd e tutto ciò che serve di un kernel vero. WSL1 vince ancora per il lavoro leggero da riga di comando che soprattutto legge e scrive file sui vostri dischi Windows — niente VM, niente vhdx, niente overhead di memoria.
Scopri cosa include la licenza prima dell'acquisto.
La prova singola di 30 minuti include gli strumenti essenziali. Le funzioni PRO restano bloccate finché non attivi una licenza a pagamento.
Da leggere dopo
Scrivici: [email protected]