Redimensionando partições com LVM

Esse é um tutorial que irei mostrar alguns comandos que preciso utilizar no dia-a-dia para manipular partições LVM de servidores, hoje por exemplo estou com um servidor que possui 8 partições, e em dua delas esta faltando espaço.
Como o servidor está no VMware eu posso aumentar o tamanho do disco evitando criar e adicionar mais um disco para poder aumentar o VG, esse método não é muito usual de ser feito, eu prefiro fazer dessa forma para manter apenas um phisical volume (PV) no servidor, sempre tenha cuidado ao realizar esse procedimento, pois a perca de dados sempre é possível, eu costumo fazer um snapshot do servidor, antes de fazer qualquer coisa.

Para aqueles que ainda não entendem muito bem a estrutura do LVM a imagem abaixo ajuda nesse entendimento.

LVM

Abaixo tem a atual situação das partições do servidor:

root@server:~# lvs
  LV     VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LVhome VG1 -wi-ao---- <1,86g
  LVopt  VG1 -wi-ao---- <7,45g
  LVraiz VG1 -wi-ao---- <4,66g
  LVroot VG1 -wi-ao----  2,79g
  LVsrv  VG1 -wi-ao---- <4,66g
  LVswap VG1 -wi-ao----  3,97g
  LVusr  VG1 -wi-ao----  2,79g
  LVvar  VG1 -wi-ao---- <5,59g
root@server:~# df -h
Sist. Arq.              Tam. Usado Disp. Uso% Montado em
udev                    2,0G     0  2,0G   0% /dev
tmpfs                   395M  6,6M  389M   2% /run
/dev/mapper/VG1-LVraiz  4,6G   24M  4,3G   1% /
/dev/mapper/VG1-LVusr   2,7G  1,9G  713M  73% /usr
tmpfs                   2,0G     0  2,0G   0% /dev/shm
tmpfs                   5,0M     0  5,0M   0% /run/lock
tmpfs                   2,0G     0  2,0G   0% /sys/fs/cgroup
/dev/mapper/VG1-LVroot  2,7G  8,6M  2,6G   1% /root
/dev/mapper/VG1-LVsrv   4,6G  465M  3,9G  11% /srv
/dev/mapper/VG1-LVopt   7,3G  207M  6,7G   3% /opt
/dev/mapper/VG1-LVvar   5,5G  4,6G  557M  90% /var
/dev/sda1               226M   84M  127M  40% /boot
/dev/mapper/VG1-LVhome  1,8G  5,8M  1,7G   1% /home

1) O primeiro passo é desligar o servidor e redimensionar o disco no VMWare, eu aumentei o disco para 55 GB, agora tem quase 20 GB sobrando.

2) Após reiniciar o servidor é necessário acessar o fdisk e aumentar a partição que é LVM, vale lembrar que esse método que estou explicando só funciona se a partição que for LVM ser a ultima do disco, se tiver outra partição não será possível estender a partição.

root@paprod083:~# fdisk -l
Disco /dev/sda: 55 GiB, 59055800320 bytes, 115343360 setores
Modelo de disco: Virtual disk
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: 0x4251c216

Dispositivo Inicializar Início      Fim  Setores Tamanho Id Tipo
/dev/sda1   *             2048   487423   485376    237M 83 Linux
/dev/sda2               487424 71301119 70813696   33,8G 8e Linux LVM

3) No trecho do terminal a seguir mostro o procedimento de exclusão e recriação da partição LVM que estarei aumentando

root@paprod083:~# fdisk /dev/sda

Bem-vindo ao fdisk (util-linux 2.33.1).
As alterações permanecerão apenas na memória, até que você decida gravá-las.
Tenha cuidado antes de usar o comando de gravação.

Comando (m para ajuda): p
Disco /dev/sda: 55 GiB, 59055800320 bytes, 115343360 setores
Modelo de disco: Virtual disk
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: 0x4251c216

Dispositivo Inicializar Início      Fim  Setores Tamanho Id Tipo
/dev/sda1   *             2048   487423   485376    237M 83 Linux
/dev/sda2               487424 71301119 70813696   33,8G 8e Linux LVM

Comando (m para ajuda): d
Número da partição (1,2, padrão 2):

