今の仕事で関わっているHP-UXはFC経由でストレージに接続しているのだが、今度この接続に用いているFCスイッチが交換される事になった。
で、その際にローカル側のN_PORT_IDが変更になるとの話になったので、今回はそのN_PORT_IDの調べ方を記述する。

そもそも、N_PORT_IDというものが何なの?と言う前に、N_PORTというものが何なのかというと『FCスイッチ側で、各ノードを識別するためのポート』の事で、Nはノードの略。N_PORT_IDは、そのN_PORTを識別するためのIDで、FCスイッチ側で各ポートに割り振るIDの事。
で、そのN_PORT_IDは当然サーバ側、ストレージ側にそれぞれ割り振られる。その割り振られたN_PORT_IDを調べるには、fcmsutilコマンドを実行する。

ローカル側(HP-UX側)のN_PORT_IDを調べる

fcmsutil /dev/FCボードのデバイスファイル

実行例は以下。

# fcmsutil /dev/fcd0

Vendor ID is = 0x1077
Device ID is = 0x2532
PCI Sub-system Vendor ID is = 0x103C
PCI Sub-system ID is = 0x3261
PCI Mode = PCI Express x4
ISP Code version = 5.3.2
ISP Chip version = 2
Previous Topology = UNINITIALIZED
Link Speed = UNKNOWN
Local N_Port_id is = 0x010203
Previous N_Port_id is = None
N_Port Node World Wide Name = 0x50014380014569c5
N_Port Port World Wide Name = 0x50014380014569c4
Switch Port World Wide Name = 0
Switch Node World Wide Name = 0
N_Port Symbolic Port Name = hpx0_fcd0
N_Port Symbolic Node Name = hpx0_HP-UX_B.11.31
Driver state = AWAITING_LINK_UP
Hardware Path is = 0/0/0/5/0/0/0
Maximum Frame Size = 2048
Driver-Firmware Dump Available = NO
Driver-Firmware Dump Timestamp = N/A
TYPE = PFC
NPIV Supported = NO
Driver Version = @(#) fcd B.11.31.1009 May 9 2010

上の例でいうと、「Local N_Port_id is 」の箇所がローカル側のN_PORT_IDとなる。

リモート側(ストレージ側)のN_PORT_IDを調べる

fcmsutil /dev/FCボードのデバイスファイル get remote all

実行例は以下。

# fcmsutil /dev/fcd0 get remote all

                    Target N_Port_id is = 0x610813
                           Target state = DSM_READY
                          Symbolic Name = HSV100 - EVA3000 - CR0A3E
                              Port Type = N_PORT
                          FCP-2 Support = NO
            Target Port World Wide Name = 0x50001fe150033d59
            Target Node World Wide Name = 0x50001fe150033d50

Common Service parameters (all values shown in hex):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         Common Features : 8800                     RO_Bitmap: 1
             Total Conseq: ff

Class 3 Service parameters (all values shown in hex):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     Open Sequences/Exchg: 1                           Conseq: ff
  Recipient Control Flags: 0                             Rxsz: 800

上の例でいうと、「Target N_Port_id is」の箇所がリモート側のN_PORT_IDとなる。
なお、リモート側の種類(ストレージか否かなど)を調べたい場合は、「Symbolic Name」を元に検索するといいだろう。