Siempre que he trabajado con software de multipathing he tenido el mismo primer problema identificar los dispositivos físicos asociados con los dispositivos virtuales. Este primer problema se resuelve de distintas formas dependiendo del software que se emplee, solo vamos a a hablar de MPxIO (Multiplexed I/O), el cual viene integrado en Solaris desde Solaris 8 y permite crear una interfaz virtual para acceder por varios caminos a un mismo dispositivo.
Para nuestro ejemplo vamos a suponer que hemos creado un LUN en nuestra SAN y dicho LUN lo hemos mapeado con el ID 17 en la máquina que queremos que tenga acceso. Si tenemos activado el mpxio y después de ejecutar el comando devfsadm.
root@machine # devfsadm -C root@machine #
Vemos la salida del comando format.
root@machine # format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c10t60A980004335437052344C6B394A6751d0/scsi_vhci/ssd@g60a980004335437052344c6b394a6751 1. c10t60A980004335437052344C6B39486C54d0 /scsi_vhci/ssd@g60a980004335437052344c6b39486c54 2. c10t60A980004335437052344C6B3947636Fd0 /scsi_vhci/ssd@g60a980004335437052344c6b3947636f 3. c10t60A980004335437052344C6B3948524Cd0 /scsi_vhci/ssd@g60a980004335437052344c6b3948524c 4. c10t60A980004335437052344C6869506B31d0 /scsi_vhci/ssd@g60a980004335437052344c6869506b31 5. c10t60A980004335437052344C6869524D49d0 /scsi_vhci/ssd@g60a980004335437052344c6869524d49 6. c10t60A980004335437052344C6869536F43d0 /scsi_vhci/ssd@g60a980004335437052344c6869536f43 ... Specify disk (enter its number):
Obtenemos la lista de los discos que ha reconocido el comando format. De listado no podemos identificar cual es nuestro nuevo LUN con ID 17 asignado a la máquina. Ya que como podemos ver en este caso, se han creado distintos dispositivos virtuales. Ahora tenemos que identificar cuales de los dispositivos virtuales corresponde con nuestro nuevo LUN. Una forma rápida es utilizar el comando fcinfo que nos permite obtener información sobre los distintos canales Fibre Channel que tengamos en la máquina.
root@machine # fcinfo -? Usage: fcinfo -?,-V Usage: fcinfo [-?]
Existen dos parámetros:
- hba-port, devuelve información sobre los distintos puertos HBA.
- remote-port, devuelve información sobre los dispostivos conectados a los distintos puertos.
Vamos a ejecutar el comando fcinfo con el parámetro hba-port
root@machine # fcinfo hba-port HBA Port WWN: 10000000c97d028a OS Device Name: /dev/cfg/c2 Manufacturer: Emulex Model: LPe11002-S Firmware Version: 2.72a2 (Z3F2.72A2) FCode/BIOS Version: 1.50a9 Serial Number: 0999VM0-0829000DB7 Driver Name: emlxs Driver Version: 2.31h (2008.06.16.08.54) Type: unknown State: offline Supported Speeds: 1Gb 2Gb 4Gb Current Speed: not established Node WWN: 20000000c97d028a ... HBA Port WWN: 10000000c97d02f2 OS Device Name: /dev/cfg/c4 Manufacturer: Emulex Model: LPe11002-S Firmware Version: 2.72a2 (Z3F2.72A2) FCode/BIOS Version: 1.50a9 Serial Number: 0999VM0-0829000DBH Driver Name: emlxs Driver Version: 2.31h (2008.06.16.08.54) Type: N-port State: online Supported Speeds: 1Gb 2Gb 4Gb Current Speed: 4Gb Node WWN: 20000000c97d02f2 ....
De este ejemplo podemos comprobar que el primer puerto no está operativo, ya que su estado es offline, el segundo puerto si está operativo y es este puerto el que vamos a utilizar para el ejemplo. Le preguntaremos por todos los dispositivos a los que tenemos acceso utilizando este puerto. Utilizaremos los parámetros -lsp para obtener todas la información disponbile y por último pasaremos como parámetro el WWN del dispositivo al que queremos preguntar, para nuestro ejemplo 10000000c97d02f2.
root@machine # fcinfo remote-port -lsp 10000000c97d02f2 Remote Port WWN: 500a098296584110 Active FC4 Types: SCSI SCSI Target: yes Node WWN: 500a098086584110 Link Error Statistics: Link Failure Count: 0 Loss of Sync Count: 0 Loss of Signal Count: 0 Primitive Seq Protocol Error Count: 0 Invalid Tx Word Count: 0 Invalid CRC Count: 0 LUN: 1 Vendor: NETAPP Product: LUN OS Device Name: /dev/rdsk/c10t60A980004335437052344C6869506B31d0s2 .... LUN: 17 Vendor: NETAPP Product: LUN OS Device Name: /dev/rdsk/c10t60A980004335437052344C6B394A6751d0s2 ... Remote Port WWN: 500a098186584110 Active FC4 Types: SCSI SCSI Target: yes Node WWN: 500a098086584110 Link Error Statistics: Link Failure Count: 0 Loss of Sync Count: 0 Loss of Signal Count: 0 Primitive Seq Protocol Error Count: 0 Invalid Tx Word Count: 0 Invalid CRC Count: 0 LUN: 1 Vendor: NETAPP Product: LUN OS Device Name: /dev/rdsk/c10t60A980004335437052344C6869506B31d0s2 ... LUN: 17 Vendor: NETAPP Product: LUN OS Device Name: /dev/rdsk/c10t60A980004335437052344C6B394A6751d0s2
De esta salida obtenemos el nombre del dispositovo en el SO y el ID del LUN mapeado en el almacenamiento, para nuestro ejemplo LUN 17
Esta es una forma sencilla de obtener el ID del LUN mapeado asociado a un dispositivo virtual de MPxIO, sobre todo cuando el comando stmboot -L no devuelve nada.