Oracle Live

03/07/2016

ASM – Configurar disgroup con reglas UDEV

Filed under: ASM — mogukiller @ 12:29 am

Esta operativa en clientes grandes os la tendria que hacer la gente de sistemas, pero nunca esta mal aprender un poco.
Seguramente os habra pasado que cuando añadis un disco para asignarselo a un diskgroup, cuando reiniciais vuestra máquina os llevais la desagradable sorpresa que el diskgroup no quiere montar. Despues de dar un par de vueltas os dareis cuenta que el disco asignado al diskgroup vuelve a ser de root. Para mantener los privilegios despues del reinicio teneis que usar reglas UDEV. Habrá gente que prefiera utilizar ASMLIB, pues espero que un upgrade del sistema operativo no les de problemas en las librerias de ASMLIB.

1.- Creamos disgroup
SQL> conn / as sysasm
SQL> CREATE DISKGROUP datos NORMAL REDUNDANCY
		FAILGROUP controller1 DISK
			'/dev/asm-disk5' NAME diska1			
		FAILGROUP controller2 DISK			
			'/dev/asm-disk6' NAME diskb1
		ATTRIBUTE 'au_size'='1M',
		'compatible.asm' = '11.2',
		'compatible.rdbms' = '11.2';
		
'nota: si trabajamos en un cluster vemos que en el otro nodo ese disco no esta montado'

-- mobubedb11n2
/*
NAME       BLOCK_SIZE AU_SIZE(MB) REDUNDANCY STATE         TOTAL_MB    FREE_MB USABLE_FILE_MB
---------- ---------- ----------- ---------- ----------- ---------- ---------- --------------
DATA             4096           1 EXTERN     MOUNTED          20472      17757          17757
RECO             4096           1 EXTERN     MOUNTED          15358      13289          13289
DATOS            4096           0            DISMOUNTED           0          0              0
*/

17:02:37 +ASM2 SQL>ALTER DISKGROUP DATOS MOUNT;

Diskgroup altered.
/*
NAME       BLOCK_SIZE AU_SIZE(MB) REDUNDANCY STATE         TOTAL_MB    FREE_MB USABLE_FILE_MB
---------- ---------- ----------- ---------- ----------- ---------- ---------- --------------
DATA             4096           1 EXTERN     MOUNTED          20472      17757          17757
RECO             4096           1 EXTERN     MOUNTED          15358      13289          13289
DATOS            4096           1 NORMAL     MOUNTED            972        782            391
*/

'nota: Vemos que el recurso se ha añadido automaticamente'

Resource Name                       Resource Type      Target       State         Node            State Details
----------------------------------- ------------------ ------------ ------------  ---------------- ---------------
ora.DATOS.dg                        diskgroup          ONLINE       ONLINE        mogubedb11n1    
ora.DATOS.dg                        diskgroup          ONLINE       ONLINE        mogubedb11n2 

2.- Workaround para OEL No Unbreakable

[root@mogubedb11n1 lib]# cp osds_acfslib.pm osds_acfslib.pm_bck
[root@mogubedb11n2 lib]# cp osds_acfslib.pm osds_acfslib.pm_bck

'editamos en los dos nodos'
/*
elsif (($kver =~ /2.6.32-100/) && ($kver =~ /uek/))
por esto
elsif (($kver =~ /2.6.32-100/)) 
*/

[root@mogubedb11n1 lib]# /export/app/11.2.0/grid/bin/acfsload start -s
/*
	ACFS-9129: ADVM/ACFS not installed
*/	

mkdir /lib/modules/2.6.32-100.26.2.el5/extra/usm
cd $ORACLE_HOME/install/usm/EL5/x86_64/2.6.18-8/2.6.18-8.el5-x86_64/bin
cp *ko /lib/modules/2.6.32-100.26.2.el5/extra/usm

cd $ORACLE_HOME/bin

./acfsdriverstate -orahome $ORACLE_HOME version

