4.4. コマンドラインインターフェース (CLI) の使用

ボンドは、ボンディング カーネルモジュールと、チャンネルボンディングインターフェース と呼ばれる特殊なネットワークインターフェースを使用して作成されます。

4.4.1. ボンディングカーネルモジュールがインストールされているかの確認

Red Hat Enterprise Linux 7 では、ボンディングモジュールはデフォルトでは読み込まれません。root で以下のコマンドを実行してこのモジュールを読み込みます。
~]# modprobe --first-time bonding
このアクティベーションは、システム再起動後は維持されません。再起動後も維持されるモジュールの読み込みについては、Red Hat Enterprise Linux 7 システム管理者のガイド を参照してください。BONDING_OPTS ディレクティブを使用した適切な設定ファイルがあれば、ボンディングモジュールは必要に応じて読み込まれるので、別個に読み込む必要はないことに留意してください。
モジュールについての情報を表示するには、以下のコマンドを実行します。
~]$ modinfo bonding
コマンドオプションについては、modprobe(8) man ページを参照してください。

4.4.2. チャンネルボンディングインターフェースの作成

チャンネルボンディングインターフェースを作成するには、/etc/sysconfig/network-scripts/ ディレクトリーに ifcfg-bondN という名前のファイルを作成し、N をそのインターフェースの番号 0 などに置き換えます。
ファイルのコンテンツは、イーサネットインターフェースなどボンディングされるインターフェースのものであればどの設定ファイルでもそれをベースとすることができます。本質的な相違点は、DEVICE ディレクティブが bondN となり、この N をインターフェースの番号で置換し、さらに TYPE=Bond とすることです。また、BONDING_MASTER=yes と設定します。

例4.1 ifcfg-bond0 インターフェース設定ファイルの例

チャンネルボンディングインターフェースの例は以下のようになります。
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="bonding parameters separated by spaces"
NAME ディレクティブは、NetworkManager 内の接続プロファイルの命名時に便利なものです。ONBOOT は、起動時 (一般的にはデバイスの自動接続時) にプロファイルを起動するかどうかを示しています。

重要

ボンディングカーネルモジュールのパラメーターは、ifcfg-bondN インターフェースファイル内の BONDING_OPTS="bonding parameters" ディレクティブでスペース区切りの一覧として指定する必要があります。/etc/modprobe.d/bonding.conf または非推奨の /etc/modprobe.conf ファイルでボンディングデバイスのオプションを指定しないでください
max_bonds パラメーターはインターフェース固有ではなく、ifcfg-bondN ファイルの使用時に BONDING_OPTS ディレクティブで指定しないでください。このディレクティブを使うと、ネットワークスクリプトが必要に応じてボンディングインターフェースを作成することになります。
ボンディングモジュールの設定に関する指示およびアドバイスとボンディングパラメーターの一覧については、「チャンネルボンディングの使用」 を参照してください。

4.4.3. スレーブインターフェースの作成

チャンネルボンディングインターフェースは マスター であり、ボンディングされるインターフェースは スレーブ と呼ばれます。チャンネルボンディングインターフェースを作成した後に、ボンディングされるネットワークインターフェースを設定するには、そのスレーブの設定ファイルに MASTERSLAVE のディレクティブを追加する必要があります。各スレーブインターフェースの設定ファイルは、ほぼ同一となる可能性があります。

例4.2 スレーブインターフェース設定ファイルの例

たとえば、2 つのイーサネットインターフェース eth0eth1 をチャンネルボンディングする場合、それらは両方とも以下のようにすることができます。
DEVICE=ethN
NAME=bond0-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
この例では、N をインターフェースの番号で置換します。インターフェースが ONBOOT=yes となっているプロファイルまたは設定ファイルが複数ある場合、それらが相互に競合し、ボンドスレーブではなく単純な TYPE=Ethernet プロファイルがアクティベートされる場合があることに注意してください。

4.4.4. チャンネルボンディングのアクティベート

ボンドをアクティベートするには、すべてのスレーブをアップにします。root で以下のコマンドを実行します。
~]# ifup ifcfg-eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
~]# ifup ifcfg-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
既に up となっているインターフェースのインターフェースファイルを編集する場合は、以下のようにまず最初にそれらを down にします。
ifdown ethN
これが完了した後、すべてのスレーブをアップにすることで、ボンドがアップになります (down に設定されていないことが前提)。
NetworkManager にこれらの変更を認識させるには、変更されたインターフェースすべてについて root で以下のコマンドを実行します。
~]# nmcli con load /etc/sysconfig/network-scripts/ifcfg-device
または、すべてのインターフェースをリロードします。
~]# nmcli con reload
デフォルトでは、NetworkManager は変更を認識せず、変更前の設定データの使用を継続します。これは NetworkManager.conf ファイルの monitor-connection-files オプションで設定します。詳細情報は、NetworkManager.conf(5) man ページを参照してください。
ボンドインターフェースのステータスを表示するには、以下のコマンドを実行します。
~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:e9:ce:d2 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff

4.4.5. 複数のボンド作成

Red Hat Enterprise Linux 7 では、各ボンドに BONDING_OPTS ディレクティブを含むチャンネルボンディングインターフェースが作成されます。この設定方法を使うと、複数のボンディングデバイスに異なる設定をすることが可能になります。複数のチャンネルボンディングインターフェースを作成するには、以下の手順にしたがいます。
  • BONDING_OPTS ディレクティブがある複数の ifcfg-bondN ファイルを作成します。このディレクティブを使うと、ネットワークスクリプトが必要に応じてボンディングインターフェースを作成するようになります。
  • ボンディングされるインターフェース設定ファイルを作成、または既存のものを編集し、SLAVE ディレクティブをこれに含めます。
  • ボンディングされるスレーブインターフェースを MASTER ディレクティブでチャンネルボンディングインターフェースに割り当てます。

例4.3 複数の ifcfg-bondN インターフェース設定ファイルの例

以下は、チャンネルボンディングインターフェース設定ファイルの例です。
DEVICE=bondN
NAME=bondN
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="bonding parameters separated by spaces"
この例では、N をインターフェースの番号に置き換えます。たとえば 2 つのボンドを作成するには、ifcfg-bond0ifcfg-bond1 という 2 つの設定ファイルを適切な IP アドレスとともに作成します。
例4.2「スレーブインターフェース設定ファイルの例」 にあるようにボンディングされるインターフェースを作成し、MASTER=bondN ディレクティブを使って必要に応じてそれらをボンドインターフェースに割り当てます。たとえば上記の例では、ボンドあたり 2 つのインターフェースが必要だとすると、2 つのボンドに 4 つのインターフェース設定ファイルを作成し、最初の 2 つを MASTER=bond0 を使って割り当て、残りの 2 つを MASTER=bond1 を使って割り当てます。