TL;DR — Resumo Rápido

Guia LVM para Linux: estenda volumes lógicos, adicione discos, amplie sistemas de arquivos e expanda partições raiz em VMs de nuvem sem reinicialização.

Gerenciar armazenamento em servidores Linux de produção significa que mais cedo ou mais tarde você enfrentará um disco cheio. O Logical Volume Manager (LVM) foi projetado exatamente para esse momento: ele permite estender, reduzir, criar snapshots e migrar armazenamento online — geralmente sem nenhum tempo de inatividade. Este guia cobre o fluxo de trabalho completo do LVM, dos fundamentos da arquitetura à expansão da partição raiz em VMs de nuvem, com comandos reais que você pode executar imediatamente.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Um sistema Linux com lvm2 instalado (apt install lvm2 ou dnf install lvm2)
  • Acesso root ou sudo
  • Familiaridade básica com dispositivos de bloco Linux (lsblk, fdisk, df)
  • Para cenários de nuvem: capacidade de redimensionar o disco no Portal do Azure ou no console da AWS antes de tocar no Linux

Arquitetura LVM: PV → VG → LV

O LVM adiciona três camadas de abstração entre os discos físicos e o sistema de arquivos:

CamadaPrefixo de comandoDescrição
Volume Físico (PV)pv*Um disco bruto ou partição inicializado para LVM (pvcreate)
Grupo de Volumes (VG)vg*Um pool de um ou mais PVs (vgcreate, vgextend)
Volume Lógico (LV)lv*Uma fatia do espaço do VG que age como uma partição (lvcreate, lvextend)

O sistema de arquivos (ext4, XFS, etc.) vive dentro de um LV. O SO vê o LV como um dispositivo de bloco (ex.: /dev/myvg/data) e não tem conhecimento dos discos físicos subjacentes. Essa indireção é o que permite o redimensionamento online e a migração transparente entre discos.

Verificar o Layout LVM Atual

Sempre comece entendendo o que você tem:

# Listar todos os Volumes Físicos
pvs

# Listar todos os Grupos de Volumes
vgs

# Listar todos os Volumes Lógicos
lvs

# Detalhe completo de um VG específico
vgdisplay myvg

# Detalhe completo de um LV específico
lvdisplay /dev/myvg/mylv

# Mostrar árvore de dispositivos de bloco
lsblk

# Mostrar uso dos sistemas de arquivos montados
df -h

A coluna PFree na saída de pvs mostra o espaço não alocado no VG — é de lá que o lvextend retira.

Adicionando um Novo Disco como Volume Físico

Ao conectar um novo disco (ex.: /dev/sdb em uma VM, ou um novo EBS/disco gerenciado), inicialize-o como PV:

# Confirmar que o kernel vê o novo disco
lsblk

# Inicializar o disco como Volume Físico
pvcreate /dev/sdb

# Verificar
pvs

Não é necessário particionar o disco antes — usar o disco inteiro (/dev/sdb) é válido e mais simples.

Estendendo o VG e o LV

Passo 1 — Adicionar o PV ao VG

vgextend myvg /dev/sdb

Passo 2 — Estender o LV

Consumir todo o espaço livre restante no VG:

lvextend -l +100%FREE /dev/myvg/mylv

Adicionar uma quantidade fixa (ex.: 10 GB):

lvextend -L +10G /dev/myvg/mylv

O flag -r combina lvextend com o redimensionamento do sistema de arquivos em um único passo (funciona para ext4 e XFS):

lvextend -l +100%FREE -r /dev/myvg/mylv

Redimensionando o Sistema de Arquivos

Após estender o LV, o sistema de arquivos precisa ser informado sobre o novo espaço. Este passo é seguro em um sistema de arquivos montado e em uso.

ext4 (maioria dos sistemas Ubuntu/Debian)

resize2fs /dev/myvg/mylv

Nenhum argumento de tamanho é necessário — resize2fs preenche todo o LV. Pode ser executado com o sistema de arquivos montado.

XFS (maioria dos sistemas RHEL/CentOS/Rocky)

O XFS usa o ponto de montagem, não o dispositivo:

xfs_growfs /mountpoint
# ou para raiz:
xfs_growfs /

Importante: XFS só pode crescer, nunca encolher. Tentar reduzir um sistema de arquivos XFS não é suportado.

Estendendo a Partição Raiz em VMs de Nuvem (Sem Reinicialização)

Este é o cenário mais comum no mundo real. Você tem uma VM de nuvem (Azure ou AWS) cujo disco do SO está ficando sem espaço. Esta é a sequência completa — sem reinicialização necessária.

