CONFIGURING MULTIPATH 2nd Part – Configuration

multipath transfer function

Image via Wikipedia

Configurando Multipath 2da Parte

Vamos a configurar nuestro multipath para que comience a trabajar y quede disponible para realizar una lectura de los dispositivos asignados.

Es muy importante entender que es lo que estamos haciendo, asi que les voy a comentar de lo que a mi criterio es necesario a la hora de realizar una configuracion de este tipo.

No se queden con lo que les ofrezco en este articulo, pueden investigar más acerca de este tema, ya que mi objetivo no es entrar en el detalle ni profundidad acerca de mutlipath.
Pueden obtener mucha documentación, ya que en el mundo linuxero hay mucha cortesía, sin ir mas lejos sus colegas administradores de ambientes tipo unix de su área laboral.

Yo lo se por haber sido linux admin y por que tengo dos grandes colegas ! Un abrazo para Diego y Fede !

En el archivo /etc/multipath.conf existe en la configuracion por default unas lineas que provocan que se ignoren todos los dispositivos.

Nuestra primer tarea sera comentarla para que multipath pueda detectar los dispositivos existentes.

##blacklist {
## devnode "*"
##}

Bien , ahora debemos descomentar las siguientes lineas que habilita a que multipath detecte por default todos los dispositivos.

