F.6. 添加网络设备

红帽企业 Linux 添加网络设备的方法已经有了很大的变化。这是因为 2.4 内核被迁移到了 2.6 内核。

第 F.6.1 节详细描述了如何把 qeth 设备加入到已经存在的红帽企业 Linux 系统中。安装其他 zSeries 网络接口可以参看 第 F.6.2 节

F.6.1. 添加 qeth 设备

首先,确定 qeth 设备驱动模块是否已经被加载。

# lsmod | grep qeth
qeth                  135240  0
qdio                   45360  2 qeth
ipv6                  303984  13 qeth
ccwgroup               15104  1 qeth

如果 lsmod 命令的输出显示这个模块还没有被加载,你需要运行 modprobe 命令去加载它们。

# modprobe qeth

然后,建立一个 qeth 组设备。

# echo <read_device_bus_id>,<write_device_bus_id>,<data_device_bus_id>
  > /sys/bus/ccwgroup/drivers/qeth/group

由于这个命令比较长,它被分成了两行.

在以下的例子中,read_device_bus_id 是 0.0.0600,write_device_bus_id 是 0.0.0601,data_device_bus_id 是 0.0.0602。这个设备是一个 z/VM 虚拟网卡,它所被分配的 IP 地址是 192.168.70.69。

# echo 0.0.0600,0.0.0601,0.0.0602 > /sys/bus/ccwgroup/drivers/qeth/group

然后,检查 qeth 组设备是否已被正确地建好。

# ls /sys/bus/ccwgroup/drivers/qeth
0.0.0600  0.0.09a0  group  notifier_register

你可以添加一个端口名。首先,你需要检查是否需要一个端口名:

# cat /sys/bus/ccwgroup/drivers/qeth/0.0.0600/portname
no portname required

应答显示你不需要提供端口名。

添加一个端口名,首先要检查设备不在线,然后运行以下命令:

注记注记
 

在添加端口名的时候,设备必须是不在线的。

# echo <portname> > /sys/bus/ccwgroup/drivers/qeth/0.0.0600/portname

然后,让系统在线。

# echo 1 /sys/bus/ccwgroup/drivers/qeth/0.0.0600/online

接下来检查设备的状态:

# cat /sys/bus/ccwgroup/drivers/qeth/0.0.0600/online
1

返回值是"1"表示设备在线,'0'表示设备不在线。

检查这个设备被分配的接口名。

# cat /sys/bus/ccwgroup/drivers/qeth/0.0.0600/if_name
eth1

改变 if_name 的值,可以运行以下命令:

# echo <new_if_name> > /sys/bus/ccwgroup/drivers/qeth/0.0.0600/if_name

根据你的系统设置情况以及你所需要的功能,你可能会设置其他一些参数和特性。

如果需要了解这些功能如何工作,请参阅http://oss.software.ibm.com/developerworks/opensource/linux390/docu/lx26apr04dd01.pdf (Linux for zSeries and S/390 Device Drivers,Features,and Commands).

现在,你需要为你的新接口建立一个配置文件。这个配置文件被存放在 /etc/sysconfig/network-scripts/

这个网络配置文件的命名规则是: ifcfg-<device>,其中 "device" 是在早些时候建立的 qeth 组中的 if_name 中相应的值。在这个例子中是 eth1

如果有一个相似设备的配置文件已经在以前建立了,一个简单的办法是拷贝这个文件并起一个新的名字。

# cd /etc/sysconfig/network-scripts
# cp ifcfg-eth0 ifcfg-eth1

如果没有相似的设备,你必须自己建立一个。可以把 ifcfg-eth0 的例子当成一个模板。

/etc/sysconfig/network-scripts/ifcfg-eth0
# IBM QETH
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:06:29:FB:5F:F1
IPADDR=9.12.20.136
NETMASK=255.255.255.0
ONBOOT=yes
NETTYPE=qeth
SUBCHANNELS=0.0.09a0,0.0.09a1,0.0.09a2
TYPE=Ethernet

编辑新的 ifcfg-eth1 文件。

删去 HWADDR 行。

根据你的 ccw 组的 if_name 文件,修改 DEVICE 的值。

根据你的新的接口的 IP 地址修改 IPADDR 的值。

如果需要,修改 NETMASK 的值。

如果你需要你的新接口系统在启动的时候被激活,设置 ONBOOT 为 yes

检查 SUBCHANNELS 的值和你的 qeth 设备的硬件地址一致。

/etc/sysconfig/network-scripts/ifcfg-eth1
# IBM QETH
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.70.87
NETMASK=255.255.255.0
ONBOOT=yes
NETTYPE=qeth
SUBCHANNELS=0.0.0600,0.0.0601,0.0.0602
TYPE=Ethernet

