Skip to content

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:

text
Device is currently in use, repartitioning is probably a bad idea.
FerramentaFunciona com / montado?Motivo
cfdisk / fdisk⚠️ Não recomendadoNão consegue forçar o kernel a reler a tabela de partições de um disco ativo
growpart✅ SimUsa BLKPG ioctl para atualizar apenas a partição específica sem reler o disco inteiro
resize2fs✅ SimOpera diretamente no filesystem, independente do estado de montagem

Pré-requisitos

bash
# 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 -y

Verificação antes de expandir

1. Checar espaço em disco

bash
df -h /
lsblk /dev/sda

2. Checar tabela de partições

bash
fdisk -l /dev/sda
# ou
cfdisk /dev/sda  # apenas para visualizar, não alterar

Confirme que existe espaço livre (Free space) contíguo após a partição que deseja expandir.

Exemplo de layout favorável:

text
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 sda1

Procedimento

Passo 1 — Corrigir GPT mismatch (se necessário)

Se o cfdisk ou fdisk exibir um aviso como:

text
GPT PMBR size mismatch (209715199 != 314572799) will be corrected by write.

Corrija antes de prosseguir:

bash
#Instala gdisk

apt install gdisk
dnf install gdisk

#Corrige erro
sgdisk -e /dev/sda

#Confira 
sgdisk -v /dev/sda

Isso atualiza a tabela GPT de backup para o final real do disco.

Passo 2 — Expandir a partição

text
growpart /dev/sda X

O segundo argumento (1) é o número da partição (sda 1), não o path completo.

Saída esperada:

text
CHANGED: partition=1 start=2099200 old: size=207615967 end=209715166 new: size=312473567 end=314572767

Passo 3 — Expandir o filesystem

Para ext4 (mais comum):

bash
resize2fs /dev/sdaX

Para XFS (RHEL/CentOS):

bash
xfs_growfs /

Passo 4 — Verificar

bash
df -h /
lsblk /dev/sda

Antes:

text
Filesystem      Size  Used Avail Use%
/dev/sda1        96G   83G   14G  87%

Depois:

text
Filesystem      Size  Used Avail Use%
/dev/sda1       148G   83G   66G  56%

Como funciona internamente

text
┌─────────────────────────────────────────────────────────┐
│  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

bash
apt install cloud-guest-utils -y   # Debian/Ubuntu
yum install cloud-utils-growpart   # RHEL/CentOS

resize2fs retorna "Nothing to do"

O filesystem já ocupa toda a partição. Verifique se o growpart realmente expandiu:

bash
lsblk /dev/sda

Partiçã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:

text
sgdisk -e /dev/sda
partprobe /dev/sda

Resumo dos comandos

bash
# 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