Oracle Live

03/07/2016

ASM – Configurar diskgroup 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.

/*
	En este procedimiento se describe un paso previo para la instalacion de ASM en un servidor Standalone sin utilizar ASMLIB.
*/

/*
	UDEV: 
		Es el gestor de dispositivos que usa el kernel Linux en su versión 2.6
		Udev se ejecuta mediante un demonio: el proceso udevd, que detecta cuándo se ha conectado o desconectado un dispositivo del sistema.
		UDEV eliminates the device persistence problem, provides ability to create user defined aliases, and setup device permissions.
		
*/
-- PASOS previos

	-- 1.- Creamos el usuario grid
		useradd -u 1102 -g oinstall -G dba grid
		
-- PASOS

	-- 1.- Modify /etc/scsi_id.config and add the following line at the end. Essentially, UDEV will assume that all SCSI devices will provide unique UUIDs.

	options=-g

	-- 2.- Identify the unique SCSI id from scsi_id command. Command scsi_id will return unique value for a given SCSCI device.
	
	/sbin/scsi_id -gus /block/sdb
	/*SATA_VBOX_HARDDISK_VBff60f9e1-63a00184_*/
	
	/*Para obtener el tamaño en bytes*/
	/sbin/blockdev --getsize64 /dev/sdb
	/*2147483648*/
	
	-- 3.- Configuramos las reglas
	
	vi /etc/udev/rules.d/99-asmdevices.rules
	
	KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="SATA_VBOX_HARDDISK_VBff60f9e1-63a00184_", NAME="asmdisk01", OWNER="grid", GROUP="oinstall", MODE="0660"
	
	/* SCRIPT Te lo hace directamente para todos los discos
	#! /bin/bash

		i=1
		for linea in $(ls -1 sd[b-z])
		do
		 id=`/sbin/scsi_id -gus /block/${linea}`
		 echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id -g -u -s %p\", RESULT==\"${id}\", NAME=\"asmdisk0${i}\", OWNER=\"grid\", GROUP=\"oinstall\", MODE=\"0660\"" >>/etc/udev/rules.d/99-asmdevices.rules
		 (( i++ )) 
		done
	
	*/
	
	/*NOTA: Una norma se puede asememar a una operacion IF ELSE: 
		In the rule, we specify is satisfied for an event, actions will be taken to setup the device. 
		If the event is a scsi device (KERNEL, BUS attributes), then call the /sbin/scsi_id -g -u -s program, passing the block device as first argument (PROGRAM attribute and %p in the rule definitin).
		If the RESULT of the program call matches with a value of 3600143801259abde00006000004c0000 (RESULT attribute in the rule), then create a device entry as "asmcrs01", with owner as grid, group owner as oinstall, and permissions as 0660.
	*/
	
	/* Testeamos la regla */
	udevtest /block/sdd
	
	/* This would show that udev might create three symlinks, a symlink named/dev/asmcrs01, one symlink in /dev/disk/by-id/, and third symlink in /dev/disk/by-path/. We will use /dev/asmcrs01 symlink for ASM setup. 
	SALIDA:
		main: looking at device '/block/sdb' from subsystem 'block'
		udev_rules_get_name: rule applied, 'sdb' becomes 'asmdisk01'
		udev_device_event: device '/block/sdb' already in database, validate currently present symlinks
		udev_node_add: creating device node '/dev/asmdisk01', major = '8', minor = '16', mode = '0660', uid = '1102', gid = '1000'
		udev_node_add: creating symlink '/dev/disk/by-id/scsi-SATA_VBOX_HARDDISK_VBff60f9e1-63a00184' to '../../asmdisk01'
		udev_node_add: creating symlink '/dev/disk/by-path/pci-0000:00:0d.0-scsi-1:0:0:0' to '../../asmdisk01'
	*/
	
	-- 4.- Recargamos reglas y lanzamos udev
	
	/sbin/udevcontrol reload_rules
	/sbin/start_udev
	/*Starting udev: [  OK  ]*/
	/*Este comando ya crea el link
		brw-rw---- 1 grid    oinstall   8,  16 May 22 11:05 asmdisk01*/
		
	--5.- setup asm_diskstring parameter to '/dev/asmcrs*’ so that ASM will identify these devices. Repeat the above steps for all devices that you are planning to add to ASM
	
	export asm_diskstring='/dev/asmdisk*'
Anuncios

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 )

Google+ photo

Estás comentando usando tu cuenta de Google+. 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 )

w

Conectando a %s

Crea un sitio web o blog en WordPress.com

A %d blogueros les gusta esto: