Expandir o tamanho do seu Disco Rígido Virtual do WSL 2

O WSL 2 usa um VHD (Disco Rígido Virtual) para armazenar os seus arquivos do Linux. No WSL 2, um VHD é representado no seu disco rígido do Windows como um arquivo .vhdx.

O VHD do WSL 2 usa o sistema de arquivos ext4. Esse VHD é redimensionado automaticamente para atender às suas necessidades de armazenamento e tem um tamanho máximo inicial de 256 GB. Se o espaço de armazenamento exigido pelos seus arquivos do Linux exceder esse tamanho, talvez seja necessário expandi-lo. Se a sua distribuição aumentar de tamanho para exceder 256 GB, você verá erros informando que você ficou sem espaço em disco. Para corrigir esse erro, expanda o tamanho do VHD.

Para expandir o tamanho máximo do VHD para mais de 256 GB:

  1. Termine todas as instâncias do WSL usando o comando: wsl --shutdown

  2. Para localizar o nome do pacote de instalação da distribuição ('PackageFamilyName'):

    • Usando o PowerShell (em que 'distro' é o nome da distribuição), insira o comando:
    • Get-AppxPackage -Name "*<distro>*" | Select PackageFamilyName
    • Por exemplo: Get-AppxPackage -Name "*Ubuntu*" | Select PackageFamilyName

    Get-AppxPackage command line screenshot

  3. Use o PackageFamilyName resultante para localizar o arquivo VHD fullpath usado pela instalação do WSL 2, este será o seu pathToVHD. Para encontrar o caminho completo:

    • No menu Iniciar, digite: "%LOCALAPPDATA%" e selecione para abrir a pasta de arquivos %LOCALAPPDATA%.
    • Em seguida, abra a pasta "Packages" e procure o PackageFamilyName da sua distribuição. Abra essa pasta (ou seja, CanonicalGroupLimited.Ubuntu20.04onWindows_79xxxxx).
    • Dentro da pasta PackageFamilyName, abra a pasta "LocalState" e localize o arquivo <disk>.vhdx.
    • Copie o caminho desse arquivo. Ele deve ser semelhante a: %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx
    • Por exemplo, o <pathToVHD> para Ubuntu 20.04 deve ser semelhante a: %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79xxxx\LocalState\ext4.vhdx.
  4. Redimensione o VHD do WSL 2 concluindo os seguintes comandos:

    • Abra o prompt de comando do Windows com privilégios de administrador e digite:

      diskpart
      
      DISKPART> Select vdisk file="<pathToVHD>"
      
      DISKPART> detail vdisk
      
    • Examine o resultado do comando detail. A saída incluirá um valor para Tamanho virtual. Esse é o valor máximo atual. Converta-o em megabytes. Por exemplo, se a saída de detail mostrar Tamanho virtual: 256 GB, converta o valor em 256000.

    • O novo valor que inserir deve ser maior que esse valor original. Por exemplo, para dobrar o tamanho virtual listado acima, você pode inserir o valor: 512000. Depois de determinar o número que você deseja definir para o novo tamanho (em megabytes), insira o seguinte comando no prompt do diskpart do prompt de comando do Windows:

      DISKPART> expand vdisk maximum=<sizeInMegaBytes>
      
    • Saia de diskpart

      DISKPART> exit
      
  5. Inicie sua distribuição do WSL (Ubuntu, por exemplo).

  6. Informe ao WSL que ele pode expandir o tamanho do sistema de arquivos executando esses comandos na linha de comando de distribuição do WSL.

       sudo mount -t devtmpfs none /dev
       mount | grep ext4
    
    • Você poderá ver esta mensagem em resposta ao primeiro comando mount: "/dev: none já foi montado em /dev." Essa mensagem pode ser ignorada com segurança.
    • Copie o nome dessa entrada, que terá a seguinte aparência: /dev/sdX (em que X representa qualquer outro caractere). No seguinte exemplo, o valor de X é b:
       sudo resize2fs /dev/sdb <sizeInMegabytes>M
    
    • Usando o exemplo acima, alteramos o tamanho do VHD para 512000; portanto, o comando seria: .

    Observação

    Talvez você também precise instalar o resize2fs. Nesse caso, você pode usar este comando para instalá-lo: sudo apt install resize2fs.

    A saída terá esta aparência:

       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

Recomendamos que você não modifique, mova ou acesse os arquivos relacionados ao WSL localizados dentro da sua pasta AppData usando as ferramentas ou os editores do Windows. Isso pode fazer com que a distribuição do Linux fique corrompida. Caso você queira acessar seus arquivos do Linux por meio do Windows, isso é possível por meio do caminho \\wsl$\<distroName>\. Abra sua distribuição do WSL e insira explorer.exe . para exibir essa pasta. Para saber mais, confira a postagem no blog: Acessando arquivos do Linux no Windows.