标识 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
和成员之间存在通信错误。遵循以下步骤:
- 找到 pdLogCfPrintf 消息并搜索消息字符串 CF RC=。例如,CF RC= 2148073491。
- 获取与此字符串相邻的数字值;在此示例中为 2148073491。此值表示来自网络或通信层的原因码。
- 要查找有关此错误的更多详细信息,请运行带有后跟此值的 -cfrc 参数的 db2diag 工具。示例:db2diag -cfrc 2148073491。
- 如果系统最近启用了 uDAPL 和 InfiniBand,请检查 uDAPL 配置。有关详细信息,请参阅在 InfiniBand 网络上的 DB2® pureScale® 环境中配置主机的网络设置 (AIX®)。
- 从每个显示以上列示的错误的成员主机对 CF IB 主机名执行 ping 操作,并从 CF 主机对这些成员的 IB 主机名执行 ping 操作。
- 如果对 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 - 检查 Galaxy InfiniBand 适配卡、InfiniBand 交换机和电缆连接以查找物理服务器上的故障。
- AIX 系统错误日志也可能会显示相关消息。可通过运行 errpt -a 命令来检查错误日志。
- 确保 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 上的主机。
- 验证发生错误时 CF 服务器进程是否正在 CF 服务器主机上运行。如果当时(在执行 db2instance -list 的当时,主 CF 为 PRIMARY 状态,辅助 CF 处于 PEER 状态) CF 主机未启动、未初始化或者已重新启动,请检查 cfdump.out*、cfdiag*.log 和核心文件以了解更多信息。但是,如果发生错误时 CF 服务器已启动并已初始化,那么可能存在 uDAPL 通信问题。
- 如果发出了 db2start 命令或 CONNECT 语句,要确定是否存在另一故障导致这些错误以副作用形式出现,请参阅CF 服务器故障。
- 如果不是这样,那么失败场景的跟踪通常对确定错误原因很有用。如果启用了 CF 跟踪,请将其转储。要转储 CF 跟踪,请运行以下命令:db2trc cf dump fileName,其中 fileName 参数的值由您定义。
- 要启用 CF 跟踪(如果还未启用),请运行以下命令:db2trc cf on -m "*.CF.xport_udapl.*.*"。
- IBM 服务机构可能会额外要求 AIX 系统跟踪和 AIX 内存跟踪以便确定问题。
- 如果记录了 xport_udapl 上的 CF 跟踪和任何 AIX 系统跟踪,请收集此信息。运行 db2support 命令以收集更多诊断日志。以 root 用户身份在所有主机上运行 snap -Y,并与 IBM 服务机构联系以获取更多帮助。