DB2 10.5 for Linux, UNIX, and Windows

标识 uDAPL over InfiniBand 通信错误

通过使用诊断日志、操作系统命令和系统跟踪,可找出并解决 uDAPL 通信错误。

输入 db2start 后,在第一次激活数据库连接或 成员 重新启动时会发生错误,如 db2diag 日志文件中的以下消息示例中所示:

2009-04-27-15.41.03.299437-240 I9450505A370       LEVEL: Severe
PID     : 651462               TID  : 258         KTID : 2674775 PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000
EDUID   : 258                  EDUNAME: db2sysc 0
FUNCTION: DB2 UDB, RAS/PD component, pdLogCaPrintf, probe:876
DATA #1 : <preformatted>
ca_svr_connect: dat_evd_wait failed: 0xf0000

2009-04-27-15.41.03.363542-240 I9450876A367       LEVEL: Severe
PID     : 651462               TID  : 258         KTID : 2674775 PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000
EDUID   : 258                  EDUNAME: db2sysc 0
FUNCTION: DB2 UDB, RAS/PD component, pdLogCaPrintf, probe:876
DATA #1 : <preformatted>
CAConnect: cmd_connect failed: 0x80090001

2009-04-27-15.41.03.421934-240 I9451244A1356      LEVEL: Severe
PID     : 651462               TID  : 258         KTID : 2674775 PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000
EDUID   : 258                  EDUNAME: db2sysc 0
FUNCTION: DB2 UDB, Shared Data Structure Abstraction Layer , 
          SQLE_CA_CONN_ENTRY_DATA::sqleCaCeConnect, probe:622
MESSAGE : CA RC= 2148073473
DATA #1 : String, 17 bytes
CAConnect failed.
DATA #2 : CAToken_t, PD_TYPE_SD_CATOKEN, 8 bytes
0x07000000003EE0B8 : 0000 0001 1064 AF90                        .....d..
DATA #3 : CA Retry Position, PD_TYPE_SAL_CA_RETRY, 8 bytes
0
CALLSTCK:
  [0] 0x0900000012FF274C sqleCaCeConnect__23SQLE_CA_CONN_ENTRY_DATAFCP7CATokenCl
      + 0x40C
  [1] 0x0900000012FF2CF8 sqleSingleCaCreateAndAddNewConnectionsToPool__
      21SQLE_SINGLE_CA_HANDLEFCUlT1Cb + 0x278
  [2] 0x0900000012FF9188 sqleSingleCaInitialize__21SQLE_SINGLE_CA_HANDLEFRC27SQLE_
      CA_CONN_POOL_NODE_INFOCUlP13SQLO_MEM_POOL + 0x448
  [3] 0x0900000013001C50 sqleCaCpAddCa__17SQLE_CA_CONN_POOLFsCPUl + 0x350
  [4] 0x00000001000118AC sqleInitSysCtlr__FPiT1 + 0x140C
  [5] 0x0000000100013008 sqleSysCtlr__Fv + 0x4A8
  [6] 0x0900000012E15C78 sqloSystemControllerMain__FCUiPFv_iPFi_vPPvCPi + 0xD58
  [7] 0x0900000012E177AC sqloRunInstance + 0x20C
  [8] 0x0000000100006ECC DB2main + 0xAEC
  [9] 0x0900000012C99048 sqloEDUMainEntry__FPcUi + 0xA8
db2diag 日志文件可能还会显示 类似下列各项的信息:
2009-04-27-15.41.04.595936-240 I9453087A387       LEVEL: Severe
PID     : 1249362              TID  : 258         KTID : 4395063 PROC : db2sysc 1
INSTANCE: db2inst1             NODE : 001
EDUID   : 258                  EDUNAME: db2sysc 1
FUNCTION: DB2 UDB, RAS/PD component, pdLogCaPrintf, probe:876
DATA #1 : <preformatted>
xport_send: dat_ep_post_rdma_write of the MCB failed: 0x70000

