Este blog aun tiene vida! Es grandioso estar de vuelta, mi nuevo trabajo no me da mucho tiempo para poder escribir, aunque este post tengo que publicarlo por que demás de generar contenido, me sirve a mi mismo como documentación de las actividades que realizo como Ingeniero de Storage. En fin que me topé con la tarea de tener que encontrar los WWN de las HBAs de un servidor RHEL e identificar las HBA como tales en Linux y la verdad que es un mar de cosas que tienes que colectar aquí y allá con un comando y otro pero al fin encontré varios métodos sencillos que dan la información necesaria y aquí te los comparto. Como Identificar las HBAs en Linux de forma sencilla.
Como identificar HBAs en Linux
Para saber que hay en un servidor Linux hay muchos comandos como el uname que te sirve para saber que arquitectura tiene o el tipo se sistema, o el inxi que te muestra mucha información de lo que hay en tu hardware. Pero cuando te involucras con los storages, las SAN y demás artilugios que requiere un ingeniero de Storage pues lo principal es saber que HBAs están operando en el server y como identificar los WWN, los modelos, la velocidad y los nombres y números de puertos.
Como saber que modelo son las HBAs
Los Host Bus Adapters o HBAs son las tarjetas que sirven para conectar por fibra canal o Fibre Channel un servidor hacia un switch de SAN y/o hacia un storage o equipo de almacenamiento. En Linux puedes conocer que modelo y que equipo está operando en tu equipo con el siguiente comando: lspci -nn | grep -i hba
[root@rhel01 ~]# lspci -nn | grep -i hba 0e:00.0 Fibre Channel [0c04]: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA [1077:2532] (rev 02) 0e:00.1 Fibre Channel [0c04]: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA [1077:2532] (rev 02)
Del texto que arroja este comando hay tres cosas importantes: el fabricante, el modelo del controlador y el bus. Para identificar estos datos del texto anterior podemos comenzar con el bus que son los primero caracteres de las lineas, el primero renglón se aprecia el primer bus «0e:00.0» y el segundo como «0e:00.1».
Los otros datos son el fabricante y el modelo del controlador que puedes identificar en el texto: «QLogic Corp. ISP2532-based 8Gb Fibre Channel»
Lo siguiente que tienes que identificar es el nombre del host que tiene asignado cada uno de estos buses en el sistema, para esto podemos usar el comando: ls -l /sys/class/fc_host
[root@rhel01 ~]# ls -l /sys/class/fc_host total 0 lrwxrwxrwx 1 root root 0 Nov 2 07:49 host1 -> ../../devices/pci0000:00/0000:00:07.0/0000:0e:00.0/host1/fc_host/host1 lrwxrwxrwx 1 root root 0 Nov 2 07:49 host4 -> ../../devices/pci0000:00/0000:00:07.0/0000:0e:00.1/host4/fc_host/host4
Si te fijas aquí encontramos de nuevo los buses «0e:00.0» para el host1 y el «0e:00.1» para el host4. Estos datos te ayudarán para identificar luego el WWN o World Wide Name con el que se identifican estos equipos, en concreto con el «port name».
Como saber el WWN o Port Name de una HBA en linux
Este dato es precisamente el que mas nos sirve pues es con el que podemos realizar una zonificación en un switch de SAN. Para obtener el port name de los HBAs que tengas instalados en un servidor linux puedes usar el comando: cat /sys/class/fc_host/host?/port_name
[root@rhel01 ~]# cat /sys/class/fc_host/host?/port_name 0x5001438009af57a0 0x5001438009af57a2
Puedes encontrarlos todos o uno por uno, como en el siguiente ejemplo:
[root@rhel01 ~]# cat /sys/class/fc_host/host1/node_name 0x5001438009af57a1 [root@rhel01 ~]# cat /sys/class/fc_host/host4/node_name 0x5001438009af57a3
Estos comando funcionan pero hay otros comandos con lo que puedes obtener información útil más fácilmente. Para ello es importante que tengas instalado el paquete sysfsutils, sino lo tienes pues solo ejecuta el yum para instalarlo.
# yum install sysfsutils
Para optener el nombre del dispositivo y el nombre del puerto (la parte del Port Name de WWN) puedes ejecutar este comando: systool -c fc_host -A «port_name»
# systool -c fc_host -A "port_name" Class = "fc_host" Class Device = "host1" port_name = "0x5001438009af57a0" Device = "host1" Class Device = "host4" port_name = "0x5001438009af57a2" Device = "host4"
Con este puedes tener el host name y el port name en un solo comando y además puedes perfectamente saber cual es cual, sin que adivines si el host1 y uno u otro port name.
Además también puedes saber si el puerto o host está conectado o está caído o «Down» con el comando: systool -c fc_host -A «port_state»
# systool -c fc_host -A "port_state" Class = "fc_host" Class Device = "host1" port_state = "Online" Device = "host1" Class Device = "host4" port_state = "Online" Device = "host4"
Esto comandos me han sido bastante útiles a la hora de poder identificar los datos que te menciono y espero que te sean igual de útiles a ti.
¿Qué otros comandos usas para obtener información de una HBA en linux?