Filtro de driver de filtro Oracle ASM e 5,15 kernels UEK7

Uma mudança recente no kernel do Linux afetou o driver de filtro Oracle ASM. Este artigo aborda a desativação da filtragem e da recuperação do espaço de armazenamento.

Oracle ASM Filter Driver

Resumo

This blog post explores the impact of disabling Oracle ASM Filter Driver filtering on space reclamation on a FlashArray system.

image_pdfimage_print

Este artigo sobre a filtragem do driver de filtro Oracle ASM apareceu originalmente no blog de Ron Ekins. Ela foi republicada com o crédito e o consentimento do autor.

Sou fã de longa data do driver de filtro (AFD, Filter Driver) Oracle ASM. Um dos principais benefícios é a filtragem AFD.

A AFD pode garantir que as gravações sejam realizadas apenas por processos Oracle confiáveis e registrados, bloqueando gravações potencialmente prejudiciais que, de outra forma, teriam resultado em corrupção de dados.

Infelizmente, uma mudança recente no kernel do Linux afetou o AFD e a recomendação mais recente do Oracle é desativar a filtragem do AFD até que uma correção esteja disponível.

No Oracle Database 19.24, a filtragem é desativada por padrão, mas para versões anteriores, a Oracle forneceu o Patch 35618858: Desative a filtragem por padrão para 5,15 Kernels e superiores.

Patches disponíveis de atualização de versão (RU, Release Update) da Oracle

  • Versão 19 do Oracle Clusterware (19.23.0.0.240416ACFSRU)
  • Versão 19 do Oracle Clusterware (19.24.0.0.0ACFSRU)
  • Versão 19 do Oracle Clusterware (19.25.0.0.0ACFSRU)

Nesta publicação do blog, explorarei o impacto da desativação da filtragem AFD na recuperação de espaço em arrays de armazenamento totalmente flash. 

Versão Kernel

Recentemente, atualizei meus servidores Oracle RAC para o Oracle Linux 8.10 usando o kernel 5.15. Você pode verificar sua versão do kernel usando o nome -r:

[oracle@z-rac1 ~]$ cat /etc/oracle-release

Oracle Linux Server release 8.10

[oracle@z-rac1 ~]$ uname -r

5.15.0-208.159.3.el8uek.x86_64

Estado do Oracle ASMFD

Podemos usar o comando asmcmd afd_state para obter o status ASM Filter Driver, por exemplo:

[oracle@z-rac1 ~]$ asmcmd afd_state

ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host 'z-rac1.uklab.purestorage.com'

Em um cluster RAC, use a opção asmcmd afd_state –all para ver o status de todos os nós. Todos os nós devem ter o mesmo status de filtragem.

[oracle@z-rac1 ~]$ asmcmd afd_state --all

node 'z-rac1': State of AFD: LOADED and ASMFD Filtering Status: ENABLED

node 'z-rac2': State of AFD: LOADED and ASMFD Filtering Status: DISABLED

Desative a filtragem ASMFD

Desative a filtragem usando o comando asmcmd afd_filter -d:

[oracle@z-rac1 ~]$ asmcmd afd_filter -d

[oracle@z-rac1 ~]$ asmcmd afd_state

ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'DISABLED' on host 'z-rac1.uklab.purestorage.com'

Habilite a filtragem ASMFD

Se necessário, você pode reativar a filtragem usando o comando asmcmd afd_filter -e, por exemplo:

[oracle@z-rac1 ~]$ asmcmd afd_filter -e

[oracle@z-rac1 ~]$ asmcmd afd_state

ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host 'z-rac1.uklab.purestorage.com'

Reclamação do espaço de armazenamento

Agora, isso levanta uma grande questão: Se eu desativar o driver de filtro ASM, perderei a capacidade de enviar comandos SCSI UNMAP de volta para um array de armazenamento totalmente flash para liberar espaço não utilizado?

