分类: LINUX
2010-06-12 02:40:23
网上已经有了不少LINUX下双网卡绑定的配置方法,俺也找着很多方法来配,但是配置过程中出现了很多问题,网上没有找到解决办法。。最后问题终于 解决了,将配置方法提供给广大网友分享。
问题出现的过程:当CentOS以Xen内核启动时,ifconfig可以发现增加了peth0,virbr,xenbr等多种与Xen相关的“网 卡”。其中virbr和xenbr属于虚拟网卡,先不予理会。而peth0则是真正的eth0物理网卡,此时eth0是虚拟网卡。这样在做双网卡绑定时就 会出现问题,如果还是绑定了eth0和eth1,此时拔掉eth0的网线,查看/proc/net/bonding/bond0会依然显示eth0为 “up”状态,如果绑定模式=0,则会丢一半的包(ping一下可以看出来),如果绑定模式=1,则不会切换到eth1,网络中断。
因此,如果要使Xen内核在双网卡绑定下工作正常,必须做到绑定的是两块物理网卡,而Xen内核启动时去使用绑定后的bond0网卡,而不是 eth0,这样才能达到双网卡绑定的目的。
网卡未绑定时,启动顺序如下:
双网卡绑定时,我们所希望的启动顺序如下:
但是再实际操作中还是遇到很多时序问题,比如上面第3步开始是Xen开始重命名物理网卡,增加虚拟网卡,如果这个时候bond0还没有生效,Xen 就会继续去找eth0。大家看过很多双网卡绑定的教程,都是在/etc/rc.local里写入“ifenslave bond0 eth0 eth1”,但rc.local是在启动的最后才执行,就会导致Xen无法使用bond0。
具体的配置方案如下:
一、物理网卡配置:
/etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
MASTER=bond0
SLAVE=yes
/etc/sysconfig/network-scripts/ifcfg-eth1:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
MASTER=bond0
SLAVE=yes
注意:一定要填入MASTER和SLAVE参数,当填入这两个参数后,rc.local里的ifenslave就可以不写了,而且网卡启动时就自动 配置slave成功,可以确保在Xen寻找网卡前绑定成功。
二、虚拟网卡配置:
/etc/sysconfig/network-scripts/ifcfg-bond0:
# Broadcom Corporation
NetXtreme II BCM5708 Gigabit Ethernet
DEVICE=bond0
BOOTPROTO=static
MACADDR=00:22:64:2A:FF:0C
BROADCAST=10.1.255.255
IPADDR=10.1.1.21
NETMASK=255.255.0.0
NETWORK=10.1.0.0
ONBOOT=yes
TYPE=Ethernet
/etc/modprobe.conf:
alias eth0 bnx2
alias eth1 bnx2
alias
scsi_hostadapter cciss
alias scsi_hostadapter1 ata_piix
alias
bond0 bonding
options bond0 miimon=100 mode=1
三、Xen配置文件修改:
/etc/xen/xend-config.sxp:
找到“(network-script network-bridge )”这行
修改为:“(network-script 'network-bridge netdev=bond0')”
表示要求Xen去使用bond0设备。
重新启动系统。。再ifconfig可以看到 eth0,eth1,bond0,pbond0全部启动成功。此时再进行拔插网线试验,可以看到/proc/net/bonding/pbond0里会正 确显示eth0/eth1的up/down状态,持续ping一台主机,任意拔插一条网线不会再丢包。双网卡绑定配置成功。
ps. 如果在目前状态下安装虚拟机系统,网卡类别只能选择Default,默认是使用virbr,可以手工修改配置文件为xenbr,由于虚拟机直接桥接的 pbond0,因此虚拟系统不用做任何设置即可享受双网卡绑定效果。