Modificación del path de un disco con reglas de udev

Como administrador de Linux RedHat, suelo recibir peticiones de los administradores de Oracle para configurar discos con un path y una nomenclatura concreta para su uso en Oracle RAC.

Como sabemos, la ruta por defecto de los discos configurados en multipath es /dev/mapper/Nombre_del_disco:

[root]# ll /dev/mapper |head
total 0
lrwxrwxrwx 1 root root 8 Feb 17 01:32 backup -> ../dm-12
crw-rw---- 1 root root 10, 58 Feb 8 11:14 control
lrwxrwxrwx 1 root root 7 Feb 24 01:30 DG_DWHE_DADES_01 -> ../dm-9
lrwxrwxrwx 1 root root 35 Feb 24 07:57 DG_DWHE_DADES_01p1 -> ../oracleasm/disks/DG_DWHE_DADES_01
lrwxrwxrwx 1 root root 7 Feb 24 01:30 DG_DWHE_DADES_02 -> ../dm-7
lrwxrwxrwx 1 root root 35 Feb 24 07:57 DG_DWHE_DADES_02p1 -> ../oracleasm/disks/DG_DWHE_DADES_02
lrwxrwxrwx 1 root root 7 Feb 24 01:30 DG_DWHE_DADES_03 -> ../dm-8
lrwxrwxrwx 1 root root 35 Feb 24 07:57 DG_DWHE_DADES_03p1 -> ../oracleasm/disks/DG_DWHE_DADES_03
lrwxrwxrwx 1 root root 7 Feb 24 01:30 DG_DWHE_DADES_04 -> ../dm-5
[root]#

Pero el equipo de Oracle RAC siempre nos pide que el acceso a los discos esté en /dev/oracleasm/disks:

[[email protected] disks]# pwd
/dev/oracleasm/disks
[[email protected] disks]# ll |head
total 0
brw-rw---- 1 oracle root 253, 33 Feb 24 08:18 DG_DWHE_DADES_01
brw-rw---- 1 oracle root 253, 32 Feb 24 08:16 DG_DWHE_DADES_02
brw-rw---- 1 oracle root 253, 34 Feb 24 08:15 DG_DWHE_DADES_03
brw-rw---- 1 oracle root 253, 29 Feb 24 08:18 DG_DWHE_DADES_04
brw-rw---- 1 oracle root 253, 40 Feb 24 08:18 DG_DWHE_FRA_01
brw-rw---- 1 oracle root 253, 38 Feb 24 08:16 DG_DWHE_FRA_02
brw-rw---- 1 oracle root 253, 39 Feb 24 08:16 DG_DWHE_FRA_03
brw-rw---- 1 oracle root 253, 31 Feb 24 08:18 DG_E13BDE_DADES_01
brw-rw---- 1 oracle root 253, 30 Feb 24 08:15 DG_E13BDE_DADES_02
[[email protected] disks]#

Para hacer esto, utilizo un script que, básicamente, crea una partición al disco y un enlace simbólico al nuevo nombre. Mejor os dejo el código fuente:

[root]# cat asm.sh
DISK=DG_EXPORT_03
#Particionamos el disco: 
(echo o; echo n; echo p; echo 1; echo ; echo; echo w) | fdisk /dev/mapper/$DISK
kpartx -a -v /dev/mapper/$DISK

#Lanzamos lo siguiente 
FILTER=DSK
OWNER=oracle
GROUP=asmadmin
DEST="oracleasm/disks"
multipath -ll | grep ${FILTER} | sort > /tmp/udev_asm.txt
cat /tmp/udev_asm.txt | while read disco 
do 
DISCO=`echo $disco | awk {'print $1'}`
DM=`ls -ln /dev/mapper/${DISCO}p1 | awk {'print "/dev/mapper/"$1'"p1"} | awk -F "/" '{ print $5 }'` 
WWID=$(echo $disco | awk -F "(" ' { print $2 } '| awk -F ")" ' { print $1 } ')
echo "KERNEL==\"dm-*\", ENV{DM_UUID}==\"part1-mpath-${WWID}\", NAME+=\"${DEST}/${DISCO}\", OWNER=\"${OWNER}\", GROUP=\"${GROUP}\", MODE=\"0660\""
done
[root]#

Seguidamente, editamos el fichero de reglas de udev para acceder al nuevo disco. Ejemplo:

RedHat 7:

[root]# head -1 /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="dm-*", ENV{DM_UUID}=="part1-mpath-360002ac000000000000000cf0000fa54", NAME+="oracleasm/disks/DG_OCRVOTE_01", OWNER="oracle", GROUP="asmadmin", MODE="0660"
[root]#

RedHat 8:

Cambia la directiva «NAME» por «SYMLINK».

[root]# head -1 /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="dm-*", ENV{DM_UUID}=="part1-mpath-360002ac000000000000000cf0000fa54", SYMLINK+="oracleasm/disks/DG_OCRVOTE_01", OWNER="oracle", GROUP="asmadmin", MODE="0660"
[root]#

Y las aplicamos con los siguientes comandos:

udevadm control --reload-rules
multipath -F
multipath

Te puede interesar

Eliminación de discos de Oracle RAC

Renombrar tarjetas de red con reglas de udev

Compárteme

Contenido Relacionado

Deja un comentario