Como agregar en caliente Raw Device a Oracle Solaris Cluster 3.3 con Oracle RAC

Por Diego Aguirre
Publicado en abril 2013

La finalidad de la tarea descrita en este artículo es agregar 3 discos y crear 3 raw devices para la base de datos en una instalación de Oracle Solaris Cluster 3.3 con Oracle RAC , y el punto de valor a resaltar es realizar la tarea on line sin bajar ningún recurso, eliminando la necesidad de downtime.

Los equipos involucrados son 2 servidores Oracle Sun M5000 con 64GB de ram cada uno.
Los discos son IBM 2145, conectados por fibra óptica a una SAN.
Como manejador de volúmenes se utiliza Veritas-5.0_MP3_RP4
Por ultimo, el release de Solaris es el 10 9/10 s10s_u9wos_14a SPARC.

El primer paso consiste en etiquetar cada disco de los que se quieren agregar, con el comando format.

Posteriormente se chequea cual es el nodo que tiene el control de los discos

[sunrac1]  # vxdctl -c mode  
mode: enabled: cluster active - MASTER
master: sunrac1

Aquí vemos que que el nodo que tiene el control de los discos es el sunrac1 . En este equipo se ejecutan los comandos descritos a continuación.

Se puede ejecutar con todos los servicios de Oracle Solaris Cluster y Oracle RAC online, sin afectar el servicio.

[psunrac1]  # cldev populate
Configuring DID devices
did instance 35 created.
did subpath sunrac1:/dev/rdsk/c6t60050768019901B4000000000000080Cd0 created for instance 35.
did instance 36 created.
did subpath sunrac1:/dev/rdsk/c6t60050768019901B4000000000000080Bd0 created for instance 36.
did instance 37 created.
did subpath sunrac1:/dev/rdsk/c6t60050768019901B4000000000000080Ad0 created for instance 37.

Configuring the /dev/global directory (global devices)
obtaining access to all attached disks

Nota: Este comando puede tardar unos minutos en sincronizar la información en los 2 nodos, dependiendo de la cantidad de discos.

El comando descrito a continuación se debe ejecutar en ambos nodos del cluster (en este caso seria en sunrac1 y sunrac2)

[sunrac1]  # vxdctl enable  (en ambos nodos)

Todos los comandos a continuación se ejecutan solo en el nodo que tiene el control de los discos.

Ahora es el turno de agregar los discos en el Veritas, se puede realizar con el menú vxdiskadm o por linea de comando, en nuestro caso utilizaremos el primero:

[sunrac1]  # vxdiskadm , opcion1
Select disk devices to add: [,all,list,q,?] list

DEVICE       DISK         GROUP        STATUS
c0t0d0       rootdg_1     rootdg       online
c0t1d0       -            -            online invalid
c2t0d0       rootmirror   rootdg       online
c2t1d0       -            -            online invalid
san_vc0_0    -            -            online invalid
san_vc0_1    san_vc0_1    Datosdg      online shared
san_vc0_2    san_vc0_2    Datosdg      online shared
san_vc0_3    san_vc0_3    Datosdg      online shared
san_vc0_4    san_vc0_4    Datosdg      online shared
san_vc0_5    san_vc0_5    Datosdg      online shared
san_vc0_6    san_vc0_6    Datosdg      online shared
san_vc0_7    san_vc0_7    Datosdg      online shared
san_vc0_8    san_vc0_8    Datosdg      online shared
san_vc0_9    san_vc0_9    Datosdg      online shared
san_vc0_10   san_vc0_10   Datosdg      online shared
san_vc0_11   san_vc0_11   Datosdg      online shared
san_vc0_12   san_vc0_13   Crsdg        online shared
san_vc0_13   san_vc0_14   Interdg      online
san_vc0_14   san_vc0_15   Interdg      online
san_vc0_15   san_vc0_16   Interdg      online
san_vc0_16   san_vc0_17   Interdg      online
san_vc0_17   localrac1dg01 localrac1dg  online
san_vc0_18   Redodg01     Redodg       online shared
san_vc0_19   san_vc0_20   Interdg      online
san_vc0_20   Archdg01     Archdg       online
san_vc0_21   san_vc0_21   Datosdg      online shared
san_vc0_22   san_vc0_22   Datosdg      online shared
san_vc0_23   -            -            online invalid
san_vc0_24   -            -            online invalid
san_vc0_25   -            -            online invalid

Select disk devices to add: [,all,list,q,?]  san_vc0_23 san_vc0_24 san_vc0_25

Aquí se eligen en este caso los discos san_vc0_23 ,24 y 25 y se formatean en veritas.

Se chequea el tamaño de los discos que se agregaron:

[sunrac1] # vxassist -g Datosdg maxsize san_vc0_23
Maximum volume size: 276723712 (135119Mb)
[sunrac1]  # vxassist -g Datosdg maxsize san_vc0_24
Maximum volume size: 276723712 (135119Mb)
[sunrac1]  # vxassist -g Datosdg maxsize san_vc0_25
Maximum volume size: 276723712 (135119Mb)
[sunrac1]  #

Ahora se crean los raw devices con los discos y tamaños.

[sunrac1]  # vxassist -g Datosdg -U gen make datos14 135119M san_vc0_23
[sunrac1]  # vxassist -g Datosdg -U gen make datos15 135119M san_vc0_24
[sunrac1]  # vxassist -g Datosdg -U gen make datos16 135119M san_vc0_25

Por ultimo y muy importante, se agregan los permisos necesarios para que los vea el Oracle RAC:

[sunrac1]  # vxedit -g Datosdg set group=asmadmin user=grid mode=660 datos14
[sunrac1]  # vxedit -g Datosdg set group=asmadmin user=grid mode=660 datos15
[sunrac1]  # vxedit -g Datosdg set group=asmadmin user=grid mode=660 datos16

Se chequea que hayan quedado con los permisos correctos:

[psunrac1]  # ls -lt /dev/vx/rdsk/Datosdg/ 
crw-rw----   1 grid     asmadmin 335, 61000 Jan 24 10:29 datos1
crw-rw----   1 grid     asmadmin 335, 61015 Jan 24 10:27 datos16
crw-rw----   1 grid     asmadmin 335, 61014 Jan 24 10:27 datos15
crw-rw----   1 grid     asmadmin 335, 61013 Jan 24 10:27 datos14
crw-rw----   1 grid     asmadmin 335, 61012 Jan 24 10:23 datos13
crw-rw----   1 grid     asmadmin 335, 61007 Jan 24 10:07 datos8
crw-rw----   1 grid     asmadmin 335, 61006 Jan 24 01:41 datos7
crw-rw----   1 grid     asmadmin 335, 61011 Jan 24 00:17 datos12

Potenciales errores y Soluciones aplicables:

Se puede fallar al intentar agregar los discos con vxdiskadm porque no se ven los discos en el otro nodo.

La solucion es ejecutar vxdctl enable en el otro nodo y volver a correr el vxdiskadm en el nodo primario.

Otro error que puede ocurrir con el vxdiskadm, cuando se agregan los discos, es poner los nombres default en lugar del nombre que se quisiera poner a los discos.

La solución es, una vez agregado los discos, desde la linea de comando, renombrar los discos de la siguiente manera:

[sunrac1]  # vxedit -g Datosdg rename Datosdg01 san_vc0_23
[sunrac1]  # vxedit -g Datosdg rename Datosdg02 san_vc0_24
[sunrac1]  # vxedit -g Datosdg rename Datosdg03 san_vc0_25


Publicado por Diego Aguirre.