Resumen
This blog post explores the impact of disabling Oracle ASM Filter Driver filtering on space reclamation on a FlashArray system.
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:
1 |
[oracle@z–rac1 ~]$ cat /etc/oracle–release |
1 |
Oracle Linux Server release 8.10 |
1 |
[oracle@z–rac1 ~]$ <strong>uname –r</strong> |
1 |
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:
1 |
[oracle@z–rac1 ~]$ asmcmd afd_state |
1 |
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.
1 |
[oracle@z–rac1 ~]$ <strong>asmcmd afd_state —all</strong> |
1 |
node ‘z-rac1’: State of AFD: LOADED and ASMFD Filtering Status: ENABLED |
1 |
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:
1 |
[oracle@z–rac1 ~]$ <strong>asmcmd afd_filter –d</strong> |
1 |
[oracle@z–rac1 ~]$ <strong>asmcmd afd_state</strong> |
1 |
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:
1 |
[oracle@z–rac1 ~]$ <strong>asmcmd afd_filter –e</strong> |
1 |
[oracle@z–rac1 ~]$ <strong>asmcmd afd_state</strong> |
1 |
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.
1 |
[oracle@z–rac1 ~]$ <strong>asmcmd afd_state —all</strong> |
1 |
node ‘z-rac1’: State of AFD: LOADED and ASMFD Filtering Status: DISABLED |
1 |
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:
1 |
ASMFD Disks |
1 |
Disk Disk Disk Total Used Free |
1 |
Nbr Name Label Header Mount State Path GB GB GB |
1 |
—— ————— ————— ———– ———– ———– ————— ———— ———— ———— |
1 |
0 DATA08 DATA08 MEMBER CACHED NORMAL AFD:DATA08 12,288 0 12,288 |
1 |
1 DATA07 DATA07 MEMBER CACHED NORMAL AFD:DATA07 12,288 0 12,288 |
1 |
2 DATA05 DATA05 MEMBER CACHED NORMAL AFD:DATA05 12,288 0 12,288 |
1 |
3 DATA06 DATA06 MEMBER CACHED NORMAL AFD:DATA06 12,288 0 12,288 |
Y ahora cree el espacio de mesa de 4TB Bigfile.
1 |
SQL> <strong>create BIGFILE tablespace test datafile ‘+AFDATA’ size 4T;</strong> |
1 |
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.
1 |
ASMFD Disks |
1 |
Disk Disk Disk Total Used Free |
1 |
Nbr Name Label Header Mount State Path GB GB GB |
1 |
—— ————— ————— ———– ———– ———– ————— ———— ———— ———— |
1 |
0 DATA08 DATA08 MEMBER CACHED NORMAL AFD:DATA08 12,288 1,024 11,264 |
1 |
1 DATA07 DATA07 MEMBER CACHED NORMAL AFD:DATA07 12,288 1,024 11,264 |
1 |
2 DATA05 DATA05 MEMBER CACHED NORMAL AFD:DATA05 12,288 1,024 11,264 |
1 |
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:
1 |
[oracle@z–rac1 ~]$ <strong>asmcmd lsattr –G AFDATA –l | grep thin</strong> |
1 |
thin_provisioned TRUE |
Al usar la CLI de FlashArray™ y realizar el comando purevol list
lista Purevol z-racpod::afd_data* –espacio –total
1 |
pureuser@z–x90–a> <strong>purevol list z–racpod::afd_data* —space —total</strong> |
1 |
Name Size Virtual Thin Provisioning Data Reduction Total Reduction Unique Snapshots Total |
1 |
z–racpod::afd_data05 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
z–racpod::afd_data06 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
z–racpod::afd_data07 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
z–racpod::afd_data08 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
(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
1 |
SQL> <strong>DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;</strong> |
1 |
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.
1 |
ASMFD Disks |
1 |
Disk Disk Disk Total Used Free |
1 |
Nbr Name Label Header Mount State Path GB GB GB |
1 |
—— ————— ————— ———– ———– ———– ————— ———— ———— ———— |
1 |
0 DATA08 DATA08 MEMBER CACHED NORMAL AFD:DATA08 12,288 0 12,288 |
1 |
1 DATA07 DATA07 MEMBER CACHED NORMAL AFD:DATA07 12,288 0 12,288 |
1 |
2 DATA05 DATA05 MEMBER CACHED NORMAL AFD:DATA05 12,288 0 12,288 |
1 |
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.
1 |
pureuser@z–x90–a> <strong>purevol list z–racpod::afd_data* —space —total</strong> |
1 |
Name Size Virtual Thin Provisioning Data Reduction Total Reduction Unique Snapshots Total |
1 |
z–racpod::afd_data05 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
z–racpod::afd_data06 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
z–racpod::afd_data07 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
z–racpod::afd_data08 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
(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
Incluí la opción opcional de ESPERAR para regresar solo una vez que haya finalizado.
1 |
SQL> <strong>ALTER DISKGROUP AFDATA REBALANCE WITH BALANCE COMPACT WAIT;</strong> |
1 |
Diskgroup altered. |
Si ahora volvemos a la CLI de FlashArray y repetimos el comando purevol list
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.
1 |
pureuser@z–x90–a> <strong>purevol list z–racpod::afd_data* —space —total</strong> |
1 |
z–racpod::afd_data05 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
z–racpod::afd_data06 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
z–racpod::afd_data07 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
z–racpod::afd_data08 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G |
1 |
(total) 48T 4.00T 92% >100 to 1 >100 to 1 19.79G 0.00 19.79G |
1 |
pureuser@z–x90–a> <strong>purevol list z–racpod::afd_data* —space —total</strong> |
1 |
Name Size Virtual Thin Provisioning Data Reduction Total Reduction Unique Snapshots Total |
1 |
z–racpod::afd_data05 12T 92.00M 100% 6.9 to 1 >100 to 1 9.29M 0.00 9.29M |
1 |
z–racpod::afd_data06 12T 92.00M 100% 6.6 to 1 >100 to 1 10.47M 0.00 10.47M |
1 |
z–racpod::afd_data07 12T 92.00M 100% 6.7 to 1 >100 to 1 9.82M 0.00 9.82M |
1 |
z–racpod::afd_data08 12T 92.00M 100% 7.0 to 1 >100 to 1 8.63M 0.00 8.63M |
1 |
(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.
Take a Free Test Drive
Explore FlashArray in our virtual lab.