Como aumentar o tamanho do disco de uma VM Ubuntu no VirtualBox (com LVM)

Se você aumentou o disco virtual no VirtualBox, mas o Ubuntu continua mostrando pouco espaço livre, este guia resolve o problema completo.

Esse cenário é muito comum quando a VM usa LVM: o disco virtual cresce, mas a partição, o volume físico, o volume group, o volume lógico e o filesystem não crescem sozinhos. O VirtualBox expande a imagem do disco com VBoxManage modifymedium --resize, e depois o sistema Linux precisa ser ajustado por dentro. 

Neste tutorial, vou mostrar como sair de algo como 25 GB para 50 GB em uma VM Ubuntu no VirtualBox.

Quando este tutorial se aplica

Este passo a passo é ideal para quem está em um cenário parecido com este:

  • VM Ubuntu rodando no VirtualBox
  • disco virtual em VDI
  • sistema com LVM
  • /boot em partição separada
  • raiz / quase ou totalmente cheia

Exemplo de saída inicial:

df -h

Saída:

Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 12G 11G 0 100% /
/dev/sda2 2.0G 122M 1.7G 7% /boot

Nesse caso, o / está dentro de um volume lógico LVM, então aumentar só o disco no VirtualBox não basta.


Visão geral do processo

O processo completo é este:

  1. desligar a VM
  2. aumentar o tamanho do disco virtual no VirtualBox
  3. iniciar a VM
  4. confirmar qual partição contém o LVM
  5. expandir essa partição
  6. expandir o PV do LVM
  7. expandir o LV
  8. expandir o filesystem
  9. validar tudo no final

O comando growpart serve para estender a partição até o espaço livre disponível, o pvresize faz o LVM enxergar o novo tamanho da partição, o lvextend aumenta o volume lógico, e o resize2fs aumenta o filesystem ext2/ext3/ext4 para ocupar o espaço disponível. 


Passo 0: faça backup ou snapshot

Antes de mexer em partições e LVM, faça um snapshot da VM.

Isso não é obrigatório, mas é a proteção mais importante caso algo saia errado.


Passo 1: desligue a VM

A VM precisa estar desligada de verdade, não suspensa.


Passo 2: aumente o disco virtual no VirtualBox

No host, aumente o VDI com VBoxManage modifymedium.

Exemplo para passar o disco para 50 GB:

VBoxManage modifymedium "/caminho/para/DevVM.vdi" --resize 51200

O parâmetro --resize usa megabytes. Então 51200 significa 50 GB. O VirtualBox documenta exatamente esse uso para redimensionar a imagem do disco virtual. 

Depois disso, o disco virtual cresceu, mas o Ubuntu ainda não vai usar o espaço automaticamente.


Passo 3: suba a VM e inspecione o layout do disco

Agora, dentro do Ubuntu, rode:

lsblk
sudo fdisk -l /dev/sda
sudo pvs
sudo vgs
sudo lvs

O que você quer encontrar

Você precisa descobrir:

  • qual é o disco principal, normalmente /dev/sda
  • qual partição contém o LVM, normalmente algo como /dev/sda3
  • qual é o nome do volume group e do logical volume

Exemplo real:

NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 23G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 11.5G 0 lvm /

Interpretação:

  • /dev/sda já está com 50G
  • /dev/sda2 é o /boot
  • /dev/sda3 é a partição que contém o LVM
  • o LV raiz ainda está pequeno

Outra saída importante:

PV         VG        Fmt  Attr PSize   PFree
/dev/sda3 ubuntu-vg lvm2 a-- <23.00g 11.50g

Aqui já fica claro que o LVM está em /dev/sda3.


Passo 4: instale o growpart se necessário

No Ubuntu, o growpart costuma vir no pacote cloud-guest-utils.

sudo apt update
sudo apt install -y cloud-guest-utils

growpart foi feito justamente para reescrever a tabela de partição e fazer a partição crescer até o fim do disco, ou até a próxima partição. 

Se ele já estiver instalado, você verá algo assim:

cloud-guest-utils is already the newest version

Passo 5: expanda a partição LVM

Agora expanda a partição que contém o LVM.

No exemplo acima, a partição é a 3, então o comando fica:

sudo growpart /dev/sda 3

Saída esperada

CHANGED: partition=3 start=4198400 old: size=48228352 end=52426751 new: size=100659167 end=104857566

Isso significa que a partição 3 cresceu e agora ocupa o espaço novo do disco.

Se você rodar lsblk depois, verá algo parecido com isto:

sda                         8:0    0   50G  0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 48G 0 part

Passo 6: faça o LVM enxergar o novo tamanho da partição

Agora o disco cresceu e a partição cresceu, mas o LVM ainda precisa saber disso.

Use:

sudo pvresize /dev/sda3

pvresize redimensiona o physical volume para refletir o tamanho novo do dispositivo subjacente. 

Saída esperada

Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized

Depois disso, confirme com:

