Contexto
Estou executando um sistema Red Hat Enterprise Linux versão 8.5 em uma VM em um VMWare ESXI.
Eu precisava de mais espaço em um volume lógico preciso chamado lv_pmp
naquela VM:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 78,4G 0 part
├─VGslash-lv_root 253:0 0 19,5G 0 lvm /
├─VGslash-lv_swap 253:1 0 4G 0 lvm [SWAP]
├─VGslash-lv_usr 253:2 0 8G 0 lvm /usr
├─VGslash-lv_srv 253:3 0 2G 0 lvm /srv
├─VGslash-lv_home 253:4 0 2G 0 lvm /home
├─VGslash-lv_opt 253:5 0 4G 0 lvm /opt
├─VGslash-lv_tmp 253:6 0 4G 0 lvm /tmp
├─VGslash-lv_var_log_audit 253:7 0 512M 0 lvm /var/log/audit
├─VGslash-lv_var_log 253:8 0 1G 0 lvm /var/log
├─VGslash-lv_vartmp 253:9 0 10,4G 0 lvm /var/tmp
├─VGslash-lv_var 253:10 0 3G 0 lvm /var
└─VGslash-lv_pmp 253:11 0 20G 0 lvm /pmp
sr0 11:0 1 1024M 0 rom
Então redimensionei o disco da VM para 500G nas propriedades do VSphere que apareceram na sda
parte:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 78,4G 0 part
├─VGslash-lv_root 253:0 0 19,5G 0 lvm /
├─VGslash-lv_swap 253:1 0 4G 0 lvm [SWAP]
├─VGslash-lv_usr 253:2 0 8G 0 lvm /usr
├─VGslash-lv_srv 253:3 0 2G 0 lvm /srv
├─VGslash-lv_home 253:4 0 2G 0 lvm /home
├─VGslash-lv_opt 253:5 0 4G 0 lvm /opt
├─VGslash-lv_tmp 253:6 0 4G 0 lvm /tmp
├─VGslash-lv_var_log_audit 253:7 0 512M 0 lvm /var/log/audit
├─VGslash-lv_var_log 253:8 0 1G 0 lvm /var/log
├─VGslash-lv_vartmp 253:9 0 10,4G 0 lvm /var/tmp
├─VGslash-lv_var 253:10 0 3G 0 lvm /var
└─VGslash-lv_pmp 253:11 0 20G 0 lvm /pmp
sr0 11:0 1 1024M 0 rom
Em seguida, redimensionei o sda3
volume físico para corresponder ao espaço em disco recém-adicionado com
$ resizepart /dev/sda 3 1000000000
$ pvresize /dev/sda3
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 476,9G 0 part
├─VGslash-lv_root 253:0 0 19,5G 0 lvm /
├─VGslash-lv_swap 253:1 0 4G 0 lvm [SWAP]
├─VGslash-lv_usr 253:2 0 8G 0 lvm /usr
├─VGslash-lv_srv 253:3 0 2G 0 lvm /srv
├─VGslash-lv_home 253:4 0 2G 0 lvm /home
├─VGslash-lv_opt 253:5 0 4G 0 lvm /opt
├─VGslash-lv_tmp 253:6 0 4G 0 lvm /tmp
├─VGslash-lv_var_log_audit 253:7 0 512M 0 lvm /var/log/audit
├─VGslash-lv_var_log 253:8 0 1G 0 lvm /var/log
├─VGslash-lv_vartmp 253:9 0 10,4G 0 lvm /var/tmp
├─VGslash-lv_var 253:10 0 3G 0 lvm /var
└─VGslash-lv_pmp 253:11 0 20G 0 lvm /pmp
sr0 11:0 1 1024M 0 rom
Aumentei o lv_pmp
tamanho do volume lógico:
$ lvextend /dev/mapper/VGslash-lv_pmp -l+100%FREE
E atualizou o sistema de arquivos para que ele detectasse o novo tamanho:
$ xfs_growfs /dev/mapper/VGslash-lv_pmp
Até agora tudo bem, obtive o tamanho que esperava no lv_pmp
volume lógico:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 476,9G 0 part
├─VGslash-lv_root 253:0 0 19,5G 0 lvm /
├─VGslash-lv_swap 253:1 0 4G 0 lvm [SWAP]
├─VGslash-lv_usr 253:2 0 8G 0 lvm /usr
├─VGslash-lv_srv 253:3 0 2G 0 lvm /srv
├─VGslash-lv_home 253:4 0 2G 0 lvm /home
├─VGslash-lv_opt 253:5 0 4G 0 lvm /opt
├─VGslash-lv_tmp 253:6 0 4G 0 lvm /tmp
├─VGslash-lv_var_log_audit 253:7 0 512M 0 lvm /var/log/audit
├─VGslash-lv_var_log 253:8 0 1G 0 lvm /var/log
├─VGslash-lv_vartmp 253:9 0 10,4G 0 lvm /var/tmp
├─VGslash-lv_var 253:10 0 3G 0 lvm /var
└─VGslash-lv_pmp 253:11 0 418,4G 0 lvm /pmp
sr0 11:0 1 1024M 0 rom
Problema
O problema surge assim que reinicio o sistema: ele parece perder as alterações de tamanho que fiz no sda3
volume físico, o que consequentemente impede que o lv_pmp
volume lógico seja montado (pois ele assume que não há espaço suficiente no PV pai):
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 76,9G 0 part
├─VGslash-lv_root 253:0 0 19,5G 0 lvm /
├─VGslash-lv_swap 253:1 0 4G 0 lvm [SWAP]
├─VGslash-lv_usr 253:2 0 8G 0 lvm /usr
├─VGslash-lv_srv 253:3 0 2G 0 lvm /srv
├─VGslash-lv_home 253:4 0 2G 0 lvm /home
├─VGslash-lv_opt 253:5 0 4G 0 lvm /opt
├─VGslash-lv_tmp 253:6 0 4G 0 lvm /tmp
├─VGslash-lv_var_log_audit 253:7 0 512M 0 lvm /var/log/audit
├─VGslash-lv_var_log 253:8 0 1G 0 lvm /var/log
├─VGslash-lv_vartmp 253:9 0 10,4G 0 lvm /var/tmp
└─VGslash-lv_var 253:10 0 3G 0 lvm /var
sr0 11:0 1 1024M 0 rom
Solução alternativa
É possível colocá-lo de volta em forma executando os seguintes comandos manualmente após a reinicialização:
### Re-apply physical volume changes
$ resizepart /dev/sda 3 1000000000
$ pvresize /dev/sda3
### Re-scan logical volumes
$ vgscan --mknodes -v
$ vgchange -a y
Pergunta
Por que isso está acontecendo? E o que posso fazer para evitar isso?
Não sei se isso está relacionado ao próprio sistema operacional, ao ambiente da VM ou a algum outro fator que não controlo. Qualquer conselho a esse respeito também ajudaria.
A solução alternativa acima não é realmente satisfatória, mesmo que eu pudesse colocá-la em um script na inicialização, ter que executar essa ação a cada inicialização não parece certo: não faz sentido para mim que uma alteração no tamanho do volume não persista após uma reinicialização.