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.
Abaixo tem a atual situação das partições do servidor:
1 2 3 4 5 6 7 8 9 10 |
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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
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.
1 2 3 4 5 6 7 8 9 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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.
Um parâmetro que eu gosto muito de utilizar quando desejo usar todo o espaço livre em apenas uma partição é o parâmetro: lvextend –resizefs -l 100%FREE.
1 2 3 4 5 6 7 |
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) Deslizando o mesmo procedimento para aumentar a partição /dev/mapper/VG1-LVusr
1 2 3 4 5 6 7 |
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.
1 2 3 4 5 6 7 8 9 10 |
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
Ótimo artigo, muito bem explicado. Me ajudou muito! Obrigado!
Grande Adonai.
Excelente artigo.
Abraços.
Valeu Bambirra. É um prazer te encontrar aqui no meu blog.
Abraços,
Adonai