Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze handleiding wordt beschreven hoe u de schijfruimte beheert die wordt gebruikt door Linux-distributies die zijn geïnstalleerd met WSL 2, waaronder:
- Controleren hoeveel schijfruimte beschikbaar is in de VHD-
- De grootte van de VHD- uitbreiden
- De VHD herstellen als er een fout optreedt
- Hoe vind je het .vhdx-bestand en het pad van de schijf voor elke geïnstalleerde Linux-distributie
Windows-subsysteem voor Linux (WSL 2) maakt gebruik van een virtualisatieplatform voor het installeren van Linux-distributies naast het Windows-hostbesturingssysteem, waarbij een virtuele harde schijf (VHD) wordt gemaakt om bestanden op te slaan voor elk van de Linux-distributies die u installeert. Deze VHD's gebruiken het ext4-bestandssysteemtype en worden weergegeven op uw Windows-harde schijf als een ext4.vhdx--bestand.
Met WSL 2 wordt de grootte van deze VHD-bestanden automatisch aangepast aan de opslagbehoeften. Standaard wordt aan elk VHD-bestand dat door WSL 2 wordt gebruikt, in eerste instantie een maximale hoeveelheid schijfruimte van 1 TB toegewezen (vóór WSL-release 0.58.0 deze standaard is ingesteld op een maximum van 512 GB en 256 GB max.
Als de benodigde opslagruimte voor uw Linux-bestanden deze maximale grootte overschrijdt, ziet u fouten waarin wordt aangegeven dat u onvoldoende schijfruimte hebt. Volg de richtlijnen hieronder in Hoe de grootte van je WSL 2 virtuele harde schijf uit te breidenom deze fout te verhelpen.
De beschikbare schijfruimte controleren
Controleer de hoeveelheid schijfruimte die beschikbaar is in de VHD voor een Linux-distributie die is geïnstalleerd met WSL 2 met behulp van de opdracht Linux Df.
Als u de beschikbare schijfruimte wilt controleren, opent u een PowerShell-opdrachtregel en voert u deze opdracht in (waarbij u <distribution-name> vervangt door de werkelijke distributienaam):
wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro
Als deze opdracht niet werkt, voert u een upgrade uit naar de Store-versie van WSL met behulp van de opdracht wsl --update of probeert u wsl df -h /.
De uitvoer bevat:
- bestandssysteem: id voor het VHD-bestandssysteem
- Grootte: Totale grootte van de schijf (de maximale hoeveelheid ruimte die aan de VHD is toegewezen)
- Gebruikt: Hoeveelheid ruimte die momenteel wordt gebruikt in de VHD
- Beschikbaar: Hoeveelheid ruimte over in de VHD (toegewezen grootte min gebruikte ruimte)
- Gebruik%: Percentage resterende schijfruimte (gebruikte/toegewezen grootte)
- gekoppeld aan: mappad waar de schijf is gekoppeld
Zie de volgende sectie voor stappen voor het uitbreiden van de maximale hoeveelheid schijfruimte die is toegewezen aan de VHD die is gekoppeld aan uw Linux-distributie als u een fout hebt ontvangen omdat er geen schijfruimte meer beschikbaar is. De hoeveelheid schijfruimte die door WSL aan uw VHD is toegewezen, toont altijd de standaard maximumhoeveelheid (1 TB in de meest recente versie van WSL), zelfs als de hoeveelheid schijfruimte op uw werkelijke Windows-apparaat kleiner is dan dat. WSL koppelt een VHD die groter wordt wanneer u deze gebruikt, zodat uw Linux-distributie ziet dat deze kan groeien tot de toegewezen maximale grootte van 1 TB.
De grootte van de virtuele harde schijf van WSL 2 uitbreiden
Als u de VHD-grootte voor een Linux-distributie wilt uitbreiden buiten de standaardhoeveelheid toegewezen schijfruimte van 1 TB, kunt u de wsl --manage opdracht gebruiken of de onderstaande handmatige stappen volgen. (Eerdere WSL-releases kunnen een maximale standaardinstelling hebben van 512 GB of 256 GB).
VHD-grootte uitbreiden met wsl --manage
De wsl --manage opdracht is alleen beschikbaar voor WSL releases 2.5 en hoger.
De grootte van de toegewezen ruimte op de virtuele schijf wijzigen:
Alle WSL-exemplaren beëindigen door de opdracht
wsl.exe --shutdownte gebruikenVoer
wsl --manage <distribution name> --resize <memory string>uit. Ondersteunde geheugentekenreeksen zijn van de vorm<Memory Value>B/M/MB/G/GB/T/TB. Decimale waarden worden momenteel niet ondersteund (bijvoorbeeld2.5TB).
Uitvoer moet er ongeveer als volgt uitzien:
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.
Het virtuele station (ext4.vhdx) voor deze Linux-distributie is nu uitgebreid naar de nieuwe grootte.
Handmatige uitbreiding
Als u de VHD-grootte voor een Linux-distributie wilt uitbreiden met behulp van handmatige stappen:
Beëindig alle WSL-instanties met de opdracht:
wsl.exe --shutdownKopieer het mappad naar het ext4.vhdx-bestand dat is gekoppeld aan de Linux-distributie die op uw computer is geïnstalleerd. Voor hulp, zie Hoe u het vhdx-bestand en het schijfpad voor uw Linux-distributie kunt vinden.
Open de Windows-opdrachtprompt met beheerdersbevoegdheden en open vervolgens het diskpart opdracht-interpreter door het volgende in te voeren:
diskpartU krijgt nu een
DISKPART>prompt. Voer de volgende opdracht in en vervang<pathToVHD>door het mappad naar hetext4.vhdxbestand dat is gekoppeld aan de Linux-distributie (gekopieerd in stap 2).Select vdisk file="<pathToVHD>"Geef de details weer die zijn gekoppeld aan deze virtuele schijf, inclusief de virtuele grootte, die de huidige maximale grootte vertegenwoordigt die aan de VHD is toegewezen:
detail vdiskU moet de virtuele grootte converteren naar megabytes. Als bijvoorbeeld virtuele grootte: 512 GB, is dit gelijk aan 512000 MB. De nieuwe waarde die u invoert, moet groter zijn dan deze oorspronkelijke waarde. Als u de virtuele grootte van 512 GB tot 1024 GB wilt verdubbelen, voert u de waarde in MB in als: 1024000. Zorg ervoor dat u geen waarde invoert die hoger is dan u wilt, omdat het proces voor het verminderen van de grootte van een virtuele schijf veel ingewikkelder is.
Voer de waarde in voor de nieuwe maximale grootte die u wilt toewijzen aan deze Linux-distributie met behulp van de Windows-opdrachtprompt
DISKPART>prompt:expand vdisk maximum=<sizeInMegaBytes>Verlaat de
DISKPART>-prompt:exitStart deze Linux-distributie. (controleren of deze wordt uitgevoerd in WSL 2. U kunt dit bevestigen met behulp van de opdracht:
wsl.exe -l -v. WSL 1 wordt niet ondersteund).Stel WSL in staat te beseffen dat het de bestandssysteemgrootte voor deze distributie kan uitbreiden door deze commando's vanuit de opdrachtregel van uw WSL-distributie uit te voeren. Mogelijk ziet u dit bericht als reactie op de eerste koppeling opdracht: '/dev: none already mounted on /dev'. Dit bericht kan veilig worden genegeerd.
sudo mount -t devtmpfs none /dev mount | grep ext4Kopieer de naam van deze vermelding, die er als volgt uitziet:
/dev/sdX(met de X die een ander teken vertegenwoordigt). In het volgende voorbeeld wordt de waarde van X-b:sudo resize2fs /dev/sdb <sizeInMegabytes>MMet behulp van het bovenstaande voorbeeld hebben we de vhd-grootte gewijzigd in 2048000, dus de opdracht zou zijn:
sudo resize2fs /dev/sdb 2048000M.Notitie
Mogelijk moet u resize2fsinstalleren. Zo ja, dan kunt u deze opdracht gebruiken om deze te installeren:
sudo apt install resize2fs.De uitvoer ziet er ongeveer als volgt uit:
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.
Het virtuele station (ext4.vhdx) voor deze Linux-distributie is nu uitgebreid naar de nieuwe grootte.
Belangrijk
U wordt aangeraden de gerelateerde WSL-bestanden in uw AppData map niet te wijzigen, te verplaatsen of te openen met behulp van Windows-hulpprogramma's of editors. Hierdoor kan uw Linux-distributie beschadigd raken. Als u toegang wilt krijgen tot uw Linux-bestanden vanuit Windows, is dat mogelijk via het pad \\wsl$\<distribution-name>\. Open uw WSL-distributie en voer explorer.exe . in om die map weer te geven. Zie het blogbericht: Toegang tot Linux-bestanden vanuit Windowsvoor meer informatie.
Een VHD-montagefout herstellen
Als er een fout optreedt met betrekking tot het koppelen van de distributieschijf, kan dit worden veroorzaakt door een plotselinge uitschakeling of stroomstoring en kan dit ertoe leiden dat de VHD van de Linux-distributie wordt overgeschakeld naar alleen-lezen om gegevensverlies te voorkomen. U kunt de distributie repareren en herstellen met behulp van de Linux-opdracht e2fsck door de onderstaande stappen te volgen.
Gebruik de lsblk-opdracht om de naam van het blokapparaat te identificeren
Wanneer WSL 2 een Linux-distributie installeert, wordt de distributie gekoppeld als een virtuele harde schijf (VHD) met het eigen bestandssysteem. Linux verwijst naar deze harde schijven als 'blokapparaten' en u kunt informatie over deze schijven weergeven met behulp van de opdracht lsblk.
Als u de namen wilt vinden van de blokapparaten die momenteel door WSL 2 worden gebruikt, opent u uw distributie en voert u de opdracht in: lsblk. (Of open PowerShell en voer de opdracht in: wsl.exe lsblk.) De uitvoer ziet er ongeveer als volgt uit:
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
Informatie over het blokapparaat omvat:
-
NAME: de naam die aan het apparaat is toegewezen, wordt sd[a-z], die verwijst naar de SCSI-schijf met een letteraanduiding voor elke schijf die wordt gebruikt.
sdais altijd de systeemdistributie. - MAJ:MIN: vertegenwoordigt getallen die door de Linux-kernel worden gebruikt om de apparaten intern te identificeren met het eerste nummer dat het apparaattype vertegenwoordigt (8 wordt gebruikt voor Small Computer System Interface/SCSI-schijven).
- RM-: Laat het ons weten of het apparaat verwisselbaar is (1) of niet (0).
- GROOTTE: Totale grootte van het volume.
- RO-: Laat het ons weten of het apparaat alleen-lezen is (1) of niet (0).
- TYPE: verwijst naar het apparaattype (schijf in dit geval).
- MOUNTPOINTS-: verwijst naar de huidige map in het bestandssysteem waar het blokapparaat zich bevindt (SWAP is voor vooraf geconfigureerd inactief geheugen, dus geen koppelpunt).
Leesbeveiligingsfout
Als WSL een 'montagefout' tegenkomt bij het openen van een Linux-distributie, kan de distributie als een noodoplossing ingesteld worden op alleen-lezen. Als dat gebeurt, kan de distributie de volgende fout weergeven tijdens het opstarten:
An error occurred mounting the distribution disk, it was mounted read-only as a fallback.
Wanneer een distributie wordt gestart als alleen-lezen, mislukken pogingen om naar het bestandssysteem te schrijven met een fout zoals deze:
$ touch file
touch: cannot touch 'file': Read-only file system
Als u een schijfkoppelingsfout in WSL wilt herstellen en deze weer wilt herstellen naar een bruikbare/schrijfbare status, kunt u de opdracht wsl.exe --mount gebruiken om de schijf opnieuw te koppelen met de volgende stappen:
Sluit alle WSL-distributies af door PowerShell te openen als beheerder (in een opdrachtprompt met verhoogde bevoegdheid) en de opdracht in te voeren:
wsl.exe --shutdownVoer de mount-opdracht in en vervang
<path-to-ext4.vhdx>door het pad naar het .vhdx-bestand van de distributie. Zie Het VHD-bestand en het schijfpad voor uw Linux-distributievinden voor hulp bij het vinden van dit bestand.wsl.exe --mount <path-to-ext4.vhdx> --vhd --bareGebruik de opdracht
wsl.exe lsblkvan PowerShell om de blokapparaatnaam voor de distributie (sd[a-z]) te identificeren en voer vervolgens de volgende opdracht in om de schijf te herstellen (waarbij<device>wordt vervangen door de juiste blokapparaatnaam, zoals 'sdc'). De opdrachte2fsckcontroleert ext4-bestandssystemen (het type dat wordt gebruikt door distributies die met WSL zijn geïnstalleerd) op fouten en herstelt deze dienovereenkomstig.wsl.exe sudo e2fsck -f /dev/<device>Notitie
Als u slechts één Linux-distributie hebt geïnstalleerd, treedt er mogelijk een fout 'ext-bestand in gebruik' op en moet installeren een extra distributie om
wsl.exe lsblkuit te voeren. U kunt verwijderen de distributie zodra de reparatie is voltooid. Bovendien moet u Docker Desktop in Windows sluiten om de foutWsl/Service/CreateInstance/MountVhd/HCS/ERROR_SHARING_VIOLATIONtijdens het uitvoeren van de opdrachtwsl.exe sudo e2fsck -f /dev/sdcte voorkomen.Nadat het herstellen is voltooid, ontkoppelt u de schijf in PowerShell door het volgende in te voeren:
wsl.exe --unmount
Waarschuwing
U kunt de opdracht gebruiken: sudo mount -o remount,rw / om een alleen-lezendistributie te retourneren naar een bruikbare/schrijfbare status, maar alle wijzigingen worden in het geheugen opgeslagen en gaan dus verloren wanneer de distributie opnieuw wordt gestart. U wordt aangeraden de bovenstaande stappen te gebruiken om de schijf te koppelen en te herstellen.
Het VHDX-bestand en het schijfpad voor uw Linux-distributie vinden
Als u het .vhdx--bestand en mappad voor een Linux-distributie wilt vinden, opent u PowerShell en gebruikt u het volgende script, waarbij u <distribution-name> vervangt door de werkelijke distributienaam:
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"
In het resultaat wordt een pad weergegeven dat eruitziet als %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx. Bijvoorbeeld:
C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
Dit is het pad naar het ext4.vhdx-bestand dat is gekoppeld aan de Linux-distributie die u hebt vermeld.
Windows Subsystem for Linux