[root@mogubedb11n2 bin]# ./acfsdriverstate -orahome $ORACLE_HOME version
ACFS-9325:     Driver OS kernel version = 2.6.18-8.el5(x86_64).
ACFS-9326:     Driver Oracle version = 110803.1.

[root@mogubedb11n1 bin]# /sbin/depmod

cd $ORACLE_HOME/install/usm/cmds/bin
cp acfs* /sbin; chmod 755 /sbin/acfs*
cp advmutil* /sbin; chmod 755 /sbin/advmutil*
cp fsck.acfs* /sbin; chmod 755 /sbin/fsck.acfs*
cp mkfs.acfs* /sbin; chmod 755 /sbin/mkfs.acfs*
cp mount.acfs* /sbin; chmod 755 /sbin/mount.acfs*

$ORACLE_HOME/bin/acfsload start -s
/*
ACFS-9300: ADVM/ACFS distribution files found.
ACFS-9312: Existing ADVM/ACFS installation detected.
ACFS-9314: Removing previous ADVM/ACFS installation.
ACFS-9315: Previous ADVM/ACFS components successfully removed.
ACFS-9307: Installing requested ADVM/ACFS software.
ACFS-9308: Loading installed ADVM/ACFS drivers.
ACFS-9321: Creating udev for ADVM/ACFS.
ACFS-9323: Creating module dependencies - this may take some time.
ACFS-9154: Loading 'oracleoks.ko' driver.
ACFS-9154: Loading 'oracleadvm.ko' driver.
ACFS-9154: Loading 'oracleacfs.ko' driver.
ACFS-9327: Verifying ADVM/ACFS devices.
ACFS-9156: Detecting control device '/dev/asm/.asm_ctl_spec'.
ACFS-9156: Detecting control device '/dev/ofsctl'.
ACFS-9309: ADVM/ACFS installation correctness verified.
*/

-- comprobamos que se han cargado correctamente los modulos

mogubedb11n1(root)- /root > lsmod | grep oracle
oracleacfs           1612062  0 
oracleadvm            220326  0 
oracleoks             279693  2 oracleacfs,oracleadvm

-- Configuramos para que se cargue el driver en cada reinicio

'nota: vamos a crear el script de inicio /etc/init.d/acfsload'

chkconfig --list | grep acfsload   <<< 'comprobamos que no este cargado ya'

'creamos el fichero'
[root@racnode1 ~]# cat > /etc/init.d/acfsload <<EOF
#!/bin/sh

# chkconfig: 2345 30 21
# description: Load Oracle ASM volume driver on system startup 

ORACLE_HOME=/export/app/11.2.0/grid
export ORACLE_HOME

\$ORACLE_HOME/bin/acfsload start -s
EOF

'le damos permisos'
chmod 755 /etc/init.d/acfsload

chkconfig --add acfsload

chkconfig --list | grep acfsload
/*
acfsload        0:off   1:off   2:on    3:on    4:on    5:on    6:off
*/

-- Comprobamos que el registro no este creado a nivel de cluster

su - grid
crs_stat | grep acfs

-- Si no lo estuviese lo añadimos

'nota: estos dos comandos en solo uno de los nodos'
[root]# $ORACLE_HOME/bin/crsctl add type ora.registry.acfs.type -basetype ora.local_resource.type -file $ORACLE_HOME/crs/template/registry.acfs.type
[root]# $ORACLE_HOME/bin/crsctl add resource ora.registry.acfs -attr ACL=\'owner:root:rwx,pgrp:oinstall:r-x,other::r--\' -type ora.registry.acfs.type -f

[grid@mogubedb11n1 ~]$ crs_stat | grep acfs
/*
NAME=ora.registry.acfs
TYPE=ora.registry.acfs.type 
*/

3.- Comprobamos la compatibilidad de los discos

SQL> SELECT name,compatibility, database_compatibility  FROM v$asm_diskgroup;