A partição 2 foi excluída.

Comando (m para ajuda): n
Tipo da partição
   p   primária (1 primárias, 0 estendidas, 3 livre)
   e   estendida (recipiente para partições lógicas)
Selecione (padrão p): p
Número da partição (2-4, padrão 2):
Primeiro setor (487424-115343359, padrão 487424):
Último setor, +/-setores ou +/-tamanho{K,M,G,T,P} (487424-115343359, padrão 115343359):

Criada uma nova partição 2 do tipo "Linux" e de tamanho 54,8 GiB.
Partição nº 2: contém uma assinatura de LVM2_member.

Deseja remover a assinatura? [S]im/[N]ão: n

Comando (m para ajuda): p

Disco /dev/sda: 55 GiB, 59055800320 bytes, 115343360 setores
Modelo de disco: Virtual disk
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: 0x4251c216

Dispositivo Inicializar Início       Fim   Setores Tamanho Id Tipo
/dev/sda1   *             2048    487423    485376    237M 83 Linux
/dev/sda2               487424 115343359 114855936   54,8G 83 Linux

4) Agora vou executar o comando que vai identificar que o disco esta maior, é o comando pvresize.

root@paprod083:~# pvs
  PV         VG  Fmt  Attr PSize   PFree
  /dev/sda2  VG1 lvm2 a--  <33,77g    0
root@paprod083:~# pvresize /dev/sda2
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized
root@paprod083:~# pvs
  PV         VG  Fmt  Attr PSize   PFree
  /dev/sda2  VG1 lvm2 a--  <54,77g 21,00g

5) Após esse processo VG já tem espaço disponível

root@paprod083:~# vgdisplay
  --- Volume group ---
  VG Name               VG1
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  12
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                8
  Open LV               8
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <54,77 GiB
  PE Size               4,00 MiB
  Total PE              14020
  Alloc PE / Size       8644 / <33,77 GiB
  Free  PE / Size       5376 / 21,00 GiB
  VG UUID               dTS4q4-hd3V-su1S-Vsgg-ajz7-2IcB-b71GKI

6) Agora vou aumentar a partição /dev/mapper/VG1-LVopt para o tamanho de 10 GB

root@paprod083:~# lvextend --resizefs -L 10g /dev/mapper/VG1-LVopt
  Size of logical volume VG1/LVopt changed from <7,45 GiB (1907 extents) to 10,00 GiB (2560 extents).
  Logical volume VG1/LVopt successfully resized.
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/mapper/VG1-LVopt is mounted on /opt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/VG1-LVopt is now 2621440 (4k) blocks long.

7) Reslizando o mesmo procedimento para aumentar a partição /dev/mapper/VG1-LVusr

root@paprod083:~# lvextend --resizefs -L 5g /dev/mapper/VG1-LVusr
  Size of logical volume VG1/LVusr changed from 2,79 GiB (715 extents) to 5,00 GiB (1280 extents).
  Logical volume VG1/LVusr successfully resized.
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/mapper/VG1-LVusr is mounted on /usr; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/VG1-LVusr is now 1310720 (4k) blocks long.

8) Situação das partições após o redimensionamento, agora deixei espaço sobrando no VG para ir aumentando as partições conforme for necessário.

root@paprod083:~# lvs
  LV     VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LVhome VG1 -wi-ao---- <1,86g
  LVopt  VG1 -wi-ao---- 10,00g
  LVraiz VG1 -wi-ao---- <4,66g
  LVroot VG1 -wi-ao----  2,79g
  LVsrv  VG1 -wi-ao---- <4,66g
  LVswap VG1 -wi-ao----  3,97g
  LVusr  VG1 -wi-ao----  5,00g
  LVvar  VG1 -wi-ao---- <5,59g

Vale lembrar que sempre é recomendável fazer um snapshot do servidor caso esse procedimento de errado. A forma mais usual de resolver esse problema seria adicionar mais um disco no servidor criar um novo PV e adicionar esse PV no VG existente, assim ele teria mais espaço para ser utilizado.

Referencias:
https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)
https://wiki.ubuntu.com/Lvm
https://wiki.debian.org/LVM

3 comments

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *