3、OpenSM配置入门:OpenSM安装、启动、基本参数解析
好,咱们进入正题。上一章我们把IB网络的物理拓扑和基本概念捋了一遍,这一章就该动手了。OpenSM,全称Open Subnet Manager,说白了就是IB网络里的「大脑」。没有它,你的交换机就是一堆废铁,端口之间根本不知道该怎么通信。
我个人习惯,学一个新工具,先把它跑起来,再慢慢调参数。别一上来就啃文档,那太枯燥。咱们先装一个,启动看看效果,然后我再带你过一遍那些最常用的参数。
3.1 OpenSM的安装
安装OpenSM其实很简单。主流Linux发行版的包管理器里都有。我最早接触IB网络是在CentOS 6的年代,那时候还得编译源码,现在方便多了。
在RHEL/CentOS/Fedora系上:
yum install opensm -y
# 或者 dnf install opensm -y
在Ubuntu/Debian系上:
apt-get install opensm -y
装完之后,你可以在 /etc/opensm/ 目录下找到默认的配置文件。嗯,这里要注意,不同发行版路径可能略有差异,但大体一致。
opensm -V。不同版本的默认行为有细微差别,尤其是路由算法的默认值。我遇到过几次因为版本差异导致多路径没生效的坑,后面会细说。
3.2 启动OpenSM
启动方式有两种:前台调试模式和后台守护进程模式。
前台模式(调试用):
opensm -g 0x98039b03009b3b3e -B
这里的 -g 参数指定的是GUID,说白了就是告诉OpenSM用哪个端口来管理子网。你可以在 ibstat 的输出里找到端口GUID。-B 表示前台运行,日志直接打印到终端。
后台模式(生产用):
systemctl start opensm
systemctl enable opensm # 开机自启
我个人习惯,第一次部署时一定先用前台模式跑一遍。为什么?因为能看到启动过程中的所有日志,有没有报错一目了然。我曾经有一次,交换机固件版本不兼容,后台模式启动看起来一切正常,但流量就是不通。切到前台一看,日志里清清楚楚写着「Unsupported attribute」。
3.3 核心参数解析
OpenSM的参数非常多,但80%的场景下你只需要关注下面这几个。我把它们分成三类:路由相关、日志相关、性能相关。
3.3.1 路由算法参数
| 参数 | 默认值 | 说明 |
|---|---|---|
-R 或 --routing-engine |
ftree | 指定路由引擎。可选值:ftree, updn, lash, dor, torus-2QoS等 |
--port-profile-mode |
disabled | 启用端口配置文件模式,用于精细控制多路径 |
--root |
无 | 指定根节点GUID,用于updn算法 |
这里重点说一下 -R ftree。这是最常用的路由引擎,专门为Fat-Tree拓扑优化。说白了,它能把多路径负载均衡做得很好。但有个前提——你的拓扑必须是规整的Fat-Tree。如果拓扑不规则,比如缺了几根线,ftree的表现可能还不如简单的updn。
我遇到过最典型的一个案例:某客户机房,IB交换机之间有一根线松了,导致拓扑不对称。ftree算出来的路径有一半是错的,流量全挤在一条链路上。后来我换成 -R updn,虽然多路径利用率不是最优,但至少所有路径都通。所以,选算法之前,先确认你的拓扑是不是规整的。
3.3.2 日志与调试参数
| 参数 | 默认值 | 说明 |
|---|---|---|
-l 或 --log-file |
/var/log/opensm.log | 日志文件路径 |
-e 或 --syslog |
disabled | 将日志输出到syslog |
--log-level |
0 (ERROR) | 日志级别:0=ERROR, 1=INFO, 2=VERBOSE, 3=DEBUG |
调试的时候,我一般这么用:
opensm -g 0x98039b03009b3b3e -B --log-level 2
这样能看到每个端口是怎么被路由的,哪条路径被选中了。但生产环境千万别开这么高,日志量会爆炸。我见过有人把DEBUG日志开了三天,结果磁盘满了,OpenSM直接挂了。
3.3.3 性能与重配置参数
| 参数 | 默认值 | 说明 |
|---|---|---|
--sweep-interval |
5秒 | 子网扫描间隔,单位秒 |
--max-wire-sweeps |
3 | 重配置前最大扫描次数 |
--idle-timeout |
5秒 | 空闲超时,超过此时间无变化则停止扫描 |
这里有个经验值:如果你的网络很稳定,很少变动,可以把 --sweep-interval 调大到30秒甚至60秒,减少CPU开销。但如果你的环境经常有节点上下线(比如HPC集群的作业调度),建议保持默认5秒,否则新节点要等很久才能被识别。
3.4 一张图看懂OpenSM工作流程
下面这张SVG图,是我自己画的,把OpenSM从启动到稳定运行的整个流程串起来了。你一看就明白。
这张图里,我特意把参数的影响点标在了右侧。你看,从启动到稳定,每个阶段都有对应的参数在起作用。我个人建议,刚开始接触时,先别动参数,用默认值跑通一次。然后慢慢调,每次只改一个参数,观察效果。
3.5 实战:一个最小化启动示例
假设你有一台机器,HCA的GUID是 0x98039b03009b3b3e,拓扑是两层的Fat-Tree。我会这样启动:
opensm -g 0x98039b03009b3b3e -B --log-level 1 -R ftree
启动后,你会看到类似这样的输出:
OpenSM 5.4.1
Subnet Up: 0x2c90300f4c5a0a00
Routing Engine: FTREE
Sweeping...
Discovered 4 switches, 32 HCAs
Path distribution: 128 paths computed
Subnet manager is master
看到「Subnet manager is master」就说明成功了。这时候你可以用 ibnetdiscover 查看拓扑,用 ibroute 查看具体路径。
-g 参数,结果OpenSM自动选了第一个可用的端口。那个端口恰好连的是管理网,不是IB数据网。结果它扫描了半天,一个交换机都没发现。所以,-g 参数一定要明确指定,别偷懒。
好了,这一章的内容就到这里。OpenSM的安装、启动和基本参数,你已经有了一个完整的认识。下一章我们会深入多路径路由的配置细节,到时候会用到今天讲的这些参数。