How to find WWN and WWPN of HBA card in Linux

There are several ways to detect the WWN of a Fibre Channel (FC) HBA and their details in Linux/Unix operating systems.

In this article, we will explain you the two best ways to find wwn number in Linux.

What is SAN?

A Storage Area Network (SAN) is a dedicated, independent, high-speed network that provides block-level network access to storage.

A SAN typically consists of cabling, host bus adapters, and SAN switches connected to storage arrays and servers.

SCSI (Small Computer System Interface) is a protocol used to communicate between servers and storage devices.

Purpose of wwn number

To add storage to the host, server has to be mapped with storage device by zoning the WWN of both host and storage in Fabric switch.

Once the zone is created, the storage team can assign LUNs to a specific Linux host, and new LUN can be discovered by scanning the storage LUN ID at the host end.

Popular FC host bus adapters are QLogic, Emulex, Brocade, Cisco, etc.

Some of the important abbreviations are listed below:

  • WWN – World Wide Name
  • WWNN – World Wide Node Name
  • WWPN – World Wide Port Name
  • WWID – World Wide Identifier
  • OUI – Organizationally Unique Identifier

Checking HBA card information

You can easily identify how many HBA cards are installed in your Linux system by running ‘lspci’ command as shown below:

# lspci -nn | grep -i hba
07:00.0 Fibre Channel [0c04]: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA [1077:2532] (rev 02)
07:00.1 Fibre Channel [0c04]: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA [1077:2532] (rev 02)
08:00.0 Fibre Channel [0c04]: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA [1077:2532] (rev 02)
08:00.0 Fibre Channel [0c04]: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA [1077:2532] (rev 02)

Check this article on how to find information about other bus devices in Linux.

Method-1: Checking wwn number manually

HBA card wwn number can be manually identified by filtering the associated files under the “/sys” file system.

The files under sysfs provide information about devices, kernel modules, filesystems, and other kernel components, which are typically mounted automatically by the system at /sys.

To check the available HBA ports, use the below file:

# ls -l /sys/class/fc_host
total 0
lrwxrwxrwx 1 root root 0 Oct 26 17:10 host1 -> ../../devices/pci0000:00/0000:00:02.0/0000:03:00.0/host1/fc_host/host1
lrwxrwxrwx 1 root root 0 Oct 26 17:10 host2 -> ../../devices/pci0000:00/0000:00:02.2/0000:04:00.0/host2/fc_host/host2
lrwxrwxrwx 1 root root 0 Oct 26 17:10 host3 -> ../../devices/pci0000:00/0000:00:02.2/0000:04:00.0/host2/fc_host/host3
lrwxrwxrwx 1 root root 0 Oct 26 17:10 host4 -> ../../devices/pci0000:00/0000:00:02.2/0000:04:00.0/host2/fc_host/host4

The ‘fc_transport’ determines the correct host, channel, and target information from currently presented LUN:

# ls -lrt /sys/class/fc_transport/

drwxr-xr-x  2 root root 0 May 27 09:40 target7:0:2
drwxr-xr-x  2 root root 0 May 27 09:40 target7:0:1
drwxr-xr-x  2 root root 0 May 27 09:40 target7:0:0
drwxr-xr-x  2 root root 0 May 27 09:40 target5:0:2
drwxr-xr-x  2 root root 0 May 27 09:40 target5:0:1
drwxr-xr-x  2 root root 0 May 27 09:40 target5:0:0

You can verify a list of ‘wwn’ number of the fc host (HBA card) using the following file:

# cat /sys/class/fc_host/host?/port_name

0x500143802426baf2
0x500143802426baf3
0x500143802426baf4
0x500143802426baf5

Use the following file to check a specific fc host wwn number:

# cat /sys/class/fc_host/host1/node_name

0x500143802426baf2

To find the status of HBA ports, use the below file (online/offline):

# more /sys/class/fc_host/host?/port_state

::::::::::::::
/sys/class/fc_host/host1/port_state
::::::::::::::
Online
::::::::::::::
/sys/class/fc_host/host2/port_state
::::::::::::::
Online
::::::::::::::
/sys/class/fc_host/host3/port_state
::::::::::::::
Online
::::::::::::::
/sys/class/fc_host/host4/port_state
::::::::::::::
Online

Method-2: Checking wwn number using systool command

The systool is a tool that uses APIs provided by libsysfs to gather information. It allows you to view system device information by bus, class, and topology.

When you run systool without parameters, it will present all available bus types, device classes, and root devices.

How to install systool in Linux

systool can be easily installed from the distribution official repository.

For RHEL/CentOS 6/7 systems, use the yum command to install systool:

$ sudo yum install -y sysfsutils

For RHEL/CentOS 8 and Fedora systems, use the dnf command to install systool:

$ sudo dnf install -y sysfsutils

Once the sysfsutils package is installed on the Linux system, run the following command to find the WWN number of fc host:

# systool -c fc_host -v | grep port_name

    port_name           = "0x500143802426baf2"
    port_name           = "0x500143802426baf3"
    port_name           = "0x500143802426baf4"
    port_name           = "0x500143802426baf5"

Run the following command to check the state of HBA ports:

# systool -c fc_host -v | grep port_state

    port_state          = "Online"
    port_state          = "Online"
    port_state          = "Online"
    port_state          = "Online"

If you want to check wwn number of a specific fc host , run the following command:

# systool -c fc_host -v -d host2 | grep port_name

Conclusion

In this guide, we have shown you 2 simple methods to find WWN, WWPN of HBA card and the status of HBA ports in Linux.

If you have any questions or feedback, feel free to comment below.

About Prakash Subramanian

Prakash Subramanian is a Linux lover and has 3.5+ years of experience in linux server administration with major Linux distribution such as (RHEL, CentOS, Ubuntu). He is currently working as a Senior L2 Linux Server administrator.

View all posts by Prakash Subramanian

4 Comments on “How to find WWN and WWPN of HBA card in Linux”

  1. systool -c fc_host -A “port_id”

    this will shows some class device =”0x——-”
    who has active connection to san but those who didnt connect to san
    sees class device=”00000000000″

    1. systool -c fc_host -A “port_id”

      this will shows some class device =”0x——-”
      who has active connection to san but those who didnt connect to san
      sees class device=”00000000000″

Leave a Reply

Your email address will not be published. Required fields are marked *