每个 qeth 设备都需要在 /etc/modprobe.conf 中定义一个别名。编辑这个文件,为你的新接口加入一个别名。

/etc/modprobe.conf
alias eth0 qeth
alias eth1 qeth
options dasd_mod dasd=0.0.0100,0.0.4b19

现在你可以使用新接口了。

# ifup eth1

检查接口的状态:

# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 02:00:00:00:00:01
          inet addr:192.168.70.87  Bcast:192.168.70.255  Mask:255.255.255.0
          inet6 addr: fe80::ff:fe00:1/64 Scope:Link
          UP BROADCAST RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:23 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:644 (644.0 b)  TX bytes:264 (264.0 b)

注意在 ifconfig 命令结果输出的第一行的 HWaddr,在它后面的值必须被加入到 ifcfg-eth1 文件中。加入如下一行到那个文件。

HWADDR=02:00:00:00:00:01

现在,ifcfg-eth1 会和如下的文件非常象:

# IBM QETH
DEVICE=eth1
HWADDR=02:00:00:00:00:01
BOOTPROTO=static
IPADDR=192.168.70.69
NETMASK=255.255.255.0
ONBOOT=yes
NETTYPE=qeth
SUBCHANNELS=0.0.0600,0.0.0601,0.0.0602
TYPE=Ethernet

检查新接口的路由:

# route
Kernel IP routing table
Destination     Gateway         Genmask        Flags Metric Ref  Use Iface
192.168.70.0    *               255.255.255.0  U     0      0      0 eth1
9.12.20.0       *               255.255.255.0  U     0      0      0 eth0
169.254.0.0     *               255.255.0.0    U     0      0      0 eth1
default         pdlrouter-if5.p 0.0.0.0        UG    0      0      0 eth0

使用 ping 命令去 ping 网关来检查你的设置:

# ping -c 1 192.168.70.8
PING 192.168.70.8 (192.168.70.8) 56(84) bytes of data.
64 bytes from 192.168.70.8: icmp_seq=0 ttl=63 time=8.07 ms

如果缺省的路由信息被改变了,你必须更新相应的 /etc/sysconfig/network

F.6.2. 添加网络设备快速指南

为 zSeries 添加一个网络接口要进行一些基本的操作。

以下的章节提供了关于添加每个 zSeries 网络设备驱动的基本信息。

F.6.2.1. LCS 设备驱动

LAN 通道台(LCS)设备驱动程序支持 OSA-2 Ethernet/Token Ring,OSA-Express Fast Ethernet 的 non-QDIO 模式和 OSA-Express High Speed Token Ring 的 non-QDIO 模式。对于 z990,LCS 驱动也支持 Gigabit Ethernet 的 non-QDIO 模式(包括 1000Base-T)。

根据被加入的接口类型,LCS 驱动分配以下两个接口名中的一个: eth<n> 分配给 OSA-Express Fast Ethernet Gigabit Ethernet,tr<n> 分配给 Token Ring。其中 <n> 是一个唯一的整数值来区分不同的设备。<n> 为 0 代表此种类型中的第一个设备,1 为第 2 个设备,2 为第 3 个设备,以此类推。

  • 加载设备驱动程序

    # modprobe lcs
  • 创建组设备。

    # echo <read_device_bus_id>,<write_device_bus_id> 
    > /sys/bus/ccwgroup/drivers/lcs/group

    由于这个命令比较长,它被分成了两行.

  • 设置这个设备。

    OSA卡可以为一个单独的 CHPID 提供多达16个端口。在缺省的情况下,LCS 组设备使用端口 0。可以使用如下相似的命令为它分配其他的端口:

    # echo <portno> > /sys/bus/ccwgroup/drivers/lcs/<device_bus_id>/portno

    想了解更多的关于配置 LCS 设备驱动程序的信息,可以参阅以下内容:

    http://oss.software.ibm.com/developerworks/opensource/linux390/docu/lx26apr04dd01.pdf (Linux for zSeries and S/390 Device Drivers, Features, and Commands)

  • 设置设备在线:

    # echo 1 /sys/bus/ccwgroup/drivers/lcs/<read_device_bus_id>/online
  • 定义别名。

    根据添加接口的类型而定,在 /etc/modprobe.conf 文件中添加和以下其中一行类似的内容:

    eth<n> alias lcs
    tr<n> alias lcs
  • 建立一个配置脚本。

    /etc/sysconfig/network-scripts/ 中创建一个文件,使用类似以下的名字:

    ifcfg-eth<n>
    ifcfg-tr<n>

    该文件应该类似如下:

    /etc/sysconfig/network-scripts/ifcfg-eth0
    # IBM LCS
    DEVICE=eth0
    BOOTPROTO=static
    HWADDR=00:06:29:FB:5F:F1
    IPADDR=9.12.20.136
    NETMASK=255.255.255.0
    ONBOOT=yes
    NETTYPE=lcs
    SUBCHANNELS=0.0.09a0,0.0.09a1
    PORTNAME=0
    TYPE=Ethernet

    根据添加接口的类型而定,DEVICE 参数应该是以下之一:

    DEVICE=eth<n>
    DEVICE=tr<n>
  • 激活这个设备。

    根据添加接口的类型而定,使用一种 ifup 命令:

    # ifup eth<n>
    # ifup tr<n>

