Fedora 20 下设置多网卡绑定(bonding)
置过这么多linux的bonding,最麻烦的是fedora20的,我觉得主要原因如下:
fedora 20的设计理念有点类似windows,为了提供极致的易用性,所以他们就想用GUI搞掂所有linux下的设置。
fedora 20的gnome深度捆绑了fedora的NetworkManager,这玩意暂时不支持bonding,而且也不见得以后会支持。
fedora 20的网卡不再用类似eth0 , eth1这样的设备符映射,而是用了PCI总线的顺序来命名网卡端口,然后网卡就会变成类似p33p1,p4p1这种比较funny的名字了。
因为最近在测试存储服务器的性能,我的开发机的板载网卡有点吃不消(realtek 8169),所以我就加了张broadcom的5761,并设置bonding.
由于刚才上面列出的三个原因,设置就与其他linux有点不一样了。
第一步,先确定device id.
用这个命令
1
#dmesg |grep eth
找出所有网卡的device id,也许有些网卡不是ethx这种命名的,那就要自己把dmesg弄开来慢慢找吧。
我的结果是这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [ 2.436768] r8169 0000:03:00.0 eth0: RTL8168evl/8111evl at 0xffffc90004e52000, c8:60:00:69:0b:0e, XID 0c900800 IRQ 52 [ 2.436771] r8169 0000:03:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko] [ 2.448224] tg3 0000:02:00.0 eth1: Tigon3 [partno(BCM95761) rev 5761100] (PCI Express) MAC address 00:10:18:b1:f3:9e [ 2.448227] tg3 0000:02:00.0 eth1: attached PHY is 5761 (10/100/1000Base-T Ethernet) (WireSpeed[1], EEE[0]) [ 2.448228] tg3 0000:02:00.0 eth1: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 2.448230] tg3 0000:02:00.0 eth1: dma_rwctrl[76180000] dma_mask[64-bit] [ 3.182441] r8169 0000:03:00.0 eth0: link down [ 3.182473] r8169 0000:03:00.0 eth0: link down [ 3.182484] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 4.572472] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready [ 5.555718] r8169 0000:03:00.0 eth0: link up [ 5.555726] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 198.439411] bonding: bond0: Adding slave eth0. [ 198.537146] r8169 0000:03:00.0 eth0: link down [ 198.537164] r8169 0000:03:00.0 eth0: link down [ 198.537168] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 198.537593] bonding: bond0: making interface eth0 the new active one. [ 198.538071] bonding: bond0: enslaving eth0 as an active interface with an up link. [ 199.940464] bonding: bond0: Adding slave eth1. [ 201.318882] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready [ 201.318913] bonding: bond0: enslaving eth1 as an active interface with an up link. [ 201.607655] r8169 0000:03:00.0 eth0: link up [ 203.739466] tg3 0000:02:00.0 eth1: Link is up at 1000 Mbps, full duplex [ 203.739472] tg3 0000:02:00.0 eth1: Flow control is on for TX and on for RX |
可以看到,我两张网卡分别是eth1 和eth0
第二步.删除fedora 20的network manager配置文件。
在目录/etc/sysconfig/network-script/下,把原来的ifcfg-p4p1和ifcfg-p33p1等文件删除。(这些配置文件如果日后需要,可以通过setting->network重新自动生成)
第三步,按照老办法设置bonding
新建ifcfg-bond0 , ifcfg-eth0 , ifcfg-eth1(注意,这里的eth0和eth1要根据实际设备id而定)
我的三个文件的内容分别如下
ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.4.81
PREFIX=23
GATEWAY=172.16.4.1
DNS1=8.8.8.8
DNS2=172.16.4.6
USERCTL=no
BONDING_OPTS="mode=5 miimon=100"
NM_CONTROLLED=no
其中dns和静态ip,网关之类的需要根据实际情况来设置。重要的参数仅仅是DEVICE和BOOTPROTO.
需要注意的是,bond0是我自己设置的bonding device id,各位自己设置的时候,请根据实际需要设置,如果你这里设置了别的名字,下面几个文件的内容里,需要把我写的bond0都替换成你的实际名字。
1 2 3 4 5 6 7 8 9 | ifcfg-eth0 DEVICE=eth0 TYPE="Ethernet" BOOTPROTO=none ONBOOT="yes" HWADDR=C8:60:00:69:0B:0E MASTER=bond0 SLAVE=yes NM_CONTROLLED=no |
重要参数除了DEVICE和BOOTPROTO,还有NM_CONTROLLED,必须设置成NO,否则fedora 20的networkmanager会来多管闲事。MASTER要设置成bond的device id(我这里用的是bond0)
ifcfg-eth1和0类似,就是DEVICE改成了eth1
需要在/etc/modprobe.d下新建一个文件bond0.conf,用于让系统在启动时加载bonding这个内核组件,文件内容如下
1
alias bond0 bonding
和上面类似,这里的bond0是实际的bonding device id,我这里用的是bond0
最后一步,也是最关键的一步。彻底关闭NetworkManager
运行这两个命令关闭
#service NetworkManager stop
#chkconfig NetworkManager off
再把基本网络服务打开
#chkconfig network on
done,直接重启电脑或者systemctl network.service restart就可以看到效果。
近期评论