Como expandir partições LVM no Linux (sem reiniciar o sistema)


LVM: o que é isso?
Se tem algo que preocupa qualquer administrador Linux é ver a partição raiz (/
) ficando sem espaço. Mas se o seu sistema usa LVM (Logical Volume Manager), você tem em mãos uma ferramenta poderosa e flexível que pode facilitar e muito a expansão de volumes existentes.
O Logical Volume Management, ou simplesmente LVM, é como um sistema de gerenciamento inteligente de discos. Em vez de trabalhar com partições fixas e limitadas, o LVM permite agrupar discos físicos (ou partes deles) em volumes lógicos que podem ser redimensionados conforme a necessidade. Isso significa que você pode aumentar, mover ou reorganizar o armazenamento de forma dinâmica — e o melhor: muitas vezes sem precisar reiniciar o sistema.
O LVM é especialmente indicado em ambientes onde o uso de disco muda com o tempo: servidores, máquinas virtuais, laboratórios ou qualquer sistema que exija mais controle e flexibilidade. Se você precisa de facilidade para expandir partições (como a /
), LVM pode ser seu melhor amigo.
📌 Cenário
Você tem um servidor Linux (Rocky, CentOS, RHEL etc) com partição /
dentro de um volume LVM. O disco virtual (vmdk) foi expandido no VMware (de 50 GB para 100 GB, por exemplo), e agora você quer que o sistema operacional use todo esse novo espaço — sem reinstalar nada e sem downtime.
OBS : Cuidado ao fazer este procedimento um erro e você pode acabar com a partição da sua maquina e perder tudo, no meu ambiente eu utilizo o Vmware Workstation e sempre faço um snap antes de fazer qualquer coisa, entao cuidado. (Pelo amor de deus !!!!)
Aqui em meu ambiente, eu montei o / com 50 gb a ideia é expandir essa partição para 100 gb
como eu vejo como está montada a partição ???
simples execute o comando :
lsblk
ele irá retornar uma saida parecida com essa :
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 49G 0 part
├─rl-root 253:0 0 47G 0 lvm /
└─rl-swap 253:1 0 2G 0 lvm [SWAP]
Oque são essas letras todas ai ???
sr0 11:0 1 1024M 0 rom
:
sr0
: Dispositivo de CD/DVD virtual ou físico.
rom
→ é uma mídia somente leitura (ROM = Read-Only Memory).
1024M
→ 1 GB (ISO de instalação do RockyLinux ).
nvme0n1 259:0 0 50G 0 disk
nvme0n1
É o meu SSD NVMe principal, com 50 GB.
disk
é um disco inteiro, sem particionamento aqui ainda (apenas a base).
Agora vêm as partições dele:
nvme0n1p1 259:1 0 1G 0 part /boot
nvme0n1p1
Primeira partição, com 1 GB.
/boot
→ onde ficam o kernel, initramfs e arquivos de boot.
nvme0n1p2 259:2 0 49G 0 part
nvme0n1p2
: Segunda partição, com 49 GB. Essa partição está usada pelo LVM.
Dentro dela o LVM criou dois volumes lógicos:
rl-root 253:0 0 47G 0 lvm /
rl-root
: Volume lógico chamado "root" dentro do volume group rl
47 GB
, montado em /
. (ESSA É QUE VAMOS ALTERAR JÁ JÁ )
rl-swap 253:1 0 2G 0 lvm [SWAP]
rl-swap
: Volume lógico de 2 GB que funciona como swap.
Em resumo:
O disco NVMe (
nvme0n1
) tem duas partições:/boot
fora do LVM.A outra (
nvme0n1p2
) usada pelo LVM para criar:Um volume lógico de root (
/
)Um volume lógico de swap.
Mas e esses números esquisitos? 253:0
, 259:1
... o que são?
Se você já executou o comando lsblk
, provavelmente reparou em uma coluna chamada MAJ:MIN
, com valores como 253:0
ou 259:1
. Eles podem parecer estranhos, mas têm uma função bem específica no Linux: são os números major e minor, que o kernel usa para identificar e se comunicar com os dispositivos de armazenamento.
O número major indica qual driver está controlando aquele dispositivo.
O número minor serve para diferenciar cada instância daquele tipo de dispositivo.
Por exemplo, no caso dos volumes LVM:
root → 253:0
rl-swap → 253:1
Aqui, o major 253
é usado para todos os volumes LVM (gerenciados pelo device-mapper), e os minors 0
, 1
, etc., identificam cada volume lógico individual.
Você não precisa decorar esses números, mas é legal saber que o Linux está organizando tudo nos bastidores com bastante disciplina tipo um síndico que sabe exatamente onde cada morador mora, mesmo que a gente só use o nome na portaria 😄
Beleza e agora ?
Agora vamos para a pratica !
✅ Pré-requisitos
Sistema com LVM
Root ou sudo
O disco já foi expandido no VMware ou Proxmox (Aqui utilizo VmWare Workstation 17 )
Faça snapshot da sua maquina após o aumento do disco.
Ferramenta
growpart
instaladaInstalando Growpart :
yum install -y cloud-utils-growpart
Confirme se o aumento de disco deu certo (do disco não da partição ok ??).
[root@srv-sudoersblog ~] fdisk -l
Disco /dev/nvme0n1: 100 GiB, 107374182400 bytes, 209715200 setores
Unidades: setor de 1 * 512 = 512 bytes
Tamanho de setor (lógico/físico): 512 bytes / 512 bytes
Tamanho E/S (mínimo/ótimo): 512 bytes / 512 bytes
Tipo de rótulo do disco: dos
Identificador do disco: 0x51446094
Veja que o meu está com 100 GB porém minha partição /
está apenas com 50 GB
[root@srv-sudoersblog ~] lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 49G 0 part
├─rl-root 253:0 0 47G 0 lvm / - ( Partição root )
└─rl-swap 253:1 0 2G 0 lvm [SWAP]
Aumentando a partição
Beleza, aqui o meu /
está dentro do volume lógico rl-root
que fica dentro da partição nvme0n1p2
.
sendo assim vou rodar o seguinte comando :
[root@srv-sudoersblog ~] growpart /dev/nvme0n1 2
CHANGED: partition=2 start=2099200 old: size=102758400 end=104857599 new: size=207615967 end=209715166
growpart /dev/nvme0n1 2
Oque fez?
Pediu para aumentar a artição número 2 do disco /dev/nvme0n1.
A partição 2 começou em um certo ponto no disco (start=2099200).
Antes, essa partição tinha um tamanho menor (old size=102758400 blocos).
Agora ela foi aumentada para ocupar quase todo o espaço disponível no disco (new size=207615967 blocos).
Ou seja, a partição 2 cresceu para aproveitar mais espaço livre no disco.
como confirmo isso ? você pode usar o vgdisplay, se tudo estiver certo ele vai mostrar no campo:
Free PE / Size
com uma quantidade de espaço livre no meu caso apareceu 50 gb
[root@srv-sudoersblog ~] vgdisplay
--- Volume group ---
VG Name rl
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <99,00 GiB
PE Size 4,00 MiB
Total PE 25343
Alloc PE / Size 12543 / <49,00 GiB
Free PE / Size 12800 / 50,00 GiB -- AQUI !!!!!!
VG UUID jH3gg0-WUPj-Ulgm-W2jt-zd4r-Sdj6-hYdfPE
Continuando …
Agora vamos dizer para o kernel atualizar a tabela de partições :
partprobe /dev/nvme0n1
E também expandir o /dev/nvme0n1p2 :
[root@srv-sudoersblog ~] pvresize /dev/nvme0n1p2
Physical volume "/dev/nvme0n1p2" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
e agora finalmente vamos aumentar a partição (UFA!)
[root@srv-sudoersblog ~] lvextend -l +100%FREE /dev/rl/root
Size of logical volume rl/root changed from <46,98 GiB (12026 extents) to <96,98 GiB (24826 extents).
Logical volume rl/root successfully resized.
O que rolou:
Esse comando pegou todo o espaço livre disponível no Volume Group rl
e jogou no volume lógico root
, que é onde fica o sistema de arquivos /
.
📏 Antes: o volume tinha ~47 GB
📈 Depois: pulou pra ~97 GB!
✅ Mensagem final confirma que o volume foi redimensionado com sucesso:
Logical volume rl/root successfully resized.
ta mais ainda se você utilizar o df -h
vai mostrar apenas 50GB
[root@srv-sudoersblog ~] df -h
Sist. Arq. Tam. Usado Disp. Uso% Montado em
devtmpfs 854M 0 854M 0% /dev
tmpfs 874M 0 874M 0% /dev/shm
tmpfs 874M 8,7M 865M 1% /run
tmpfs 874M 0 874M 0% /sys/fs/cgroup
/dev/mapper/rl-root 47G 2,7G 45G 6% /
/dev/nvme0n1p1 1014M 199M 816M 20% /boot
tmpfs 175M 0 175M 0% /run/user/0
Aqui no meu caso como estou utilizando o sistema de arquivos xfs e preciso utilizar o comando xfs_growfs /
após isso ele vai realocar o espaço do / para os 100 GB :
[root@srv-sudoersblog ~] xfs_growfs /
meta-data=/dev/mapper/rl-root isize=512 agcount=4, agsize=3078656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=12314624, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=6013, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 12314624 to 25421824
Você pode descobrir seu sistema de arquivos utilizando o comando df -T /
Agora sim se você utilizar o df -h
irá aparecer a partição com os 100 gb e detalhe sem reiniciar a maquina:
[root@srv-sudoersblog ~] df -h
Sist. Arq. Tam. Usado Disp. Uso% Montado em
devtmpfs 854M 0 854M 0% /dev
tmpfs 874M 0 874M 0% /dev/shm
tmpfs 874M 8,7M 865M 1% /run
tmpfs 874M 0 874M 0% /sys/fs/cgroup
/dev/mapper/rl-root 97G 3,0G 94G 4% / - AQUI !!!!
/dev/nvme0n1p1 1014M 199M 816M 20% /boot
tmpfs 175M 0 175M 0% /run/user/0
Uma das grandes vantagens de utilizar LVM é justamente essa flexibilidade: você pode expandir o espaço em disco de forma dinâmica, sem precisar desmontar partições ou reiniciar o sistema. Em setups tradicionais com partições fixas (como ext4 direto em /dev/sdX
), esse processo seria muito mais trabalhoso — e, na maioria dos casos, exigiria downtime.
🚀 Valeu, pessoal! Semana que vem tem mais!
Subscribe to my newsletter
Read articles from Hudson Alves Amaral directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
