Este artículo sobre el filtrado del Controlador de Filtros Oracle ASM apareció originalmente en el blog de Ron Ekins. Se ha vuelto a publicar con el reconocimiento y el consentimiento del autor.
Soy fan desde hace mucho tiempo del Controlador de Filtros (AFD) Oracle ASM. Una de sus mayores ventajas es el filtrado AFD.
La AFD puede garantizar que las escrituras solo se realizan mediante procesos de Oracle de confianza y registrados, bloqueando las escrituras potencialmente dañinas que de otro modo hubieran provocado daños en los datos.
Lamentablemente, un cambio reciente en el núcleo de Linux ha afectado a la AFD y la última recomendación de Oracle es desactivar el filtrado de la AFD hasta que haya una solución disponible.
Desde Oracle Database 19.24, el filtrado está desactivado de manera predeterminada, pero para las versiones anteriores, Oracle ha proporcionado el parche 35618858: Desactive el Filtrado por defecto para 5,15 Kernels y superiores.
Parches de actualización de lanzamiento de Oracle (RU) 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 entrada del blog, exploraré el impacto de desactivar el filtrado AFD en la recuperación del espacio en las cabinas de almacenamiento totalmente flash.
Versión de Kernel
Recientemente he actualizado mis servidores Oracle RAC a Oracle Linux 8.10 usando kernel 5.15. Puede comprobar su versión de kernel usando unme -r:
[crayon-67edf987bd48a309281554/]
[crayon-67edf987bd499831203567/]
[crayon-67edf987bd49d718939995/]
[crayon-67edf987bd4a0085823348/]
Estado de Oracle ASMFD
Podemos usar el comando asmcmd afd_state para obtener el estado del controlador de filtro ASM, por ejemplo:
[crayon-67edf987bd4a3942582540/]
[crayon-67edf987bd4a6927258020/]
En un clúster RAC, use la opción asmcmd afd_state –all para ver el estado de todos los nodos. Todos los nodos deben tener el mismo estado de filtrado.
[crayon-67edf987bd4a9052172568/]
[crayon-67edf987bd4ad551831626/]
[crayon-67edf987bd4b0959699365/]
Deshabilitar el filtrado de ASMFD
Desactive el filtrado usando el comando asmcmd afd_filter -d:
[crayon-67edf987bd4b3148396058/]
[crayon-67edf987bd4b6890548912/]
[crayon-67edf987bd4b9494245391/]
Habilitar el filtrado ASMFD
Si es necesario, puede volver a habilitar el filtrado usando el comando asmcmd afd_filter -e, por ejemplo:
[crayon-67edf987bd4bc183496774/]
[crayon-67edf987bd4bf082749072/]
[crayon-67edf987bd4c2943670566/]
Reclamación del espacio de almacenamiento
Esto plantea una gran pregunta: Si deshabilito el controlador de filtro ASM, ¿perdo la capacidad de enviar comandos SCSI UNMAP a una cabina de almacenamiento totalmente flash para liberar espacio no utilizado?
Bien, tengo un clúster RAC de dos nodos con filtro ASMFD DESACTIVADO.
[crayon-67edf987bd4c5303220500/]
[crayon-67edf987bd4c8567779546/]
[crayon-67edf987bd4cb024696115/]
Crear Oracle Tablespace
Para demostrarlo, vamos a crear un espacio de tabla de 4TB y a esperar a que Oracle inicialice el archivo de datos.
Confirmemos que no se utiliza espacio usando mi v$asm_disk consulta:
[crayon-67edf987bd4ce058430033/]
[crayon-67edf987bd4d1877138222/]
[crayon-67edf987bd4d4359706854/]
[crayon-67edf987bd4d7240473511/]
[crayon-67edf987bd4da824295408/]
[crayon-67edf987bd4dd821229334/]
[crayon-67edf987bd4e0318016586/]
[crayon-67edf987bd4e3768349485/]
Y ahora cree el espacio de tabla de bigfile de 4TB.
[crayon-67edf987bd4e6609086758/]
[crayon-67edf987bd4e9495822532/]
Usando la v$asm_disk consulta, puedo ver que mis cuatro volúmenes ASMFD se han utilizado en total 4TB como se esperaba.
[crayon-67edf987bd4ec961873947/]
[crayon-67edf987bd4ef213078026/]
[crayon-67edf987bd4f1147047328/]
[crayon-67edf987bd4f4052941344/]
[crayon-67edf987bd4fe009950559/]
[crayon-67edf987bd501870792687/]
[crayon-67edf987bd504578910793/]
[crayon-67edf987bd507934084698/]
Usando la utilidad de línea de comandos asmcmd con la opción de atributo de lista, veo que el aprovisionamiento fino está habilitado en mi grupo de discos AFDATA:
[crayon-67edf987bd50a858283698/]
[crayon-67edf987bd50d683167285/]
Usando la CLI de FlashArray™ y realizando el comando purevol list
lista purevol z-racpod::afd_data* –espacio –total
[crayon-67edf987bd510714695699/]
[crayon-67edf987bd513227336166/]
[crayon-67edf987bd516986708234/]
[crayon-67edf987bd519427705052/]
[crayon-67edf987bd520230872139/]
[crayon-67edf987bd523244709761/]
[crayon-67edf987bd526263835873/]
Soltar espacio de tabla
Ahora dejemos caer el espacio de tabla de Oracle usando DROP TABLESPACE
[crayon-67edf987bd529710218114/]
[crayon-67edf987bd52c486397616/]
Si volvemos a ejecutar la v$asm_view consulta, Oracle informa ahora de que se ha publicado el espacio de tabla de prueba de 4TB.
[crayon-67edf987bd52f625750682/]
[crayon-67edf987bd532279683335/]
[crayon-67edf987bd535915777408/]
[crayon-67edf987bd538542158646/]
[crayon-67edf987bd53b645025009/]
[crayon-67edf987bd53e332026657/]
[crayon-67edf987bd541175644525/]
[crayon-67edf987bd544252485791/]
Volviendo a FlashArray de Pure Storage®, podemos ver que seguimos consumiendo espacio aunque se haya borrado el espacio de tabla de Oracle.
[crayon-67edf987bd547854978097/]
[crayon-67edf987bd54a393509691/]
[crayon-67edf987bd54d710085313/]
[crayon-67edf987bd550015024235/]
[crayon-67edf987bd553691340025/]
[crayon-67edf987bd556897288620/]
[crayon-67edf987bd559843299485/]
Fase compacta de reequilibrio Oracle ASMFD
Cuando se utiliza Oracle ASM Filter Driver, podemos activar manualmente un comando SCSI UNMAP para liberar espacio en la cabina de almacenamiento usando ALTER DISKGROUP
He incluido la opción opcional de ESPERAR para que solo vuelva una vez completado.
[crayon-67edf987bd55c787189413/]
[crayon-67edf987bd55f751548782/]
Si ahora volvemos a la CLI de FlashArray y repetimos el comando purevol list
Podemos ver que, aunque el filtrado AFD se ha desactivado, ASMFD sigue siendo capaz de enviar la solicitud SCSI UNMAP a la cabina de almacenamiento para liberar el espacio.
[crayon-67edf987bd562881299492/]
[crayon-67edf987bd565143771564/]
[crayon-67edf987bd568065461900/]
[crayon-67edf987bd56b913969404/]
[crayon-67edf987bd56e703498045/]
[crayon-67edf987bd571365991164/]
[crayon-67edf987bd574107077136/]
[crayon-67edf987bd577908137576/]
[crayon-67edf987bd57a852495421/]
[crayon-67edf987bd57d566894455/]
[crayon-67edf987bd580126420330/]
[crayon-67edf987bd583532954599/]
[crayon-67edf987bd586943421592/]
Resumen
En esta entrada del blog, he confirmado que desactivar el filtrado ASMFD no afecta a 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 mencionados anteriormente y los más nuevos. Cuando la nueva solución de filtrado esté disponible, la probaré y compartiré mis hallazgos.
Si desea obtener más información sobre el uso del controlador de filtro ASM para recuperar el espacio de almacenamiento, consulte esta entrada del blog.