Table of Contents

some useful commands around fibre channel

get adapters, WWN, WWPN, etc.

get FC adapters / HBAs

h212:~ #  ls -l /sys/class/fc_host
total 0
lrwxrwxrwx 1 root root 0  3. Feb 08:45 host1 -> ../../devices/pci0000:3a/0000:3a:00.0/0000:3b:00.0/host1/fc_host/host1
lrwxrwxrwx 1 root root 0  3. Feb 08:45 host16 -> ../../devices/pci0000:3a/0000:3a:00.0/0000:3b:00.1/host16/fc_host/host16
lrwxrwxrwx 1 root root 0  3. Feb 08:45 host17 -> ../../devices/pci0000:5d/0000:5d:00.0/0000:5e:00.0/host17/fc_host/host17
lrwxrwxrwx 1 root root 0  3. Feb 08:45 host18 -> ../../devices/pci0000:5d/0000:5d:00.0/0000:5e:00.1/host18/fc_host/host18

get adapter type

h212:~ # lspci | grep Fibre
3b:00.0 Fibre Channel: QLogic Corp. ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (rev 02)
3b:00.1 Fibre Channel: QLogic Corp. ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (rev 02)
5e:00.0 Fibre Channel: QLogic Corp. ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter (rev 01)
5e:00.1 Fibre Channel: QLogic Corp. ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter (rev 01)

get the wwn from the adapters

h212:~ # awk '{print "device:" substr(FILENAME, $0)" -- WWN: \"" $0"\" "}'   /sys/class/fc_host/host*/port_name
device:/sys/class/fc_host/host16/port_name -- WWN: "0x2001000e1e302d35" 
device:/sys/class/fc_host/host17/port_name -- WWN: "0x2100f4e9d45900ca" 
device:/sys/class/fc_host/host18/port_name -- WWN: "0x2100f4e9d45900cb" 
device:/sys/class/fc_host/host1/port_name -- WWN: "0x2001000e1e302d34" 

get Port state

using systool

according to The Geek Diary

# systool -c fc_host
Class = "fc_host"

  Class Device = "host2"
    Device = "host2"

  Class Device = "host3"
    Device = "host3"
# systool -c fc_host -v | grep port_name
    port_name           = "0x500143802426baf4"
    port_name           = "0x500143802426baf6"
# systool -c fc_host -v | grep port_state
    port_state          = "Online"
    port_state          = "Online"

multipathing

paths & devices

multipathd commands

multipathd is not only the the multipath daemon itself, but also a useful command for analysing the SAN:

# multipathd --help

FIXME

Rescaning the SCSI bus

ordinarily you just use the rescan-scsi.sh command. thus, this only reads the configuration again, but does not reinitialize the HBA.

this can be done by:

# echo "1" > /sys/class/fc_host/host<X>/issue_lip

replacing '<X'> with the number of the HBA.

manual switch off/on of HBA

thanks to Veritas

* To list available HBA ports, type:

# ls -l /sys/class/fc_host
total 0
lrwxrwxrwx. 1 root root 0 Jun 24 13:52 host28 -> ../../devices/pci0000:80/0000:80:02.0/0000:81:00.0/host28/fc_host/host28
lrwxrwxrwx. 1 root root 0 Jun 24 14:15 host29 -> ../../devices/pci0000:80/0000:80:02.0/0000:81:00.1/host29/fc_host/host29

The lspci command can be used to display the available Fibre Channel (FC) Adapters:

The Fibre Channel (FC) HBA port access on RedHat can be temporarily disabled using the unbind string against the pci-device-id bus address.

Syntax:

# echo "PCI-DEVICE-ID" > /sys/bus/pci/drivers/qla2xxx/unbind

To disconnect access for a specific PCI device (81:00:0), the sample syntax would be as follows:

# echo "0000:81:00.0" > /sys/bus/pci/drivers/qla2xxx/unbind

To display the filename & associated WWN details for all FC HBA controllers:

# awk '{print substr(FILENAME, $0)" \"" $0"\" "}'   /sys/class/fc_host/host*/port_name
/sys/class/fc_host/host28/port_name "0x2001000e1ec2f9ca"
/sys/class/fc_host/host29/port_name "0x2001000e1ec2f9cb"

To display the filename & HBA port status:

# awk '{print substr(FILENAME, $0)" \"" $0"\" "}'   /sys/class/fc_host/host*/port_state
/sys/class/fc_host/host28/port_state "Online"
/sys/class/fc_host/host29/port_state "Online"