如果我在命令行上使用手动设置(在
kernel instructions之后),我可以正确设置我的网络连接:
# modprobe bonding mode=4 miimon=100 # ifconfig bond0 up # ip link set eno1 master bond0 # ip link set eno2 master bond0
为了记录,使用的交换机是Cisco Nexus 2248,我没有指定IP地址,因为还有一个额外的802.1q层(配置文件中是否存在对该问题没有影响).
问题是我无法创建正确的/ etc / network / interfaces文件以在启动时自动完成.不同版本的ifenslave软件包之间存在很多混淆,特别是它的文档,以及如何在使用ifup时避免竞争条件.无论在以前的Ubuntu版本中运行的是什么,都不再适用了.如果systemd让事情变得更加混乱,我也不会感到惊讶.基本上,无论我尝试什么,我的脚本在启动时都会卡住,我必须等待一到五分钟才能完成启动过程.
这是我能做到的最好的:
auto lo iface lo inet loopback allow-bond0 eno1 iface eno1 inet manual bond-master bond0 allow-bond0 eno2 iface eno2 inet manual bond-master bond0 auto bond0 iface bond0 inet manual bond-mode 4 bond-slaves eno1 eno2 bond-miimon 100
在启动时将bond0停顿一分钟(因为bond0正在等待至少一个从属设备被启动,这种情况从未发生过,所以它超时),但是一旦系统启动,使用ifup eno1工作并且bond0开始正常工作.
如果我指定auto eno1,那么启动过程会停止五分钟,bond0永远不会正常启动,并且尝试使用ifdown eno1会因为等待某些锁定在/ run / network / where(无法记住确切的文件,并已经经常重新启动这台机器),这似乎表明是的,我遇到了竞争条件,ifup与eno1永远陷入困境.
有没有人在最新的Ubuntu上有工作解决方案?
我有一个在16.04(linux 4.4.0-22)上运行的工作设置非常相似.
原文链接:/ubuntu/347979.html除了LACP率和1G(eno1)与10G SFP(eno49)之外,最大的差异似乎是使用auto bond0.
# /etc/modprobe.d/bonding.conf alias bond0 bonding options bonding mode=4 miimon=100 lacp_rate=1
其中一些选项可能是多余的.
# /etc/network/interfaces auto eno49 iface eno49 inet manual bond-master bond0 auto eno50 iface eno50 inet manual bond-master bond0 auto bond0 iface bond0 inet static address 10.0.0.1 netmask 255.255.255.0 bond-slaves eno49 eno50 bond-mode 4 bond-miimon 100 bond-lacp-rate 1
在启动过程中没有看到任何档位.执行systemctl重新启动网络会产生短暂的等待几秒钟,但仅此而已.
$systemd-analyze Startup finished in 2.344s (kernel) + 1.658s (userspace) = 4.002s