Megosztás:


WSL-lemezterület kezelése

Ez az útmutató bemutatja, hogyan kezelheti a WSL 2 használatával telepített Linux-disztribúciók által használt lemezterületet, beleértve a következőket:

A Linux windowsos alrendszere (WSL 2) egy virtualizálási platformmal telepíti a Linux-disztribúciókat a gazda Windows operációs rendszer mellett, létrehozva egy virtuális merevlemezt (VHD) a telepített Linux-disztribúciók fájljainak tárolására. Ezek a virtuális merevlemezek az ext4 fájlrendszertípust használják, és a Windows-merevlemezen ext4.vhdx fájlként jelennek meg.

A WSL 2 automatikusan átméretezi ezeket a VHD-fájlokat a tárolási igényeknek megfelelően. Alapértelmezés szerint a WSL 2 által használt összes VHD-fájl kezdetben 1 TB maximális lemezterületet foglal le (WSL-kiadás 0.58.0-s kiadása előtt ez az alapértelmezett érték 512 GB- és 256 GB-os maximális értékre volt beállítva.

Ha a Linux-fájlok által igényelt tárterület meghaladja ezt a maximális méretet, hibaüzenetek jelennek meg arról, hogy elfogyt a lemezterület. A hiba elhárításához kövesse az alábbi útmutatót a Hogyan növeljük a WSL 2 virtuális merevlemez méretétcímű részében.

A rendelkezésre álló lemezterület ellenőrzése

Ellenőrizze a VHD-ben a WSL 2-vel telepített Linux-disztribúció lemezterületét a Linux Df paranccsal.

A rendelkezésre álló lemezterület ellenőrzéséhez nyisson meg egy PowerShell-parancssort, és írja be ezt a parancsot (cserélje le a <distribution-name> a tényleges terjesztési névre):

wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro

Ha ez a parancs nem működik Önnek, frissítsen a WSL Áruházbeli verziójára a wsl --update paranccsal, vagy próbálkozzon wsl df -h /.

A kimenet a következőket tartalmazza:

  • fájlrendszer: A VHD fájlrendszer azonosítója
  • Méret: A lemez teljes mérete (a VHD számára lefoglalt maximális terület)
  • Használt: A virtuális merevlemezen jelenleg használt terület mennyisége
  • Kihasználtság: A VHD-ben maradt terület mennyisége (lefoglalt méret mínusz felhasznált mennyiség)
  • %használata: A fennmaradó lemezterület százalékos aránya (Felhasznált/Lefoglalt méret)
  • csatlakoztatott: Könyvtár elérési útja, amelyen a lemez csatlakoztatva van

Ha azt látja, hogy közel jár a virtuális merevlemezhez lefoglalt lemezterület rendelkezésre álló mennyiségének eléréséhez, vagy ha már hibaüzenetet kapott, mert nincs szabad lemezterület, tekintse meg a következő szakaszt a Linux-disztribúcióhoz társított VHD számára lefoglalt maximális lemezterület kibontásának lépéseiről. A WSL által a VHD számára lefoglalt lemezterület mindig az alapértelmezett maximális mennyiséget (a WSL legújabb verziójában 1 TB- t) jeleníti meg, még akkor is, ha a tényleges Windows-eszközön a lemezterület ennél kisebb. A WSL csatlakoztat egy VHD-t, amely a használat során növekszik, így a Linux-disztribúció úgy látja, hogy az 1 TB-os maximális méretre nőhet.

A WSL 2 virtuális merevlemez méretének bővítése

Ha egy Linux-disztribúció VHD-méretét az alapértelmezett 1 TB maximális lemezterületen túl szeretné bővíteni, használja a wsl --manage parancsot, vagy kövesse az alábbi manuális lépéseket. (A korábbi WSL-kiadások maximális alapértelmezett értéke 512 GB vagy 256 GB lehet).

A VHD méretének megnövelése wsl --manage használatával.

A wsl --manage parancs csak a 2.5-ös és újabb WSL-kiadásokhoz érhető el.

A lefoglalt terület átméretezése a virtuális lemezen:

  1. Az összes WSL-példány megszüntetése a következő parancs használatával: wsl.exe --shutdown

  2. Futtassa a wsl --manage <distribution name> --resize <memory string>. A támogatott memóriasztringek <Memory Value>B/M/MB/G/GB/T/TBformátumúak. A decimális értékek jelenleg nem támogatottak (például 2.5TB).

A kimenetnek a következőhöz hasonlóan kell kinéznie:

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.

A Linux-disztribúcióhoz tartozó virtuális meghajtó (ext4.vhdx) sikeresen ki lett bontva az új méretre.

Manuális bővítés

Linux-disztribúció VHD-méretének manuális lépésekkel történő kibővítése:

  1. Állítsa le az összes WSL-példányt a következő paranccsal: wsl.exe --shutdown

  2. Másolja a könyvtár elérési útját a számítógépre telepített Linux-disztribúcióhoz társított ext4.vhdx fájlba. További információt A Linux-disztribúciósvhdx-fájljának és lemezútvonalának megkeresése című témakörben talál.

  3. Nyissa meg a Windows parancssorát rendszergazdai jogosultságokkal, majd nyissa meg a diskpart parancsértelmezőt a következő beírással:

    diskpart
    
  4. Most következik egy DISKPART> üzenet. Írja be a következő parancsot, és cserélje le a <pathToVHD>-t a Linux-disztribúcióhoz tartozó ext4.vhdx fájl elérési útjára (a 2. lépésben másolva).

    Select vdisk file="<pathToVHD>"
    
  5. A virtuális lemezhez társított részletek megjelenítése, beleértve a Virtuális méret, amely a VHD aktuális maximális méretét jelöli:

    detail vdisk
    
  6. Át kell alakítania a virtuális méretet megabájttá. Ha például virtuális mérete: 512 GB, akkor ez 512000 MB. A megadott új értéknek nagyobbnak kell lennie, mint az eredeti érték. Az 512 GB-ról 1024 GB-ra növelt virtuális méret megduplázásához mb-ban adja meg az értéket: 1024000. Ügyeljen arra, hogy ne adjon meg a ténylegesen kívántnál magasabb értéket, mivel a virtuális lemezek méretének csökkentése sokkal bonyolultabb folyamat.

  7. Adja meg a Linux-disztribúcióhoz lefoglalni kívánt új maximális méret értékét a Windows parancssorának DISKPART> parancssorával:

    expand vdisk maximum=<sizeInMegaBytes>
    
  8. Lépjen ki a DISKPART> parancssorból:

    exit
    
  9. Indítsa el ezt a Linux-disztribúciót. (Győződjön meg arról, hogy a WSL 2-ben fut. Ezt a következő paranccsal ellenőrizheti: wsl.exe -l -v. A WSL 1 nem támogatott).

  10. A WSL elvégezheti a fájlrendszer méretének bővítését ehhez a disztribúcióhoz a WSL parancssorából futtatva ezeket a parancsokat. Ez az üzenet az első csatlakoztatási parancsra válaszul jelenhet meg: "/dev: nincs még csatlakoztatva a /dev-hez." Ez az üzenet biztonságosan figyelmen kívül hagyható.

    sudo mount -t devtmpfs none /dev
    mount | grep ext4
    
  11. Másolja ki ennek a bejegyzésnek a nevét, amely a következőképpen fog kinézni: /dev/sdX (az X bármilyen más karaktert jelöl). Az alábbi példában a X értéke b:

    sudo resize2fs /dev/sdb <sizeInMegabytes>M
    

    A fenti példában a virtuális merevlemez méretét 2048000 módosítottuk, így a parancs a következő lesz: sudo resize2fs /dev/sdb 2048000M.

    Jegyzet

    Előfordulhat, hogy telepítenie kell resize2fs. Ha igen, a következő paranccsal telepítheti: sudo apt install resize2fs.

    A kimenet a következőhöz hasonlóan fog kinézni:

    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.
    

A Linux-disztribúcióhoz tartozó virtuális meghajtó (ext4.vhdx) sikeresen ki lett bontva az új méretre.

Fontos

Azt javasoljuk, hogy Windows-eszközök vagy szerkesztők használatával ne módosítsa, ne helyezze át és ne érje el a AppData mappájában található WSL-hez kapcsolódó fájlokat. Ennek hatására a Linux-disztribúció megsérülhet. Ha windowsos linuxos fájljait szeretné elérni, az a \\wsl$\<distribution-name>\útvonalon keresztül lehetséges. Nyissa meg a WSL-disztribúciót, és írja be az explorer.exe .-t: így megtekintheti azt a mappát. További információt a következő blogbejegyzésben talál: Linux-fájlok elérése Windows.

VHD csatlakoztatási hiba javítása

Ha "a disztribúciós lemez csatlakoztatásával" kapcsolatos hibát tapasztal, annak oka lehet egy hirtelen leállás vagy áramkimaradás, ami miatt az adatvesztés elkerülése érdekében a Linux disztribúció virtuális merevlemeze írásvédett módba válthat. Az alábbi lépések végrehajtásával kijavíthatja és visszaállíthatja a disztribúciót a e2fsck Linux parancs használatával.

A blokkeszköz nevének azonosításához használja az lsblk parancsot

Amikor a WSL 2 linuxos disztribúciót telepít, a disztribúciót virtuális merevlemezként (VHD) csatlakoztatja saját fájlrendszerével. A Linux ezekre a merevlemezekre "blokkeszközökként" hivatkozik, és a lsblk paranccsal tekintheti meg az ezekről szóló információkat.

A WSL 2 által jelenleg használt blokkeszközök nevének megkereséséhez nyissa meg a disztribúciót, és írja be a következő parancsot: lsblk. (Vagy nyissa meg a PowerShellt, és írja be a következő parancsot: wsl.exe lsblk.) A kimenet a következőképpen fog kinézni:

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

A blokkeszközre vonatkozó információk a következőket tartalmazzák:

  • NAME: Az eszközhöz rendelt név sd[a-z] lesz, az egyes használt lemezekhez betűjellel ellátott SCSI-lemezre hivatkozva. sda mindig a rendszer elosztása.
  • MAJ:MIN: A Linux kernel által az eszközök belső azonosításához használt számokat jelöli az eszköztípust képviselő első számmal (a 8 a kisszámítógép-rendszerillesztő/SCSI-lemezek esetében használatos).
  • RM: Tudassa velünk, hogy az eszköz cserélhető -e (1) vagy sem (0).
  • MÉRET: A kötet teljes mérete.
  • RO: Adja meg, hogy az eszköz csak olvasható-e (1) vagy sem (0).
  • TYPE: Az eszköz típusára (ebben az esetben a lemezre) hivatkozik.
  • MOUNTPOINTS: A blokkeszközt tartalmazó fájlrendszer aktuális könyvtárára hivatkozik (a SWAP előre konfigurált inaktív memóriára vonatkozik, így nincs csatlakoztatási pont).

Írásvédett tartalék hiba

Amennyiben a WSL egy Linux-disztribúció megnyitásakor "csatolási hibát" észlel, a disztribúció csak olvasási módba kerülhet beállításra. Ha ez történik, a disztribúció a következő hibát jelenítheti meg az indítás során:

An error occurred mounting the distribution disk, it was mounted read-only as a fallback.

Ha egy disztribúció írásvédettként indul el, a fájlrendszerbe való írási kísérletek a következőhöz hasonló hibával meghiúsulnak:

$ touch file
touch: cannot touch 'file': Read-only file system

Ha helyre szeretne állítani egy lemez csatlakoztatási hibáját a WSL-ben, és ismét használható/írható állapotba szeretné visszaállítani, a wsl.exe --mount paranccsal újra csatlakoztathatja a lemezt az alábbi lépésekkel:

  1. Az összes WSL-disztribúció leállításához nyissa meg a PowerShellt rendszergazdaként (emelt szintű parancssorban), és adja meg a parancsot:

    wsl.exe --shutdown
    
  2. Írja be a csatlakoztatási parancsot, és cserélje le <path-to-ext4.vhdx> a terjesztési .vhdx fájl elérési útjára. Ha segítségre van szüksége a fájl megkereséséhez, olvassa el A Linux-disztribúciósVHD-fájljának és lemezútvonalának megkeresése.

    wsl.exe --mount <path-to-ext4.vhdx> --vhd --bare
    
  3. A PowerShell wsl.exe lsblk parancsával azonosítsa a disztribúció blokkeszközének nevét (sd[a-z]), majd írja be a következő parancsot a lemez javításához (<device> lecserélése a megfelelő blokkeszköznévre( például "sdc"). A e2fsck parancs ellenőrzi az ext4 fájlrendszereket (a WSL-vel telepített disztribúciók által használt típust) a hibákért, és ennek megfelelően javítja ki őket.

    wsl.exe sudo e2fsck -f /dev/<device>
    

    Jegyzet

    Ha csak egyetlen Linux-disztribúció van telepítve, "használatban lévő ext fájl" hibaüzenet jelenhet meg, és telepítenie kell egy további disztribúciót a wsl.exe lsblkfuttatásához. A javítás befejezése után eltávolíthatja a disztribúciót. Emellett előfordulhat, hogy be kell zárnia a Docker Desktopot Windows rendszeren, hogy elkerülje a Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_SHARING_VIOLATION hibát a wsl.exe sudo e2fsck -f /dev/sdcparancs futtatása közben.

  4. Ha a javítás befejeződött, bontsa le a lemezt a PowerShellben a következő beírással:

    wsl.exe --unmount
    

Figyelmeztetés

A következő parancsot használhatja: sudo mount -o remount,rw / írásvédett disztribúciót adhat vissza használható/írható állapotba, de az összes módosítás memóriában marad, és így a terjesztés újraindításakor elveszik. Javasoljuk, hogy a lemez csatlakoztatásához és javításához használja a fenti lépéseket.

A .vhdx fájl és lemez elérési útja a Linux-disztribúcióhoz

A Linux-disztribúció .vhdx fájl- és könyvtárelérési útvonalának megkereséséhez nyissa meg a PowerShellt, és használja a következő szkriptet, és cserélje le a <distribution-name> a tényleges terjesztési névre:

(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"

Az eredmény egy %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx-hez hasonló elérési utat jelenít meg. Például:

C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

Ez a felsorolt Linux-disztribúcióhoz társított ext4.vhdx fájl elérési útja.