Files
projeto-importado/docs/expansao_disco_postgres_16.md
T
2025-11-28 00:29:42 -03:00

7.5 KiB

Manual Expansão de Disco Postgres 16

Neste processo, iremos expandir o disco do banco de dados PostgreSQL 16 sem necessidade de adicionar um novo disco no VMWARE e também sem a necessidade de reiniciar o servidor.

Expansão do disco no VMWARE

Primeiramente será necessário realizar a expansão do disco no VMWARE. Basta selecionar a VM desejada e informar o novo valor para os discos:

Neste exemplo, iremos ampliar o Hard disk 1 e 2 referentes ao Indice e Dados do PostgreSQL 16

Configuracao_Padrao

IMPORTANTE:

Abaixo a descrição sobre cada disco e sua função dentro da estrutura do banco de dados:

Hard disk 1 - Sempre será relacionado ao sistema operacional
Hard disk 2 - Sempre será relacionado a partição Indice do Postgres
Hard disk 3 - Sempre será relacionado a partição Dados do Postgres
Hard disk 4 - Sempre será relacionado a partição Archived (Onde é armazenado dos arquivos/anexos no banco de dados)

Para expandir o disco, deve-se seguir o padrão de partições do PostgreSQL 16 conforme documentado:

Após expandido o disco no VMWARE, iremos realizar a expansão diretamente no Linux

Expansão do disco no Linux

Execute o comando para verificar os discos no Linux

lsblk

Retorno:
NAME                            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                               8:0    0  100G  0 disk
├─sda1                            8:1    0    1G  0 part /boot/efi
├─sda2                            8:2    0    2G  0 part /boot
└─sda3                            8:3    0 96,9G  0 part
├─ubuntu--vg-ubuntu--lv       253:3    0   40G  0 lvm  /
├─ubuntu--vg-lv--var--log     253:4    0   40G  0 lvm  /var/log
├─ubuntu--vg-lv--swap         253:5    0    6G  0 lvm  [SWAP]
└─ubuntu--vg-lv--home         253:6    0   10G  0 lvm  /home
sdb                               8:16   0  120G  0 disk
└─postgresql--vg01-lv--indice   253:2    0  120G  0 lvm  /var/lib/postgresql/16/tablespaces/indice
sdc                               8:32   0  180G  0 disk
└─postgresql--vg02-lv--dados    253:1    0  180G  0 lvm  /var/lib/postgresql
sdd                               8:48   0  300G  0 disk
└─postgresql--vg03-lv--archived 253:0    0  300G  0 lvm  /var/lib/postgresql/16/tablespaces/archived
sr0                              11:0    1 1024M  0 rom

Verifique o disco que você ampliou no VMWARE para realizar o rescan no Linux:

Esse comando irá rescanear os disco sdb e sdc referente ao indice e dados do SGDB sem a necessidade de reiniciar o sistema operacional

echo 1 > /sys/class/block/sdb/device/rescan
echo 1 > /sys/class/block/sdc/device/rescan
echo 1 > /sys/class/block/sdd/device/rescan

Após a execução do rescan, já podemos verificar que os discos tiveram alterações de tamanho:

lsblk

NAME                            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                               8:0    0  100G  0 disk
├─sda1                            8:1    0    1G  0 part /boot/efi
├─sda2                            8:2    0    2G  0 part /boot
└─sda3                            8:3    0 96,9G  0 part
├─ubuntu--vg-ubuntu--lv       253:3    0   40G  0 lvm  /
├─ubuntu--vg-lv--var--log     253:4    0   40G  0 lvm  /var/log
├─ubuntu--vg-lv--swap         253:5    0    6G  0 lvm  [SWAP]
└─ubuntu--vg-lv--home         253:6    0   10G  0 lvm  /home
sdb                               8:16   0  160G  0 disk
└─postgresql--vg01-lv--indice   253:2    0  120G  0 lvm  /var/lib/postgresql/16/tablespaces/indice
sdc                               8:32   0  240G  0 disk
└─postgresql--vg02-lv--dados    253:1    0  180G  0 lvm  /var/lib/postgresql
sdd                               8:48   0  300G  0 disk
└─postgresql--vg03-lv--archived 253:0    0  300G  0 lvm  /var/lib/postgresql/16/tablespaces/archived
sr0                              11:0    1 1024M  0 rom