defaults {
udev_dir /dev
polling_interval 10
selector "round-robin 0"
path_grouping_policy multibus
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
prio_callout /bin/true
path_checker readsector0
rr_min_io 100
max_fds 8192
rr_weight priorities
failback immediate
no_path_retry fail
user_friendly_names no

Como última medida debemos conocer las lineas que nos permiten asignar que dispositivos queremos que multipath ignore.
Este es el modelo por default.

#blacklist {
# wwid 26353900f02796769
# devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
# devnode "^hd[a-z]"
#}

Acá tenemos un modelo de LUN asignadas y listas para ser leidas por el operativo.

## Discos de la base DANAPRO        multipath {
                wwid                    360060580000290105599912030333634
                alias                   SAN_DANAPRO_DG1_LV1
        }
        multipath {
                wwid                    360060480000190105392231030343643
                alias                   SAN_DANAPRO_DG2_LV1

Cuando hayamos finalizado nuestra configuración vamos a recargar el modulo del kernel de multipath por unica vez.

# modprobe dm-multipath
# modprobe dm-round-robin
# /etc/init.d/multipathd restart
# multipath

Como servicio debemos aegurarnos que en el inicio del OS por cualquier eventualidad o motivo, se inicie de modo automatico , ya que los discos asignados dependen de este servicio.

# chkconfig --level 35 multipathd on

Una vez realizado todos estos pasos, vamos a vaciar la cache de multipath mediante el comando:

# multipath -F

Reiniciamos el servicio

# /etc/init.d/multipathd restart

Reescaneamos los dispositivos.

# multipath

Y ejecutamos el comando :

# multipath -ll

La salida que obtendremos es muy similiar al formato que les presento en la tabla :

SAN_DANAPRO_DG1_LV1                  | El alias del dispositivo que podemos montar desde /dev/mapper/SAN_DANAPRO_DG1_LV1
(36...................331)           | wwid del dispositivo.
size                                 | Tamaño del disco.
round-robin 0 [enabled]              | Tipo de balanceo
_ 0:0:0:11 sdg 8:96 [active][ready]  | Información del camino y el LUN SCSI
_ 1:0:0:11 sdo 8:224 [active][ready] | Información del camino y el LUN SCSI

Como yo configure dos discos, obtengo una salida similar a esta:

SAN_DANAPRO_DG1_LV1 (360060580000290105599912030333634)
[size=90 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [prio=4][active]
 \_ 3:0:1:117 sdbx 68:176  [active][ready]
 \_ 4:0:0:117 sddx 71:240  [active][ready]
 \_ 4:0:1:117 sdfx 131:48  [active][ready]
 \_ 3:0:0:117 sdx  65:112  [active][ready]SAN_DANAPRO_DG2_LV1 (360060480000190105392231030343643)
[size=180 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [prio=4][active]
 \_ 3:0:1:110 sdbq 68:64   [active][ready]
 \_ 4:0:0:110 sddq 71:128  [active][ready]
 \_ 4:0:1:110 sdfq 130:192 [active][ready]
 \_ 3:0:0:110 sdq  65:0    [active][ready]

Es muy importante tener este conocimiento basico/previo que nos ayuda a conocer como se arma nuestra infraestructura y será factor vital la hora de  resolver problemas complejos de storage y nos quitara más de un dolor de cabeza en forma immediata.

About Juan Andres
Consultant | Oracle DBA & IT Specialist | LinuxUnix Administrator | Father | Musician | Farmer | Environmentalist | Writer | Builder | Buenos Aires · burzaco.wordpress.com

8 Responses to CONFIGURING MULTIPATH 2nd Part – Configuration

  1. Pingback: Configuring Oracle Disks with Multipath – 1st Part Instalation « Oracle Blog – Tecnología Informática Buenos Aires

  2. Pedro says:

    yo hice hasta el punto donde te quedaste pero ahora que necesito hacer en ASM oracle para verlo sin usar oracleasm.

    de hecho ya lo veo en el asm pero en total_mb en 0

    HEADER_STATU TOTAL_MB PATH NAME
    ———— ———- ————————- ——————————
    CANDIDATE 0 /dev/mapper/mpath2p1
    CANDIDATE 0 /dev/mapper/mpath2
    CANDIDATE 0 /dev/mapper/mpath1
    MEMBER 147542 /dev/mapper/mpath0p3 SRGROUP_0000

    Espero que me puedas ayudar saludos.

  3. Pedro says:

    Gracias por la respuesta.
    puedes checar este link porfavor..

    http://comunidadoraclehispana.ning.com/forum/topics/agragar-disco-multipath-al-asm-oracle-11g

    en otros foros encontre que no es necesario el oracleasm, esta BD ya estaba cuando llegue.. revise y no encontre el software.

    le pasare el dd y te escribire ..

    solo un comentario es necesario el oracleasm para agregar los discos es como dicen que con solo presentarlos y

    chown oracle:oinstall ya los agregaria al ASM

    de antemano gracias

    • Pedro says:

      me puedes pasar las lineas del dd que mencionas por favor… gracias y saludos

      • Juan Andres says:

        Pedro:

        Analice tu problema y Hay varias cosas :

        Lo que ocurre que tu disco en CANDIDATE ya esta listo para ser asignado como MEMBER de un DISKGROUP.
        Cuando tu disco se convierta en MEMBER (miembro) ahi aparece el valor.
        Cuando aparezca ese valor, lo podes unir a tu diskgroup.

        Te recomiendo tambien que uses alias en el multipath para asociar los disco externos a discos candidatos o miembros en el futuro y esto te ayudara a ser mas prolijo.

        Por ejemplo:

        DISKGROUP +SAR_APP
        MEMBER SAR_APP_01
        Multipath SAR_APP_LV1

        Prueba con ello.

        SQL> select HEADER_STATUS,TOTAL_MB,PATH,NAME from v$asm_disk

        HEADER_STATU TOTAL_MB PATH NAME
        ———— ———- ———————————————————— ——————————
        CANDIDATE 0 /dev/oracleasm/disks/SAN_DATA05
        MEMBER 184323 /dev/oracleasm/disks/SAN_DATA04 DATA_0003
        MEMBER 184323 /dev/oracleasm/disks/SAN_DATA03 DATA_0002
        MEMBER 184323 /dev/oracleasm/disks/SAN_DATA02 DATA_0001
        MEMBER 184323 /dev/oracleasm/disks/SAN_DATA01 DATA_0000

        5 rows selected.

        SQL>

        Despues de utilizar la herramienta asmca.

        SQL> select HEADER_STATUS,TOTAL_MB,PATH,NAME from v$asm_disk

        HEADER_STATU TOTAL_MB PATH NAME
        ———— ———- ———————————————————— ——————————
        MEMBER 184323 /dev/oracleasm/disks/SAN_DATA05 DATA_0004
        MEMBER 184323 /dev/oracleasm/disks/SAN_DATA04 DATA_0003
        MEMBER 184323 /dev/oracleasm/disks/SAN_DATA03 DATA_0002
        MEMBER 184323 /dev/oracleasm/disks/SAN_DATA02 DATA_0001
        MEMBER 184323 /dev/oracleasm/disks/SAN_DATA01 DATA_0000

        5 rows selected.

        SQL>

      • Pedro says:

        Este es oracle 11g, yo recuerdo que en la 10g

        te aparecia el espacio y solo le asignabas el disco al diskgroup que deseabas

        ejemplo:

        a) HEADER_STATU TOTAL_MB PATH NAME
        CANDIDATE 16286 /dev/mapper/mpath2p1
        MEMBER 16286 /dev/mapper/mpath0p3 SRGROUP_0000

        b) alter diskgroup SRGROUP add disk ‘/dev/mapper/mpath2p1’;

        c) asi quedaba el disco
        HEADER_STATU TOTAL_MB PATH NAME
        MEMBER 16286 /dev/mapper/mpath2p1 SRGROUP_0001
        MEMBER 16286 /dev/mapper/mpath0p3 SRGROUP_0000

        Entoces mi duda es esa como antes podia ver el espacio y en CANDIDATE antes de agregarlo pense que era un error,

        entonces ahora se tiene que poner MEMBER y despues dar el
        alter diskgroup SRGROUP add disk ‘DISCO’ ???

        Saludos. Juan

  4. Pedro Tablas says:

    Mi estimado Juan:

    despues de todo, le movi muchas cosa pero alfinal quedo esto como lo muestro, y tienes razon el espacio se ve despues de que lo agregas al diskgroup, pero como te comentaba en la 10G te lo mostraba aun que estuviera en CANDIDATE.

    Lo raro esque ya lo habia hecho y me marco unos errores en el alert lo cuales anexo en la parte inferior.

    una de las cosas fue un /etc/init.d/multipathd restart

    Así quedaron los permisos en los 2 nodos

    [root@gevbdsr1 mapper]# ls -la /dev/mapper/*
    crw——- 1 root root 10, 63 Jan 13 20:22 /dev/mapper/control
    brw-rw—- 1 oracle oinstall 253, 2 Jan 13 20:23 /dev/mapper/mpath0
    brw-rw—- 1 oracle oinstall 253, 8 Jan 13 20:23 /dev/mapper/mpath0p1 voting disk
    brw-rw—- 1 oracle oinstall 253, 9 Jan 20 18:33 /dev/mapper/mpath0p2 ocr
    brw-rw—- 1 oracle oinstall 253, 10 Jan 20 18:33 /dev/mapper/mpath0p3 Esta en ASM
    brw-rw—- 1 oracle oinstall 253, 3 Jan 16 20:53 /dev/mapper/mpath1
    brw-rw—- 1 oracle oinstall 253, 5 Jan 16 20:53 /dev/mapper/mpath1p5
    brw-rw—- 1 oracle oinstall 253, 6 Jan 16 20:53 /dev/mapper/mpath1p6
    brw-rw—- 1 oracle oinstall 253, 7 Jan 16 20:53 /dev/mapper/mpath1p7
    brw-rw—- 1 oracle oinstall 253, 4 Jan 16 20:53 /dev/mapper/mpath2 Este era el disco que deseba pegar al ASM
    brw-rw—- 1 oracle oinstall 253, 11 Jan 20 18:33 /dev/mapper/mpath2p1 Esta la particion que se hizo con el FDISK
    brw-rw—- 1 root disk 253, 0 Jan 13 20:23 /dev/mapper/VolGroup00-LogVol00
    brw-rw—- 1 root disk 253, 1 Jan 13 20:22 /dev/mapper/VolGroup00-LogVol01
    [root@gevbdsr1 mapper]#

    [oracle@gevbdsr1 scrips]$ vi chk_asm.sql
    set linesize 1000
    SELECT group_number, operation, state, power, est_minutes FROM v$asm_operation;
    col disk_group_name format a20
    col disk_file_path format a25
    col disk_file_name format a15
    col disk_file_fail_group format a25
    SELECT NVL(a.name, ‘[CANDIDATE]’) disk_group_name
    , b.path disk_file_path
    , b.name disk_file_name
    , b.failgroup disk_file_fail_group
    , b.total_mb
    FROM v$asm_diskgroup a RIGHT OUTER JOIN v$asm_disk b USING (group_number)
    ORDER BY a.name;
    ~
    ~
    “chk_asm.sql” 13L, 565C written

    [oracle@gevbdsr1 scrips]$ sqlplus / as sysasm

    SQL*Plus: Release 11.1.0.6.0 – Production on Fri Jan 20 17:55:22 2012

    Copyright (c) 1982, 2007, Oracle. All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – 64bit Production
    With the Partitioning, Real Application Clusters, OLAP, Data Mining
    and Real Application Testing options

    SQL> @chk_asm

    no rows selected
    DISK_GROUP_NAME DISK_FILE_PATH DISK_FILE_NAME DISK_FILE_FAIL_GROUP TOTAL_MB
    ——————– ————————- ————— ————————- ———-
    SRGROUP /dev/mapper/mpath0p3 SRGROUP_0000 SRGROUP_0000 147542
    [CANDIDATE] /dev/mapper/mpath0p1 0
    [CANDIDATE] /dev/mapper/mpath2p1 0
    [CANDIDATE] /dev/mapper/mpath1p7 0
    [CANDIDATE] /dev/mapper/mpath1p5 0
    [CANDIDATE] /dev/mapper/mpath2 0
    [CANDIDATE] /dev/mapper/mpath0 0
    [CANDIDATE] /dev/mapper/mpath1 0
    [CANDIDATE] /dev/mapper/mpath0p2 0
    [CANDIDATE] /dev/mapper/mpath1p6 0

    10 rows selected.

    SQL> alter diskgroup +SRGROUP add disk ‘/dev/mapper/mpath2p1’ rebalance power 11;

    SQL> @chk_asm

    no rows selected
    DISK_GROUP_NAME DISK_FILE_PATH DISK_FILE_NAME DISK_FILE_FAIL_GROUP TOTAL_MB
    ——————– ————————- ————— ————————- ———-
    SRGROUP /dev/mapper/mpath0p3 SRGROUP_0000 SRGROUP_0000 147542
    [CANDIDATE] /dev/mapper/mpath0p1 0
    [CANDIDATE] /dev/mapper/mpath2p1 0
    [CANDIDATE] /dev/mapper/mpath1p7 0
    [CANDIDATE] /dev/mapper/mpath1p5 0
    [CANDIDATE] /dev/mapper/mpath2 0
    [CANDIDATE] /dev/mapper/mpath0 0
    [CANDIDATE] /dev/mapper/mpath1 0
    [CANDIDATE] /dev/mapper/mpath0p2 0
    [CANDIDATE] /dev/mapper/mpath1p6 0

    10 rows selected.

    SQL> alter diskgroup SRGROUP add disk ‘/dev/mapper/mpath2p1’ rebalance power 11;

    Diskgroup altered.

    SQL> @chk_asm

    GROUP_NUMBER OPERA STAT POWER EST_MINUTES
    ———— —– —- ———- ———–
    1 REBAL RUN 11 23
    DISK_GROUP_NAME DISK_FILE_PATH DISK_FILE_NAME DISK_FILE_FAIL_GROUP TOTAL_MB
    ——————– ————————- ————— ————————- ———-
    SRGROUP /dev/mapper/mpath0p3 SRGROUP_0000 SRGROUP_0000 147542
    SRGROUP /dev/mapper/mpath2p1 SRGROUP_0001 SRGROUP_0001 307199
    [CANDIDATE] /dev/mapper/mpath1p7 0
    [CANDIDATE] /dev/mapper/mpath1p6 0
    [CANDIDATE] /dev/mapper/mpath0 0
    [CANDIDATE] /dev/mapper/mpath1 0
    [CANDIDATE] /dev/mapper/mpath2 0
    [CANDIDATE] /dev/mapper/mpath0p1 0
    [CANDIDATE] /dev/mapper/mpath0p2 0
    [CANDIDATE] /dev/mapper/mpath1p5 0

    10 rows selected.

    ************************************************************************************************************************

    ESTOS FUERON LOS ERRORES DEL ALERT, Seria cuestion de permisos??

    SQL> ALTER DISKGROUP SRGROUP ADD DISK ‘/dev/mapper/mpath2p1’ NAME SRGROUP_0001 SIZE 307196 M
    NOTE: Assigning number (1,1) to disk (/dev/mapper/mpath2p1)
    NOTE: requesting all-instance membership refresh for group=1
    NOTE: initializing header on grp 1 disk SRGROUP_0001
    NOTE: cache opening disk 1 of grp 1: SRGROUP_0001 path:/dev/mapper/mpath2p1
    NOTE: requesting all-instance disk validation for group=1
    Thu Jan 12 18:17:19 2012
    NOTE: disk validation pending for group 1/0x9a9388fd (SRGROUP)
    SUCCESS: validated disks for 1/0x9a9388fd (SRGROUP)
    NOTE: membership refresh pending for group 1/0x9a9388fd (SRGROUP)
    kfdp_query(): 9
    Thu Jan 12 18:17:25 2012
    kfdp_queryBg(): 9
    kfdp_query(): 10
    kfdp_queryBg(): 10
    NOTE: cache closing disk 1 of grp 1: SRGROUP_0001 path:/dev/mapper/mpath2p1
    NOTE: cache closing disk 1 of grp 1: SRGROUP_0001 path:/dev/mapper/mpath2p1
    NOTE: De-assigning number (1,1) from disk (/dev/mapper/mpath2p1)
    kfdp_query(): 11
    kfdp_queryBg(): 11
    SUCCESS: refreshed membership for 1/0x9a9388fd (SRGROUP)
    Thu Jan 12 18:17:28 2012
    ORA-15032: not all alterations performed
    ORA-15075: disk(s) are not visible cluster-wide
    ERROR: ALTER DISKGROUP SRGROUP ADD DISK ‘/dev/mapper/mpath2p1’ NAME SRGROUP_0001 SIZE 307196 M
    Thu Jan 12 18:25:20 2012
    SQL> ALTER DISKGROUP SRGROUP ADD DISK ‘/dev/mapper/mpath2p1’ NAME SRGROUP_0001 SIZE 307196 M
    NOTE: Assigning number (1,2) to disk (/dev/mapper/mpath2p1)
    NOTE: requesting all-instance membership refresh for group=1
    NOTE: De-assigning number (1,2) from disk (/dev/mapper/mpath2p1)
    Thu Jan 12 18:25:23 2012
    NOTE: membership refresh pending for group 1/0x9a9388fd (SRGROUP)
    kfdp_query(): 12
    Thu Jan 12 18:25:24 2012
    kfdp_queryBg(): 12
    kfdp_query(): 13
    kfdp_queryBg(): 13
    SUCCESS: refreshed membership for 1/0x9a9388fd (SRGROUP)
    ORA-15032: not all alterations performed
    ORA-15033: disk ‘/dev/mapper/mpath2p1’ belongs to diskgroup “SRGROUP”
    ERROR: ALTER DISKGROUP SRGROUP ADD DISK ‘/dev/mapper/mpath2p1’ NAME SRGROUP_0001 SIZE 307196 M
    Thu Jan 12 18:25:55 2012

    Gracias juan

%d bloggers like this: