17.3. Добавление сетевого устройства

Модули драйверов сетевых устройств загружаются автоматически с помощью udev.
В IBM System z сетевой интерфейс можно добавить динамически или с сохранением постоянства.
  • Динамическое добавление устройств:
    1. загрузите драйвер устройства;
    2. удалите интерфейсы из списка игнорируемых устройств;
    3. создайте устройство группы;
    4. настройте устройство;
    5. включите устройство.
  • С сохранением постоянства:
    1. создайте сценарий настройки;
    2. включите интерфейс.
В последующих секциях обсуждаются основные задачи драйверов сетевых устройств в IBM System z, в том числе добавление устройств qeth (см. Раздел 17.3.1, «Добавление устройства qeth ») и lcs (см. Раздел 17.3.2, «Добавление устройства LCS») в Red Hat Enterprise Linux.

17.3.1. Добавление устройства qeth

Драйвер qeth поддерживает функции OSA-Express c QDIO, а также HiperSockets, LAN гостей z/VM и VSWITCH в z/VM.
qeth присваивает устройствам Ethernet и Hipersockets имена в виде enccwID_шины. Идентификатор шины имеет вид наподобие enccw0.0.0a00 и содержит идентификатор подсистемы канала, идентификатор подканала и номер устройства.

17.3.1.1. Динамическое добавление устройства qeth

Ниже рассматривается порядок действий при динамическом добавлении устройств qeth.
  1. Убедитесь, что модули драйверов устройств 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 -r ID_шины_устройства_чтения,ID_шины_устройства_записи,ID_шины_устройства_данных
    Замените ID_шины_устройства_чтения, ID_шины_устройства_записи и ID_шины_устройства_данных идентификаторами шины сетевого устройства. Так, например, если ID_шины_устройства_чтения0.0.f500, ID_шины_устройства_записи0.0.f501, а ID_шины_устройства_данных0.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 ID_шины_устройства_чтения,ID_шины_устройства_записи,ID_шины_устройства_данных > /sys/bus/ccwgroup/drivers/qeth/group
    Например:
    # echo 0.0.f500,0.0.f501,0.0.f502 > /sys/bus/ccwgroup/drivers/qeth/group
  2. Убедитесь, что устройство было создано успешно:
    # ls /sys/bus/ccwgroup/drivers/qeth/0.0.f500
    В зависимости от конфигурации системы можно установить дополнительные параметры:
    • portno
    • layer2
    • portname
  3. Включите устройство, присвоив соответствующему атрибуту значение 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

Удалить устройство qeth можно с помощью znetconf:
  1. Команда просмотра списка настроенных сетевых устройств:
    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 -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-устройство, где устройство — значение из файла if_name ранее созданного устройства qeth (например, eth1). Команды cio_ignore обрабатываются как обычно, поэтому нет необходимости в удалении устройства из списка игнорируемых устройств.
Если файл конфигурации другого устройства того же типа уже существует, можно его скопировать и взять за основу.
# cd /etc/sysconfig/network-scripts
# cp ifcfg-enccw0.0.09a0 ifcfg-enccw0.0.0600
Для просмотра идентификаторов сетевых устройств выполните:
# 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
Если аналогичное устройство отсутствует, надо будет создать новый файл. В качестве образца используйте пример ifcfg-eth0.
# 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 в соответствии с содержимым файла if_name группы ccw.
  2. В IPADDR добавьте IP-адрес нового интерфейса.
  3. При необходимости измените NETMASK.
  4. Можно настроить активацию интерфейса при загрузке, присвоив ONBOOT значение yes.
  5. Убедитесь, что выражение SUBCHANNELS содержит аппаратные адреса устройства qeth.
  6. При необходимости измените значение PORTNAME.
  7. Атрибуты sysfs и их значения можно добавить в параметр OPTIONS, с помощью которого программа установки Red Hat Enterprise Linux настраивает режим layer2 и номер порта portno для устройств qeth.
    По умолчанию драйвер qeth для устройств OSA работает на втором уровне. Если необходимо использовать старые настройки 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 вступят в силу после перезагрузки или динамического добавления новых каналов сетевых устройств и соответствующего изменения системных настроек ввода и вывода (то есть при подключении в z/VM). Или же для активации файла ifcfg можно сделать следующее:
  1. Удалите сетевые каналы из списка игнорируемых устройств:
    # cio_ignore -r ID_шины_устройства_чтения,ID_шины_устройства_записи,ID_шины_устройства_данных
    Замените ID_шины_устройства_чтения, ID_шины_устройства_записи и ID_шины_устройства_данных идентификаторами шины сетевого устройства. Например:
    # cio_ignore -r 0.0.0600,0.0.0601,0.0.0602
  2. Разрешите активацию устройства, изменив его атрибут uevent:
    echo add > /sys/bus/ccw/devices/канал_чтения/uevent
    Например:
    echo add > /sys/bus/ccw/devices/0.0.0600/uevent
  3. Проверьте состояние устройства:
    # lsqeth
  4. Запустите интерфейс:
    # ifup enccw0.0.0600
  5. Проверьте его статус:
    # ifconfig enccw0.0.0600
    enccw0.0.0600     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 enccw0.0.0600
    10.1.20.0       *               255.255.255.0  U     0      0      0 enccw0.0.09a0
    default         10.1.20.1       0.0.0.0        UG    0      0      0 enccw0.0.09a0
  7. Выполните 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

