Chinaunix首页 | 论坛 | 博客
  • 博客访问: 615987
  • 博文数量: 486
  • 博客积分: 10125
  • 博客等级: 上将
  • 技术积分: 5842
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-27 18:34
文章分类

全部博文(486)

文章存档

2011年(52)

2010年(107)

2009年(289)

2008年(38)

我的朋友

分类: LINUX

2010-06-12 02:40:23

http://blog.csdn.net/mushog/archive/2008/12/22/3582900.aspx

CentOS 5.2 Xen内核,双网卡绑定的问题及处理 收藏

 

网上已经有了不少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,这样才能达到双网卡绑定的目的。

 

网卡未绑定时,启动顺序如下:

  1. 启动eth0和eth1
  2. 暂停eth0
  3. 将物理网卡eth0更名为peth0,启动peth0
  4. 增加虚拟网卡eth0

双网卡绑定时,我们所希望的启动顺序如下:

  1. 启动eth0和eth1
  2. 绑定eth0和eth1为bond0
  3. 暂停bond0
  4. 将bond0更名为pbond0,启动pbond0
  5. 增加虚拟绑定网卡bond0

但是再实际操作中还是遇到很多时序问题,比如上面第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,因此虚拟系统不用做任何设置即可享受双网卡绑定效果。


阅读(894) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~