bonding模块必须开机自动加载且BONDING_OPTS须写入ifcfg-bond0,slave网卡需禁用IP并设为MASTER/SLAVE,验证须查/proc/net/bonding/bond0而非仅ifconfig。

确认 bonding 模块已加载且开机生效
没加载 bonding 模块,bond0 根本创建不了——这不是配置问题,是前提缺失。别只看 lsmod | grep bonding 有输出就以为 OK,临时 modprobe bonding 加载的模块重启即丢。
Debian/Ubuntu 系统:执行 echo "bonding" >> /etc/modules
RHEL/CentOS 7+:新建 /etc/modules-load.d/bonding.conf,内容仅一行 bonding
旧版 CentOS 6:可写入 /etc/modprobe.d/bonding.conf,但优先用 modules-load.d 方式
验证:重启后运行 lsmod | grep bonding,有输出且不报错才算稳
BONDING_OPTS 必须显式写在 ifcfg-bond0 里
很多教程把 mode 和 miimon 放进 /etc/modprobe.d/ 下的独立文件,这在 modern systemd 网络管理下极易失效。RHEL/CentOS 7+ 和较新 Debian 必须直接在 ifcfg-bond0 中用 BONDING_OPTS 定义参数,否则 network service 启动时无法准确注入。
BONDING_OPTS="mode=1 miimon=100" 是主备模式最稳妥写法BONDING_OPTS="mode=4 lacp_rate=1" 是 LACP 必须写法,缺 lacp_rate=1(即 fast LACP)会导致 bond0 卡在 down 状态miimon=100 是平衡点:设成 50 容易误判链路抖动,设成 500 则故障切换延迟明显
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
slave 网卡必须禁用 IP 且声明 MASTER/SLAVE
这是导致 SSH 断连、路由混乱、bond0 获取不到 IP 的最高发原因。只要 eth0 或 eth1 还保留 IPADDR 或 BOOTPROTO=static,系统就会给它们各自分配地址,和 bond0 的 IP 冲突。
每个 slave 配置(如 /etc/sysconfig/network-scripts/ifcfg-eth0)中必须包含:BOOTPROTO=noneMASTER=bond0SLAVE=yesONBOOT=yes
删掉所有 IPADDR、NETMASK、GATEWAY、DEFROUTE 行
建议加上 USERCTL=no,防止普通用户误启停物理网卡
验证:运行 ifconfig,只有 bond0 显示 inet,eth0 和 eth1 的 inet 行应完全消失
验证不能只看 ifconfig,要看 /proc/net/bonding/bond0
ifconfig bond0 显示 UP 只说明接口起来了,不代表绑定成功或链路健康。真正状态得查内核暴露的实时视图:
运行 cat /proc/net/bonding/bond0,重点看三处:Slave Interface: 后面是否列出你配的 eth0、eth1Current HW addr: 是否与 bond0 的 MAC 一致(mode=1 下必须一致)MII Status: 是否为 up,以及 Link Failure Count 是否为 0
若显示 Aggregator ID: N/A 或 State: No Agg,大概率是交换机端没配 LACP(mode=4)或没启用端口聚合(mode=0/2)
mode 选型不是纯看文档描述,而是看交换机能力是否匹配。比如 mode=4 要求交换机必须开 LACP 并做 channel-group;mode=0 直连普通交换机反而会丢包;mode=1 最省心但带宽不叠加。实际部署前,先确认交换机型号和当前端口配置,再反推该用哪个 mode —— 这一步跳过,后面全是白忙。

















