Il y a quelques options ici, mais je réorganise les choses dans cette modification. Ma réponse « originale » redevient la méthode préférée. Voir le bas de cette réponse pour une méthode alternative expérimentale.
Réponse « originale » (préférée)
Il y a un ticket ouvert sur GitHub WSL à ce sujet. WSL fait automatiquement croître le disque virtuel (ext4.vhdx), mais le réduire pour récupérer l’espace inutilisé est quelque chose qui doit actuellement être fait manuellement.
La première chose à faire est de connaître l’emplacement de votre ext4.vhdx. Pour une installation Ubuntu par défaut, il devrait se trouver dans quelque chose comme %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\
Ensuite, il y a plusieurs techniques que vous pouvez utiliser pour supprimer l’espace inutilisé. Je recommande de commencer par un wsl --shutdown et de copier le vhdx comme sauvegarde. Si vous exécutez Docker Desktop, arrêtez-le aussi, sinon il pourrait par inadvertance tenter de redémarrer WSL après votre --shutdown.
Si vous êtes sur Windows Professionnel ou supérieur, vous pouvez installer Hyper-V et utiliser la commandlet Optimize-VHD comme décrit dans le ticket original.
Sur Windows Famille (et supérieur), vous pouvez utiliser diskpart comme décrit dans ce commentaire.
Exporter la distribution WSL et la réimporter dans une nouvelle instance WSL (comme dans ce commentaire) récupérera aussi l’espace. Notez que vous devrez réinitialiser le nom d’utilisateur par défaut après une importation. Voir ici (et ici pour des options alternatives).
J’ai testé et confirmé personnellement les deuxième et troisième techniques.
Alternative (Avertissement)
La fonctionnalité suivante reste en statut « Expérimental » un an après son apparition, et bien que je sois sûr qu’elle fonctionne bien pour beaucoup, trop d’utilisateurs continuent de signaler des corruptions de leurs distributions WSL et parfois même du système de fichiers de l’hôte Windows lors de son utilisation.
Merci aux commentaires de @MarkCh et @willnode, j’ai modifié la réponse pour à la fois déplacer cette méthode sous la réponse originale et mettre en évidence cet avertissement.
En septembre 2023, une pré-version de WSL (2.0.0) a activé un nouveau mode « sparse » pour les images disque qui est destiné à réduire automatiquement l’image quand des fichiers sont supprimés. (Surtout compte tenu de l’avertissement ci-dessus) Maintenez toujours de bonnes sauvegardes, surtout quand vous utilisez des fonctionnalités récentes qui affectent l’ensemble du disque virtuel. Je n’ai pas encore testé cela personnellement.
Cela dit, d’après l’annonce du DevBlog, vous pouvez convertir une image disque existante en sparse avec la commande suivante depuis PowerShell :
wsl --manage <distro> --set-sparse true
Vous pouvez aussi ajouter ce qui suit dans votre .wslconfig (situé dans votre répertoire de profil Windows, pas à l’intérieur de WSL) pour que toute image de distribution nouvellement créée soit sparse :
[experimental]
sparseVhd=true