Dernièrement chez un client en contrôlant les fichiers OCR et ‘voting disk’ de la couche ‘clusterware’ d’Oracle nous nous sommes aperçus que ceux-ci avaient été associés qu’à un seul groupe de disques ASM dont la redondance était assurée de manière externe.
Hors ce groupe de disques ASM hébergeant ces fichiers hautement sensibles ne disposait que d’une redondance de type RAID-5 au niveau de la baie de stockage. Une sécurisation somme toute insuffisante, aussi pour pallier ce manque nous décidâmes de créer un nouveau groupe de disques doté d’un niveau de sécurisation bien plus efficace avec un miroir interne ASM (normal redundancy). Cette prérogative nécessite d’acquérir au minimum deux disques qui seront associés chacun à un groupe spécifique (FAILGROUP).
En premier lieu il convient de créer un nouveau groupe de disques que nous appellerons GRID pour lequel nous distinguerons deux ‘failure groups‘ : ASM_GRID_01 et ASM_GRID_02 auxquels seront attachés chacun des nouveaux disques ce qui nous permettra de bénéficier de la redondance du miroir (NORMAL REDUNDANCY).
Pour que ce groupe de disques sur lequel résidera les fichiers ‘OCR’ et ‘voting disks’ soit actif au niveau ASM, il est indispensable de spécifier les attributs de compatibilité rdbms, asm à 11.2.0.0.0.
oracle@rac1-node:+ASM1:/home/oracle]sqlplus / as sysasm SQL*Plus: Release 11.2.0.2.0 Production on Sat Jan 26 12:41:00 2013Copyright (c) 1982, 2010, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Real Application Clusters and Automatic Storage Management options SQL> CREATE DISKGROUP GRID NORMAL REDUNDANCY FAILGROUP ASM_GRID_01 DISK 'ORCL:ASM_GRID_01' SIZE 1019 M FAILGROUP ASM_GRID_02 DISK 'ORCL:ASM_GRID_02' SIZE 1019 M ATTRIBUTE 'compatible.rdbms' = '11.2.0.0.0', 'compatible.asm' = '11.2.0.0.0'; Diskgroup created.
Nous contrôlons rapidement que le nouveau groupe de disques GRID soit bien une ressource supervisée par le clusterware d’Oracle : crs_stat -t
oracle@rac1-node:+ASM1:/home/oracle]./crsstat.sh
/app/grid/11.2.0.2
HA Resource Target State
----------- ------ -----
ora.ARCH.dg ONLINE ONLINE on rac1-node
ora.DATA1.dg ONLINE ONLINE on rac1-node
ora.DATA2.dg ONLINE ONLINE on rac1-node
ora.DATA3.dg ONLINE ONLINE on rac1-node
ora.DATA4.dg ONLINE ONLINE on rac1-node
ora.DG_GRID.dg ONLINE ONLINE on rac1-node
ora.GRID.dg ONLINE ONLINE on rac1-node
A ce stade nous vérifions sur quels disques les ‘voting disks’ sont stockés, nous trouvons bien le groupe de disques +DG_GRID sur lequel initialement les ‘voting disks’ ont été affectés.
[root@rac1-node rac1-node]# crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 2c136da8f5394fc4bf682cc53a018016 (ORCL:ASM_GRID_03) [DG_GRID]
Maintenant il ne nous reste plus qu’à préciser le nouveau groupe de disques +GRID dans la configuration des fichiers ‘OCR’ et ‘voting disks’. Ce nouveau groupe de disques +GRID est considéré comme le miroir du groupe de disques initial DG_GRID par la couche clusterware d’Oracle, ce qui nous est confirmé en consultant le fichier de localisation du registre du cluster Oracle : /etc/oracle/ocr.loc
[root@rac1-node rac1-node]# ocrconfig -add +GRID [root@rac1-node rac1-node]# cat /etc/oracle/ocr.loc #Device/file getting replaced by device +GRID ocrconfig_loc=+DG_GRID ocrmirrorconfig_loc=+GRID
Vérifions quand même que notre configuration est bien prise en compte par le cluster Oracle
local_only=false[root@rac1-node rac1-node]# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 3376
Available space (kbytes) : 258744
ID : 1861920605
Device/File Name : +DG_GRID
Device/File integrity check succeeded
Device/File Name : +GRID
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check succeeded
Nous pouvons alors déplacer nos ‘voting disks’ sur le nouveau groupe de disques, mais nous avons une erreur qui est visible dans le fichier alert.log de l’instance ASM : ORA-15274: Not enough failgroups (3) to create voting files, en effet grossière erreur puisque lorsque nous assignons un groupe de disques pour les voting disks celui-ci doit disposer de 3 disques en mode redondance normale, de 5 disques en haute redondance et un seul disque lorsque la redondance est assurée de façon externe par la baie de disques.
[root@rac1-node ~]# crsctl replace votedisk +GRID
Failed to create voting files on disk group GRID
Change to configuration failed, but was successfully rolled back.
CRS-4000: Command replace failed, or completed with errors.
Mais que cela ne tienne nous allons temporairement utiliser un groupe de disques déjà existant +DATA1 ayant le même niveau de redondance que notre groupe de disques initial +DG_GRID pour faire transiter les fichiers ‘OCR’ et ‘voting disks’. En premier lieu nous devons supprimer le groupe de disques +GRID sur lequel nous envisagions stocker nos fichiers ‘clusterware’ et ajouter dans notre configuration le groupe de disques +DATA1.
[root@rac1-node rac1-node]# ocrconfig -delete +GRID [root@rac1-node ~]# ocrconfig -add +DATA1 [root@rac1-node ~]# cat /etc/oracle/ocr.loc #Device/file getting replaced by device +DATA1 ocrconfig_loc=+DG_GRID ocrmirrorconfig_loc=+DATA1 local_only=false
Maintenant que notre groupe de disques +DATA1 est bien identifié comme un miroir ‘OCR’ nous pouvons déplacer les ‘voting disks’ sur ce groupe de disques et supprimer le groupe de disques d’origine +DG_GRID
[root@rac1-node ~]# crsctl replace votedisk +DATA1 Successful addition of voting disk 2df2458728c54f75bfeb68b5bdd26fb8. Successful deletion of voting disk 2c136da8f5394fc4bf682cc53a018016. Successfully replaced voting disk group with +DATA1. CRS-4266: Voting file(s) successfully replaced [root@rac1-node rac1-node]# ocrcheck Status of Oracle Cluster Registry is as follows : Version : 3 Total space (kbytes) : 262120 Used space (kbytes) : 3412 Available space (kbytes) : 258708 ID : 1861920605 Device/File Name : +DG_GRID Device/File integrity check succeeded Device/File Name : +DATA1 Device/File integrity check succeeded Device/File not configured Device/File not configured Device/File not configured Cluster registry integrity check succeeded Logical corruption check succeeded [root@rac1-node rac1-node]# ocrconfig -delete +DG_GRID [root@rac1-node rac1-node]# ocrcheck Status of Oracle Cluster Registry is as follows : Version : 3 Total space (kbytes) : 262120 Used space (kbytes) : 3412 Available space (kbytes) : 258708 ID : 1861920605 Device/File Name : +DATA1 Device/File integrity check succeeded Device/File not configured Device/File not configured Device/File not configured Device/File not configured Cluster registry integrity check succeeded Logical corruption check succeeded
Pour rectifier notre erreur précédente, nous allons libérer le disque du groupe d’origine ‘DG_GRID’ pour l’intégrer dans notre nouveau groupe de disques. En premier lieu nous allons démonter le groupe de disques successivement sur chacun des noeuds du cluster puis le supprimer ainsi que son contenu, en dernier lieu il suffira d’ajouter le disque libéré à notre nouveau groupe GRID pour disposer du troisième disque indispensable à notre mode de redondance.
# Node 2 oracle@rac2-node:+ASM2:/home/oracle]sqlplus / as sysasm SQL*Plus: Release 11.2.0.2.0 Production on Sat Jan 26 14:25:25 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Real Application Clusters and Automatic Storage Management options SQL> ALTER DISKGROUP DG_GRID DISMOUNT; # Node 1 oracle@rac1-node:+ASM1:/home/oracle]sqlplus / as sysasm SQL*Plus: Release 11.2.0.2.0 Production on Sat Jan 26 14:29:33 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Real Application Clusters and Automatic Storage Management options SQL> ALTER DISKGROUP DG_GRID DISMOUNT; Diskgroup altered. SQL> DROP DISKGROUP DG_GRID INCLUDING CONTENTS; Diskgroup dropped. SQL>ALTER DISKGROUP GRID ADD FAILGROUP ASM_GRID_03 DISK 'ORCL:ASM_GRID_03' SIZE 1019 M; Diskgroup altered.
Il suffit maintenant d’adjoindre à notre configuration OCR le groupe de disques GRID et de déplacer les ‘voting disks’ sur celui-ci puis de supprimer le groupe de disques transitoire DATA1 de notre configuation pour être en confirmité avec nos objectifs de sécurité.
[root@rac1-node ~]# ocrconfig -add +GRID [root@rac1-node ~]# crsctl replace votedisk +GRID Successful addition of voting disk 9b06eea9c4a14fefbf7cb9c82845a2a2. Successful addition of voting disk 7b0fbfffe3134f42bffd5c6fa87cf2ef. Successful addition of voting disk 91f4a260e3ee4ff7bf088bb1e7d4eb59. Successful deletion of voting disk 2df2458728c54f75bfeb68b5bdd26fb8. Successfully replaced voting disk group with +GRID. CRS-4266: Voting file(s) successfully replaced [root@rac1-node ~]# [root@rac1-node ~]# crsctl query css votedisk ## STATE File Universal Id File Name Disk group -- ----- ----------------- --------- --------- 1. ONLINE 9b06eea9c4a14fefbf7cb9c82845a2a2 (ORCL:ASM_GRID_01) [GRID] 2. ONLINE 7b0fbfffe3134f42bffd5c6fa87cf2ef (ORCL:ASM_GRID_02) [GRID] 3. ONLINE 91f4a260e3ee4ff7bf088bb1e7d4eb59 (ORCL:ASM_GRID_03) [GRID] [root@rac1-node ~]# ocrconfig -delete +DATA1 [root@rac1-node ~]# ocrcheck Status of Oracle Cluster Registry is as follows : Version : 3 Total space (kbytes) : 262120 Used space (kbytes) : 3396 Available space (kbytes) : 258724 ID : 1861920605 Device/File Name : +GRID Device/File integrity check succeeded Device/File not configured Device/File not configured Device/File not configured Device/File not configured Cluster registry integrity check succeeded Logical corruption check succeeded
En voilà le tour est joué, bien sûr avant de se lancer dans ce genre d’opération une précaution d’usage s’impose celle de sauvegarder le fichier OCR initial qui contient aussi les ‘voting disks’ (cf ocrconfig -manualbackup). Il faut savoir que le backup de l’OCR est fait à chaque intervalle de 4h sur le noeud master.