2009-04-27-15.42.04.329724-240 I9505628A1358      LEVEL: Severe
PID     : 1249362              TID  : 258         KTID : 4395063 PROC : db2sysc 1
INSTANCE: db2inst1             NODE : 001
EDUID   : 258                  EDUNAME: db2sysc 1
FUNCTION: DB2 UDB, Shared Data Structure Abstraction Layer , 
          SQLE_CA_CONN_ENTRY_DATA::sqleCaCeConnect, probe:622
MESSAGE : CA RC= 2148073485
DATA #1 : String, 17 bytes
CAConnect failed.
DATA #2 : CAToken_t, PD_TYPE_SD_CATOKEN, 8 bytes
0x07000000003EE0B8 : 0000 0001 1064 AFD0                        .....d..
DATA #3 : CA Retry Position, PD_TYPE_SAL_CA_RETRY, 8 bytes
894
CALLSTCK:
  [0] 0x0900000012FF274C sqleCaCeConnect__23SQLE_CA_CONN_ENTRY_DATAFCP7CATokenCl 
      + 0x40C
  [1] 0x0900000012FF2CF8 sqleSingleCaCreateAndAddNewConnectionsToPool__
      21SQLE_SINGLE_CA_HANDLEFCUlT1Cb + 0x278
  [2] 0x0900000012FF9188 sqleSingleCaInitialize__21SQLE_SINGLE_CA_HANDLEFRC27SQLE_
      CA_CONN_POOL_NODE_INFOCUlP13SQLO_MEM_POOL + 0x448
  [3] 0x0900000013001C50 sqleCaCpAddCa__17SQLE_CA_CONN_POOLFsCPUl + 0x350
  [4] 0x00000001000118AC sqleInitSysCtlr__FPiT1 + 0x140C
  [5] 0x0000000100013008 sqleSysCtlr__Fv + 0x4A8
  [6] 0x0900000012E15C78 sqloSystemControllerMain__FCUiPFv_iPFi_vPPvCPi + 0xD58
  [7] 0x0900000012E177AC sqloRunInstance + 0x20C
  [8] 0x0000000100006ECC DB2main + 0xAEC
  [9] 0x0900000012C99048 sqloEDUMainEntry__FPcUi + 0xA8
