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

来源:百度文库 编辑:神马文学网 时间:2024/04/28 01:10:45
Linux 下实现网卡高可用性的几种方法(一)

在当前的 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