曲径通幽论坛

标题: 多网卡绑定(channel bonding interface) [打印本页]

作者: beyes    时间: 2013-6-25 11:47
标题: 多网卡绑定(channel bonding interface)
在 CentOS 里,使用 bonding 内核模块可以将多个网卡绑定到同一个通道中来,绑定后的这个特殊的网络接口称之为“通道绑定接口”(channel bonding interface)。通道绑定允许将两个或多个网卡绑定到一起,使其看起来像是一张,这么做可以提高传输带宽。也有人将这种绑定称之为“聚合”。

创建一个通道绑定接口,先要在 /etc/sysconfig/network-scripts/ 目录下新建一个名为 ifcfg-bond<N> 的文件,其中 N 是一个数字,比如 0 。这个文件和其它的网卡配置文件大同小异,只不过 DEVICE 一项改为 bond<N> 即可。

下面是一个简单的 ifcfg-bond0 文件的示例:
DEVICE=bond0
IPADDR=192.168.2.100
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
在配置好上面的绑定文件后,对于要绑定的网络接口文件,必须增加 MASTER= 和 SLAVE= 两个配置项。比如这里打算将 eth0 和 eht1 进行绑定,那么就要分别对这两个网卡配置文件进行修改:
eth0 :
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="08:00:27:C5:B7:89"
ONBOOT="yes"
TYPE="Ethernet"
MASTER=bond0
SLAVE=yes
USERCTL=no
eth1 :
DEVICE="eth1"
BOOTPROTO="none"
HWADDR="08:00:27:BC:2F:DC"
ONBOOT="yes"
TYPE="Ethernet"
MASTER=bond0
SLAVE=yes
USERCTL=no

为了最后能够将这绑定接口跑起来,必须保证有 bonding 这个内核模块,比如:
[beyes@centos Documents]$ cat /boot/config-2.6.32-358.6.1.el6.i686 |grep CONFIG_BONDING
CONFIG_BONDING=m

确保在通道绑定接口启动时 bonding 模块被加载,需要在 /etc/modprobe.d 目录下创建一个以 .conf 后缀的配置文件,其内容如下:
$ cat /etc/modprobe.d/ethcond.conf
alias bond0 bonding

经上述的配置后,就可以实现两个网卡的绑定。当然多个网卡的绑定也是可以的,也可以有多个绑定通道,在这种情况下,每个通道都需要对应在 .conf 文件中增加一个配置条目。

可以使用 ifconfig 命令来查看是否绑定成功:
[beyes@centos Documents]$ ifconfig
bond0     Link encap:Ethernet  HWaddr 08:00:27:C5:B7:89  
          inet addr:192.168.2.100  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fec5:b789/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:69 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:10358 (10.1 KiB)

eth0      Link encap:Ethernet  HWaddr 08:00:27:C5:B7:89  
          inet addr:192.168.2.100  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:5557 (5.4 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:BC:2F:DC  
          inet addr:192.168.2.100  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:4801 (4.6 KiB)
如上所示,出现了 bond0 的网络接口,说明绑定成功。

实际上,在 ifcfg-bond<N> 文件中可有一个选项 BONDING_OPTS=“<bongding parameters>” ,它后面可以接一系列的模块调优参数,每个参数使用空格隔开。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2