/*
NAME                           COMPATIBILITY   DATABASE_COMPATIBILITY
------------------------------ --------------- ----------------------------
DATA                           11.2.0.0.0      10.1.0.0.0
RECO                           11.2.0.0.0      10.1.0.0.0
DATOS                          11.2.0.0.0      11.2.0.0.0 <<<<<< 'Es este el que vamos a utilizar OK'
*/


12:13:53 +ASM1 SQL>CONN / as sysasm
12:14:07 +ASM1 SQL>ALTER DISKGROUP DATOS SET ATTRIBUTE 'compatible.advm' = '11.2';
/*
Diskgroup altered.
*/ 
12:16:07 +ASM2 SQL>ALTER DISKGROUP DATOS SET ATTRIBUTE 'compatible.advm' = '11.2';
/*
Diskgroup altered.
*/

4.- Creamos los puntos de montaje

[root@mogubedb11n1]# mkdir /shared_acfs
[root@mogubedb11n2]# mkdir /shared_acfs

5.- Creamos le disco

ASMCMD> volcreate -G DATOS -s 200M acfsdgvol1
ASMCMD> volinfo -G DATOS acfsdgvol1
/*
Diskgroup Name: DATOS

         Volume Name: ACFSDGVOL1
         Volume Device: /dev/asm/acfsdgvol1-105
         State: ENABLED
         Size (MB): 224
         Resize Unit (MB): 32
         Redundancy: MIRROR
         Stripe Columns: 4
         Stripe Width (K): 128
         Usage: 
         Mountpath: 
*/

-- En el nodo 2 lo vemos deshabilitado
ASMCMD> volinfo -G DATOS acfsdgvol1
/*
Diskgroup Name: DATOS

         Volume Name: ACFSDGVOL1
         Volume Device: /dev/asm/acfsdgvol1-105
         State: DISABLED	<<<<<<
         Size (MB): 224
         Resize Unit (MB): 32
         Redundancy: MIRROR
         Stripe Columns: 4
         Stripe Width (K): 128
         Usage: 
         Mountpath:
*/
-- Lo habilitamos
ASMCMD> volenable -G DATOS acfsdgvol1		 

6.- Montamos el volumen en su punto de montaje

[root@mogubedb11n1]# acfsutil registry -a -f /dev/asm/acfsdgvol1-105 /shared_acfs
/*
	acfsutil registry: mount point /shared_acfs successfully added to Oracle Registry
*/

[root@mogubedb11n1]# mkfs.acfs -f /dev/asm/acfsdgvol1-105
/*
mkfs.acfs: version                   = 11.2.0.3.0
mkfs.acfs: on-disk version           = 39.0
mkfs.acfs: volume                    = /dev/asm/acfsdgvol1-105
mkfs.acfs: volume size               = 234881024
mkfs.acfs: Format complete.
*/

[root@mogubedb11n1]# mount.acfs -o all
[root@mogubedb11n2]# mount.acfs -o all

[root@mogubedb11n1]# df -h
/*
Filesystem            		Size  Used Avail Use% Mounted on
/dev/asm/acfsdgvol1-105     224M   37M  188M  17% /shared_acfs
*/

ASMCMD> volinfo -G DATOS acfsdgvol1
Diskgroup Name: DATOS

         Volume Name: ACFSDGVOL1
         Volume Device: /dev/asm/acfsdgvol1-105
         State: ENABLED
         Size (MB): 224
         Resize Unit (MB): 32
         Redundancy: MIRROR
         Stripe Columns: 4
         Stripe Width (K): 128
         Usage: ACFS
         Mountpath: /shared_acfs     <<<<< Ya aparece el punto de montaje
		 
7.- Redimensionamos el filesystem

/sbin/acfsutil size +100M /shared_acfs
/*
	acfsutil size: new file system size: 369098752 (352MB)
*/

./srvctl add filesystem -d /dev/asm/acfsdgvol1-105 -v acfsdgvol1 -g DATOS -m /shared_acfs

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: