在现在的网络中,带宽越来越高,线路的带宽可以达到1000m的带宽,但是想要达到整体性能达到1000m的带宽却很难,因为网络i/o限制着,无法整体达到这么高的带宽,甚至有时以前买的服务器网卡带宽不咋地,导致整个网络的带宽无法提升。

   但是linuxbond模块和ifenslave 网卡聚合工具可以解决这一问题。利用bond模块连接内核实现双网卡通信,使用ifenslave 工具做到网卡聚合。

具体操作如下:

1 加载bond模块的支持

查看内核是否加载该模块

Cat   /lib/modules/2.6.18-194.el5/kernel/drivers/net/bonding/bonding.ko

默认是加载好的,如果没得加载的需要重新编译内核

Make menuconfig找到Bondingdriver support这样的对话框

查看模块加载模块 modinfo bonding

filename:      /lib/modules/2.6.18-8.el5/kernel/drivers/net/bonding/bonding.ko
author:         Thomas Davis, tadavis@lbl.gov andmany others
description:    Ethernet Channel Bonding Driver, v3.0.3
version:        3.0.3
license:        GPL
srcversion:     2547D22885C2FDF28EF7D98

如果没有ifenslave 工具,需要自行编译

[root@lin:/home/beinan#]cd /usr/src/linux-2.6.20/Documentation/networking

[root@lin:/home/networking#] gcc -Wall -Wstrict-prototypes -O   -I/usr/src/linux-2.6.20/include ifenslave.c-o ifenslave

[root@lin:/home/networking#]cp ifenslave /sbin/ifenslave

2 配置文件

设置两张网卡设置静态状态,同时不要设置ip地址等信息。如下:

[root@localhost/]# cat  /eth0

# Advanced MicroDevices [AMD] 79c970[PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes

HWADDR=00:0c:29:ef:63:dd

[root@localhost/]# cat  /eth1

# Advanced Micro Devices[AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth1

BOOTPROTO=none

ONBOOT=yes

设置开机加载bonding模块

[root@localhost/]# tail  -3 /etc/modprobe.conf

alias eth1pcnet32

alias bond0bonding   //定义模块别名

options bond0miimon=100 mode=0  // 设置为负载均衡模式

mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
  mode=1表示fault-tolerance (active-backup)提供冗余功能,

[root @test/root]# modprobe modules_name<==直接加载该模块与其相依属性的模块

设置开机加载ifenslave 命令

[root@localhostetc]# cat /etc/rc.d/rc.local

#!/bin/sh

#

touch/var/lock/subsys/local

/sbin/ifenslavebond0 eth0 eth1

重启network 查看网卡情况

[root@localhostetc]# cat /proc/net/bonding/bond0

Ethernet ChannelBonding Driver: v3.4.0 (October 7, 2008)

Bonding Mode:fault-tolerance (active-backup)

Primary Slave:None

Currently ActiveSlave: eth0

MII Status: up

MII PollingInterval (ms): 100

Up Delay (ms): 0

Down Delay (ms):0

Slave Interface:eth0

MII Status: up

Link FailureCount: 0

Permanent HWaddr: 00:0c:29:ef:63:dd

Slave Interface:eth1

MII Status: up

Link FailureCount: 0

Permanent HWaddr: 00:0c:29:ef:63:e7

可以了

问题1

[root@localhost etc]# service networkrestart

Shutting down interface bond0:                             [  OK  ]

Shutting down interface eth0:                              [  OK  ]

Shutting down interface eth1:                              [  OK  ]

Shutting down loopback interface:                          [ OK  ]

Bringing up loopback interface:                            [  OK  ]

Bringing up interface bond0:                               [  OK  ]

Bringing up interface eth0:                                [  OK  ]

Bringing up interface eth1:  Device eth1 has different MAC address thanexpected, ignoring.

                                                         [FAILED]

这是你的eth0 文件中设置了mac 地址,清理掉就好

问题2

出现bond0 有了ip 但是就是ping不同其他ip

解决:

查看bond0 网卡状态 cat  /proc/net/bonding/bond0  发现状态是开启的

查看下ifenslave 相关文件,发现/sbin/ifenslave bond0 eth0eth1 这一句没有执行,只是设置了开机启动。