1. Redimensionar o disco no console de nuvem

  • Azure: Armazenamento → Discos → selecionar o disco do SO → Tamanho do disco → aumentar → Salvar
  • AWS: EC2 → Volumes → Modify Volume → definir novo tamanho → Modify

Aguarde o redimensionamento ser concluído antes de prosseguir.

2. Estender a partição no lado Linux

# Confirmar que o kernel vê o novo tamanho
lsblk

# Ampliar a partição (ex.: partição 2 em /dev/sda)
sudo growpart /dev/sda 2

# Verificar que a partição agora é maior
lsblk

3. Informar o LVM sobre o novo tamanho do PV

sudo pvresize /dev/sda2

4. Estender o LV

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

5. Ampliar o sistema de arquivos

Para ext4:

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

Para XFS:

sudo xfs_growfs /

6. Confirmar

df -h /

O sistema de arquivos raiz agora mostra o tamanho expandido. Nenhuma reinicialização foi necessária.

Reduzindo um Volume Lógico (Perigoso — Apenas ext4)

Reduzir é mais arriscado do que estender e só deve ser feito quando você tem um backup recente. O XFS não pode ser reduzido — este procedimento se aplica apenas ao ext4.

# 1. Desmontar o sistema de arquivos
umount /dev/myvg/data

# 2. Verificar e reparar o sistema de arquivos antes de reduzir
e2fsck -f /dev/myvg/data

# 3. Reduzir o sistema de arquivos PRIMEIRO (para o tamanho alvo, ex.: 20G)
resize2fs /dev/myvg/data 20G

# 4. Reduzir o LV para corresponder
lvreduce -L 20G /dev/myvg/data

# 5. Remontar
mount /dev/myvg/data /mnt/data

Aviso: Sempre reduza o sistema de arquivos antes do LV. Reduzir o LV primeiro destrói dados ao truncar o sistema de arquivos.

Snapshots LVM

Os snapshots capturam o estado de um LV em um determinado momento. São inestimáveis antes de operações arriscadas.

# Criar um snapshot de 5 GB de /dev/myvg/mylv
lvcreate --snapshot -L 5G -n mylv_snap /dev/myvg/mylv

# Montar o snapshot somente leitura para inspeção
mount -o ro /dev/myvg/mylv_snap /mnt/snapshot

# Reverter (mesclar snapshot com a origem)
lvconvert --merge /dev/myvg/mylv_snap

# Remover o snapshot sem reverter
lvremove /dev/myvg/mylv_snap

Movendo Dados Entre Volumes Físicos

pvmove migra extensões entre PVs enquanto o LV permanece online. Use isso para esvaziar um disco antes de removê-lo.

# Mover todas as extensões de /dev/sdb para qualquer outro PV no VG
pvmove /dev/sdb

# Após conclusão, remover o PV do VG
vgreduce myvg /dev/sdb

# Remover metadados LVM do disco
pvremove /dev/sdb

LVM vs ZFS vs Btrfs vs Partições Simples

RecursoLVMZFSBtrfsPartições simples
Extensão onlineSimSimSimNão
Redução onlineApenas ext4 (desmontar)NãoSimNão
SnapshotsSim (CoW)Sim (CoW)Sim (CoW)Não
RAID integradoVia dm-raidSimSim (limitado)Via mdadm
Compressão transparenteNãoSimSimNão
Autocorreção (checksums)NãoSimParcialNão
ComplexidadeMédiaAltaMédiaBaixa
Padrão em nuvemSim (RHEL/Ubuntu)Apenas ProxmoxApenas FedoraLegado

Armadilhas Comuns

  • Reduzir o sistema de arquivos após o LV destrói dados. Sempre reduza o sistema de arquivos primeiro.
  • Snapshot cheio = snapshot inválido. Monitore o uso com lvs e expanda se necessário.
  • XFS não pode ser reduzido. A tentativa falha com um erro claro.
  • Esquecer pvresize após redimensionar o disco de nuvem significa que o LVM ainda vê o tamanho antigo do PV.

Resumo

  • O LVM adiciona três camadas (PV, VG, LV) que permitem gerenciamento flexível de armazenamento online.
  • Use pvs / vgs / lvs e lsblk para auditar o layout atual antes de fazer alterações.
  • Estender é sempre seguro: pvcreate → vgextend → lvextend → resize2fs / xfs_growfs.
  • A expansão da raiz em VMs de nuvem requer growpart → pvresize → lvextend → resize2fs sem reinicialização.
  • Reduzir só é possível no ext4 e requer desmontagem; sempre faça backup primeiro.
  • Snapshots são capturas CoW baratas — tire um antes de cada mudança importante.
  • XFS só cresce; ZFS e Btrfs oferecem recursos mais ricos com maior complexidade.

Artigos Relacionados