在两台服务器之间设置点对点 infiniband 连接时,我运行了命令ibportstate -G [my port GUID] disable
。现在,当我尝试进行端口轮询或对设备执行任何操作时,我收到以下错误。
[user@server1 ~]$ perfquery -vvv -ddd
ibwarn: [16059] umad_init: umad_init
ibwarn: [16059] umad_open_port: ca (null) port 0
ibwarn: [16059] umad_get_cas_names: max 32
ibwarn: [16059] umad_get_cas_names: return 1 cas
ibwarn: [16059] resolve_ca_name: checking ca 'qib0'
ibwarn: [16059] resolve_ca_port: checking ca 'qib0'
ibwarn: [16059] umad_get_ca: ca_name qib0
ibwarn: [16059] umad_get_ca: opened qib0
ibwarn: [16059] resolve_ca_port: checking port 0
ibwarn: [16059] resolve_ca_port: checking port 1
ibwarn: [16059] resolve_ca_port: checking port 0
ibwarn: [16059] resolve_ca_port: checking port 1
ibwarn: [16059] resolve_ca_name: phys found -1 on (null) port 0
ibwarn: [16059] umad_open_port: opening mthca0 port 1
ibwarn: [16059] mad_rpc_open_port: can't open UMAD port ((null):0)
perfquery: iberror: [pid 16059] main: failed: Failed to open '(null)' port '0'
与 infiniband 设备交互的任何命令都会以完全相同的输出进行响应,无一例外。端口的物理状态只是卡住。
[user@server1 ~]$ cat /sys/class/infiniband/qib0/ports/1/phys_state
3: Disabled
这是另一台服务器上的状态,所以我知道它至少正在尝试。
[user@server0 ~]$ cat /sys/class/infiniband/qib0/ports/1/phys_state
2: Polling
我已经重新启动,重新启动opensm,甚至拔出并更换了卡。该对中的第二台计算机正在托管我无法很快离线的服务,因此我无法切换 HCA。
我在各个网站上阅读了一些描述类似问题的其他线程,但没有一个在该线程中得到解决。
QLogic IBA7322
CentOS 7,内核3.10.0-514.26.2.el7.x86_64
infiniband-diags 1.6.5
答案1
我通过切换电缆解决了这个问题,即使我使用的电缆事先可以工作。然后我又切换回来,它又起作用了。我曾尝试拔下两端的电缆并重新连接,但没有成功。我知道 QSFP 和 SFP DAC 电缆和可插拔设备上有一些电气位,但我不知道它们是如何工作的,所以我不能确定出了什么问题。