Após isso, basta realizarmos o resize dos mesmos:

pvresize /dev/sdb
pvresize /dev/sdc
pvresize /dev/sdd

Depois iremos expandir o volume lógico

lvextend -l +100%FREE /dev/postgresql-vg01/lv-indice
lvextend -l +100%FREE /dev/postgresql-vg02/lv-dados
lvextend -l +100%FREE /dev/postgresql-vg03/lv-archived

Em seguida iremos expandir o sistema de arquivos:

xfs_growfs /var/lib/postgresql
xfs_growfs /var/lib/postgresql/16/tablespaces/indice
xfs_growfs /var/lib/postgresql/16/tablespaces/archived

Após os procedimento, através do comando lsblk já conseguimos verificar que o lvm já esta com o mesmo tamanho alocado no disco do servidor, ou seja, o disco já esta ampliado e disponível para uso:

lsblk
NAME                            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                               8:0    0  100G  0 disk
├─sda1                            8:1    0    1G  0 part /boot/efi
├─sda2                            8:2    0    2G  0 part /boot
└─sda3                            8:3    0 96,9G  0 part
├─ubuntu--vg-ubuntu--lv       253:3    0   40G  0 lvm  /
├─ubuntu--vg-lv--var--log     253:4    0   40G  0 lvm  /var/log
├─ubuntu--vg-lv--swap         253:5    0    6G  0 lvm  [SWAP]
└─ubuntu--vg-lv--home         253:6    0   10G  0 lvm  /home
sdb                               8:16   0  160G  0 disk
└─postgresql--vg01-lv--indice   253:2    0  160G  0 lvm  /var/lib/postgresql/16/tablespaces/indice
sdc                               8:32   0  240G  0 disk
└─postgresql--vg02-lv--dados    253:1    0  240G  0 lvm  /var/lib/postgresql
sdd                               8:48   0  300G  0 disk
└─postgresql--vg03-lv--archived 253:0    0  300G  0 lvm  /var/lib/postgresql/16/tablespaces/archived
sr0                              11:0    1 1024M  0 rom

Executando o df -h podemos verificar os pontos de montagem no sistema operacional já com o novo tamanho:

df -h
Filesystem                                 Size  Used Avail Use% Mounted on
tmpfs                                      589M  2,5M  587M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv           40G  6,2G   34G  16% /
tmpfs                                      2,9G   14M  2,9G   1% /dev/shm
tmpfs                                      5,0M     0  5,0M   0% /run/lock
/dev/sda2                                  2,0G  300M  1,7G  15% /boot
/dev/sda1                                  1,1G  6,1M  1,1G   1% /boot/efi
/dev/mapper/ubuntu--vg-lv--var--log         40G  4,4G   36G  11% /var/log
/dev/mapper/postgresql--vg02-lv--dados     240G  153G   88G  64% /var/lib/postgresql
/dev/mapper/ubuntu--vg-lv--home             10G  104M  9,9G   2% /home
/dev/mapper/postgresql--vg01-lv--indice    160G   47G  114G  29% /var/lib/postgresql/16/tablespaces/indice
/dev/mapper/postgresql--vg03-lv--archived  300G  2,3G  298G   1% /var/lib/postgresql/16/tablespaces/archived
tmpfs                                      589M     0  589M   0% /run/user/1000

Observação

No manual acima, expandimos as partições sdb e sdc referentes ao disco do Indice e Dados do Postgres. Caso deseja ampliar o disco do Archive o processo é basicamente o mesmo, somente informando o disco referente a função!