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]

如果发生错误

  1. 保存整个错误消息。
  2. 下载任何 Cumulus Linux 支持文件。支持文件位于 /var/support/core 中。
  3. 向 Cumulus 支持部门提交案例并上传上述信息。