17.3. 添加网络设备

网络设备驱动程序模块自动由 udev 载入。
可动态或者永久在 IBM System z 中添加网络接口。
  • 动态
    1. 载入设备驱动程序
    2. 从忽略的设备列表中删除网络设备。
    3. 创建组设备。
    4. 配置该设备。
    5. 在线设置设备。
  • 永久
    1. 创建配置脚本。
    2. 激活该接口。
下面的小结提供了 IBM System z 网络设备驱动程序每个任务的基本信息。第 17.3.1 节 “添加 qeth 设备” 描述如何在现有 Red Hat Enterprise Linux 事务中添加 qeth 设备。第 17.3.2 节 “添加 LCS 设备” 描述如何在 Red Hat Enterprise Linux 现有事务中添加 lcs 设备。

17.3.1. 添加 qeth 设备

qeth 网络设备驱动程序支持 System z QDIO 模式、HiperSocket、z/VM 客体 LAN 以及 z/VM VSWITCH 的 OSA 快捷功能。
qeth 设备驱动程序为以太网和 Hipersockets 设备分配同样的接口:enccwbus_ID。这个总线 ID 由频道子系统 ID、子频道组 ID 以及设备号组成,例如:enccw0.0.0a00

17.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 命令的输出显示还没有载入 qeth 模块,则请运行 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 (enccw0.0.f500)
  5. 另外,还可以在将组群设备设置为在线前传送参数:
    # znetconf -a f500 -o portname=myname
    Scanning for network devices...
    Successfully configured device 0.0.f500 (enccw0.0.f500)
    现在您可以继续配置网络接口 enccw0.0.f500
另外,您可以使用 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
  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
    enccw0.0.f500
    现在您可以继续配置网络接口 enccw0.0.f500
    以下 s390utils 软件包中的命令显示 qeth 设备的重要设置:
    # lsqeth enccw0.0.f500
    Device name                     : enccw0.0.f500                
    -------------------------------------------------
            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

17.3.1.2. 动态删除 qeth 设备

请使用 znetconf 程序删除 qeth 设备。例如:
  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 enccw0.0.09a0      online 
    0.0.f500,0.0.f501,0.0.f502 1731/01 GuestLAN QDIO     00 qeth enccw0.0.f500      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 (enccw0.0.f500)
  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 enccw0.0.09a0      online

17.3.1.3. 永久添加 qeth 设备

要永久保留新 qeth 设备,需要为新接口生成配置文件。该网络接口配置文件位于 /etc/sysconfig/network-scripts/ 目录。
这个网络配置文件使用 ifcfg-device 命名规则,其中 device 可在之前生成的 qeth 组设备的 if_name 文件中找到的值,例如: enccw0.0.09a0。使用 cio_ignore 命令明确处理永久设备配置,因此您不需要从忽略列表中手动释放设备。
如果已经存在同一类型的另一个设备的配置文件,最简单的解决方案就是将其复制到新名称中并进行编辑:
# cd /etc/sysconfig/network-scripts
# cp ifcfg-enccw0.0.09a0 ifcfg-enccw0.0.0600
请使用 lsqeth 程序查看网络设备 ID:
# lsqeth -p
devices                    CHPID interface        cardtype       port chksum prio-q'ing rtr4 rtr6 lay'2 cnt
-------------------------- ----- ---------------- -------------- ---- ------ ---------- ---- ---- ----- -----
0.0.09a0/0.0.09a1/0.0.09a2 x00   enccw0.0.09a0    Virt.NIC QDIO  0    sw     always_q_2 n/a  n/a  1     64  
0.0.0600/0.0.0601/0.0.0602 x00   enccw0.0.0600    Virt.NIC QDIO  0    sw     always_q_2 n/a  n/a  1     64
如果尚未定义类似设备,则必须生成新文件。可使用 /etc/sysconfig/network-scripts/ifcfg-0.0.09a0 示例作为模板:
# IBM QETH
DEVICE=enccw0.0.09a0
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-0.0.0600 文件如下:
  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 设备驱动程序为 layer 2 模式。要继续使用之前默认依赖为 layer 3 模式旧的 ifcfg 定义,请在 OPTIONS 参数中添加 layer2=0
/etc/sysconfig/network-scripts/ifcfg-0.0.0600
# IBM QETH
DEVICE=enccw0.0.0600
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 enccw0.0.0600
  5. 检查接口状态:
    # ip addr show enccw0.0.0600
    3: enccw0.0.0600:  <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 3c:97:0e:51:38:17 brd ff:ff:ff:ff:ff:ff
        inet 10.85.1.245/24 brd 10.34.3.255 scope global dynamic enccw0.0.0600
           valid_lft 81487sec preferred_lft 81487sec
        inet6 1574:12:5:1185:3e97:eff:fe51:3817/64 scope global noprefixroute dynamic 
           valid_lft 2591994sec preferred_lft 604794sec
        inet6 fe45::a455:eff:d078:3847/64 scope link 
           valid_lft forever preferred_lft forever
  6. 检查新接口的路由:
    # ip route
    default via 10.85.1.245 dev enccw0.0.0600  proto static  metric 1024 
    12.34.4.95/24 dev enp0s25  proto kernel  scope link  src 12.34.4.201 
    12.38.4.128 via 12.38.19.254 dev enp0s25  proto dhcp  metric 1 
    192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1
  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

17.3.2. 添加 LCS 设备