F.6.2.2. 使用 QETH 设备驱动

QETH 网络设备驱动支持: zSeries HiperSockets,OSA-Express Fast Ethernet,Gigabit Ethernet (including 1000Base-T),High Speed Token Ring,ATM features (running Ethernet LAN emulation)的 QDIO 模式。

根据加入接口的类型,QETH 驱动分配以下三个接口名中的一个:

  • hsi<n> :HiperSocket 设备

  • eth<n> :OSA-Express Fast Ethernet and Gigabit Ethernet

  • tr<n> :Token Ring

其中 <n> 是一个唯一的整数值来区分不同的设备。<n> 为 0 代表此种类型中的第一个设备,1 为第 2 个设备,2为第 3 个设备,以此类推。

  • 加载设备驱动程序

    # modprobe qeth
  • 创建组设备。

    # echo <read_device_bus_id>,<write_device_bus_id>,<data_device_bus_id>
      > /sys/bus/ccwgroup/drivers/qeth/group

    由于这个命令比较长,它被分成了两行.

  • 设置这个设备。

    关于更多配置 QETH 驱动的信息,可以参阅如下内容:

    http://oss.software.ibm.com/developerworks/opensource/linux390/docu/lx26apr04dd01.pdf (Linux for zSeries and S/390 Device Drivers, Features, and Commands)

  • 设置设备在线:

    # echo 1 /sys/bus/ccwgroup/drivers/qeth/<read_device_bus_id>/nline
  • 定义别名。

    根据添加接口的类型而定,在 /etc/modprobe.conf 文件中添加和以下其中一行类似的内容:

    hsi<n> alias qeth
    eth<n> alias qeth
    tr<n> alias qeth
  • 建立一个配置脚本。

    /etc/sysconfig/network-scripts/ 中创建一个文件,使用类似以下的名字:

    ifcfg-hsi<n> 
    ifcfg-eth<n>
    ifcfg-tr<n>

    文件应该象:

    /etc/sysconfig/network-scripts/ifcfg-eth0
    # IBM QETH
    DEVICE=eth0
    BOOTPROTO=static
    HWADDR=00:06:29:FB:5F:F1
    IPADDR=9.12.20.136
    NETMASK=255.255.255.0
    ONBOOT=yes
    NETTYPE=qeth
    SUBCHANNELS=0.0.09a0,0.0.09a1,0.0.09a2
    TYPE=Ethernet

    根据添加接口的类型而定,DEVICE 参数应该类似以下之一:

    DEVICE=hsi<n>
    DEVICE=eth<n>
    DEVICE=tr<n>
  • 激活这个设备。

    根据添加接口的类型而定,使用一种 ifup 命令:

    # ifup hsi<n>
    # ifup eth<n>
    # ifup tr<n>

F.6.2.3. 使用 CTC 设备驱动

通道对通道 (CTC) 的连接是一种典型的主机间的高速连接。CTC 设备驱动可以用来建立点对点的 TCP/IP 或两个 Linux for zSerier 和 Linux for S/390 之间的 tty 连接,或者是一个 Linux for zSerier 和 S/390 和其他主机操作系统 (如 z/OS,OS/390,z/VM,或 z/VSE) 之间的 tty 连接。

CTC 驱动分配一个如下的基础接口名:

ctc<n>

