Tens els teu servidors Linux, amb un Oracle 10g RAC. Tot funciona fantàsticament, però de sobte una màquina es reinicia. Mires els logs i et trobes això:
Sep 18 00:27:24 server1 kernel: SCSI error : <2 0 2 0> return code = 0x20000
Sep 18 00:27:24 server1 kernel: end_request: I/O error, dev sdae, sector 1672
Sep 18 00:27:24 server1 kernel: device-mapper: dm-multipath: Failing path 65:224.
Sep 18 00:34:14 server1 syslogd 1.4.1: restart.
Sep 18 00:34:14 server1 syslog: syslogd startup succeeded
Sep 18 00:34:14 server1 kernel: klogd 1.4.1, log source = /proc/kmsg started.
D’acord… han fallat els discos SAN… la màquina ha perdut part dels discos… Pero això no sembla motiu suficient com per reiniciar-se, no? L’arrel del sistema operatiu (la “/”) està muntada sobre un disc local. De fet sobre els discos de la SAN només hi ha l’ocfs de l’Oracle… El que seria normal és que hagués caigut l’Oracle i ja està, no? Per què s’ha reiniciat la màquina completa?
Doncs resulta que antigament, Oracle RAC, quan es trobava en aquesta situació, intentava treure la màquina del cluster fent un “evict node”. Pero això no funcionava, el driver ocfs2 es quedava penjat, moltes vegades deixant penjat el cluster complet (totes les màquines del cluster). Solució dràstica… Quina és la forma més segura de sortir d’un cluster? Doncs reiniciant la maquina. Pimpampum.
També podrien haver fet que l’Oracle deixés algun missatge de log avisant-te que ha estat ell qui ho reiniciava, i així les coses haguessin estat mes clares. Però no es pot tenir tot.
Així que si et trobes que la teva màquina es reinicia quan perd l’accés a la SAN, no culpis la màquina i no culpis l’Oracle… fes que arreglin la SAN perquè no torni a passar.