miimon是bond链路底层检测机制,通过每100ms读取PHY寄存器感知物理断连,确保active-backup模式下秒级主备切换;必须在bond连接创建或修改时通过bond.options设置,修改后需reload并按序启用slave和bond接口。

在 Linux 中用 nmcli 配置网卡链路监听检测(miimon),核心是让 bond 接口能快速感知物理链路断开,从而触发主备切换。它不是独立功能,而是 active-backup 模式下的关键参数,必须和绑定模式配合使用,否则无效。
miimon 是什么、为什么需要它
miimon(MII monitor)是内核级链路检测机制,通过读取网卡 PHY 芯片的 MII 寄存器,每若干毫秒检查一次物理连接状态(比如网线是否拔掉)。相比仅靠上层 ARP 或 ping 检测,它响应更快、更底层,通常能做到 100–500ms 内发现故障并切换,避免业务中断。
不配 miimon 的 active-backup bond 在网线拔掉后可能要等几十秒才切换,因为默认依赖 slower detection(如 carrier timeout),实际不可用。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
配置 miimon 的正确时机和命令
miimon 必须在 bond 主连接创建时或修改时指定,且只能设在 bond 连接上,不能设在 slave 网卡上。推荐值是 100(单位毫秒),平衡检测灵敏度与系统开销。
- 新建 bond 时直接带上 miimon:
nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup bond.options "miimon=100" - 已有 bond 连接需修改:
nmcli connection modify bond0 bond.options "mode=active-backup,miimon=100"注意:修改后必须重载配置:nmcli connection reload - 如果同时指定主网卡(primary),写法为:
nmcli connection modify bond0 bond.options "mode=active-backup,miimon=100,primary=eth0"
验证 miimon 是否生效
激活 bond 后,运行以下命令确认参数已加载:
-
cat /proc/net/bonding/bond0 | grep -E "(Bonding Mode|MIIMonitoring|Primary Slave)"应看到类似:
Bonding Mode: fault-tolerance (active-backup)
MIIMonitoring: 100 ms - 再拔掉主网卡网线,立即执行:
watch -n 0.5 cat /proc/net/bonding/bond0 | grep -A2 "Slave Interface"观察 “MII Status” 字段从 up 变为 down,且 Primary Slave 自动切换到另一张卡,整个过程应在 1 秒内完成。
常见问题提醒
miimon 不起作用,多数因以下原因:
- 没在 bond.options 中设置,而是误加在 ipv4.xxx 或 slave 连接里;
- 修改后未执行
nmcli connection reload,导致新参数未载入; - bond 连接未 up,或 slave 连接未按顺序激活(先 up slave,再 up bond0);
- 网卡驱动不支持 MII 寄存器读取(极少见,多见于部分虚拟化网卡或老旧芯片,可用
ethtool eth0查看 “Link detected” 和 “Supported link modes” 判断)。

















