Oracle Live

03/07/2016

ASM – Almacenamiento compartido con ACFS

Filed under: ASM — mogukiller @ 12:23 am

Os dejo un paso a paso de como montar un filesystem compartido con ACFS. Util cuando desde sistemas no os hacen mucho caso cuando solicitais disco.

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: