LINUX

Cómo escanear / detectar nuevos LUN en Linux

escanear nuevos luns en linux

Cuando está ejecutando el sistema RedHat Enterprise Linux de las series 5, 6 y 7 con DM-Multipath y el iniciador iSCSI de software, puede descubrir nuevos LUN al volver a escanear el servicio iSCSI en el host.

Al volver a escanear el servicio, se mostrarán todos los LUN recién creados que se han asignado al host. En este tutorial, mostraré comandos para escanear y detectar (salidas para verificar) nuevos luns adjuntos al servidor Centos / RHEL.

Para escanear nuevos discos FC LUNS y SCSI en Linux, puede usar el comando echo script para un escaneo manual que no requiere reiniciar el sistema. Pero, desde Redhat Linux 5.4 en adelante, Redhat introdujo /usr/bin/rescan-scsi-bus.sh script para escanear todos los LUN y actualizar la capa SCSI para reflejar los nuevos dispositivos.

Verifique la cantidad de discos adjuntos

Utilice los siguientes comandos para identificar los LUN existentes y cómo agregar LUN recién asignados a Linux.

# cat /proc/scsi/scsi | egrep -i 'Host:' | wc -l
7

Puede usar el siguiente comando para tener una mejor salida de todos los discos

# fdisk -l 2>/dev/null | egrep '^Disk' | egrep -v 'dm-|type|identifier'
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/mapper/centos-root: 18.8 GB, 18756927488 bytes, 36634624 sectors
Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sde: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdf: 7516 MB, 7516192768 bytes, 14680064 sectors

o

# fdisk -l | grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 41943039 20458496 8e Linux LVM
Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectors
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdd: 14.0 GB, 13958643712 bytes, 27262976 sectors

1) Usando el archivo de clase / sys

Puede usar el comando echo para escanear cada dispositivo host scsi como se muestra a continuación. Ahora para volver a escanear el bus, use el siguiente comando

# echo "- - -" >  /sys/class/scsi_host/host0/scan

Los tres guiones («- – -«) del comando actúan como comodines, lo que significa que se vuelve a escanear todo. Recuerde que los tres valores normalmente representan canal, ID de destino SCSI y LUN.

# echo "c t l" >  /sys/class/scsi_host/hosth/scan

dónde

  • h es el número de HBA
  • c es el canal en el HBA
  • t es el ID de destino SCSI
  • l es el LUN.

Si no tiene el número de bus de host, debe enumerar todo el número de bus de host existente en su sistema con el comando

# ls /sys/class/scsi_host
host0 host1 host2

Luego, escaneará todos los discos iscsi encontrados y escaneará después de cada escaneo si se detectó el nuevo disco. Significa

# echo "- - -" > /sys/class/scsi_host/host0/scan
# echo "- - -" > /sys/class/scsi_host/host1/scan
# echo "- - -" > /sys/class/scsi_host/host2/scan

o

# for host in `ls /sys/class/scsi_host/`;do
echo "- - -" >/sys/class/scsi_host/${host}/scan;
done

Puede parecer muy simple mientras realizamos esta operación, pero el sistema tiene mucho trabajo que hacer en segundo plano cuando ejecuta los comandos de escaneo de almacenamiento.

Método para encontrar rutas de canales

Si conocemos el canal, el ID de destino y la dirección de LUN, podemos escanear usando eso. Aquí tenemos 4 tarjetas emulex HBA 0, 1, 2 y 3.

server1:/proc/scsi/lpfc# ls
0  1  2  3

A través de la tarjeta 0 y 2,

server1:/proc/scsi/lpfc# cat 0
lpfc0t00 DID d200ef WWPN 50:06:01:68:39:a0:43:65 WWNN 50:06:01:60:b9:a0:43:65
lpfc0t01 DID d201ef WWPN 50:06:01:61:39:a0:43:65 WWNN 50:06:01:60:b9:a0:43:65
server1:#/proc/scsi/lpfc# cat 1
server1:/proc/scsi/lpfc# cat 2
lpfc2t01 DID ed0cef WWPN 50:06:01:69:39:a0:43:65 WWNN 50:06:01:60:b9:a0:43:65
lpfc2t00 DID ed0def WWPN 50:06:01:60:39:a0:43:65 WWNN 50:06:01:60:b9:a0:43:65
server1:/proc/scsi/lpfc# cat 3

Tiene el mismo WWNN (nombre de nodo mundial) para los 4 WWPN (nombre de puerto mundial).

server1:/proc/scsi/lpfc# cat /sys/class/fc_transport/*/node_name
0x50060160b9a04365
0x50060160b9a04365
0x50060160b9a04365
0x50060160b9a04365

Podemos hacer una investigación en profundidad filtrando el WWPN (World Wide Port Name) para tener más información.

server1:/proc/scsi/lpfc# grep 50060160b9a04365 /sys/class/fc_transport/*/node_name
/sys/class/fc_transport/target0:0:0/node_name:0x50060160b9a04365
/sys/class/fc_transport/target0:0:1/node_name:0x50060160b9a04365
/sys/class/fc_transport/target2:0:0/node_name:0x50060160b9a04365
/sys/class/fc_transport/target2:0:1/node_name:0x50060160b9a04365

Esto indica que hay cuatro rutas de canal de fibra a este objetivo.

Line 1 : Thru host 0 channel 0 target 0
Line 2 : Thru host 0 channel 0 target 1
Line 3 : Thru host 2 channel 0 target 0
Line 4 : thru host 2 channel 0 targer 1

Por lo tanto, ahora puede buscar LUN de la siguiente manera y el equipo de almacenamiento proporciona las direcciones «8».

echo "0 0 8" > /sys/class/scsi_host/host0/scan
echo "0 1 8" > /sys/class/scsi_host/host0/scan
echo "0 0 8" > /sys/class/scsi_host/host2/scan
echo "0 1 8" > /sys/class/scsi_host/host2/scan

La salida del archivo SCSI se ilustra para su referencia:

Host: scsi0 Channel: 00 Id: 00 Lun: 08
Vendor: DGC      Model: RAID 5           Rev: 0326
Type:   Direct-Access                    ANSI SCSI revision: 04
Host: scsi0 Channel: 00 Id: 01 Lun: 08
Vendor: DGC      Model: RAID 5           Rev: 0326
Type:   Direct-Access                    ANSI SCSI revision: 04
Host: scsi2 Channel: 00 Id: 00 Lun: 08
Vendor: DGC      Model: RAID 5           Rev: 0326
Type:   Direct-Access                    ANSI SCSI revision: 04
Host: scsi2 Channel: 00 Id: 01 Lun: 08
Vendor: DGC      Model: RAID 5           Rev: 0326
Type:   Direct-Access                    ANSI SCSI revision: 04

Otro método

Si no tiene el número de bus de host, debe enumerar todo el número de bus de host existente en su sistema con el comando

# ls /sys/class/scsi_host
host0 host1 host2

o tratar

# grep mpt /sys/class/scsi_host/host?/proc_name
/sys/class/scsi_host/host0/proc_name:mptspi

En la salida, host0 es el campo relevante. Como dijimos anteriormente, necesitamos tener el número de bus de host para determinar qué escanear

Luego, escaneará todos los discos iscsi encontrados y escaneará después de cada escaneo si se detectó el nuevo disco. Significa

# echo "- - -" > /sys/class/scsi_host/host0/scan
# echo "- - -" > /sys/class/scsi_host/host1/scan
# echo "- - -" > /sys/class/scsi_host/host2/scan

Si tiene demasiados hosts (de host0 a host20 por ejemplo), puede usar el siguiente comando

# for host in `ls /sys/class/scsi_host/`;do
echo "- - -" >/sys/class/scsi_host/${host}/scan;
done

o puedes probar (este para Fibre Channel)

# para el host en `ls / sys / class / fc_host /`; hacer
echo «1»> / sys / class / fc_host / $ {host} / issue_lip;
hecho

¿Se pueden volver a escanear los dispositivos en el sistema operativo Linux sin volver a cargar el controlador de Linux?

Existe un procedimiento que obliga al conductor a volver a escanear los objetivos y permitir que se agregue un nuevo dispositivo. Esto hace que el controlador inicie un proceso de descubrimiento de LUN.

Para forzar una nueva exploración desde la línea de comando, escriba el siguiente comando:

# echo «scsi-qlascan»> / proc / scsi //

dónde,

– = qla2100, qla2200, qla2300 (controladores de núcleo 2.4) o qla2xxx (controladores de núcleo 2.6)
– = el número de instancia del HBA

