Dwie architektury, dwa modele magazynowania
WSL1 w ogóle nie ma jądra Linuksa: tłumaczy linuksowe wywołania systemowe na windowsowe w czasie rzeczywistym, a jego pliki leżą w zwykłym folderze — historycznie %LOCALAPPDATA%\Packages\<Distro>\LocalState\rootfs — w pełni widocznym dla windowsowych narzędzi. To czyni go lekkim na dysku i szybkim, gdy skrypty ruszają pliki na /mnt/c, ale tłumaczenie jest niekompletne: Docker, systemd i wszystko, co potrzebuje egzotycznych syscalli, nie działa. WSL2 odpala prawdziwe jądro Linuksa w lekkiej maszynie pomocniczej, co naprawia kompatybilność — ale cały system plików dystrybucji mieszka teraz w ext4.vhdx: obrazie wirtualnego dysku, który Windows montuje, ale nie interpretuje.
Vhdx leży pod %LOCALAPPDATA%\Packages dla dystrybucji instalowanych ze Sklepu i pod %LOCALAPPDATA%\wsl dla nowszych instalacji, i ma jedną paskudną cechę: rośnie na żądanie i sam z siebie nigdy nie maleje. Usunięcie plików wewnątrz dystrybucji uwalnia miejsce wewnątrz wirtualnego dysku, ale plik .vhdx trzyma swój rekord wysokości, dopóki go nie skompaktujesz. Sprawdzenie rozmiaru pliku w Eksploratorze zaraz po dużym sprzątaniu w środku to klasyczne rozczarowanie: liczba się nie ruszyła.
Gdzie każde z nich chowa swoje gigabajty
Żadna wersja nie sprząta po sobie, a miejsce znika w zaskakująco niewielu miejscach:
- ext4.vhdx WSL2 — każda dystrybucja ma jeden; setup deweloperski obciążony Dockerem rutynowo przepycha go ponad 30 GB
- Własny dysk danych Dockera Desktop (docker_data.vhdx), który trzyma się tej samej zasady „tylko rośnie”
- Folder rootfs WSL1 — przy tym porównaniu skromny, ale stare porzucone dystrybucje dalej trzymają pełną instalację
- Cache pakietów i buildów Linuksa wewnątrz dystrybucji — cache apt, node_modules, target/ i foldery buildów, które trwale napompowują vhdx
- Kopie wsl --export i pobrane obrazy dystrybucji zaparkowane w Pobranych i zapomniane
Odzyskiwanie miejsca bez rozbijania dystrybucji
Najpierw posprzątaj w środku: apt autoremove i apt clean, docker system prune w Docker Desktop, czyszczenie cache npm i pip — cokolwiek, co opróżni wirtualny dysk, zanim zaczniesz kurczyć jego pojemnik. Potem uruchom wsl --shutdown, bo działająca dystrybucja blokuje swój vhdx, i skompaktuj obraz: Optimize-VHD z opcją -Mode Full, jeśli masz narzędzia Hyper-V, albo diskpart z select vdisk file="<path>", attach vdisk, compact vdisk, detach vdisk na każdym Windowsie. Nowsze wersje WSL oferują wsl --manage <Distro> --set-sparse true, które pozwala vhdx oddawać miejsce automatycznie — na dłuższą metę autentycznie lepsze ustawienie.
Dwa ostateczne środki zasługują na swoje nazwy. wsl --export pakuje dystrybucję do .tar, który zaimportujesz na innym dysku przez wsl --import — to czysty sposób na przeniesienie instalacji WSL2 z pełnego C:. A wsl --unregister <Distro> usuwa dystrybucję i jej vhdx w całości — ta komenda nie ma cofania, więc traktuj ją jak nukę, którą jest. Przy okazji przytnij apetyt maszyny plikiem .wslconfig limitującym pamięć i procesory; bezczynne VM-y WSL2 w przeciwnym razie trzymają gigabajty RAM-u na nic.
Pytania i odpowiedzi
Jak zmniejszyć plik ext4.vhdx WSL2?
Najpierw posprzątaj wewnątrz dystrybucji, uruchom wsl --shutdown, potem skompaktuj vhdx przez diskpart (select vdisk file, attach vdisk, compact vdisk, detach vdisk) albo Optimize-VHD. Na nowszym WSL polecenie wsl --manage <Distro> --set-sparse true sprawia, że dysk oddaje miejsce automatycznie.
Wybrać WSL1 czy WSL2?
WSL2 jest domyślne i jedynym wyborem dla Dockera, systemd i wszystkiego, co potrzebuje prawdziwego jądra. WSL1 dalej wygrywa przy lekkiej pracy w terminalu, która głównie czyta i zapisuje pliki na windowsowych dyskach — bez VM, bez vhdx, bez narzutu na pamięć.
Sprawdź warunki przed zakupem
Porównaj czas licencji i liczbę urządzeń. Każdy płatny plan odblokowuje ten sam zestaw narzędzi PRO.
Przeczytaj także
Napisz do nas: [email protected]