Aumentou o disco do servidor e o Linux não mostra o espaço novo? Veja como expandir a partição e o sistema de arquivos com growpart, LVM, XFS e ext4.
Quando o disco de um VPS ou de uma máquina virtual é aumentado, o espaço novo fica no fim do disco, sem uso. O Linux só passa a enxergá-lo depois de três camadas serem esticadas, de baixo para cima: a partição, o LVM (se existir) e o sistema de arquivos. Tudo pode ser feito com o servidor ligado.
Antes de começar
- Acesso SSH como
roote, de preferência, acesso ao console do servidor. - O disco já aumentado no painel do provedor ou do hypervisor (VMware, Proxmox, Hyper-V).
- A ferramenta
growpart:sudo dnf install cloud-utils-growpartno AlmaLinux e no Rocky,sudo apt install cloud-guest-utilsno Ubuntu e no Debian.
1. Veja como o disco está organizado
lsblk
df -hT /
Exemplo de um AlmaLinux com LVM, num disco que passou de 50 para 100 GB:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─almalinux-root 253:0 0 45G 0 lvm /
└─almalinux-swap 253:1 0 4G 0 lvm [SWAP]
Anote três coisas: o disco (sda), o número da partição que vai crescer (2) e se há lvm na coluna TYPE. O df -hT mostra o tipo do sistema de arquivos (xfs ou ext4). Em servidores com disco NVMe o nome é nvme0n1 e as partições, nvme0n1p1, nvme0n1p2; em KVM é comum vda.
2. Faça o Linux reconhecer o novo tamanho
Se o lsblk ainda mostra o tamanho antigo do disco, peça uma releitura (troque sda pelo seu disco):
echo 1 | sudo tee /sys/class/block/sda/device/rescan
Em discos vda o novo tamanho costuma aparecer sozinho. Se nada mudar, reinicie o servidor.
3. Expanda a partição com o growpart
Repare no espaço entre o disco e o número da partição:
sudo growpart /dev/sda 2
A resposta esperada começa com CHANGED: partition=2. Para NVMe: sudo growpart /dev/nvme0n1 2.
4a. Sem LVM: expanda o sistema de arquivos
Se a partição está montada direto (sem linhas lvm no lsblk), use o comando do tipo de sistema de arquivos:
# XFS (padrão do AlmaLinux, Rocky e CentOS 7): informe o ponto de montagem
sudo xfs_growfs /
# ext4 (padrão do Ubuntu e do Debian): informe a partição
sudo resize2fs /dev/sda2
No ext4, troque /dev/sda2 pela partição que você expandiu no passo 3 (em muitas instalações do Ubuntu sem LVM ela é a /dev/sda1).
4b. Com LVM: volume físico, volume lógico e sistema de arquivos
- Aumente o volume físico (PV) para ocupar a partição maior:
sudo pvresize /dev/sda2 - Descubra o nome do volume lógico (LV) da raiz:
Os nomes mudam conforme o sistema:sudo lvs/dev/almalinux/rootno AlmaLinux,/dev/rl/rootno Rocky,/dev/centos/rootno CentOS 7 e/dev/ubuntu-vg/ubuntu-lvno Ubuntu. - Entregue todo o espaço livre ao volume. A opção
-rjá expande o sistema de arquivos, seja XFS ou ext4:sudo lvextend -r -l +100%FREE /dev/almalinux/root
5. Confira o resultado
df -h /
O tamanho da raiz deve refletir o espaço novo.
Adicionei um disco novo em vez de aumentar o atual
Com LVM, dá para somar um segundo disco ao mesmo volume. Supondo que o disco novo apareceu como sdb no lsblk e está vazio:
sudo pvcreate /dev/sdb
sudo vgextend almalinux /dev/sdb
sudo lvextend -r -l +100%FREE /dev/almalinux/root
O nome do grupo (almalinux no exemplo) aparece no sudo vgs. Saiba que, com o volume espalhado em dois discos, a falha de qualquer um deles afeta todo o volume. Sem LVM, o caminho é formatar o disco novo e montá-lo numa pasta, como /backup.
Problemas comuns
NOCHANGE: partition 2 is size ... it cannot be grown
Não há espaço livre logo depois da partição. Ou o Linux ainda não viu o disco maior (volte ao passo 2), ou existe outra partição depois dela, muitas vezes a swap. O growpart só expande a última partição do disco.
O Ubuntu não usa o disco todo, mesmo sem eu ter aumentado nada
O instalador do Ubuntu Server com LVM costuma deixar parte do espaço livre no grupo de volumes. Veja a coluna VFree no sudo vgs; se houver espaço, basta o passo 4b a partir do lvextend, com /dev/ubuntu-vg/ubuntu-lv.
resize2fs: Bad magic number in super-block
O sistema de arquivos é XFS, não ext4. Use xfs_growfs com o ponto de montagem.
O disco tem mais de 2 TB e a partição para em 2 TB
A tabela de partições é do tipo MBR (msdos), que não passa de 2 TiB. Veja com sudo parted /dev/sda print (linha Partition Table). Converter para GPT é possível, mas arriscado; com backup em mãos, avalie com o suporte.
Quero diminuir a partição
O XFS não pode ser reduzido. Para diminuir, é preciso criar um volume menor, copiar os dados e trocar.