其中 <n> 是一个唯一的整数值来区分不同的设备。<n> 为 0 代表此种类型中的第一个设备,1 为第 2 个设备,2为第 3 个设备,以此类推。

  • 加载设备驱动程序

    # modprobe ctc
  • 创建组设备。

    # echo <read_device_bus_id>,<write_device_bus_id> 
    > /sys/bus/ccwgroup/drivers/ctc/group

    由于这个命令比较长,它被分成了两行.

  • 设置这个设备。

    设置协议:

    # echo <protocol> /sys/bus/ccwgroup/drivers/ctc/<device_bus_id>/protocol

    其中 <protocol> 是0,1,2,或 3。

    0 — 这个协议提供了与其他非 OS/390,z/OS 设备(如 VM TCP service 主机) 的兼容性。这是缺省设置。

    1 —这个协议提供了增强的用于检查其他 Linux 主机的程序包

    2 —这个协议提供了与其他 Linux 主机的一个基于 CTC 的联接

    3 — 这个协议提供了与其他 OS/390 或 z/OS 设备的兼容性。

    关于更多 CTC 驱动的配置信息,请参阅:

    http://oss.software.ibm.com/developerworks/opensource/linux390/docu/lx26apr04dd01.pdf (Linux for zSeries and S/390 Device Drivers, Features, and Commands)

  • 设置设备在线:

    # cho 1 /sys/bus/ccwgroup/drivers/lcs/<read_device_bus_id>/online
  • 定义别名。

    根据添加接口的类型而定,在 /etc/modprobe.conf 文件中添加和以下类似的内容:

    ctc<n> alias ctc
  • 建立一个配置脚本。

    /etc/sysconfig/network-scripts/ 中创建一个文件,使用类似以下的文件名:

    ifcfg-ctc<n>

    该文件应该类似如下:

    /etc/sysconfig/network-scripts/ifcfg-ctc0
    # IBM CTC
    DEVICE=ctc0
    BOOTPROTO=static
    IPADDR=192.168.70.136
    GATEWAY=172.16.70.136
    NETMASK=255.255.255.255
    ONBOOT=yes
    SUBCHANNELS=0.0.1b00,0.0.1b01
    NETTYPE=ctc
    CTCPROT=0
    TYPE=CTC
  • 激活这个设备。

    根据添加接口的类型而定,使用一种 ifup 命令:

    # ifup ctc<n>

F.6.2.4. 使用 IUCV 设备驱动

Inter-User Communication Vehicle (IUCV) 是一个 VM 间通信的工具,它允许作为一个 VM 访问者的程序和另外一个 VM 访问者或者它自己使用一个控制程序来交换信息。Linux for zSeries and S/390 IUCV 设备驱动是一个网络设备驱动,它使用 IUCV 连接运行在其他 VM 用户 ID 的 Linux 访问者或是连接一个 Linux 访问者和另一个 VM 的访问者,比如一个运行 TCP/IP 服务的机器。

IUCV 驱动程序分配类似以下的基准接口名称:

iucv<n>

其中 <n> 是一个唯一的整数值来区分不同的设备。<n> 为 0 代表此种类型中的第一个设备,1 为第 2 个设备,2为第 3 个设备,以此类推。

  • 加载设备驱动程序

    # modprobe netiucv
  • 创建 IUCV 设备。

    # echo <peer_id> > /sys/bus/iucv/drivers/netiucv/connection

    <peer_id> 的值是你想联接的 VM 访问者的访问者 ID。IUCV 设备驱动把这个 ID 看做为大写字母,通常是 TCPIP。

    这会创建类似以下的 sysfs 结构:

    cat /sys/bus/iucv/drivers/netiucv/netiucv<n>

    其中 <n> 是一个唯一的整数值来区分不同的设备。<n> 为 0 代表此种类型中的第一个设备,1 为第 2 个设备,2为第 3 个设备,以此类推。

  • 设置这个设备。

    若需要,设置最大缓存大小。

    # echo <value> > /sys/bus/iucv/drivers/netiucv/netiucv<n>/buffer
      

    这里的 <value> 是你要设置的字节数量。如果你指定的值超出了有效范围,该命令会被忽略。

    有效的最大缓存大小的允许设定范围是由 MTU 的设定决定的。它一定要在 <最小 MTU + 头的大小> 和 <最大 MTU + 头的大小> 的范围之间。它的头空间通常是 4 个字节。最大缓存大小的缺省设置是 32768 字节(32 KB)。

    关于更多配置 IUCV 驱动的信息,可以参阅如下内容:

    http://oss.software.ibm.com/developerworks/opensource/linux390/docu/lx26apr04dd01.pdf (Linux for zSeries and S/390 Device Drivers, Features, and Commands)

  • 定义别名。

    根据添加接口的类型而定,在 /etc/modprobe.conf 文件中添加和以下类似的内容:

    iucv<n> alias netiucv
  • 建立一个配置脚本。

    /etc/sysconfig/network-scripts/ 中创建一个文件,使用类似以下的文件名:

    ifcfg-iucv<n>

    文件应该象:

    /etc/sysconfig/network-scripts/ifcfg-iucv0
    # IBM IUCV
    DEVICE=iucv0
    BOOTPROTO=static
    IPADDR=192.168.70.136
    GATEWAY=172.16.70.136
    NETMASK=255.255.255.255
    ONBOOT=yes
    NETTYPE=iucv
    PEERID=TCPIP
    TYPE=IUCV
  • 激活这个设备。

    根据添加接口的类型而定,使用类似以下的 ifup 命令:

    # ifup iucv<n>