Después de ejecutar este comando, fuerce a la capa intermedia SCSI a realizar su propio escaneo y cree la entrada de la tabla de dispositivos para el nuevo dispositivo escribiendo el siguiente comando:

# echo «scsi add-single-device 0 1 2 3″> / proc / scsi / scsi

dónde,

– «0 1 2 3» = su «LUN de ID de canal de host»

El escaneo debe realizarse en el orden mencionado anteriormente; primero el controlador (controlador qla2300 / qla2200, etc.) y luego la capa intermedia SCSI de Linux (es decir, escaneo del sistema operativo).

2) Escanear lun con multipath / powermt

Puede verificar la configuración actual de múltiples rutas mediante el comando multipath o powermt.

# multipath -l
mpath2 (36006016015501c0018c07c18e0d8dc11)
[size=68 GB][features="1 queue_if_no_path"][hwhandler="1 emc"]
_ round-robin 0 [active]
_ 0:0:0:2 sdc 8:32  [active]
_ round-robin 0 [enabled]
_ 1:0:0:2 sdi 8:128 [active]

mpath1 (36006016015501c0084227c0ee0d8dc11)
[size=68 GB][features="1 queue_if_no_path"][hwhandler="1 emc"]
_ round-robin 0 [active]
_ 1:0:0:1 sdh 8:112 [active]
_ round-robin 0 [enabled]
_ 0:0:0:1 sdb 8:16  [active]

....................
....................

mpath3 (36006016015501c0019c07c18e0d8dc11)
[size=68 GB][features="1 queue_if_no_path"][hwhandler="1 emc"]
_ round-robin 0 [active]
_ 1:0:0:3 sdj 8:144 [active]
_ round-robin 0 [enabled]
_ 0:0:0:3 sdd 8:48  [active]

Si EMC powerpath está instalado, verifique el estado del disco / multirrutas como se muestra a continuación:

# powermt display dev=all | more
Pseudo name=emcpowerb
CLARiiON ID=APM00080503154 [cl10083]
Logical device ID=6006016023041F003AB6ED708885DD11 [LUN 3]
state=alive; policy=CLAROpt; priority=0; queued-IOs=0
Owner: default=SP A, current=SP A       Array failover mode: 1
==============================================================================
---------------- Host ---------------   - Stor -   -- I/O Path -  -- Stats ---
###  HW Path                I/O Paths    Interf.   Mode    State  Q-IOs Errors
==============================================================================
3 qla2xxx                   sde       SP A2     active  alive      0      1
3 qla2xxx                   sdh       SP B3     active  alive      0      0
6 qla2xxx                   sdk       SP A3     active  alive      0      1
6 qla2xxx                   sdn       SP B2     active  alive      0      0
..............................
..............................
==============================================================================
---------------- Host ---------------   - Stor -   -- I/O Path -  -- Stats ---
###  HW Path                I/O Paths    Interf.   Mode    State  Q-IOs Errors
==============================================================================
3 qla2xxx                   sdd       SP A2     active  alive      0      1
3 qla2xxx                   sdg       SP B3     active  alive      0      0
6 qla2xxx                   sdj       SP A3     active  alive      0      1
6 qla2xxx                   sdm       SP B2     active  alive      0      0

El demonio de múltiples rutas agregará automáticamente los dispositivos conectados si está configurado correctamente. Para powermt, necesitamos ejecutar el siguiente comando manualmente.

# powermt config

3) Usando Script

Puede volver a escanear utilizando SCSI volver a escanear script que detectará nuevos luns y lo agregará a su servidor automáticamente. Puede encontrar este script en el paquete sg3_utils.

# /us/bin/rescan-scsi-bus.sh -a
Scanning SCSI subsystem for new devices
Scanning host 0 for SCSI target IDs 0 1 2 3 4 5 6 7, all LUNs
..................
..................
1 new or changed device(s) found. 
 [0:0:5:0]
0 remapped or resized device(s) found. 
0 device(s) removed.

Conclusión

Para almacenamiento (Netapp, equallogic) que usan iscsi target, comando iscsiadm -m session --rescan podría usarse para volver a escanear cuando se agregue un nuevo lun al objetivo. Recomendaría siempre usar secuencias de comandos o herramientas específicas del proveedor para escanear Luns.

Espero que haya disfrutado de la lectura y háganos saber si encontró algún otro método para escanear dispositivos de disco de almacenamiento.

Leer también:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar