Espandere le dimensioni del disco rigido virtuale WSL 2

WSL 2 usa un disco rigido virtuale (VHD) per archiviare i file di Linux. In WSL 2, un disco rigido virtuale è rappresentato nel disco rigido di Windows come file .vhdx.

Il disco rigido virtuale di WSL 2 usa il file system ext4. Questo disco viene ridimensionato automaticamente per soddisfare le tue esigenze di archiviazione e ha una dimensione massima iniziale di 256 GB. Se lo spazio di archiviazione richiesto dai file Linux supera questa dimensione, può essere necessario espanderlo. Se le dimensioni della distribuzione superano i 256 GB, vengono visualizzati errori per segnalare che lo spazio su disco è esaurito. Puoi risolvere il problema espandendo le dimensioni del disco rigido virtuale.

Per espandere le dimensioni massime del disco rigido virtuale oltre i 256 GB:

  1. Termina tutte le istanze di WSL usando questo comando: wsl --shutdown

  2. Per trovare il nome del pacchetto di installazione della distribuzione ('PackageFamilyName'):

    • Usando PowerShell digita il comando seguente (dove "distro" è il nome della distribuzione):
    • Get-AppxPackage -Name "*<distro>*" | Select PackageFamilyName
    • ad esempio Get-AppxPackage -Name "*Ubuntu*" | Select PackageFamilyName

    Get-AppxPackage screenshot della riga di comando

  3. Usare l'oggetto risultante per individuare il file VHD usato dall'installazione di PackageFamilyName fullpath WSL 2, che sarà pathToVHD . Per trovare il percorso completo:

    • Nel menu Start immettere: "%LOCALAPPDATA%" e selezionare per aprire la cartella di file %LOCALAPPDATA%.
    • Aprire quindi la cartella "Packages" e cercare PackageFamilyName il file della distribuzione. Aprire la cartella (ad esempio. CanonicalGroupLimited.Ubuntu20.04onWindows_79xxxxx).
    • PackageFamilyNameAll'interno della cartella aprire la cartella "LocalState" e trovare il <disk>.vhdx file.
    • Copiare il percorso in tale file, che dovrebbe avere un aspetto simile al seguente: %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx
    • Ad esempio, per <pathToVHD> Ubuntu 20.04 dovrebbe essere simile al seguente: %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79xxxx\LocalState\ext4.vhdx .
  4. Ridimensiona il disco rigido virtuale di WSL 2 completando i comandi seguenti:

    • Apri il prompt dei comandi di Windows con privilegi di amministratore e immetti quanto segue:

      diskpart
      
      DISKPART> Select vdisk file="<pathToVHD>"
      
      DISKPART> detail vdisk
      
    • Esaminare l'output del comando detail. L'output includerà un valore per Dimensioni virtuali. Si tratta del valore massimo corrente. Convertire questo valore in megabyte. Ad esempio, se l'output di dettaglio mostra Dimensioni virtuali: 256 GB, convertirlo in 256000.

    • Il nuovo valore immesso deve essere maggiore di questo valore originale. Ad esempio, per raddoppiare le dimensioni virtuali elencate in precedenza, è possibile immettere il valore: 512000. Dopo aver determinato il numero da impostare per le nuove dimensioni (in megabyte), immettere il comando seguente nel prompt diskpart del prompt dei comandi di Windows:

      DISKPART> expand vdisk maximum=<sizeInMegaBytes>
      
    • Uscire da diskpart.

      DISKPART> exit
      
  5. Avvia la distribuzione di WSL, ad esempio Ubuntu.

  6. Assicurarsi che WSL sia in grado di espandere le dimensioni del file system eseguendo questi comandi dalla riga di comando di distribuzione WSL.

       sudo mount -t devtmpfs none /dev
       mount | grep ext4
    
    • È possibile che venga visualizzato questo messaggio in risposta al primo comando mount: "/dev: none already mounted on /dev". È possibile ignorare questo messaggio.
    • Copiare il nome di questa voce, che sarà simile a /dev/sdX (la X rappresenta qualsiasi altro carattere). Nell'esempio seguente il valore di X è b:
       sudo resize2fs /dev/sdb <sizeInMegabytes>M
    
    • Usando l'esempio precedente, le dimensioni del disco rigido virtuale sono state modificate in 512000, quindi il comando sarà: sudo resize2fs /dev/sbd 512000M .

    Nota

    Può essere utile installare resize2fs. In tal caso, è possibile usare questo comando per installarlo: sudo apt install resize2fs.

    Il risultato sarà simile al seguente:

       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.
    

Importante

È consigliabile non modificare, spostare o accedere ai file correlati a WSL che si trovano all'interno della cartella AppData usando Windows strumenti o editor. altrimenti rischi di danneggiare la distribuzione Linux. Se si vuole accedere ai file Linux da Windows, ciò è possibile tramite il percorso \\wsl$\<distroName>\ . Aprire la distribuzione WSL e immettere explorer.exe . per visualizzare la cartella. Per altre informazioni, vedere il post di blog: Accesso ai file Linux da Windows.