LAN 通道站(LCS)设备驱动程序在 OSA-Express2 和 OSA-Express 3 特性中支持 1000Base-T 以太网。
LCS 设备驱动程序为 OSA 快速以太网和千兆以太网设备分配同样的接口:enccwbus_ID。这个总线 ID 由频道子系统 ID、子频道组 ID 以及设备号组成,例如:enccw0.0.0a00

17.3.2.1. 动态添加 LCS 设备

  1. 载入设备驱动程序:
    # modprobe lcs
  2. 使用 cio_ignore 程序删除忽略设备列表中的网络频道,并使其出现在 Linux 中:
    # cio_ignore -r read_device_bus_id,write_device_bus_id
    使用代表网络设备的两个设备总线 ID 替换 read_device_bus_idwrite_device_bus_id。例如:
    # cio_ignore -r 0.0.09a0,0.0.09a1
  3. 创建组设备:
    # echo read_device_bus_id,write_device_bus_id > /sys/bus/ccwgroup/drivers/lcs/group
  4. 配置该设备。OSA卡可以为一个单独的 CHPID 提供多达16个端口。在默认的情况下,LCS 组设备使用端口 0。要使用不同的端口,请执行类似如下的命令:
    # echo portno > /sys/bus/ccwgroup/drivers/lcs/device_bus_id/portno
    使用您要使用的端口号替换 portno
  5. 设置设备在线:
    # echo 1 > /sys/bus/ccwgroup/drivers/lcs/read_device_bus_id/online
  6. 查找已经分配的网络设备名称,请输入命令:
    # ls -l /sys/bus/ccwgroup/drivers/lcs/read_device_bus_ID/net/
    drwxr-xr-x 4 root root 0 2010-04-22 16:54 enccw0.0.0600

17.3.2.2. 永久添加 LCS 设备

cio_ignore 命令明确处理永久设备配置,您不需要手动从忽略列表中释放设备。
要永久添加 LCS 设备,请按照以下步骤操作:
  1. 生成类似 /etc/sysconfig/network-scripts/ 的配置脚本文件,将其命名为 ifcfg-device 命名规则,其中 device 可在之前生成的 qeth 组设备的 if_name 文件中找到的值,例如: enccw0.0.09a0。该文件应类似如下:
    # IBM LCS
    DEVICE=enccw0.0.09a0
    BOOTPROTO=static
    IPADDR=10.12.20.136
    NETMASK=255.255.255.0
    ONBOOT=yes
    NETTYPE=lcs
    SUBCHANNELS=0.0.09a0,0.0.09a1
    PORTNAME=0
    OPTIONS=''
    TYPE=Ethernet
  2. 修改 PORTNAME 值反映您要使用的 LCS 端口号(portno)。您可在可选 OPTIONS 参数中添加任意有效 lcs sysfs 属性及其值。有关语法请查看 第 17.3.1.3 节 “永久添加 qeth 设备”
  3. DEVICE 参数设定为如下值:
    DEVICE=enccwbus_ID
  4. 执行 ifup 激活该设备:
    # ifup enccwbus_ID
ifcfg 文件的更改只能在重启系统后生效。您可使用以下命令触发用于网络通道的 ifcfg 文件的激活:
  1. 使用 cio_ignore 程序从忽略设备列表中删除 LCS 设备适配器并使其在 Linux 中可见:
    # cio_ignore -r read_device_bus_id,write_device_bus_id
    使用 LCS 设备的设备总线 ID 替换 read_device_bus_idwrite_device_bus_id。例如:
    # cio_ignore -r 0.0.09a0,0.0.09a1
  2. 要触发激活更改的 uevent,请执行:
    # echo add > /sys/bus/ccw/devices/read-channel/uevent
    例如:
    # echo add > /sys/bus/ccw/devices/0.0.09a0/uevent

17.3.3. 为网络 Root 文件系统配置 System z 网络设备

要添加访问 root 文件系统所需的网络设备,您只要更改引导选项即可。引导选项可位于参数文件中(请参考 第 18 章 IBM System z 中的参数和配置文件),或者是 zipl.conf 的一部分,该文件位于使用 zipl 引导装载程序准备的 DASD 或者使用 FCP 的 SCSI LUN 中。这里无需重新生成 initramfs。
Dracutmkinitrd 的继任程序,可提供 initramfs 中的功能用来依次替换 initrd,提供引导参数在引导进程早期激活 System z 中的网络设备:rd_znet=
输入时,这个参数使用逗号分开的 NETTYPE(qeth、lcs、ctc)、两个(lcs,ctc)或者三个(qeth)设备总线 ID,以及由密钥-数值对组成,与网络设备 sysfs 属性对应的可选附加参数。这个参数配置和激活 System z 网络硬件。对 IP 地址和其他具体网络的配置同样适用于其他平台。详情请参考 dracut 文档。
使用 cio_ignore 命令在 boot 中明确处理网络频道 。
通过 NFS 使用网络访问的 root 文件系统引导选项示例:
root=10.16.105.196:/nfs/nfs_root cio_ignore=all,!condev rd.znet=qeth,0.0.0a00,0.0.0a01,0.0.0a02,layer2=1,portno=0,portname=OSAPORT ip=10.16.105.197:10.16.105.196:10.16.111.254:255.255.248.0:nfs‑server.subdomain.domain:enccw0.0.09a0:none rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us