Samenvatting
This blog post explores the impact of disabling Oracle ASM Filter Driver filtering on space reclamation on a FlashArray system.
Dit artikel over Oracle ASM Filter Driver-filtering verscheen oorspronkelijk op de blog van Ron Ekins. Het is opnieuw gepubliceerd met het krediet en de toestemming van de auteur.
Ik ben al lange tijd fan van de Oracle ASM Filter Driver (AFD). Een van de belangrijkste voordelen is AFD-filtering.
AFD kan ervoor zorgen dat schrijfbewerkingen alleen worden uitgevoerd door vertrouwde en geregistreerde Oracle-processen, waardoor mogelijk schadelijke schrijfbewerkingen worden geblokkeerd die anders zouden hebben geleid tot datacorruptie.
Helaas heeft een recente Linux-kernelwijziging invloed gehad op de AFD en de laatste aanbeveling van Oracle is om AFD-filtering uit te schakelen totdat er een oplossing beschikbaar is.
Vanuit Oracle Database 19.24 is filteren standaard uitgeschakeld, maar voor eerdere versies heeft Oracle Patch 35618858 geleverd: Schakel standaard filteren uit voor Kernels van 5,15 en hoger.
Beschikbare Oracle Release Update (RU)-patches
- Oracle Clusterware 19 Release (19.23.0.0.240416ACFSRU)
- Oracle Clusterware 19 Release (19.24.0.0.0ACFSRU)
- Oracle Clusterware 19 Release (19.25.0.0.0ACFSRU)
In deze blogpost ga ik in op de impact van het uitschakelen van AFD-filtering op ruimteterugwinning op All-Flash-storage arrays.
Kernel-versie
Ik heb onlangs mijn Oracle RAC-servers geüpgraded naar Oracle Linux 8.10 met kernel 5.15. U kunt uw kernelversie controleren met uname -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 |
Oracle ASMFD-staat
We kunnen de asmcmdafd_state-opdracht gebruiken om de ASM-filterdriverstatus te krijgen, bijvoorbeeld:
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’ |
Gebruik in een RAC-cluster de asmcmd afd_state –all-optie om de status van alle nodes te zien. Alle nodes moeten dezelfde filterstatus hebben.
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 |
Schakel ASMFD-filtering uit
Filteren uitschakelen met de opdracht 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’ |
ASMFD-filtering inschakelen
Indien nodig kunt u filteren opnieuw inschakelen met de asmcmd afd_filter -e-opdracht, bijvoorbeeld:
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’ |
Reclame opslagruimte
Dit roept een grote vraag op: Als ik de ASM-filterdriver uitschakel, verlies ik dan de mogelijkheid om SCSI UNMAP-commando’s terug te sturen naar een All-Flash-storage array om ongebruikte ruimte vrij te geven?
Oké, ik heb een RAC-cluster met twee knooppunten met ASMFD-filtering UITGESCHAKELD.
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 |
Oracle Tablespace creëren
Om dit aan te tonen, maken we een tafelruimte van 4TB en wachten we tot Oracle het databestand initialiseert.
Laten we bevestigen dat er geen ruimte wordt gebruikt door mijn v$asm_disk vraag te gebruiken:
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 |
En creëer nu de 4TB bigfile tablespace.
1 |
SQL> <strong>create BIGFILE tablespace test datafile ‘+AFDATA’ size 4T;</strong> |
1 |
Tablespace created. |
Met behulp van de v$asm_disk query zie ik dat mijn vier ASMFD-volumes in totaal 4TB hebben gebruikt zoals verwacht.
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 |
Met behulp van het asm command line utility asmcmd met de list attribute optie zie ik dat Thin Provisioning is ingeschakeld op mijn AFDATA diskgroup:
1 |
[oracle@z–rac1 ~]$ <strong>asmcmd lsattr –G AFDATA –l | grep thin</strong> |
1 |
thin_provisioned TRUE |
Met behulp van de FlashArray™ CLI en het uitvoeren van de purevol-lijst
purevol-lijst z-racpod::afd_data* –space –totaal
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 |
Tafelruimte laten vallen
Laten we nu de Oracle-tafelruimte laten vallen met behulp van DROP TABLESPACE
1 |
SQL> <strong>DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;</strong> |
1 |
Tablespace dropped. |
Als we de v$asm_view vraag opnieuw uitvoeren, meldt Oracle nu dat de 4TB testtafelruimte is vrijgegeven.
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 |
Als we terugkeren naar de Pure Storage® FlashArray, zien we dat we nog steeds ruimte verbruiken, ook al is de Oracle-tafelruimte verwijderd.
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 |
Oracle ASMFD Rebalance Compacte fase
Bij gebruik van Oracle ASM Filter Driver kunnen we handmatig een SCSI UNMAP-opdracht activeren om ruimte vrij te geven aan de storage array met behulp van de ALTER DISKGROUP
Ik heb de optionele WAIT-optie toegevoegd om alleen terug te keren als dit is voltooid.
1 |
SQL> <strong>ALTER DISKGROUP AFDATA REBALANCE WITH BALANCE COMPACT WAIT;</strong> |
1 |
Diskgroup altered. |
Als we nu terugkeren naar de FlashArray CLI en de purevol-lijst
We zien dat hoewel AFD-filtering is uitgeschakeld, ASMFD nog steeds in staat is om het SCSI UNMAP-verzoek naar de storage array te sturen om de ruimte vrij te geven.
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 |
Samenvatting
In deze blogpost heb ik bevestigd dat het uitschakelen van ASMFD-filtering geen invloed heeft op de terugwinning van ruimte.
Het Oracle AFD-ontwikkelingsteam werkt actief aan een nieuw filter- en beschermingsmechanisme voor de bovengenoemde en nieuwere kernels. Wanneer de nieuwe filteroplossing beschikbaar komt, zal ik het proberen om mijn bevindingen te delen.
Als u meer wilt weten over het gebruik van de ASM-filterdriver om opslagruimte terug te winnen, bekijk dan deze blogpost.
Take a Free Test Drive
Explore FlashArray in our virtual lab.