OK, tenho um cluster RAC de dois nós com filtragem ASMFD DESATIVADA.

[oracle@z-rac1 ~]$ asmcmd afd_state --all

node 'z-rac1': State of AFD: LOADED and ASMFD Filtering Status: DISABLED

node 'z-rac2': State of AFD: LOADED and ASMFD Filtering Status: DISABLED

Crie o Oracle Tablespace

Para demonstrar isso, vamos criar um espaço de tabela de 4TB e esperar que a Oracle inicialize o arquivo de dados.

Vamos confirmar que não há espaço sendo usado usando minha v$asm_disk consulta:

ASMFD Disks

Disk Disk Disk Total   Used     Free

Nbr Name Label   Header  Mount   State   Path     GB     GB       GB

---- ---------- ---------- ------- ------- ------- ---------- -------- -------- --------

  0 DATA08 DATA08   MEMBER  CACHED  NORMAL  AFD:DATA08 12,288       0   12,288

  1 DATA07 DATA07   MEMBER  CACHED  NORMAL  AFD:DATA07 12,288       0  12,288

  2 DATA05 DATA05   MEMBER  CACHED  NORMAL  AFD:DATA05 12,288       0   12,288

  3 DATA06 DATA06   MEMBER  CACHED  NORMAL  AFD:DATA06 12,288       0   12,288

Agora, crie o espaço de tabela Bigfile de 4TB.

SQL> create BIGFILE tablespace test datafile '+AFDATA' size 4T;

Tablespace created.

Usando a v$asm_disk consulta, posso ver que meus quatro volumes ASMFD usaram um total de 4TB conforme o esperado.

ASMFD Disks

Disk Disk Disk Total   Used     Free

Nbr Name Label   Header  Mount   State   Path     GB     GB       GB

---- ---------- ---------- ------- ------- ------- ---------- -------- -------- --------

  0 DATA08 DATA08   MEMBER  CACHED  NORMAL  AFD:DATA08 12,288   1,024   11,264

  1 DATA07 DATA07   MEMBER  CACHED  NORMAL  AFD:DATA07 12,288   1,024   11,264

  2 DATA05 DATA05   MEMBER  CACHED  NORMAL  AFD:DATA05 12,288   1,024   11,264

  3 DATA06 DATA06   MEMBER  CACHED  NORMAL  AFD:DATA06 12,288   1,024   11,264

Usando o utilitário de linha de comando asmcmd com a opção de atributo de lista, vejo que o provisionamento thin está ativado no meu grupo de discos AFDATA:

[oracle@z-rac1 ~]$ asmcmd lsattr -G AFDATA -l | grep thin

thin_provisioned               TRUE

Usando a CLI do FlashArray e executando o comando purevol list –-space –-total, podemos confirmar o espaço usado pelo tablespace no grupo de disco AFD. Por exemplo:

lista purevol z-racpod::afd_data* –espaço –total

pureuser@z-x90-a> purevol list z-racpod::afd_data* --space --total

Name                  Size  Virtual   Thin Provisioning  Data Reduction  Total Reduction  Unique   Snapshots  Total

z-racpod::afd_data05  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

z-racpod::afd_data06  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

z-racpod::afd_data07  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

z-racpod::afd_data08  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

(total)               48T  4.00T   92%                >100 to 1       >100 to 1        19.79G  0.00       19.79G

Solte o Tablespace

Agora, vamos descartar o espaço de tabela Oracle usando o DROP TABLESPACE , INCLUINDO CONTEÚDOS E DADOS, e ver o impacto na plataforma de armazenamento e no banco de dados Oracle.

SQL> DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

Se executarmos a v$asm_view consulta novamente, a Oracle está relatando que o espaço de tabela de teste de 4TB foi liberado.

ASMFD Disks

Disk Disk Disk Total   Used     Free

Nbr Name Label   Header  Mount   State   Path     GB     GB       GB

