7.4. コマンドラインインターフェイス (CLI) の使用
ボンドは、
ボンディングカーネルモジュールと、チャンネルボンディング
インターフェイス と呼ばれる特別なネットワークインターフェイスを使用して作成されます。
7.4.1. ボンディングカーネルモジュールがインストールされているかの確認
Red Hat Enterprise Linux 7 では、ボンディングモジュールはデフォルトでは読み込まれません。
root
で以下のコマンドを実行して、モジュールを読み込むことができます。
~]# modprobe --first-time bonding
このアクティベーションは、システム再起動後は維持されません。永続的なモジュールの読み込みに関する詳細は、『Red Hat Enterprise Linux カーネル管理ガイド』を参照してください。BONDING_OPTS ディレクティブを使用した正しい設定ファイルを指定すると、ボンディングモジュールは必要に応じて読み込まれるため、別個に読み込む必要はありません。
モジュールについての情報を表示するには、以下のコマンドを実行します。
~]$ modinfo bonding
コマンドオプションについては、modprobe (8)
の man ページを参照してください。
7.4.2. チャンネルボンディングインターフェイスの作成
チャンネルボンディングインターフェイスを作成するには、
/etc/sysconfig/network-scripts/
ディレクトリーに ifcfg-bondN
という名前のファイルを作成し、N をそのインターフェイスの番号(例: 0
)に置き換えます。
ファイルのコンテンツは、イーサネットインターフェイスなどボンディングされるインターフェイスのものであればどの設定ファイルでもそれをベースとすることができます。
DEVICE
ディレクティブは ボンディングNで、N
はインターフェイスの番号に置き換え、TYPE=Bond があることです。さらに、BONDING_MASTER=yes を設定します。
例7.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" NM_CONTROLLED="no"
NAME ディレクティブは、NetworkManager で接続プロファイルに名前を付けるのに役立ちます。ONBOOT は、起動時 (一般的にはデバイスの自動接続時) にプロファイルを起動するかどうかを示しています。
重要
ボンディングカーネルモジュールのパラメーターは、
ifcfg-bondN
インターフェイスファイルの BONDING_OPTS="bonding parameters"
ディレクティブにスペース区切りリストとして指定する必要があります。ボンディングデバイスのオプションは、/etc/modprobe.d/bonding.conf
または非推奨の /etc/modprobe.conf
ファイルで指定し ない でください。
max_bonds
パラメーターはインターフェイス固有ではないため、BONDING_OPTS ディレクティブで ifcfg-bondN
ファイルを使用する場合は設定しないでください。このディレクティブにより、ネットワークスクリプトが必要に応じてボンドインターフェイスを作成するためです。
ボンディングモジュールの設定に関する指示およびアドバイスとボンディングパラメーターのリストについては、「チャンネルボンディングの使用」を参照してください。
NM_CONTROLLED="no" 設定が存在しない場合は、NetworkManager がこの設定ファイルの設定を上書きする可能性があることに注意してください。
7.4.3. ポートインターフェイスの作成
チャンネルボンディングインターフェイスはコントローラー(
マスター
とも呼ばれます)で、ボンディングされるインターフェイスはポート(スレーブ)と呼ばれます
。チャネルボンディングインターフェイスを作成した後に、ボンディングされるネットワークインターフェイスを設定するには、そのポートの設定ファイルに MASTER
および SLAVE
ディレクティブを追加します。各ポートインターフェイスの設定ファイルは、ほぼ同一となる可能性があります。
例7.2 ポートインターフェイス設定ファイルの例
たとえば、2 つのイーサネットインターフェイス
enp1s0
と enp2s0
がチャンネルボンディングされている場合、両方のインターフェイスの例を以下に示します。
DEVICE=device_name NAME=bond0-slave TYPE=Ethernet BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes NM_CONTROLLED="no"
この例では、device_name をインターフェイス名で置換します。インターフェイスが ONBOOT=yes となっているプロファイルまたは設定ファイルが複数ある場合は、それらが相互に競合し、ボンドポートの代わりに単純な TYPE=Ethernet プロファイルがアクティブ化される可能性があることに注意してください。
注記
NM_CONTROLLED="no" 設定が存在しない場合は、NetworkManager がこの設定ファイルの設定を上書きする可能性があることに注意してください。
7.4.4. チャンネルボンディングのアクティブ化
ボンドをアクティブにするには、すべてのポートを有効にします。
root
で以下のコマンドを実行します。
~]# ifup ifcfg-enp1s0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
~]# ifup ifcfg-enp2s0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
すでに 「up」 となっているインターフェイスのインターフェイスファイルを編集する場合は、以下のようにまず最初にそれらを down にします。
ifdown device_nameこれが完了した後、すべてのポートを有効にすることで、ボンドが有効になります (「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: enp1s0: <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: enp2s0: <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
7.4.5. 複数のボンド作成
Red Hat Enterprise Linux では、各ボンドに BONDING_OPTS ディレクティブを含むチャンネルボンディングインターフェイスが作成されます。この設定方法を使うと、複数のボンディングデバイスに異なる設定をすることが可能になります。複数のチャンネルボンディングインターフェイスを作成するには、以下の手順に従います。
- BONDING_OPTS ディレクティブで複数の
ifcfg-bondN
ファイルを作成します。このディレクティブにより、ネットワークスクリプトが必要に応じてボンドインターフェイスを作成します。 - ボンディングされるインターフェイス設定ファイルを作成するか、または既存のインターフェイス設定ファイルを編集し、SLAVE ディレクティブを追加します。
- ボンディングされるポートインターフェイスであるインターフェイスを MASTER ディレクティブでチャネルボンディングインターフェイスに割り当てます。
例7.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-bond0
と ifcfg-bond1
の設定ファイルを適切な IP
アドレスで作成します。
例7.2「ポートインターフェイス設定ファイルの例」 に従ってボンディングされるインターフェイスを作成し、MASTER=bondN ディレクティブを使って必要に応じてボンドインターフェイスに割り当てます。たとえば、上記の例から、ボンドごとに 2 つのインターフェイスが必要な場合は、2 つのボンドで 4 つのインターフェイス設定ファイルを作成し、最初の 2 つを MASTER=bond0 を使用して割り当て、次の 2 つは MASTER=bond1 を使用して割り当てます。