Filtrado de controladores de filtro Oracle ASM y 5,15 núcleos UEK7

Un cambio reciente en el kernel de Linux afectó al controlador de filtros Oracle ASM. Este artículo analiza la desactivación del filtrado y la recuperación del espacio de almacenamiento.

Oracle ASM Filter Driver

Resumen

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

image_pdfimage_print

Este artículo sobre el filtrado de controladores de filtros de Oracle ASM apareció originalmente en el blog de Ron Ekins. Se ha vuelto a publicar con el crédito y consentimiento del autor.

Soy fanático de Oracle Oracle ASM Filter Driver (AFD) desde hace mucho tiempo. Uno de sus principales beneficios es el filtrado AFD.

AFD puede garantizar que las escrituras solo se realicen mediante procesos de Oracle confiables y registrados, lo que bloquea las escrituras potencialmente perjudiciales que de otro modo habrían provocado la corrupción de los datos.

Lamentablemente, un cambio reciente en el kernel de Linux afectó la AFD y la última recomendación de Oracle es desactivar el filtrado de AFD hasta que haya una solución disponible.

Desde Oracle Database 19.24, el filtrado está deshabilitado de forma predeterminada, pero para versiones anteriores, Oracle ha proporcionado Patch 35618858: Desactive el filtrado de forma predeterminada para Kernels 5.15 y superiores.

Parches de actualización de lanzamiento (RU) de Oracle disponibles

  • Lanzamiento de Oracle Clusterware 19 (19.23.0.0.240416ACFSRU)
  • Lanzamiento de Oracle Clusterware 19 (19.24.0.0.0ACFSRU)
  • Lanzamiento de Oracle Clusterware 19 (19.25.0.0.0ACFSRU)

En esta publicación del blog, exploraré el impacto de desactivar el filtrado de AFD en la recuperación del espacio en matrices almacenamiento basado íntegramente en tecnología flash. 

Versión de Kernel

Recientemente, actualicé mis servidores Oracle RAC a Oracle Linux 8.10 con kernel 5.15. Puede verificar su versión de kernel usando unme -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 ASMFD de Oracle

Podemos usar el comando asmcmd afd_state para obtener el estado del controlador de filtro ASM, por ejemplo:

[oracle@z-rac1 ~]$ asmcmd afd_state

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

En un clúster RAC, utilice la opción asmcmd afd_state –todos para ver el estado de todos los nodos. Todos los nodos deben tener el mismo estado de filtrado.

[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

Desactivar el filtrado ASMFD

Desactive el filtrado usando el 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 el filtrado ASMFD

Si es necesario, puede volver a habilitar el filtrado mediante el comando asmcmdafd_filter-e, por ejemplo:

[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'

Recuperación del espacio de almacenamiento

Ahora, esto plantea una gran pregunta: Si deshabilito el controlador de filtro ASM, ¿perderé la capacidad de enviar comandos UNMAP de SCSI a una matriz de almacenamiento basado íntegramente en tecnología flash para liberar espacio no utilizado?

Bien, tengo un clúster RAC de dos nodos con filtro ASMFD DESACTIVADO.

[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

Cree Oracle Tablespace

Para demostrar esto, creemos un espacio de mesa de 4TB y esperemos a que Oracle inicialice el archivo de datos.

Confirmemos que no se utiliza espacio al usar mi 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

Y ahora cree el espacio de mesa de 4TB Bigfile.

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

Tablespace created.

Al usar la v$asm_disk consulta, puedo ver que mis cuatro volúmenes de ASMFD se han utilizado en un total de 4TB como se esperaba.

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

Al usar la utilidad de línea de comandos asm asmcmd con la opción de atributo de lista, veo que el aprovisionamiento delgado está habilitado en mi grupo de discos AFDATA:

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

thin_provisioned               TRUE

Al usar la CLI de FlashArray™ y realizar el comando purevol list –-space –-total, podemos confirmar el espacio utilizado por el espacio de tabla en el grupo de discos AFD. Por ejemplo:

lista Purevol z-racpod::afd_data* –espacio –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

Desconecte el espacio de mesa

Dejemos atrás el espacio de mesa de Oracle usando DROP TABLESPACE INCLUYENDO CONTENIDO Y FILTROS DE DATOS, y veamos el impacto en la plataforma de almacenamiento y la base de datos de Oracle.

SQL> DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

Si volvemos a ejecutar la v$asm_view consulta, Oracle ahora informa que se ha publicado el espacio de mesa de prueba de 4TB.

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

Volviendo a FlashArray de Pure Storage®, podemos ver que seguimos consumiendo espacio, aunque se haya eliminado el espacio de mesa de Oracle.

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 reequilibrio ASMFD de Oracle

Al usar el controlador de filtro Oracle ASM, podemos activar manualmente un comando SCSI UNMAP para liberar espacio de vuelta a la matriz de almacenamiento mediante el comando ALTER DISKGROUP REBALANCE WITH BALANCE COMPACT.

Incluí la opción opcional de ESPERAR para regresar solo una vez que haya finalizado.

SQL> ALTER DISKGROUP AFDATA REBALANCE WITH BALANCE COMPACT WAIT;

Diskgroup altered.

Si ahora volvemos a la CLI de FlashArray y repetimos el comando purevol list –space –total, podemos ver el impacto de ALTER DISKGROUP REBALANCE WITH COMPACT.

Podemos ver que, aunque el filtrado AFD se ha deshabilitado, ASMFD aún puede enviar la solicitud UNMAP de SCSI a la matriz de almacenamiento para liberar el espacio.

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

Resumen

En esta publicación del blog, confirmé que desactivar el filtrado de ASMFD no afecta la recuperación del espacio.

El equipo de desarrollo de Oracle AFD está trabajando activamente en un nuevo mecanismo de filtrado y protección para los núcleos más nuevos y mencionados anteriormente. Cuando la nueva solución de filtrado esté disponible, la intentaré y compartiré mis resultados.

Si desea obtener más información sobre el uso del controlador de filtro ASM para recuperar espacio de almacenamiento, consulte esta publicación en el blog.