如何设置 Mellanox/Infiniband 非管理型交换机的主机名/描述?
我想要一种方法来在执行“ibswitches”或“ibnetdiscover”时快速抽象地区分哪些交换机是哪些。
对于服务器中的 HCA,主机名已设置,这很好。只需要一个交换机解决方案。
示例:(所有交换机都显示为以下“SwitchX - Mellanox Technologies”)
[26] "S-e41d2de300756550"[25] # "SwitchX - Mellanox Technologies" lid 6 4xFDR
[27] "S-e41d2de30074bc40"[21] # "SwitchX - Mellanox Technologies" lid 5 4xFDR
在寻找 ibnetdiscover 并能够快速找到哪个 HCA 卡进入哪个交换机时,这将是有益的......
vendid=0x2c9
devid=0x1011
sysimgguid=0xf45214d300514560
caguid=0xf452140300514560
Ca 1 "H-f45214d300514560" # "mgmt2 HCA-2"
[1](f45214d300514560) "S-e41d2dd3007551f0"[15] # lid 11 lmc 0 "SwitchX - Mellanox Technologies" lid 10 4xFDR
答案1
您可以为 ibnetdiscover 指定“--node-name-map FILE”并配置 GUID 和所需名称之间的映射,以便在运行 ibswitches/ibnetdiscover 时显示该名称。
--node-name-map <node-name-map>
Specify a node name map. The node name map file maps GUIDs to more
user friendly names. See file format below.
答案2
在对我们的一个 IB 结构进行故障排除时,我遇到了类似的需求,因为当我需要数据中心的人员重新启动交换机等时,需要进行大量搜索才能确定哪个交换机是哪个交换机。我通过电子邮件向 Mellanox 支持部门询问如何为非托管交换机添加描述性名称,他们向我发送了一个名为“Unmanaged_Switches_Set_NodeDescription_3.4.py”的 Python 脚本,该脚本可用于设置显示在 ibswitches 或 ibnetdiscover 输出中的描述。此描述将保留到交换机重新启动,之后它将恢复为默认描述。我创建了一个文本文件,该脚本可以使用它将 GUID 映射到描述性名称,现在我可以使用单个命令重新标记结构中的每个交换机。
答案3
虽然@alnet 的回答是正确的,我们可以进一步在文件中设置 GUID 到交换机名称的映射,这样就可以始终查找交换机名称,而无需指定命令行标志。在使用发行版提供的实用程序的 EL(CentOS/RHEL)系统上,默认映射文件是/etc/rdma/ib 节点名称映射语法如下(取自手册页):
# Spines
0x0008f10400400e2d "IB1 (Rack 11 spine 1 ) ISR9288 Voltaire sFB-12D"
# GUID Node Name
0x0008f10400411a08 "SW1 (Rack 3) ISR9024 Voltaire 9024D"
0x0008f10400411a28 "SW2 (Rack 3) ISR9024 Voltaire 9024D"
我可能更喜欢使用更简单的开关名称ib-spine01,这可以使解析输出更容易,并允许在托管 IB 交换机的情况下映射到主机名。
请注意,实际的地图文件名由 opensm 管理,因此如果/etc/rdma/opensm.conf有节点名称_映射名称已定义。
答案4
简短的回答是——你不能。
如果您的交换机是非托管的,那么唯一可以访问它的方法是通过 SMP MAD(子网管理协议管理数据报)。
读取这个字符串的MAD被称为“NodeDescription”。根据IB Spec,NodeDescription是只读的。