Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

25.3. 添加网络设备

网络设备驱动程序模块自动由 udev 载入。
可动态或者永久在 IBM System z 中添加网络接口。
  • 动态
    1. 载入设备驱动程序
    2. 从忽略的设备列表中删除网络设备。
    3. 创建组设备。
    4. 配置该设备。
    5. 在线设置设备。
  • 永久
    1. 创建配置脚本。
    2. 激活该接口。
下面的部分为每个 IBM System z 网络设备驱动程序的每个任务提供基本信息。第 25.3.1 节 “添加 qeth 设备” 描述如何在现有 Red Hat Enterprise Linux 实例中添加 qeth 设备。第 25.3.2 节 “添加 LCS 设备” 描述如何在 Red Hat Enterprise Linux 现有实例中添加 lcs 设备。第 25.3.3 节 “映射子通道和网络设备名称” 描述如何永久保留网络设备名称。第 25.3.4 节 “为网络 Root 文件系统配置 System z 网络设备” 描述如何将网络设备配置为使用只能通过网络访问的 root 文件系统。

25.3.1. 添加 qeth 设备

qeth 网络设备驱动程序支持 System z QDIO 模式、HiperSocket、z/VM 客体 LAN 以及 z/VM VSWITCH 的 OSA 快速特性。
根据所添加接口的类型,qeth 设备驱动程序分配以下三个基本接口名之一:
  • hsin 用于 HiperSocket 设备
  • hsin 用于以太网特性
n 的值是一个唯一的整数值来区分不同的设备。n 为 0 代表此种类型中的第一个设备,1 为第 2 个设备,依次类推。

25.3.1.1. 动态添加 qeth 设备

要动态添加 qeth 设备,请按照以下步骤执行:
  1. 决定是否载入 qeth 设备驱动程序模块。以下示例先生载入的 qeth 模块:
    # lsmod | grep qeth
    qeth_l3                  127056  9
    qeth_l2                   73008  3
    ipv6                  492872  155ip6t_REJECT,nf_conntrack_ipv6,qeth_l3
    qeth                  115808  2 qeth_l3,qeth_l2
    qdio                   68240  1 qeth
    ccwgroup               12112  2 qeth
    如果 lsmod 命令的输出显示这个模块还没有被载入,则请运行 modprobe 命令去载入它们:
    # modprobe qeth
  2. 使用 cio_ignore 命令删除忽略的设备列表中的网络通道,并使其出现在 Linux 中:
    # cio_ignore -r read_device_bus_id,write_device_bus_id,data_device_bus_id
    使用三个代表网络设备的设备总线 ID 替换 read_device_bus_idwrite_device_bus_iddata_device_bus_id。例如:如果 read_device_bus_id0.0.f500,则 write_device_bus_id0.0.f501,同时 data_device_bus_id0.0.f502
    # cio_ignore -r 0.0.f500,0.0.f501,0.0.f502
  3. 使用 znetconf 命令识别并列出网络设备的候选配置:
    # znetconf -u
    Scanning for network devices...
    Device IDs                 Type    Card Type      CHPID Drv.
    ------------------------------------------------------------
    0.0.f500,0.0.f501,0.0.f502 1731/01 OSA (QDIO)        00 qeth
    0.0.f503,0.0.f504,0.0.f505 1731/01 OSA (QDIO)        01 qeth
    0.0.0400,0.0.0401,0.0.0402 1731/05 HiperSockets      02 qeth
  4. 选择要使用的配置,使用 znetconf 应用该配置,并使配置的组设备在线作为网络设备。
    # znetconf -a f500
    Scanning for network devices...
    Successfully configured device 0.0.f500 (eth1)
  5. 另外,还可以在将组群设备设置为在线前传送参数:
    # znetconf -a f500 -o portname=myname
    Scanning for network devices...
    Successfully configured device 0.0.f500 (eth1)
    现在可以继续配置网络 eth1 接口。
另外,可以使用 sysfs 属性设置设备在线,比如:
  1. 创建 qeth 组设备:
    # echo read_device_bus_id,write_device_bus_id,data_device_bus_id > /sys/bus/ccwgroup/drivers/qeth/group
    例如:
    # echo 0.0.f500,0.0.f501,0.0.f502 > /sys/bus/ccwgroup/drivers/qeth/group
  2. 下一步,通过查找读取通道确定正确创建了 qeth 组设备:
    # ls /sys/bus/ccwgroup/drivers/qeth/0.0.f500
    根据系统设置情况以及所需要的功能设置额外参数和特性,比如:
    • portno
    • layer2
    • portname
    有关额外参数的详情请参考《System z 中的 Linux: Red Hat Enterprise Linux 6 中的设备驱动程序、特性和命令》中有关 qeth 设备驱动程序的章节。
  3. 在在线 sysfs 属性中写入 1 将设备设置为在线:
    # echo 1 > /sys/bus/ccwgroup/drivers/qeth/0.0.f500/online
  4. 确认该设备状态:
    # cat /sys/bus/ccwgroup/drivers/qeth/0.0.f500/online
    1
    返回值是 1 表示设备在线,而返回值为 0 表示设备离线。
  5. 查找分配给这个设备的接口名:
    # cat /sys/bus/ccwgroup/drivers/qeth/0.0.f500/if_name
    eth1
    现在可以继续配置网络 eth1 接口。
    以下 s390utils 软件包中的命令显示 qeth 设备的重要设置:
    # lsqeth eth1
    Device name                     : eth1
    ---------------------------------------------
            card_type               : OSD_1000
            cdev0                   : 0.0.f500
            cdev1                   : 0.0.f501
            cdev2                   : 0.0.f502
            chpid                   : 76
            online                  : 1
            portname                : OSAPORT
            portno                  : 0
            state                   : UP (LAN ONLINE)
            priority_queueing       : always queue 0
            buffer_count            : 16
            layer2                  : 1
            isolation               : none

