La version 12.1.0.2 de la Grid Infrastructure fournit un nouveau driver pour les disk ASM : Oracle ASMFD (Oracle Automatic Storage Management Filter Driver).
Ce driver est désormais installé lors de la mise en place de la Grid Infrastructure 12.1.0.2.
Oracle ASMFD renforce la sécurité des données contenues dans les disk ASM ainsi que des disk ASM eux-mêmes.
En effet, lors de l’utilisation d’Oracle AMSLIB, un disk ASM appartient au propriétaire de la Grid Infrastructure.
Tout utilisateur appartenant au groupe OSASM peut lire et écrire sur le disk ASM via des commandes classiques telles que strings, dd, …
Oracle ASMFD n’accepte que les demandes d’I/O effectuées par root.
Toute action du style dd faite par un autre utilisateur ne sera pas commitée sur le disk ASM.
Ce driver n’est disponible actuellement que sur Linux.
Son utilisation reste toutefois facultative lors de la création de vos disk ASM.
Migration de disks ASM de ASMLIB vers ASMFD
Cette démonstration d’Oracle ASMFD s’effectuera sur une Grid Infrastructure standalone 12.1.0.2 où ASMLIB est actuellement configuré et utilisé.
[root@DBNode1 ~] # lsmod | grep oracle oracleasm 53591 1 [root@DBNode1 ~]# ls -ltr /dev/oracleasm/disks total 0 brw-rw----. 1 oracle dba 8, 17 Oct 10 11:44 DISK1 brw-rw----. 1 oracle dba 8, 33 Oct 10 11:44 DISK2 brw-rw----. 1 oracle dba 8, 49 Oct 10 11:44 DISK3 brw-rw----. 1 oracle dba 8, 65 Oct 10 11:44 DISK4
Actuellement, tous les utilisateurs appartenant au groupe dba peuvent écrire sur les disk ASM.
[grid@DBNode1 ~] $ asmcmd afd_state ASMCMD-9526: The AFD state is 'NOT INSTALLED' and filtering is 'DEFAULT' on host 'DBNode1'
Le driver Oracle ASMFD n’est actuellement pas configuré.
Nous allons modifier la chaîne de caractères définissant le chemin des disk ASM.
[grid@DBNode1 ~] $ asmcmd dsset 'ORCL:*','AFD:*' [grid@DBNode1 ~] $ asmcmd dsget parameter:ORCL:*, AFD:* profile:ORCL:*,AFD:*
Nous stoppons les process Oracle (Database, ASM et CRS).
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. [root@DBNode1 ~] # srvctl stop asm -f [root@DBNode1 ~] # crsctl stop has CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'DBNode1' CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'DBNode1' CRS-2673: Attempting to stop 'ora.evmd' on 'DBNode1' CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'DBNode1' succeeded CRS-2677: Stop of 'ora.evmd' on 'DBNode1' succeeded CRS-2673: Attempting to stop 'ora.cssd' on 'DBNode1' CRS-2677: Stop of 'ora.cssd' on 'DBNode1' succeeded CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'DBNode1' has completed CRS-4133: Oracle High Availability Services has been stopped.
Passons désormais à la configuration d’Oracle ASMFD.
[root@DBNode1 ~] # asmcmd afd_configure Connected to an idle instance. AFD-627: AFD distribution files found. AFD-636: Installing requested AFD software. AFD-637: Loading installed AFD drivers. AFD-9321: Creating udev for AFD. AFD-9323: Creating module dependencies - this may take some time. AFD-9154: Loading 'oracleafd.ko' driver. AFD-649: Verifying AFD devices. AFD-9156: Detecting control device '/dev/oracleafd/admin'. AFD-638: AFD installation correctness verified. Modifying resource dependencies - this may take some time. ASMCMD-9524: AFD configuration failed 'ERROR: OHASD start failed' Modifying resource dependencies - this may take some time. ASMCMD-9524: AFD configuration failed 'ERROR: OHASD start failed' [root@DBNode1 ~] # asmcmd afd_state Connected to an idle instance. ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'DEFAULT' on host 'DBNode1'
Notons que les disks ASM sont désormais visibles dans le répertoire /dev/oracleafd.
Le propriétaire des disk ASM est root.
[root@DBNode1 ~] # ls -l /dev/oracleasm/* ls: /dev/oracleasm/*: No such file or directory [root@DBNode1 ~] # ls -l /dev/oracleafd/disks total 0 -rw-r--r--. 1 root root 8, 17 Oct 10 11:44 DISK1 -rw-r--r--. 1 root root 8, 33 Oct 10 11:44 DISK2 -rw-r--r--. 1 root root 8, 49 Oct 10 11:44 DISK3 -rw-r--r--. 1 root root 8, 65 Oct 10 11:44 DISK4
Nous allons démarrer la stack du clusterware.
[root@DBNode1 ~] # crsctl start has CRS-4123: Oracle High Availability Services has been started.
Les disks ASM ont bien été migrés sur Oracle ASMFD.
ASM> select name, path, total_mb, free_mb from v$asm_disk; NAME PATH TOTAL_MB FREE_MB ------------------------------ ------------------------------ ---------- ---------- RECO_0001 AFD:DISK4 10236 9523 RECO_0000 AFD:DISK3 10236 9523 DATA_0001 AFD:DISK2 10236 8072 DATA_0000 AFD:DISK1 10236 8072
Nous modifions la chaîne de caractères définissant le chemin des disk ASM pour ne prendre en compte qu’Oracle ASMFD.
SQL> ALTER SYSTEM set asm_diskstring = 'AFD:*'; [grid@DBNode1 ~] $ asmcmd dsget parameter:AFD:* profile:AFD:*
Désormais, il est impossible pour un utilisateur non-root d’effectuer une action sur les disks ASM.
[grid@DBNode1 ~]$ echo 'test' > /dev/oracleafd/disks/DISK1 bash: /dev/oracleafd/disks/DISK1: Permission denied