这些消息指示 CF成员之间存在通信错误。遵循以下步骤:
  1. 找到 pdLogCfPrintf 消息并搜索消息字符串 CF RC=。例如,CF RC= 2148073491
  2. 获取与此字符串相邻的数字值;在此示例中为 2148073491。此值表示来自网络或通信层的原因码。
  3. 要查找有关此错误的更多详细信息,请运行带有后跟此值的 -cfrc 参数的 db2diag 工具。示例:db2diag -cfrc 2148073491
  4. 如果系统最近启用了 uDAPL 和 InfiniBand,请检查 uDAPL 配置。有关详细信息,请参阅在 InfiniBand 网络上的 DB2® pureScale® 环境中配置主机的网络设置 (AIX®)
  5. 从每个显示以上列示的错误的成员主机对 CF IB 主机名执行 ping 操作,并从 CF 主机对这些成员的 IB 主机名执行 ping 操作。
  6. 如果对 IB 主机名执行 ping 操作失败,请验证端口状态是否为已启动。要验证端口状态是否已启动,请运行 ibstat -v。在以下示例中,链路应该处于正常工作状态,因为 Physical Port Physical State 的值为 Link Up,Logical Port State 的值为 Active,Physical Port State 的值为 Active:
    $ ibstat -v
    ------------------------------------------------------------------------------
     IB NODE INFORMATION (iba0)
    ------------------------------------------------------------------------------
    Number of Ports:                        2
    Globally Unique ID (GUID):              00.02.55.00.02.38.59.00
    Maximum Number of Queue Pairs:          16367
    Maximum Outstanding Work Requests:      32768
    Maximum Scatter Gather per WQE:         252
    Maximum Number of Completion Queues:    16380
    Maximum Multicast Groups:               32
    Maximum Memory Regions:                 61382
    Maximum Memory Windows:                 61382
    Hw Version info:                        0x1000002
    Number of Reliable Datagram Domains:    0
    Total QPs in use:                       3
    Total CQs in use:                       4
    Total EQs in use:                       1
    Total Memory Regions in use:            7
    Total MultiCast Groups in use:          2
    Total QPs in MCast Groups in use:       2
    EQ Event Bus ID:                        0x90000300
    EQ Event ISN:                           0x1004
    NEQ Event Bus ID:                       0x90000300
    NEQ Event ISN:                          0x90101
    
    ------------------------------------------------------------------------------
     IB PORT 1 INFORMATION (iba0)
    ------------------------------------------------------------------------------
    Global ID Prefix:                       fe.80.00.00.00.00.00.00
    Local ID (LID):                         000e
    Local Mask Control (LMC):               0000
    Logical Port State:                     Active
    Physical Port State:                    Active
    Physical Port Physical State:           Link Up
    Physical Port Speed:                    2.5G
    Physical Port Width:                    4X
    Maximum Transmission Unit Capacity:     2048
    Current Number of Partition Keys:       1
    Partition Key List:
      P_Key[0]:                             ffff
    Current Number of GUID's:               1
    Globally Unique ID List:
      GUID[0]:                              00.02.55.00.02.38.59.00
  7. 检查 Galaxy InfiniBand 适配卡、InfiniBand 交换机和电缆连接以查找物理服务器上的故障。
  8. AIX 系统错误日志也可能会显示相关消息。可通过运行 errpt -a 命令来检查错误日志。
  9. 确保 InfiniBand 网络接口、主机通道适配器和 icm 值都为 Available,如以下示例中所示:
    $ lsdev -C | grep ib
    fcnet0      Defined   00-08-01 Fibre Channel Network Protocol Device
    fcnet1      Defined   00-09-01 Fibre Channel Network Protocol Device
    ib0         Available          IP over Infiniband Network Interface
    iba0        Available          InfiniBand host channel adapter
    icm         Available          Infiniband Communication Manager
    • 如果已正确执行安装,并且硬件正常工作,那么这三个值都应该为“Available”。
    • 如果此网络接口的值并非“Available”,那么可手动更改设备状态。要手动更改设备状态,可使用以下命令:
      $ chdev -l ib0 -a state=up
      ib0 changed
    • 如果 iba0 或 icm 未处于“Available”状态,请检查设备上是否存在错误。要检查设备上是否存在错误,请以 root 用户身份运行 /usr/sbin/cfgmgr -vl iba0/usr/sbin/cfgmgr -vl icm
    • 如果 iba0 找不到或仍处于“Defined”状态,请确认当前已将主机通道适配器指定给 HMC 上的主机。
  10. 验证发生错误时 CF 服务器进程是否正在 CF 服务器主机上运行。如果当时(在执行 db2instance -list 的当时,主 CFPRIMARY 状态,辅助 CF 处于 PEER 状态) CF 主机未启动、未初始化或者已重新启动,请检查 cfdump.out*cfdiag*.log 和核心文件以了解更多信息。但是,如果发生错误时 CF 服务器已启动并已初始化,那么可能存在 uDAPL 通信问题。
  11. 如果发出了 db2start 命令或 CONNECT 语句,要确定是否存在另一故障导致这些错误以副作用形式出现,请参阅CF 服务器故障
  12. 如果不是这样,那么失败场景的跟踪通常对确定错误原因很有用。如果启用了 CF 跟踪,请将其转储。要转储 CF 跟踪,请运行以下命令:db2trc cf dump fileName,其中 fileName 参数的值由您定义。
  13. 要启用 CF 跟踪(如果还未启用),请运行以下命令:db2trc cf on -m "*.CF.xport_udapl.*.*"
  14. IBM 服务机构可能会额外要求 AIX 系统跟踪和 AIX 内存跟踪以便确定问题。
  15. 如果记录了 xport_udapl 上的 CF 跟踪和任何 AIX 系统跟踪,请收集此信息。运行 db2support 命令以收集更多诊断日志。以 root 用户身份在所有主机上运行 snap -Y,并与 IBM 服务机构联系以获取更多帮助。