sudo vgs

Exemplo:

VG        #PV #LV #SN Attr   VSize   VFree
ubuntu-vg 1 1 0 wz--n- <48.00g 11.50g

Repare no VFree: agora já existe espaço livre no volume group.


Passo 7: expanda o volume lógico raiz

Agora é hora de aumentar o LV onde está o /.

Use:

sudo lvextend -l +100%FREE -r /dev/mapper/ubuntu--vg-ubuntu--lv

lvextend aumenta o logical volume, e a opção -r pede para também redimensionar o filesystem automaticamente. 

Saída ideal

Em muitos casos, você verá algo assim:

Size of logical volume ubuntu-vg/ubuntu-lv changed from <11.50 GiB to <48.00 GiB.
File system ext4 found on ubuntu-vg/ubuntu-lv mounted at /.
Extending file system ext4...
Logical volume ubuntu-vg/ubuntu-lv successfully resized.

Mas pode acontecer este erro

No meu caso real, apareceu isto:

Size of logical volume ubuntu-vg/ubuntu-lv changed from <11.50 GiB (2943 extents) to <48.00 GiB (12287 extents).
File system ext4 found on ubuntu-vg/ubuntu-lv mounted at /.
Extending file system ext4 to <48.00 GiB (51535413248 bytes) on ubuntu-vg/ubuntu-lv...
/usr/libexec/lvresize_fs_helper: execvp failed: No such file or directory
Failed to extend file system with lvresize_fs_helper.
File system extend error.
Logical volume ubuntu-vg/ubuntu-lv successfully resized.

Essa mensagem quer dizer:

  • LV cresceu
  • mas o filesystem não cresceu automaticamente

Isso é fácil de confirmar:

df -h
lsblk

Se o lsblk mostrar 48G, mas o df -h ainda mostrar 12G no /, então o filesystem ainda precisa ser expandido manualmente.


Passo 8: se o lvextend -r falhar, rode resize2fs

Quando o filesystem for ext4, o resize2fs resolve.

sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

resize2fs é a ferramenta padrão para redimensionar filesystems ext2/ext3/ext4. A documentação informa que ele pode expandir um filesystem montado, desde que o kernel suporte resize online, o que é comum com ext4. 

Resultado esperado

Depois disso:

df -h

Saída final esperada:

Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 48G 10G 36G 23% /

E o lsblk:

NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 48G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 48G 0 lvm /

Nesse ponto, está tudo certo.


Como validar que deu certo

Rode estes comandos:

df -h /
lsblk
sudo pvs
sudo vgs
sudo lvs

Exemplo de estado final saudável

df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 48G 10G 36G 23% /
sudo vgs
VG #PV #LV #SN Attr VSize VFree
ubuntu-vg 1 1 0 wz--n- <48.00g 0
sudo lvs
LV VG Attr LSize
ubuntu-lv ubuntu-vg -wi-ao---- <48.00g

Interpretação:

  • disco aumentado com sucesso
  • partição aumentada com sucesso
  • PV/VG/LV aumentados com sucesso
  • filesystem aumentado com sucesso
  • sistema pronto para uso

Resumo rápido dos comandos

No host

VBoxManage modifymedium "/caminho/para/DevVM.vdi" --resize 51200

Na VM Ubuntu

lsblk
sudo fdisk -l /dev/sda
sudo pvs
sudo vgs
sudo lvssudo apt update
sudo apt install -y cloud-guest-utilssudo growpart /dev/sda 3
sudo pvresize /dev/sda3
sudo lvextend -l +100%FREE -r /dev/mapper/ubuntu--vg-ubuntu--lvdf -h

Se o filesystem não crescer sozinho

sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
df -h

Erros comuns e o que significam

1. df -h continua mostrando o tamanho antigo

Isso normalmente significa que o LV cresceu, mas o filesystem não.

Correção:

sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

resize2fs é justamente a ferramenta usada para fazer o filesystem ext4 ocupar o novo tamanho disponível. 

2. GPT PMBR size mismatch

Esse aviso pode aparecer depois que o VDI é aumentado, antes de a tabela de partição ser regravada.

Em geral, depois do growpart, isso deixa de ser problema prático, porque a partição é reescrita com o novo limite do disco.

3. Falta espaço até para rodar os comandos

Se o / estiver em 100%, você pode limpar algumas coisas antes:

sudo apt clean
sudo journalctl --vacuum-time=3d
rm -rf ~/.cache/*

Conclusão

Aumentar o disco de uma VM Ubuntu no VirtualBox envolve duas partes:

  1. aumentar a imagem do disco no VirtualBox
  2. aumentar partição + LVM + filesystem dentro do Ubuntu

O ponto mais importante é este: crescer o VDI não aumenta automaticamente o /. Você ainda precisa expandir a partição, o PV, o LV e, se necessário, o filesystem. O growpart, o pvresize, o lvextend e o resize2fs são as ferramentas certas para isso. 

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *