İki mimari, iki depolama modeli
WSL1'in Linux çekirdeği hiç yoktur: Linux sistem çağrılarını gerçek zamanlı olarak Windows çağrılarına çevirir ve dosyaları sıradan bir klasörde tutar — tarihsel olarak %LOCALAPPDATA%\Packages\<Distro>\LocalState\rootfs — Windows araçlarına tamamen görünür. Bu onu diskte hafif, /mnt/c üzerindeki dosyalara dokunan betiklerde hızlı yapar; ama çeviri eksiktir: Docker, systemd ve egzotik syscall isteyen her şey çalışmaz. WSL2, hafif bir yardımcı VM'de gerçek bir Linux çekirdeği çalıştırır; bu uyumluluğu tamir eder — ancak dağıtımın dosya sisteminin tamamı artık bir ext4.vhdx içinde yaşar: Windows'un bağladığı ama yorumlamadığı bir sanal disk imgesi.
Vhdx, Mağazadan kurulan dağıtımlar için %LOCALAPPDATA%\Packages altında, daha yeni kurulumlar için %LOCALAPPDATA%\wsl altında durur ve iğrenç bir özelliği vardır: talep üzerine büyür, kendi kendine asla küçülmez. Dağıtım içinde dosya silmek sanal disk içinde yer açar; ama .vhdx dosyası, siz onu sıkıştırmadan yüksek su seviyesini korur. Dağıtımın içinde büyük bir temizliğin hemen ardından Gezgin'de dosya boyutuna bakmak klasik hayal kırıklığıdır: sayı kımıldamamıştır.
Gigabaytlarını her biri nereye saklıyor
İki sürüm de kendi çöpünü toplamaz ve alan şaşırtıcı derecede az yere kaybolur:
- WSL2'nin ext4.vhdx'i — her dağıtımın bir tanesi vardır; Docker ağır bir geliştirme kurulumu onu rutin biçimde 30 GB üzerine iter
- Docker Desktop'ın kendi veri diski (docker_data.vhdx) — aynı sadece-büyü kuralına uyar
- WSL1'in rootfs klasörü — kıyasla mütevazı, ama terk edilmiş eski dağıtımlar tüm kurulumlarını hâlâ tutar
- Dağıtım içindeki Linux paket ve derleme önbellekleri — apt önbellekleri, node_modules, target/ ve derleme klasörleri vhdx'i kalıcı olarak şişirir
- İndirilenler'e park edilip unutulan wsl --export yedekleri ve indirilen dağıtım imajları
Dağıtımı bozmadan yer geri kazanmak
Önce içeriyi temizleyin: apt autoremove ve apt clean, Docker Desktop'ta docker system prune, npm ve pip önbellek boşaltmaları — kabı küçültmeden önce sanal diskin içini boşaltan her şey. Sonra wsl --shutdown çalıştırın, çünkü koşan bir dağıtım vhdx'ini kilitler; sonra imgeyi sıkıştırın: Hyper-V araçlarınız varsa -Mode Full seçeneğiyle Optimize-VHD, herhangi bir Windows'ta ise select vdisk file="<path>", attach vdisk, compact vdisk, detach vdisk komutlarıyla diskpart. Yeni WSL sürümleri wsl --manage <Distro> --set-sparse true sunar; bu, vhdx'in alanı kendiliğinden bırakmasını sağlar — uzun vadede gerçekten daha iyi bir ayardır.
Son çare olarak iki komut adını hak ediyor. wsl --export, dağıtımı bir .tar'a paketler ve onu başka bir diskte wsl --import ile içeri alabilirsiniz — WSL2 kurulumunu dolu bir C:'den taşımanın temiz yolu. wsl --unregister <Distro> ise dağıtımı ve vhdx'ini bütünüyle siler — o komutun geri alınması yoktur; olduğu gibi nükleer silah muamelesi yapın. Bu arada VM'in iştahını, bellek ve işlemci sınırlayan bir .wslconfig dosyasıyla kısın; yoksa boşta duran WSL2 VM'leri gigabaytlarca RAM'i hiçbir şey için tutar.
Sorular ve yanıtlar
WSL2'nin ext4.vhdx dosyasını nasıl küçültürüm?
Önce dağıtımın içinde temizlik yapın, wsl --shutdown çalıştırın, sonra vhdx'i diskpart (select vdisk file, attach vdisk, compact vdisk, detach vdisk) ya da Optimize-VHD ile sıkıştırın. Yeni WSL'de wsl --manage <Distro> --set-sparse true diskin alanı kendiliğinden bırakmasını sağlar.
WSL1 mi WSL2 mi kullanmalıyım?
WSL2 varsayılandır ve Docker, systemd, gerçek çekirdek isteyen her şey için tek seçenektir. WSL1, çoğunlukla Windows disklerinizdeki dosyaları okuyup yazan hafif komut satırı işinde hâlâ kazanır — VM yok, vhdx yok, bellek yükü yok.
Satın almadan önce lisans kapsamını öğrenin.
Tek seferlik 30 dakikalık deneme temel araçları kapsar. PRO özellikleri ücretli lisans etkinleştirilene kadar kilitlidir.
Bunları da okuyun
Bize yazın: [email protected]