最近在研究mfs分布式存储系统时考虑到的一个问题,关于文件服务器可能经常出现的网络接口瓶颈问题。

参考网上一些大牛们的资料有些情况下考虑将n个网卡设置为一个虚拟的网卡,具有相同的IP地址且可以实现负载--类似于以前学到过的cisco的etherchannel通道技术。

Etherchannel:把多个物理端口绑在一起,形式一个虚拟的传输通道,这样既可以扩大吞吐量、增大带宽、流量还可以做负载均衡。(注:所绑定的端口带宽速率必须相同,连接到的端口带宽也要相同。)

如果应用在这次做的图片服务器mfs文件系统上应该会不错,目前还未测试。

以下摘自http://bailu.blog.51cto.com/190442/43932的图解:

Etherchannel常见的两种应用
 
案例一:

  

 

  在纯网络设备中的应用,如上图所示。我们在网络中经常遇到流量超负荷的状态,那么这时候我们可以使用Etherchannel来将端口绑定来达到扩展同一传输通道的带宽。如图所示,我们将2950的F0/1与F0/02绑定,对应的7200路由器将F0/2与F0/3绑定,这样我们这两台设备的传输通道的带宽就扩大到了200M。并且当其中一条物理链路断掉,我们的线路仍然可以继续传输数据。
 
案例二:
 
   

这就是传说中的经典的Linux bonding and Cisco Etherchannel应用模式。我们看到图中的CISCO 2950交换机的F0/2与F0/3端口,连接着Linux服务器的两块网卡。这个技术的组合虽然不是同一个厂商研究,也不是两家厂商合作推出的。但是对于实际的应用来说确实是一个完美的组合。
       服务器的访问量是庞大的,对于这种问题 Linux的解决方案是使用 bonding双网卡绑定技术,随时一块网卡的链路故障都不会导致对服务器访问的中断,并且会负载服务器的流量。其实就是 CISCO的 Etherchannel技术的在系统上的应用。这对于企业扩展其服务的高可用性是非常重要的技术应用。
 

很多发行版本都默认不开启bonding,所以还需要重新订制一个内核。
在核心配置的界面中的网络设备驱动开启Bonding driver support

Device Drivers->Network device support->(M)Bonding driver support

编译新的linux 核心。

编辑/etc/modprobe.conf添加一条:

alias bond0 bonding

编辑/etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

修改原先的/etc/sysconfig/network-scripts/ifcfg-eth0 if-eth1
DEVICE=eth0 //eth1
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

重新启动网络或服务器