---- ---------- ---------- ------- ------- ------- ---------- -------- -------- --------

  0 DATA08 DATA08   MEMBER  CACHED  NORMAL  AFD:DATA08 12,288       0   12,288

  1 DATA07 DATA07   MEMBER  CACHED  NORMAL  AFD:DATA07 12,288       0   12,288

  2 DATA05 DATA05   MEMBER  CACHED  NORMAL  AFD:DATA05 12,288       0   12,288

  3 DATA06 DATA06   MEMBER  CACHED  NORMAL  AFD:DATA06 12,288       0   12,288

Voltando ao FlashArray da Pure Storage®, podemos ver que ainda estamos consumindo espaço, mesmo que o tablespace da Oracle tenha sido excluído.

pureuser@z-x90-a> purevol list z-racpod::afd_data* --space --total

Name                  Size  Virtual   Thin Provisioning  Data Reduction  Total Reduction  Unique   Snapshots  Total

z-racpod::afd_data05  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

z-racpod::afd_data06  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

z-racpod::afd_data07  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

z-racpod::afd_data08  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

(total)               48T   4.00T   92%                >100 to 1       >100 to 1        19.79G  0.00       19.79G

Fase compacta de reequilíbrio Oracle ASMFD

Ao usar o driver de filtro Oracle ASM, podemos acionar manualmente um comando SCSI UNMAP para liberar espaço de volta para a matriz de armazenamento usando o ALTER DISKGROUP REBALANCE WITH BALANCE COMPACT.

Incluí a opção opcional WAIT para retornar apenas quando estiver concluída.

SQL> ALTER DISKGROUP AFDATA REBALANCE WITH BALANCE COMPACT WAIT;

Diskgroup altered.

Se agora retornarmos à CLI do FlashArray e repetirmos o comando de –space –total da lista purevol, podemos ver o impacto do REEQUILÍBRIO DO ALTER DISKGROUP COM COMPACTO.

Podemos ver que, embora a filtragem AFD tenha sido desativada, o ASMFD ainda é capaz de enviar a solicitação SCSI UNMAP para a matriz de armazenamento para liberar o espaço.

pureuser@z-x90-a> purevol list z-racpod::afd_data* --space --total

z-racpod::afd_data05  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

z-racpod::afd_data06  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

z-racpod::afd_data07  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

z-racpod::afd_data08  12T   1.00T    92%                >100 to 1       >100 to 1        4.95G   0.00       4.95G

(total)               48T   4.00T    92%                >100 to 1       >100 to 1        19.79G  0.00       19.79G

pureuser@z-x90-a> purevol list z-racpod::afd_data* --space --total

Name                  Size  Virtual  Thin Provisioning  Data Reduction  Total Reduction  Unique  Snapshots  Total

z-racpod::afd_data05  12T   92.00M   100%               6.9 to 1        >100 to 1        9.29M   0.00       9.29M

z-racpod::afd_data06  12T   92.00M   100%               6.6 to 1        >100 to 1        10.47M  0.00       10.47M

z-racpod::afd_data07  12T   92.00M   100%               6.7 to 1        >100 to 1        9.82M   0.00       9.82M

z-racpod::afd_data08  12T   92.00M   100%               7.0 to 1        >100 to 1        8.63M   0.00       8.63M

(total)               48T   368.00M  100%               6.8 to 1        >100 to 1        38.21M  0.00       38.21M

Resumo

Nesta publicação do blog, confirmei que desativar a filtragem ASMFD não afeta a recuperação de espaço.

A equipe de desenvolvimento Oracle AFD está trabalhando ativamente em um novo mecanismo de filtragem e proteção para os kernels mencionados acima e mais recentes. Quando a nova solução de filtragem ficar disponível, tentarei compartilhar minhas descobertas.

Se quiser saber mais sobre como usar o driver de filtro ASM para recuperar espaço de armazenamento, confira esta publicação do blog.