19.3. ネットワークデバイスの追加

ネットワークデバイスドライバーモジュールは udev が自動的に読み込みます。
ネットワークインターフェースは、動的または永続的に IBM System z 上で追加できます。
  • 動的に追加する方法
    1. デバイスドライバーを読み込みます。
    2. 無視するデバイスの一覧からネットワークデバイスを削除します。
    3. グループデバイスを作成します。
    4. デバイスを設定します。
    5. デバイスをオンラインに設定します。
  • 永続的に追加する方法
    1. 設定スクリプトを作成します。
    2. インターフェースをアクティベートします。
以下のセクションでは、それぞれの IBM System z のネットワークデバイスドライバーのタスクに関する基本的な情報を提供しています。「qeth デバイスの追加」は、Red Hat Enterprise Linux の既存インスタンスに qeth デバイスを追加する方法を説明しています。「LCS デバイスの追加」は、Red Hat Enterprise Linux の既存インスタンスに lcs デバイスを追加する方法を説明しています。

19.3.1. qeth デバイスの追加

qeth ネットワークデバイスドライバーは、System z の OSA-Express 機能を QDIO モード、HiperSockets、z/VM ゲスト LAN および z/VM VSWITCH でサポートします
qeth デバイスドライバーは、イーサネットと Hipersockets デバイスに、enccwbus_ID という同じインターフェース名を割り当てます。バス ID は、チャネルのサブシステム ID、サブチャネルセット ID、およびデバイス番号から構成されます。たとえば、enccw0.0.0a00 のようになります。

19.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
    qeth モジュールが読み込まれていないことを lsmod コマンドの出力が表示している場合、modprobe コマンドを実行してそれらを読み込みます。
    # modprobe qeth
  2. cio_ignore ユーティリティーを使用して無視されるデバイスのリストからネットワークチャネルを削除し、それが Linux から見えるようにします。
    # cio_ignore -r read_device_bus_id,write_device_bus_id,data_device_bus_id
    read_device_bus_idwrite_device_bus_iddata_device_bus_id は、ネットワークデバイスを表す 3 つのデバイスバス 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

19.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 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

19.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
お使いのネットワークデバイスの ID を確認するには、lsqeth ユーティリティーを使用します。
# 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. 新しいインターフェースを起動時にアクティブにするには、ONBOOTyes に設定されていることを確認します。
  5. SUBCHANNELS の記述が qeth デバイスのハードウェアアドレスと合致していることを確認します。
  6. PORTNAME の表記を修正するか、使用環境に不要であれば除外します。
  7. 有効な sysfs 属性とその値を OPTIONS パラメーターに追加することができます。現在、Red Hat Enterprise Linux インストールプログラムでは、これを使用してレイヤーモード (layer2) と qeth デバイスの関連ポート番号 (portno) を設定します。
    OSA デバイス用の qeth デバイスドライバーのデフォルトは、現在のところレイヤー 2 モードです。以前のデフォルトであるレイヤー 3 モードに依存する旧式の ifcfg 定義を継続して使用するには、layer2=0OPTIONS パラメーターに追加します。
/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
    read_device_bus_idwrite_device_bus_iddata_device_bus_id は、ネットワークデバイスを表す 3 つのデバイスバス ID で置き換えます。例を示します。read_device_bus_id0.0.0600 ならば、write_device_bus_id0.0.0601data_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 も更新する必要があります。

19.3.2. LCS デバイスの追加

LCS (LAN チャネルステーション) のデバイスドライバーは、OSA-Express2 と OSA-Express 3 機能で 1000Base-T Ethernet をサポートします。
LCS デバイスドライバーは、OSA-Express Fast イーサネットと Gigabit イーサネットデバイス用に、enccwbus_ID というインターフェース名を割り当てます。バス ID は、チャネルサブシステム ID、サブチャネルセット ID、およびデバイス番号から構成されます。たとえば、enccw0.0.0a00 のようになります。

19.3.2.1. LCS デバイスの動的な追加

  1. デバイスドライバーを読み込みます。
    # modprobe lcs
  2. cio_ignore ユーティリティーを使用して無視されるデバイスのリストからネットワークチャネルを削除し、それが Linux から見えるようにします。
    # cio_ignore -r read_device_bus_id,write_device_bus_id
    read_device_bus_idwrite_device_bus_id は、ネットワークデバイスを表す 2 つのデバイス 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 1 つにつき最大 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

19.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) を反映します。有効な lcs sysfs 属性とその値をオプションの OPTIONS パラメーターに追加できます。構文については、「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
    read_device_bus_idwrite_device_bus_id は、LCS デバイスのデバイス 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

19.3.3. ネットワーク root ファイルシステム用の System z ネットワークデバイスの設定

root ファイルシステムにアクセスする必要のあるネットワークデバイスを追加するには、その起動オプションを変更することのみが必要になります。この起動オプションはパラメーターファイル (20章 IBM System z でのパラメーターと設定ファイル を参照) 内にあるか、zipl ブートローダーで準備された DASD または FCP 接続の SCSI LUN 上の zipl.conf の一部である可能性があります。initramfs を再作成する必要はありません。
Dracut (mkinitrd の後継であり、initrd の代わりとなる initramfs 内で機能を提供する) は、ブートプロセスの初期段階で System z 上のネットワークデバイスをアクティベートするブートパラメーター、rd.znet= 、を提供します。
このパラメーターは、NETTYPE (qeth, lcs, ctc) と、2 つ (lcs, ctc) または 3 つ (qeth) のデバイスバス ID とネットワークデバイス sysfs 属性に相当するキー値ペアから構成されるオプションの追加パラメーターのコンマで区切った一覧を取ります。このパラメーターは、System z のネットワークハードウェアを設定、アクティベートします。IP アドレスと他のネットワーク仕様の設定は、他のプラットフォームと同様に機能します。詳細については、dracut のドキュメントを参照してください。
ネットワークチャネルに対する cio_ignore コマンドは、起動時に透過的に処理されます。
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