Драйвер устройства LCS (LAN channel station) обеспечивает поддержку 1000Base-T Ethernet на OSA-Express2 и OSA-Express 3.
Драйвер LCS присваивает устройствам OSA-Express Fast Ethernet и Gigabit Ethernet имена в виде enccwID_шины. Идентификатор шины имеет вид наподобие enccw0.0.0a00 и содержит идентификатор подсистемы канала, идентификатор подканала и номер устройства.

17.3.2.1. Динамическое добавление устройства LCS

  1. Загрузите драйвер:
    # modprobe lcs
  2. Удалите сетевые каналы из списка игнорируемых устройств:
    # cio_ignore -r ID_шины_устройства_чтения,ID_шины_устройства записи
    Замените ID_шины_устройства_чтения и ID_шины_устройства_записи идентификаторами шины сетевого устройства. Например:
    # cio_ignore -r 0.0.09a0,0.0.09a1
  3. Создайте устройство для группы:
    # echo ID_шины_устройства_чтения,ID_шины_устройства_записи > /sys/bus/ccwgroup/drivers/lcs/group
  4. Теперь надо настроить устройство. Карты OSA предоставляют до 16 портов для одного CHPID. По умолчанию устройство LCS использует порт 0. Чтобы изменить порт, выполните следующее:
    # echo номер > /sys/bus/ccwgroup/drivers/lcs/device_bus_id/portno
    Замените номер номером порта для подключения.
  5. Включите устройство:
    # echo 1 > /sys/bus/ccwgroup/drivers/lcs/ID_шины_устройства_чтения/online
  6. Для просмотра присвоенного устройству имени выполните:
    # ls -l /sys/bus/ccwgroup/drivers/lcs/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. Создайте сценарий ifcfg-устройство в каталоге /etc/sysconfig/network-scripts/, заменив устройство значением из файла if_name ранее созданного устройства qeth. Пример: enccw0.0.09a0.
    /etc/sysconfig/network-scripts/ifcfg-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). Атрибуты lcs sysfs можно определить в строке OPTIONS (см. Раздел 17.3.1.3, «Добавление устройства qeth с сохранением постоянства»).
  3. Определите значение DEVICE:
    DEVICE=enccwID_шины
  4. Включите устройство:
    # ifup enccwID_шины
Изменения ifcfg вступят в силу после перезагрузки системы. Активацию файла ifcfg можно выполнить следующим образом:
  1. Удалите устройство LCS из списка игнорируемых устройств:
    # cio_ignore -r ID_шины_устройства_чтения,ID_шины_устройства записи
    Замените ID_шины_устройства_чтения и ID_шины_устройства_записи идентификаторами шины сетевого устройства. Например:
    # cio_ignore -r 0.0.09a0,0.0.09a1
  2. Разрешите активацию устройства, изменив его атрибут uevent:
    echo add > /sys/bus/ccw/devices/канал_чтения/uevent
    Например:
    echo add > /sys/bus/ccw/devices/0.0.09a0/uevent 

17.3.3. Настройка сетевых устройств для корневой файловой системы в сети

Для добавления сетевого устройства с доступом к корневой файловой системе нужно лишь изменить параметры загрузки (см. Глава 18, Файлы конфигурации IBM System z), а при использовании загрузчика zipl — откорректировать файл zipl.conf устройства DASD или SCSI LUN, подключенного к каналу FCP. Повторное создание initramfs не требуется.
Dracut, который пришел на смену mkinitrd, предоставляет параметр rd.znet= для активации сетевых устройств на ранней стадии загрузки.
Этот параметр принимает список разделенных запятой значений NETTYPE (qeth, lcs, ctc), два (lcs, ctc) или три (qeth) идентификатора шины устройства, а также пары параметров и значений, соответствующих атрибутам sysfs сетевого устройства. rd.znet= выполнит настройку и активацию сетевого оборудования System z. Настройка IP-адресов и прочих сетевых характеристик осуществляется аналогично тому, как это делается на других платформах. Подробную информацию можно найти в документации dracut.
Команды cio_ignore обрабатываются прозрачно в процессе загрузки системы.
Пример параметров загрузки для корневой файловой системы NFS:
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