25.3.1.2. 动态删除 qeth 设备

要删除 qeth 设备,请使用 znetconf 工具。例如:
  1. 使用 znetconf 命令显示所有配置的网络设备:
    znetconf -c
    Device IDs                 Type    Card Type      CHPID Drv. Name        State
    --------------------------------------------------------------------------------
    0.0.8036,0.0.8037,0.0.8038 1731/05 HiperSockets      FB qeth hsi1        online
    0.0.f5f0,0.0.f5f1,0.0.f5f2 1731/01 OSD_1000          76 qeth eth0        online
    0.0.f500,0.0.f501,0.0.f502 1731/01 GuestLAN QDIO     00 qeth eth1        online
  2. 选择要删除的网络设备并启动 znetconf 将该设备设定为离线并取消 ccw 组群设备组群。
    # znetconf -r f500
    Remove network device 0.0.f500 (0.0.f500,0.0.f501,0.0.f502)?
    Warning: this may affect network connectivity!
    Do you want to continue (y/n)?y
    Successfully removed device 0.0.f500 (eth1)
  3. 确定删除成功:
    znetconf -c
    Device IDs                 Type    Card Type      CHPID Drv. Name        State
    --------------------------------------------------------------------------------
    0.0.8036,0.0.8037,0.0.8038 1731/05 HiperSockets      FB qeth hsi1        online
    0.0.f5f0,0.0.f5f1,0.0.f5f2 1731/01 OSD_1000          76 qeth eth0        online

25.3.1.3. 永久添加 qeth 设备

要让新 qeth 设备永久保留,需要为其生成一个配置文件。该网络接口配置网络位于 /etc/sysconfig/network-scripts/
这个网络配置文件使用 ifcfg-device 命名规则,其中 device 可在之前生成的 qeth 组设备的 if_name 文件中找到。在这个示例中,它是 eth1。以透明方式为永久设备配置处理 cio_ignore,因此不需要从忽略列表中手动释放设备。
如果已经存在同一类型的另一个设备的配置文件,最简单的解决方案就是将其复制到新名称中。
# cd /etc/sysconfig/network-scripts
# cp ifcfg-eth0 ifcfg-eth1
如果没有定义类似的设备,则必须自己生成一个。请使用 ifcfg-eth0 示例作为模板。
/etc/sysconfig/network-scripts/ifcfg-eth0
# IBM QETH
DEVICE=eth0
BOOTPROTO=static
IPADDR=10.12.20.136
NETMASK=255.255.255.0
ONBOOT=yes
NETTYPE=qeth
SUBCHANNELS=0.0.09a0,0.0.09a1,0.0.09a2
PORTNAME=OSAPORT
OPTIONS='layer2=1 portno=0'
MACADDR=02:00:00:23:65:1a
TYPE=Ethernet
编辑新的 ifcfg-eth1 文件,如下:
  1. 修改 DEVICE 状态反映 ccw 组群中 if_name 的内容。
  2. 修改 IPADDR 状态反映新接口的 IP 地址。
  3. 根据需要修改 NETMASK 状态。
  4. 如果要在引导时激活新接口,则请确定将 ONBOOT 设定为 yes
  5. 请确定 SUBCHANNELS 说明与 qeth 设备的硬件地址一致。
  6. 修改 PORTNAME 状态,如果环境不需要该参数,则无需修改。
  7. 可在 OPTIONS 参数中添加任意有效 sysfs 属性及其值。 Red Hat Enterprise Linux 安装程序目前使用它配置 qeth 设备的层模式(layer2)以及相关端口号(portno)。
    现在 OSA 设备的默认 qeth 设备驱动程序为层 2 模式。要继续使用之前默认依赖为层 3 模式旧的 ifcfg 定义,请在 OPTION 参数中添加 layer2=0
/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
PORTNAME=OSAPORT
OPTIONS='layer2=1 portno=0'
MACADDR=02:00:00:b3:84:ef
TYPE=Ethernet
ifcfg 文件的修改只在重启系统或者更改系统 I/O 配置动态添加新网络设备通道(例如:在 z/VM 中添加)时方可生效。另外,您可以触发 ifcfg 对之前不活跃的网络通道的激活,请执行以下命令:
  1. 使用 cio_ignore 命令删除忽略的设备列表中的网络通道,并使其出现在 Linux 中:
    # cio_ignore -r read_device_bus_id,write_device_bus_id,data_device_bus_id
    使用三个代表网络设备的设备总线 ID 替换 read_device_bus_idwrite_device_bus_iddata_device_bus_id。例如:如果 read_device_bus_id0.0.0600,则 write_device_bus_id0.0.0601,同时 data_device_bus_id0.0.0602
    # cio_ignore -r 0.0.0600,0.0.0601,0.0.0602
  2. 要触发激活更改的 uevent,请执行:
    echo add > /sys/bus/ccw/devices/read-channel/uevent
    例如:
    echo add > /sys/bus/ccw/devices/0.0.0600/uevent
  3. 检查网络设备状态:
    # lsqeth
  4. 现在启动新的接口:
    # ifup eth1
  5. 检查接口状态:
    # 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)
  6. 检查新接口的路由:
    # 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
    10.1.20.0       *               255.255.255.0  U     0      0      0 eth0
    default         10.1.20.1       0.0.0.0        UG    0      0      0 eth0
  7. 使用 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
  8. 如果已更改默认路由信息,则必须相应更新 /etc/sysconfig/network