Problema

Ao tentar aplicar patch em um Exadata X8, o patchmgr apresentou o seguinte erro em um dos DB Nodes:

ERROR: Inactive VAR LV /dev/mapper/VGExaDb-LVDbVar2 size (2048MB) is smaller than Active VAR LV /dev/mapper/VGExaDb-LVDbVar1 size(10240MB)

O Exadata mantém 2 volumes no LVM para o diretório /var, onde um dos volumes fica inativo servindo como backup do volume que está ativo atualmente durante as atualizações do Exa Software. O erro acima está alegando que o volume que encontra-se inativo possui um tamanho inferior ao volume que está ativo atualmente.

Exemplo:

[root@exax8db01 ~]# lvs | grep LVDbVar[1-9]
  LVDbVar1           VGExaDb -wi-ao----  10.00g
  LVDbVar2           VGExaDb -wi-a-----   2.00g

Essa é uma configuração indesejada e deve ter sido derivada de uma extensão do volume LVDbVar1 que não foi acompanhada por uma extensão do volume LVDbVar2 (no exemplo em questão, poderia ocorrer o inverso também).

Para corrigir o cenário, precisamos expandir o volume de menor tamanho para ficar igual ao volume de maior volume.

A questão é que para executar o processo de expanção fim a fim, precisamos do volume ativo. Para não interferir no funcionamento do SO mexendo no /var do ambiente, um caminho é montar esse volume em um diretório alternativo temporariamente apenas para concluir o processo de expanção.

Sugestão: Verifique a condição em todos os DB Nodes e aplique a correção em todos que apresentar essa divergência.

dcli -g ~/dbs_group -l root 'lvs | grep LVDbVar[1-9]'

Solução

1) Verifique o tamanho dos volumes no servidor:

lvs | grep LVDbVar[1-9]

2) Confirme qual volume está ativo no momento com o df:

df -h /var

3) Expanção do volume com o incremento necessário:

lvextend -L +8G /dev/VGExaDb/LVDbVar2

4) Cria um diretório temporário no servidor:

mkdir -p /tmp/varex

5) Monta o volume LVM que está inativo nesse diretório temporário:

mount -t xfs /dev/VGExaDb/LVDbVar2 /tmp/varex

6) Faz a expanção do filesystem XFS para o novo tamanho do volume:

xfs_growfs /tmp/varex

7) Agora pode desmontar o volume e remover o diretório temporário do servidor:

umount /tmp/varex
rm -rf /tmp/varex

8) Confirme que o tamanho dos dois volumes ficaram iguais:

lvs | grep LVDbVar[1-9]

Exemplo

[root@exax8db01 ~]# lvs | grep LVDbVar[1-9]
  LVDbVar1           VGExaDb -wi-ao----  10.00g
  LVDbVar2           VGExaDb -wi-a-----   2.00g

[root@exax8db01 ~]# lvextend -L +8G /dev/VGExaDb/LVDbVar2
  Size of logical volume VGExaDb/LVDbVar2 changed from 2.00 GiB (512 extents) to 10.00 GiB (2560 extents).
  Logical volume VGExaDb/LVDbVar2 successfully resized.


[root@exax8db01 ~]# mkdir -p /tmp/varex
[root@exax8db01 ~]# mount -t xfs /dev/VGExaDb/LVDbVar2 /tmp/varex
[root@exax8db01 ~]# xfs_growfs /tmp/varex
meta-data=/dev/mapper/VGExaDb-LVDbVar2 isize=256    agcount=8, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0 rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=256    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 524288 to 2621440


[root@exax8db01 ~]# umount /tmp/varex
[root@exax8db01 ~]# rm -rf /tmp/varex
[root@exax8db01 ~]# lvs | grep LVDbVar[1-9]
  LVDbVar1           VGExaDb -wi-ao----  10.00g
  LVDbVar2           VGExaDb -wi-a-----  10.00g

Conclusão

Após a correção acima, uma nova execução do patchmgr não apresentou mais falhas pelo mesmo erro. A estratégia acima pode ser seguida em cenários de expanção normal do ambiente, onde sempre que for expandir o volume ativo, garantir que o volume inativo seja expandido com a mesma proporção.

Leave a Reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading