Déplacer à chaud les fichiers OCR, Voting disks d'un groupe de disques à un autre en 11Gr2

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.