Augmenter le délai heartbeep pendent lequel un disque n’est pas considéré comme offline lors d’une bascule multipath pas assez rapide. Ou comment utiliser un paramètre caché d’ASM 11GR2!!!
Le contexte :
Rac étendu en version 11.2.0.4 avec deux diskgroups en miroir et un accès aux LUN’s en ISCSI vers des baies DELL EQUALOGIC.
Le multipath est configuré avec le driver multipath propriétaire de DELL puisque les bascules en driver linux natifs sont extrêmement lentes.
La configuration ASM a donc été faite sur des chemins du type /dev/eql/XXXXXX.
Quand on teste la perte d’une des deux cartes dédiées au ISCSI, la couche multipath doit gérer les io’s à travers le deuxième chemin.
Aléatoirement lorsque que l’on coupe le port du switch ou la carte ISCSI, nous allons perdre des disques d’un des deux diskgroups ou pas.
########################################################################
# ETAT DES DISQUES #
########################################################################
GROUP_NUMBER NAME STATE FAILGROUP PATH
———— ——————– ———- ——————– ———————————————
0 NORMAL /dev/oracleasm/disks/DSK_CLITX_FRA02
0 NORMAL /dev/oracleasm/disks/DSK_CLITX_DATA01
0 NORMAL /dev/oracleasm/disks/DSK_CLITX_OCR02
1 CLITX_DATA01 NORMAL FG_CLITX_DATA
1 CLITX_DATA05 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA05
1 CLITX_DATA03 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA03
1 CLITX_DATA02 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA02
1 CLITX_DATA04 NORMAL FG_CLITX_DATA /dev/oracleasm/disks/DSK_CLITX_DATA04
1 TCY_DATA02 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA02
1 TCY_DATA01 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA01
1 TCY_DATA03 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA03
1 TCY_DATA04 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA04
1 TCY_DATA05 NORMAL FG_TCY_DATA /dev/oracleasm/disks/DSK_TCY_DATA05
2 CLITX_FRA03 NORMAL FG_CLITX_FRA /dev/oracleasm/disks/DSK_CLITX_FRA03
2 CLITX_FRA01 NORMAL FG_CLITX_FRA /dev/oracleasm/disks/DSK_CLITX_FRA01
2 CLITX_FRA02 NORMAL FG_CLITX_FRA
2 TCY_FRA03 NORMAL FG_TCY_FRA /dev/oracleasm/disks/DSK_TCY_FRA03
2 TCY_FRA01 NORMAL FG_TCY_FRA /dev/oracleasm/disks/DSK_TCY_FRA01
2 TCY_FRA02 NORMAL FG_TCY_FRA /dev/oracleasm/disks/DSK_TCY_FRA02
3 TCY_OCR02 NORMAL TCY_OCR02 /dev/oracleasm/disks/DSK_TCY_OCR02
4 OCRVOTING_0001 NORMAL OCRVOTING_0001 /dev/oracleasm/disks/DSK_CLITX_OCR01
4 OCRVOTING_0002 NORMAL OCRVOTING_0002 /dev/oracleasm/disks/DSK_TCY_OCR01
4 OCRVOTING_0003 NORMAL OCRVOTING_0003 /app/voting/vote3
########################################################################
# ETAT DES DISKGROUPS : PRESENCE DE DISQUES OFFLINE #
########################################################################
GROUP_NUMBER NAME STATE OFFLINE_DISKS
———— ——————– ———- ————-
1 DGDATA MOUNTED 1
2 DGFRA MOUNTED 1
3 OCRMIRROR MOUNTED 0
4 OCRVOTING MOUNTED 0
On voit que l’on a bien des disques offline dans chaque diskgroup DGFRA et DGDATA.
Alert_+ASM1.log
Dans les traces, on voit des erreurs d’écritures
WARNING: group 1 dismounted: failed to write virtual extent 0 of file 256
Errors in file /app/oracle/diag/rdbms/orcl/ORCL1/trace/ORCL1_ckpt_42424.trc:
ORA-00206: erreur lors de l’écriture (bloc 3, nbre blocs 1) du fichier de contrôle
ORA-00202: fichier de contrôle : ‘+DGDATA/orcl/controlfile/current.256.842798891′
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
Errors in file /app/oracle/diag/rdbms/orcl/ORCL1/trace/ORCL1_ckpt_42424.trc:
ORA-00221: erreur lors de l’écriture dans le fichier de contrôle
ORA-00206: erreur lors de l’écriture (bloc 3, nbre blocs 1) du fichier de contrôle
ORA-00202: fichier de contrôle : ‘+DGDATA/orcl/controlfile/current.256.842798891′
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
ORA-15081: échec de la soumission d’une opération d’entrée-sortie sur un disque
CKPT (ospid: 42424): terminating the instance due to error 221
Fri Mar 21 15:23:43 2014
System state dump requested by (instance=1, osid=42424 (CKPT)), summary=[abnormal instance termination].
System State dumped to trace file /app/oracle/diag/rdbms/orcl/ORCL1/trace/ORCL1_diag_42382_20140321152343.trc
Fri Mar 21 15:23:43 2014
Sur 10 coupures à 5 minutes d’intervalle, avec remise en état de la configuration entre temps bien sur, on aura dix résultats différents dont des fois ou l’on ne perd aucun disque, le résultat attendu…
On va positionner un des nombreux paramètres cachés d’ASM en 11GR2 qui va nous permettre d’augmenter le temps toléré de heartbeep avant que le disque soit considéré comme manquant et de ce fait mis offline.
Sa valeur par défaut est de 15 secondes.
SQL> alter system set “_asm_hbeatiowait”=200 scope=spfile;
System altered.
SQL>
On peut donc refaire les tests et O surprise, nous ne perdons plus un seul membre de diskgroup au bout de 10 changement / coupures de multipath.
Le rac étendu est opérationnel.