Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este guia aborda como gerenciar o espaço em disco usado pelas distribuições Linux instaladas usando o WSL 2, incluindo:
- Como verificar a quantidade de espaço em disco disponível no VHD
- Como expandir o tamanho do VHD
- Como reparar o VHD se ocorrer um erro
- Como localizar o arquivo .vhdx e o caminho do disco para todas as distribuições Linux instaladas
O Subsistema Windows para Linux (WSL 2) usa uma plataforma de virtualização para instalar distribuições Linux ao lado do sistema operacional Windows host, criando um VHD (Virtual Hard Disk) para armazenar arquivos para cada uma das distribuições Linux instaladas. Esses VHDs usam o tipo de sistema de arquivos ext4 e são representados no disco rígido do Windows como um arquivo ext4.vhdx.
WSL 2 redimensiona automaticamente esses arquivos VHD para atender às necessidades de armazenamento. Por padrão, cada arquivo VHD usado pelo WSL 2 é inicialmente alocado uma quantidade máxima de 1 TB de espaço em disco (antes de versão 0.58.0 do WSL esse padrão foi definido como um máximo de 512 GB e um máximo de 256 GB antes disso).
Se o espaço de armazenamento exigido pelos seus arquivos Linux exceder esse tamanho máximo, você verá erros informando que ficou sem espaço em disco. Para corrigir esse erro, siga as orientações abaixo em Como expandir o tamanho do seu disco rígido virtual WSL 2.
Como verificar o espaço disponível em disco
Verifique a quantidade de espaço em disco disponível no VHD para uma distribuição Linux instalada com o WSL 2 usando o comando Linux Df.
Para verificar o espaço disponível em disco, abra uma linha de comando do PowerShell e insira este comando (substituindo <distribution-name> pelo nome da distribuição real):
wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro
Se este comando não funcionar para você, atualize para a versão Store do WSL usando o comando wsl --update ou tente wsl df -h /.
Os resultados incluirão:
- Filesystem: Identificador do sistema de arquivos VHD
- Tamanho: Tamanho total do disco (a quantidade máxima de espaço alocado para o VHD)
- Usado: Quantidade de espaço atualmente sendo usado no VHD
- Avail: Quantidade de espaço restante no VHD (tamanho alocado menos quantidade usada)
- Uso%: Porcentagem de espaço em disco restante (tamanho usado / alocado)
- Montado no: Caminho do diretório onde o disco se encontra montado
Se você vir que está perto de atingir a quantidade disponível de espaço em disco alocado para seu VHD, ou já recebeu um erro devido a nenhum espaço em disco restante, consulte a próxima seção para obter etapas sobre como expandir a quantidade máxima de espaço em disco alocado para o VHD associado à sua distribuição Linux. A quantidade de espaço em disco alocado para seu VHD pela WSL sempre mostrará a quantidade máxima padrão (1 TB na versão mais recente do WSL), mesmo que a quantidade de espaço em disco no seu dispositivo Windows real seja menor do que isso. O WSL monta um VHD que se expandirá em tamanho à medida que você o usa, para que sua distribuição Linux veja que ele pode crescer até o tamanho máximo alocado de 1TB.
Como expandir o tamanho do seu disco rígido virtual WSL 2
Para expandir o tamanho do VHD para uma distribuição Linux além da quantidade máxima padrão de 1 TB de espaço em disco alocado, você pode usar o comando wsl --manage ou seguir as etapas manuais abaixo. (As versões anteriores do WSL podem ter o máximo padrão definido para 512GB ou 256GB).
Expanda o tamanho do VHD usando wsl --manage
O comando wsl --manage só está disponível para versões WSL 2.5 e superiores.
Para redimensionar o espaço alocado no disco virtual:
Encerre todas as instâncias WSL usando o comando
wsl.exe --shutdownExecute
wsl --manage <distribution name> --resize <memory string>. As cadeias de memória suportadas têm a forma<Memory Value>B/M/MB/G/GB/T/TB. Os valores decimais não são suportados no momento (por exemplo,2.5TB).
A saída deve ser semelhante à seguinte:
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 unidade virtual (ext4.vhdx) para esta distribuição Linux foi agora expandida com sucesso para o novo tamanho.
Expansão manual
Para expandir o tamanho do VHD para uma distribuição Linux usando etapas manuais:
Encerre todas as instâncias WSL usando o comando:
wsl.exe --shutdownCopie o caminho do diretório para o arquivo ext4.vhdx associado à distribuição Linux instalada na sua máquina. Para obter ajuda, consulte Como localizar o arquivo vhdx e o caminho do disco para sua distribuição Linux.
Abra o Prompt de Comando do Windows com privilégios de administrador e, em seguida, abra o interpretador de comandos diskpart digitando:
diskpartAgora você terá um
DISKPART>prompt. Digite o seguinte comando, substituindo<pathToVHD>pelo caminho do diretório para o arquivoext4.vhdxassociado à distribuição Linux (copiado na etapa #2).Select vdisk file="<pathToVHD>"Exiba os detalhes associados a este disco rígido virtual (VHD), incluindo o Tamanho virtual, representando o tamanho máximo atual para o qual o VHD está alocado.
detail vdiskVocê precisará converter o tamanho Virtual em megabytes. Por exemplo, se Tamanho virtual: 512 GB, isso é igual a 512000 MB. O novo valor inserido deve ser maior do que esse valor original. Para dobrar o tamanho virtual de 512 GB para 1024 GB, insira o valor em MB como: 1024000. Tenha cuidado para não inserir um valor maior do que você realmente deseja, pois o processo de redução do tamanho de um disco virtual é muito mais complicado.
Insira o valor para o novo tamanho máximo que pretende atribuir a esta distribuição Linux utilizando o prompt
DISKPART>do Prompt de Comando do Windows:expand vdisk maximum=<sizeInMegaBytes>Saia da linha de comandos
DISKPART>.exitInicie esta distribuição Linux. (Verifique se ele está sendo executado no WSL 2. Você pode confirmar isso usando o comando:
wsl.exe -l -v. WSL 1 não é suportado).Informe o WSL de que ele pode expandir o tamanho do sistema de arquivos para essa distribuição executando esses comandos a partir da linha de comando de distribuição do WSL. Você pode ver esta mensagem em resposta ao primeiro comando mount: "/dev: none already mounted on /dev." Esta mensagem pode ser ignorada com segurança.
sudo mount -t devtmpfs none /dev mount | grep ext4Copie o nome desta entrada, que terá a seguinte aparência:
/dev/sdX(com o X representando qualquer outro caractere). No exemplo a seguir, o valor de X é b:sudo resize2fs /dev/sdb <sizeInMegabytes>MUsando o exemplo acima, alteramos o tamanho do vhd para 2048000, então o comando seria:
sudo resize2fs /dev/sdb 2048000M.Observação
Talvez seja necessário instalar resize2fs. Em caso afirmativo, você pode usar este comando para instalá-lo:
sudo apt install resize2fs.A saída será semelhante à seguinte:
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 unidade virtual (ext4.vhdx) para esta distribuição Linux foi agora expandida com sucesso para o novo tamanho.
Importante
Recomendamos que você não modifique, mova ou acesse os arquivos relacionados ao WSL localizados dentro da pasta AppData usando ferramentas ou editores do Windows. Fazer isso pode fazer com que sua distribuição Linux fique corrompida. Se você gostaria de acessar seus arquivos Linux do Windows, isso é possível através do caminho \\wsl$\<distribution-name>\. Abra sua distribuição WSL e digite explorer.exe . para exibir essa pasta. Para saber mais, consulte a postagem do blog: Acessando arquivos do Linux a partir do Windows.
Como reparar um erro de montagem VHD
Se você encontrar um erro relacionado à "montagem do disco de distribuição", isso pode ser devido a um desligamento repentino ou falta de energia e pode resultar na troca do VHD da distribuição Linux para somente leitura para evitar a perda de dados. Você pode reparar e restaurar a distribuição usando o comando e2fsck Linux seguindo as etapas abaixo.
Use o comando lsblk para identificar o nome do dispositivo de bloco
Quando o WSL 2 instala uma distribuição Linux, ele está montando a distribuição como um VHD (Virtual Hard Disk) com seu próprio sistema de arquivos. Linux refere-se a esses discos rígidos como "dispositivos de bloco" e você pode visualizar informações sobre eles usando o comando lsblk.
Para encontrar os nomes dos dispositivos de bloco que estão sendo usados atualmente pelo WSL 2, abra sua distribuição e digite o comando: lsblk. (Ou abra o PowerShell e digite o comando: wsl.exe lsblk.) A saída será mais ou menos assim:
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
As informações sobre o dispositivo de bloqueio incluem:
-
NOME: O nome atribuído ao dispositivo será sd[a-z], referindo-se ao disco SCSI com uma designação de letra para cada disco que está sendo usado.
sdaé sempre a distribuição do sistema. - MAJ:MIN: Representa números usados pelo kernel Linux para identificar internamente os dispositivos com o primeiro número representando o tipo de dispositivo (8 é usado para discos Small Computer System Interface/SCSI).
- RM: Vamos saber se o dispositivo é removível (1) ou não (0).
- TAMANHO: Tamanho total do volume.
- RO: Informe-nos se o dispositivo é só de leitura (1) ou não (0).
- TIPO: Refere-se ao tipo de dispositivo (disco neste caso).
- MOUNTPOINTS: Refere-se ao diretório atual no sistema de arquivos onde o dispositivo de bloco está localizado (SWAP é para memória inativa pré-configurada, portanto, nenhum ponto de montagem).
Erro de alternativa somente leitura
Se o WSL encontrar um "erro de montagem" ao abrir uma distribuição Linux, a distribuição pode ser definida como somente leitura como uma alternativa. Se isso acontecer, a distribuição pode exibir o seguinte erro durante a inicialização:
An error occurred mounting the distribution disk, it was mounted read-only as a fallback.
Quando uma distribuição é iniciada como somente leitura, qualquer tentativa de gravar no sistema de arquivos falhará com um erro como este:
$ touch file
touch: cannot touch 'file': Read-only file system
Para reparar um erro de montagem de disco no WSL e restaurá-lo novamente para um estado utilizável/gravável, você pode usar o comando wsl.exe --mount para remontar o disco com as seguintes etapas:
Desligue todas as distribuições WSL abrindo o PowerShell como administrador (em um prompt de comando elevado) e inserindo o comando:
wsl.exe --shutdownDigite o comando mount e substitua
<path-to-ext4.vhdx>pelo caminho para o arquivo .vhdx da distribuição. Para obter ajuda para localizar esse arquivo, consulte Como localizar o arquivo VHD e o caminho do disco para sua distribuição Linux.wsl.exe --mount <path-to-ext4.vhdx> --vhd --bareUse o comando
wsl.exe lsblkdo PowerShell para identificar o nome do dispositivo de bloco para a distribuição (sd[a-z]) e, em seguida, digite o seguinte comando para reparar o disco (substituindo<device>pelo nome correto do dispositivo de bloco, como "sdc"). O comandoe2fsckverifica os sistemas de arquivos ext4 (o tipo usado pelas distribuições instaladas com WSL) em busca de erros e os repara de acordo.wsl.exe sudo e2fsck -f /dev/<device>Observação
Se você tiver apenas uma única distribuição Linux instalada, você pode encontrar um erro "arquivo ext em uso" e precisará instalar uma distribuição adicional para executar
wsl.exe lsblk. Você pode desinstalar a distribuição assim que o reparo for concluído. Além disso, talvez seja necessário fechar o Docker Desktop no Windows para evitar o erroWsl/Service/CreateInstance/MountVhd/HCS/ERROR_SHARING_VIOLATIONao executar o comandowsl.exe sudo e2fsck -f /dev/sdc.Quando o reparo estiver concluído, desmonte o disco no PowerShell inserindo:
wsl.exe --unmount
Advertência
Você pode usar o comando: sudo mount -o remount,rw / para transformar uma distribuição de somente leitura em um estado que possa ser utilizado e gravado, mas todas as alterações serão feitas em memória e, portanto, serão perdidas quando a distribuição for reiniciada. Em vez disso, recomendamos usar as etapas listadas acima para montar e reparar o disco.
Como localizar o arquivo .vhdx e o caminho do disco para sua distribuição Linux
Para localizar o ficheiro .vhdx e o caminho do diretório para uma distribuição Linux, abra o PowerShell e use o seguinte script, substituindo <distribution-name> pelo nome real da distribuição:
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"
O resultado exibirá um caminho parecido com %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx. Por exemplo:
C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
Este é o caminho para o arquivo ext4.vhdx associado à distribuição Linux que você listou.
Windows Subsystem for Linux