Expandindo Partição Raiz (/) em Linux sem Reboot
Cenário: Disco com espaço livre disponível após a partição
/, que está montada e em uso.Ferramentas:
growpart+resize2fs
PROPÓSITO
Aproveitar o espaço que apareceu no disco sem reiniciar o servidor nem desmontar a raiz.
Quando usar: Depois de redimensionar o disco de uma VM ou instância cloud, quando o disco cresceu mas a partição continua do tamanho antigo.
Pré-requisitos: Espaço livre logo após a partição, acesso root e os utilitários growpart e resize2fs (ou xfs_growfs).
Contexto
Em ambientes cloud (AWS, GCP, Azure) ou VMs redimensionadas, é comum o disco físico crescer mas a partição e o filesystem não acompanharem automaticamente. Este guia cobre como expandir a partição raiz com segurança, sem desmontar e sem reiniciar.
Por que não usar cfdisk ou fdisk?
Ferramentas interativas como cfdisk e fdiskse recusam ou são inseguras para modificar partições em uso:
Device is currently in use, repartitioning is probably a bad idea.| Ferramenta | Funciona com / montado? | Motivo |
|---|---|---|
| cfdisk / fdisk | ⚠️ Não recomendado | Não consegue forçar o kernel a reler a tabela de partições de um disco ativo |
| growpart | ✅ Sim | Usa BLKPG ioctl para atualizar apenas a partição específica sem reler o disco inteiro |
| resize2fs | ✅ Sim | Opera diretamente no filesystem, independente do estado de montagem |
Pré-requisitos
# Verificar se growpart está instalado
which growpart
# Instalar se necessário (Ubuntu/Debian)
apt install cloud-guest-utils -y
# Instalar se necessário (RHEL/CentOS)
yum install cloud-utils-growpart -yVerificação antes de expandir
1. Checar espaço em disco
df -h /
lsblk /dev/sda2. Checar tabela de partições
fdisk -l /dev/sda
# ou
cfdisk /dev/sda # apenas para visualizar, não alterarConfirme que existe espaço livre (Free space) contíguo após a partição que deseja expandir.
Exemplo de layout favorável:
Device Start End Sectors Size Type
/dev/sda1 2099200 209715166 207615967 99G Linux filesystem
/dev/sda14 2048 10239 8192 4M BIOS boot
/dev/sda15 10240 227327 217088 106M EFI System
/dev/sda16 227328 2097152 1869825 913M Linux extended boot
Free space ... 50G ← espaço disponível após sda1Procedimento
Passo 1 — Corrigir GPT mismatch (se necessário)
Se o cfdisk ou fdisk exibir um aviso como:
GPT PMBR size mismatch (209715199 != 314572799) will be corrected by write.Corrija antes de prosseguir:
#Instala gdisk
apt install gdisk
dnf install gdisk
#Corrige erro
sgdisk -e /dev/sda
#Confira
sgdisk -v /dev/sdaIsso atualiza a tabela GPT de backup para o final real do disco.
Passo 2 — Expandir a partição
growpart /dev/sda XO segundo argumento (
1) é o número da partição (sda 1), não o path completo.
Saída esperada:
CHANGED: partition=1 start=2099200 old: size=207615967 end=209715166 new: size=312473567 end=314572767Passo 3 — Expandir o filesystem
Para ext4 (mais comum):
resize2fs /dev/sdaXPara XFS (RHEL/CentOS):
xfs_growfs /Passo 4 — Verificar
df -h /
lsblk /dev/sdaAntes:
Filesystem Size Used Avail Use%
/dev/sda1 96G 83G 14G 87%Depois:
Filesystem Size Used Avail Use%
/dev/sda1 148G 83G 66G 56%Como funciona internamente
┌─────────────────────────────────────────────────────────┐
│ growpart /dev/sda 1 │
│ │
│ 1. Lê a tabela de partições atual │
│ 2. Calcula o novo End da partição (até o espaço livre) │
│ 3. Escreve a nova tabela GPT │
│ 4. Chama BLKPG ioctl → kernel atualiza sda1 sem │
│ precisar reler o disco inteiro │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ resize2fs /dev/sda1 │
│ │
│ 1. Lê o superbloco do ext4 │
│ 2. Detecta que a partição cresceu │
│ 3. Expande as estruturas internas do filesystem │
│ 4. Tudo online, sem desmontar │
└─────────────────────────────────────────────────────────┘Troubleshooting
growpart não encontrado
apt install cloud-guest-utils -y # Debian/Ubuntu
yum install cloud-utils-growpart # RHEL/CentOSresize2fs retorna "Nothing to do"
O filesystem já ocupa toda a partição. Verifique se o growpart realmente expandiu:
lsblk /dev/sdaPartição não é a última no layout físico
Não é problema — o que importa é que o espaço livre esteja fisicamente após a partição no disco. Verifique pelo Start/End na saída do fdisk -l, não pela ordem de numeração.
GPT mismatch após reboot
Execute novamente:
sgdisk -e /dev/sda
partprobe /dev/sdaResumo dos comandos
# 1. Corrigir GPT (se necessário)
sgdisk -e /dev/sda
# 2. Expandir partição
growpart /dev/sda 1
# 3. Expandir filesystem (ext4)
resize2fs /dev/sda1
# 4. Verificar
df -h /Referências
man growpartman resize2fsman sgdisk
