Linux 下实现网卡高可用性的几种方法(一)

来源:百度文库 编辑:神马文学网 时间:2024/04/27 17:38:40
在当前的 IBM eServer xSeries 服务器产品中,有很多产品都集成了的千兆以太网卡,另外,在 xSeries 服务器产品的选件中,也提供了多种可以选配的以太网卡的选件,而当一台服务器配置了多块以太网卡时,我们通常都会考虑把多块网卡绑定在一起,做为一个网卡来使用,以此来提高网络的可用性和性能。对于 Windows 操作系统下,Intel 公司提供了 PROSet 工具来实现,Broadcom 公司提供了 BASP (Broadcom Advanced Server Program) 工具来实现,这些我们已经比较熟悉,而在 Linux 操作系统下,我们要如何来实现网卡的高可用性呢?下面,就介绍一下在Linux 下实现网卡高可用性的几种方法。
一、Linux Channel Bonding
目前在各个发行版本的 Linux 中,使用最普遍的内核版本应该就是 2.4.x的版本了,而 Linux Channel Bonding, 在 Linux 2.4 的内核中, 就提供了 bonding 的驱动, 可以支持把多个网络适配器集合在一起, 当作一个网络适配器来使用。
在 Linux 下,网卡的高可用性是通过 MII 或者 ETHTOOL 的状态监测来实现的,所以,需要检查系统中的网络适配器是否支持 MII 或者 ETHTOOL 的连状态监测。可以用命令 "ethtool eth0" 来检查,如果显示的 "Link detected:" 信息与实现的连接状态一致,就没有问题。如果系统中的网络适配器不支持 MII 或者 ETHTOOL 状态监测,当连接失效时,系统就不能检测到,同时,在 bonding 驱动加载时,会记录一条不支持 MII 和 ETHTOOL 的警告信息。
下面以 Red Hat 为例,简单介绍一下实现的基本方法:
首先,我们需要打开内核对 bonding 支持。
设置内核 ‘make menuconfig/xconfig/config‘,在"Network device support"区段中选择"Bonding driver support",建议设置该驱动程序为模块,这样才能支持给驱动传递参数和设置多个bonding设备。
生成并安装新的内核和模块。
Bonding 的设置
我们需要在 /etc/modules.conf 中加入一行,这样才可以在设置了 bond 设置后,系统启动的时候自动加载 bonding 的驱动程序
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
在 bond 中的所有网络适配器的脚本中,都要有 SLAVE 和 MASTER 的定义。例如,如果要让eth0和eth1成为bond0的成员,它们对应的配置文件(ifcfg-eth0和ifcfg-eth1)就要仿照下面的内容进行更改:
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
在脚本文件ifcfg-eth1中,把eth0替换成eth1,同时,根据需要还要加入IP地址方面的信息。如果需要设置另外的 bonding 设备(例如bond1),就把MASTER=bond0改成bond1,这样,该网络适配器就成为bond1的附属设备了。
使 bond 生效
用命令 ‘/etc/rc.d/init.d/network restart‘ 重新启动网络子系统,也可以重新启动系统来使 bond0 生效。
这样,bond 的设置就基本结束了,如果希望了解更详细的信息,可以参考 ‘/usr/src/linux-2.4/Documentation/networking/bonding.txt