Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu kılavuz, WSL 2 kullanılarak yüklenen Linux dağıtımları tarafından kullanılan disk alanının nasıl yönetileceğini kapsar, örneğin:
- VHD kullanılabilir disk alanı miktarını denetleme
- VHD boyutunu genişletme
- Bir hata oluşursa VHD'yi onarma
- Yüklü linux dağıtımları için .vhdx dosyasını ve disk yolunu bulma
Linux için Windows Alt Sistemi (WSL 2), konak Windows işletim sisteminin yanı sıra Linux dağıtımlarını yüklemek için bir sanallaştırma platformu kullanır ve yüklediğiniz Her Linux dağıtımının dosyalarını depolamak için bir Sanal Sabit Disk (VHD) oluşturur. Bu VHD'ler ext4 dosya sistemi türünü kullanır ve Windows sabit sürücünüzde ext4.vhdx dosyası olarak gösterilir.
WSL 2, depolama gereksinimlerini karşılamak için bu VHD dosyalarını otomatik olarak yeniden boyutlandırıyor. Varsayılan olarak WSL 2 tarafından kullanılan her VHD dosyasına başlangıçta en fazla 1 TB disk alanı ayrılır (WSL sürümü 0.58.0'den önce bu varsayılan değer en fazla 512 GB ve en fazla 256 GB olarak ayarlanmıştır).
Linux dosyalarınızın gerektirdiği depolama alanı bu boyut üst sınırını aşarsa disk alanınızın yetersiz olduğunu belirten hatalar görürsünüz. WSL 2 Sanal Sabit Diskinizin boyutunu genişletmek için aşağıdaki yönergeleriizleyerek bu hatayı düzeltin.
Kullanılabilir disk alanınızı denetleme
Linux Df komutunu kullanarak WSL 2 ile yüklenen bir Linux dağıtımı için VHD'de kullanılabilir disk alanı miktarını denetleyin.
Kullanılabilir disk alanını denetlemek için bir PowerShell komut satırı açın ve şu komutu girin (<distribution-name> gerçek dağıtım adıyla değiştirerek):
wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro
Bu komut sizin için işe yaramazsa lütfen wsl --update komutunu kullanarak WSL'nin Store sürümüne yükseltin veya wsl df -h /deneyin.
Çıktı şunları içerecektir:
- Dosya Sistemi: VHD dosya sistemi tanımlayıcısı
- Boyutu: Diskin toplam boyutu (VHD'ye ayrılan en fazla alan miktarı)
- Kullanılan: VHD'de kullanılmakta olan alan miktarı
- Avail: VHD'de kalan alan miktarı (Ayrılan boyut eksi kullanılan miktar)
- %kullan: Kalan disk alanı yüzdesi (Kullanılan /Ayrılan boyut)
- üzerine bağlandı: Diskin bağlandığı dizin yolu
VHD'nize ayrılan kullanılabilir disk alanına ulaşmak üzere olduğunuzu veya disk alanı kalmama nedeniyle zaten bir hata aldığınızı görürseniz, Linux dağıtımınızla ilişkili VHD'ye ayrılan maksimum disk alanı miktarını genişletme adımları için sonraki bölüme bakın. Gerçek Windows cihazınızdaki disk alanı miktarı bundan az olsa bile, WSL tarafından VHD'nize ayrılan disk alanı miktarı her zaman varsayılan maksimum miktarı (WSL'nin en son sürümünde 1 TB) gösterir. WSL, siz kullandıkça boyutu genişleyecek bir VHD bağlar, böylece Linux dağıtımınız ayrılmış en fazla 1 TB boyuta kadar büyüyebileceğini görür.
WSL 2 Sanal Sabit Diskinizin boyutunu genişletme
Linux dağıtımının VHD boyutunu varsayılan 1 TB ayrılmış disk alanı üst sınırından daha fazla genişletmek için wsl --manage komutunu kullanabilir veya aşağıdaki el ile verilen adımları izleyebilirsiniz. (Önceki WSL sürümleri en fazla varsayılan değer 512 GB veya 256 GB olarak ayarlanabilir).
wsl --manage kullanarak VHD boyutunu genişletme
wsl --manage komutu yalnızca WSL 2.5 ve üzeri sürümlerde kullanılabilir.
Sanal diskinizde ayrılan alanı yeniden boyutlandırmak için:
komut
wsl.exe --shutdownkullanarak tüm WSL örneklerini sonlandırınwsl --manage <distribution name> --resize <memory string>çalıştırın. Desteklenen bellek dizeleri<Memory Value>B/M/MB/G/GB/T/TBbiçimindedir. Ondalık değerler şu anda desteklenmiyor (örneğin,2.5TB).
Çıktı aşağıdakine benzer görünmelidir:
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
resize2fs 1.46.5 (30-Dec-2021)
The operation completed successfully.
Bu Linux dağıtımı için sanal sürücü (ext4.vhdx) artık başarıyla yeni boyuta genişletildi.
El ile genişletme
El ile gerçekleştirilen adımları kullanarak Linux dağıtımının VHD boyutunu genişletmek için:
komutunu kullanarak tüm WSL örneklerini sonlandırın:
wsl.exe --shutdownDizin yolunu, makinenizde yüklü Linux dağıtımıyla ilişkili ext4.vhdx dosyasına kopyalayın. Yardım için bkz. Linux dağıtımiçin vhdx dosyasını ve disk yolunu bulma.
Yönetici ayrıcalıklarıyla Windows Komut İstemi'ni açın ve ardından şunu girerek diskpart komut yorumlayıcısını açın:
diskpartArtık bir
DISKPART>isteminiz olacak. aşağıdaki komutu girin ve<pathToVHD>yerine Linux dağıtımıyla ilişkilendirilmişext4.vhdxdosyasının dizin yolunu yazın (2. adımda kopyalanır).Select vdisk file="<pathToVHD>"VHD'nin ayrıldığı geçerli en büyük boyutu temsil eden Sanal boyutudahil olmak üzere bu sanal diskle ilişkili ayrıntıları görüntüleyin:
detail vdiskSanal boyutu megabayt olarak dönüştürmeniz gerekir. Örneğin, Sanal boyutu: 512 GBise, bu 512000 MBeşittir. Girdiğiniz yeni değer bu özgün değerden büyük olmalıdır. 512 GB olan sanal boyutu iki katına 1024 GB'a getirmek için, MB değerini şu şekilde girmeniz gerekir: 1024000. Sanal disk boyutunu küçültme işlemi çok daha karmaşık olduğundan istediğinizden daha yüksek bir değer girmemeye dikkat edin.
Windows Komut İstemi
DISKPART>istemini kullanarak bu Linux dağıtımına ayırmak istediğiniz yeni en büyük boyutun değerini girin:expand vdisk maximum=<sizeInMegaBytes>DISKPART>istem komutundan çıkın.exitBu Linux dağıtımlarını başlatın. (WSL 2'de çalıştığından emin olun. Bunu şu komutu kullanarak onaylayabilirsiniz:
wsl.exe -l -v. WSL 1 desteklenmez).WSL dağıtım komut satırınızdan bu komutları çalıştırarak WSL'nin bu dağıtım için dosya sistemi boyutunu genişletebileceğini unutmayın. İlk bağlama komutuna yanıt olarak şu iletiyi görebilirsiniz: "/dev: hiçbiri /dev'e zaten bağlı değil." Bu ileti güvenle yoksayılabilir.
sudo mount -t devtmpfs none /dev mount | grep ext4Şu şekilde görünecek bu girdinin adını kopyalayın:
/dev/sdX(X başka bir karakteri temsil eder). Aşağıdaki örnekte X değeri b:sudo resize2fs /dev/sdb <sizeInMegabytes>MYukarıdaki örneği kullanarak vhd boyutunu 2048000olarak değiştirdik, bu nedenle komutu şöyle olacaktır:
sudo resize2fs /dev/sdb 2048000M.Not
resize2fsyüklemeniz gerekebilir. Öyleyse, yüklemek için şu komutu kullanabilirsiniz:
sudo apt install resize2fs.Çıkış aşağıdakine benzer olacaktır:
resize2fs 1.44.1 (24-Mar-2021) Filesystem at /dev/sdb is mounted on /; on-line resizing required old_desc_blocks = 32, new_desc_blocks = 38 The filesystem on /dev/sdb is now 78643200 (4k) blocks long.
Bu Linux dağıtımı için sanal sürücü (ext4.vhdx) artık başarıyla yeni boyuta genişletildi.
Önemli
Windows araçlarını veya düzenleyicilerini kullanarak AppData klasörünüzün içinde bulunan WSL ile ilgili dosyaları değiştirmemenizi, taşımamanızı veya bu dosyalara erişmemenizi öneririz. Bunun yapılması Linux dağıtımınızın bozulmasına neden olabilir. Linux dosyalarınıza Windows'tan erişmek istiyorsanız, bu \\wsl$\<distribution-name>\yolu üzerinden mümkündür. WSL dağıtımınızı açın ve bu klasörü görüntülemek için explorer.exe . girin. Daha fazla bilgi edinmek için şu blog gönderisine bakın: WindowsLinux dosyalarına erişme.
VHD bağlama hatasını onarma
"Dağıtım diskini bağlama ile ilgili bir hatayla karşılaşırsanız, bu durum ani bir kapatma veya güç kesintisinden kaynaklanabilir ve veri kaybını önlemek için Linux dağıtımı VHD'sinin salt okunur durumuna geçirilmesine yol açabilir." Aşağıdaki adımları izleyerek e2fsck Linux komutunu kullanarak dağıtımı onarabilir ve geri yükleyebilirsiniz.
Blok cihazı adını tanımlamak için lsblk komutunu kullanın
WSL 2 bir Linux dağıtımı yüklediğinde, dağıtımı kendi dosya sistemiyle bir Sanal Sabit Disk (VHD) olarak bağlar. Linux bu sabit sürücüleri "blok cihazları" olarak ifade eder ve lsblk komutunu kullanarak bunlar hakkındaki bilgileri görüntüleyebilirsiniz.
WSL 2 tarafından kullanılmakta olan blok cihazlarının adlarını bulmak için dağıtımınızı açın ve şu komutu girin: lsblk. (Veya PowerShell'i açın ve şu komutu girin: wsl.exe lsblk.) Çıkış şuna benzer olacaktır:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 363.1M 1 disk
sdb 8:16 0 8G 0 disk [SWAP]
sdc 8:32 0 1.5T 0 disk
sdd 8:48 0 1T 0 disk /mnt/wslg/distro
Blok cihazıyla ilgili bilgiler şunları içerir:
-
NAME: Cihaza atanan ad, her biri için bir harf atanmış SCSI Diskleri belirtmek üzere sd[a-z] olacaktır.
sdaher zaman sistem dağıtımıdır. - MAJ:MIN: Cihaz türünü temsil eden ilk sayıya sahip cihazları dahili olarak tanımlamak için Linux çekirdeği tarafından kullanılan sayıları temsil eder (8, Küçük Bilgisayar Sistemi Arabirimi/SCSI diskleri için kullanılır).
- RM: Cihazın çıkarılabilir olup olmadığını (1) veya değil (0) bize bildirin.
- BOYUT: Birimin toplam boyutu.
- RO: Cihazın salt okunur (1) olup olmadığını (0) bize bildirin.
- TYPE: Cihaz türüne (bu örnekte disk) başvurur.
- MOUNTPOINTS: Blok cihazının bulunduğu dosya sistemindeki geçerli dizine başvurur (SWAP, bağlama noktası gerektirmeyen önceden yapılandırılmış etkinleştirilmemiş bellek içindir).
Salt okunur yedek hatası
WSL Linux dağıtımını açarken bir "bağlama hatası" meydana gelirse, dağıtım yedek olarak salt okunur biçimde ayarlanabilir. Böyle bir durumda dağıtım, başlatma sırasında aşağıdaki hatayı görüntüleyebilir:
An error occurred mounting the distribution disk, it was mounted read-only as a fallback.
Bir dağıtım salt okunur olarak başlatıldığında, dosya sistemine yazma girişimleri aşağıdaki gibi bir hatayla başarısız olur:
$ touch file
touch: cannot touch 'file': Read-only file system
WSL'de disk bağlama hatasını onarmak ve yeniden kullanılabilir/yazılabilir duruma geri yüklemek için, wsl.exe --mount komutunu kullanarak diski aşağıdaki adımlarla yeniden bağlayabilirsiniz:
PowerShell'i yönetici olarak açıp (yükseltilmiş bir komut isteminde) komutu girerek tüm WSL dağıtımlarını kapatın:
wsl.exe --shutdownBağlama komutunu girin ve
<path-to-ext4.vhdx>'ı dağıtımın .vhdx dosyasının konumuyla değiştirin. Bu dosyayı bulma konusunda yardım için bkz. Linux dağıtımiçin VHD dosyasını ve disk yolunu bulma.wsl.exe --mount <path-to-ext4.vhdx> --vhd --bareDağıtımın (sd[a-z]) blok cihazı adını belirlemek için PowerShell'den
wsl.exe lsblkkomutunu kullanın ve diski onarmak için aşağıdaki komutu girin (<device>"sdc" gibi doğru blok cihaz adıyla değiştirin).e2fsckkomutu ext4 dosya sistemlerini (WSL ile yüklenen dağıtımlar tarafından kullanılan tür) hataları denetler ve uygun şekilde onarılır.wsl.exe sudo e2fsck -f /dev/<device>Not
Yalnızca tek bir Linux dağıtımı yüklüyse, "ext file in use" hatasıyla karşılaşabilirsiniz ve çalıştırmak için ek bir dağıtım
wsl.exe lsblkyüklemeniz gerekir. Onarım tamamlandıktan sonra dağıtımı kaldırabilirsiniz. Ayrıca,Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_SHARING_VIOLATIONkomutunu çalıştırırken hatawsl.exe sudo e2fsck -f /dev/sdcönlemek için Windows'ta Docker Desktop'ı kapatmanız gerekebilir.Onarım tamamlandıktan sonra şunu girerek PowerShell'de diski çıkarın:
wsl.exe --unmount
Uyarı
Salt okunur bir dağıtımı kullanılabilir/yazılabilir duruma döndürmek için sudo mount -o remount,rw / komutunu kullanabilirsiniz, ancak tüm değişiklikler bellek içinde olur ve bu nedenle dağıtım yeniden başlatıldığında kaybolur. Bunun yerine diski takmak ve onarmak için yukarıda listelenen adımları kullanmanızı öneririz.
Linux dağıtımınız için .vhdx dosyasını ve disk yolunu bulma
Linux dağıtımının .vhdx dosyasını ve dizin yolunu bulmak için PowerShell'i açın ve <distribution-name> yerine gerçek dağıtım adını yazın:
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"
Sonuç, %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdxgibi görünen bir yol görüntüler. Mesela:
C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
Bu, listelediğiniz Linux dağıtımıyla ilişkili ext4.vhdx dosyasının yoludur.
Windows Subsystem for Linux