ip link show 输出中缺少物理端口 - switchd 故障
问题
ip link show
仅显示环回端口和管理端口 (ethX)。物理交换机端口(以 swp
开头的接口)在操作系统中不可见。
$ sudo ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 44:38:39:00:25:d7 brd ff:ff:ff:ff:ff:ff
环境
- Cumulus Linux,所有版本
原因
switchd
守护程序设置物理端口。当 switchd
启动失败时,物理端口在操作系统中不可见。
解决方案
通常,当 Cumulus Linux 许可证丢失时,switchd
启动失败。
如果您已安装许可证但 switchd
仍然启动失败,请捕获可能发生的任何错误并生成 cl-support
文件,然后将其发送给 NVIDIA 支持团队。
请按照以下适当的步骤操作。
如果未安装 Cumulus Linux 许可证
如果您未安装有效的许可证,则物理端口无法启动。请使用 cl-license
命令验证您是否已安装许可证。
$ sudo cl-license
No license installed!
联系 NVIDIA 支持团队以获取许可证。
switchd 启动失败,并显示错误:语法错误,解析“thdi_input_port_xon_enables.xe0-xe127”
当交换机上配置的端口容量超过 ASIC 的能力时,会发生此错误。阅读 /etc/cumulus/ports.conf
文件中的标题,了解如何配置 ports.conf
文件的详细信息。如果缺少标题,请运行 cl-img-clear-overlay
命令以将交换机恢复到其原始配置。确保删除 /mnt/persist/etc/cumulus/ports.conf
文件(如果存在)。
错误:“没有连接的单元。BDE 找到 0 个交换机设备。”
此类错误表明内核找不到 Broadcom ASIC。在使用 service switchd start
命令手动启动 switchd
服务后,检查 /var/log/switchd.log
中是否出现以下错误
Platform: Cumulus_Networks_LLC
OS: Unix (Posix)
Boot flags: Cold boot
No attached units.
BDE found 0 switch device(s)
1421276331.445789 2014-01-11 10:33:51 hal.c:169 CRIT No backends found.
1421276331.445857 2014-01-11 10:33:51 switchd.c:632 Switchd exiting.
如果您看到上述错误,请通过运行 lspci -v
命令确认内核未看到 Broadcom ASIC。查找以下输出
01:00.0 Ethernet controller: Broadcom Corporation Device b850 (rev 03)
Subsystem: Broadcom Corporation Device b850
Flags: bus master, fast devsel, latency 0, IRQ 21
Memory at ff600000 (64-bit, non-prefetchable) [size=256K]
Capabilities: [48] Power Management version 3
Capabilities: [50] Vital Product Data
Capabilities: [58] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [ac] Express Endpoint, MSI 00
Kernel driver in use: linux-kernel-bde
如果缺少上述输出,请更换交换机。
如果 switchd 因其他原因启动失败
使用 service switchd start
命令手动启动 switchd
服务。您必须具有 root/sudo 访问权限。
$ sudo service switchd restart
can not execute decode-syseeprom
.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '('/usr/cumulus/bin/decode-syseeprom', '-r')' returned non-zero exit status 1
-m requires a MAC address as an argument
usage: /usr/sbin/switchd [-n] [-d] [-V] [-L BACKEND=LEVEL [BACKEND=LEVEL]] [-t TABLE_NUM] [-s]
如果发生错误
- 保存整个错误消息。
- 下载任何 Cumulus Linux 支持文件。支持文件位于
/var/support/core
中。 - 向 Cumulus 支持部门提交案例并上传上述信息。