How to Check NPIV Virtual Fibre Channel Adapter Mapping on AIX
Starting with AIX 7.2 TL5 SP3 (and VIOS 3.1.3.00), AIX/Power System administrators can use an alternative to kdb for viewing VIOS “identifying info” from client AIX LPARs. For example:
# cat /proc/sys/adapter/fc/fcs0/hostinfo fcs0 VFC client adapter name : fcs0 Host partition name (VIOS) : vio1 VFC host adapter name : vfchost0 VFC host adapter location code : U9009.22A.7871D00-V3-C7 FC adapter name on VIOS : fcs2 FC adapter location code on VIOS : U78D3.001.WZS0AL9-P1-C8-T1
This will make tracking LPAR/VIOS changes, during large migrations (for example, from P9 to P10 with LPM), a lot easier (and more reliable than using kdb). It’s a great addition.
This new feature is mentioned under the “VIOS Enhancements” section of the “PowerVM features in the new Power10 Servers” blog post from Pete Heyrman (from the IBM Power Hypervisor development team).
Under the /proc/sys/adapter/fc directory you’ll find some new procfs entries for each virtual fibre channel (fcsX) adapter:
# oslevel -s 7200-05-03-2136 # cd /proc/sys/adapter/fc # ls -ltr total 0 dr-xr-xr-x 7 root system 0 Oct 04 16:13 fscsi3 dr-xr-xr-x 7 root system 0 Oct 04 16:13 fscsi2 dr-xr-xr-x 7 root system 0 Oct 04 16:13 fscsi1 dr-xr-xr-x 7 root system 0 Oct 04 16:13 fscsi0 dr-xr-xr-x 3 root system 0 Oct 04 16:13 fcs3 dr-xr-xr-x 3 root system 0 Oct 04 16:13 fcs2 dr-xr-xr-x 3 root system 0 Oct 04 16:13 fcs1 dr-xr-xr-x 3 root system 0 Oct 04 16:13 fcs0
In each of the fcsX directories you’ll find a new entry named hostinfo:
# cd fcs0 # ls -ltr total 0 prw-r--r-- 1 root system 0 Oct 04 16:16 hostinfo
You can “cat” this file to determine which VIOS is serving your virtual fibre channel adapter:
# cat hostinfo VFC client adapter name : fcs0 Host partition name (VIOS) : vio2 VFC host adapter name : vfchost2 VFC host adapter location code : U9009.22A.7891CA0-V3-C16 FC adapter name on VIOS : fcs1 FC adapter location code on VIOS : U78D3.001.WZS0AJN-P1-C8-T1
You can “cat” each fcsX/hostinfo entry to capture all of the VIOS/vFC adapter info for your LPAR. You may wish to create a little shell script that can display this information, for each entry, quickly. For example:
# cat /usr/local/bin/lsviofcs myfcslist=`cd /proc/sys/adapter/fc ; ls -d fcs*` for i in $myfcslist do echo $i cat /proc/sys/adapter/fc/$i/hostinfo echo done # lsviofcs fcs0 VFC client adapter name : fcs0 Host partition name (VIOS) : vio2 VFC host adapter name : vfchost2 VFC host adapter location code : U9009.22A.7891CA0-V3-C16 FC adapter name on VIOS : fcs1 FC adapter location code on VIOS : U78D3.001.WZS0AJN-P1-C8-T1 fcs1 VFC client adapter name : fcs1 Host partition name (VIOS) : vio2 VFC host adapter name : vfchost3 VFC host adapter location code : U9009.22A.7891CA0-V3-C17 FC adapter name on VIOS : fcs2 FC adapter location code on VIOS : U78D3.001.WZS0AJN-P1-C8-T2 fcs2 VFC client adapter name : fcs2 Host partition name (VIOS) : vio1 VFC host adapter name : vfchost2 VFC host adapter location code : U9009.22A.7891CA0-V2-C18 FC adapter name on VIOS : fcs3 FC adapter location code on VIOS : U78D3.001.WZS0AJN-P1-C2-T1 fcs3 VFC client adapter name : fcs3 Host partition name (VIOS) : vio1 VFC host adapter name : vfchost3 VFC host adapter location code : U9009.22A.7891CA0-V2-C19 FC adapter name on VIOS : fcs4 FC adapter location code on VIOS : U78D3.001.WZS0AJN-P1-C2-T2
It’s worth noting that you can prevent this information from being available to the client LPAR by changing the secure_va_info attribute on your 3.1.3.00 VIOS.
For example, if we were to change the secure_va_info value from no to yes, like so:
$ chdev -dev viosnpiv0 -attr secure_va_info=yes viosnpiv0 changed $ virtadapinfo -list secure : yes
Then the client LPAR will see the following (Secure) output for that VIOS:
# cat /proc/sys/adapter/fc/fcs1/hostinfo VFC client adapter name : fcs1 Host partition name (VIOS) : Secure VFC host adapter name : Secure VFC host adapter location code : Secure FC adapter name on VIOS : Secure FC adapter location code on VIOS : Secure
If your VIOS is not running the latest VIOS code, 3.1.3.00, you’ll find that the “FC adapter name on VIOS” attribute will be blank. For example:
fcs0 VFC client adapter name : fcs0 Host partition name (VIOS) : vio2 VFC host adapter name : vfchost2 VFC host adapter location code : U9009.22A.7891CA0-V3-C16 FC adapter name on VIOS : FC adapter location code on VIOS : U78D3.001.WZS0AJN-P1-C8-T1
Based on my tests, this new feature only stores information for AIX virtual fibre channel adapters and not vSCSI adapters. In that case you can still use the older, less reliable, and unsupported kdb method (for both vSCSI and VFCS). Of course this may change at any time in the future.
For example:
VSCSI # echo cvai | kdb -script read vscsi_scsi_ptrs OK, ptr = 0xF10009D5B0129E98 (0)> cvai Executing cvai command NAME STATE CMDS_ACTIVE ACTIVE_QUEUE HOST vscsi0 0x000007 0x000000001A 0x0 vios2->vhost3 End of execution for cvai command (0)> Executing q command VFCS # echo vfcs | kdb -script read vscsi_scsi_ptrs OK, ptr = 0xF10009D5B0129E98 (0)> vfcs Executing vfcs command NAME ADDRESS STATE OPENED CH HOST_ADAP PHYS HOST fcs0 0xF1000B01C0084000 0x0010 0x0001 8 Secure fcs1 0xF1000B01C0088000 0x0010 0x0001 0 vfchost0 vios1