31.8. 特定のカーネルモジュール機能
本セクションでは、さまざまなカーネルモジュールを使用して特定のカーネル機能を有効にする方法を説明します。
31.8.1. チャンネルボンディングの使用
Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux を使用すると、管理者は
ボンディングカーネルモジュールと、チャンネルボンディング
インターフェースと呼ばれる特別なネットワークインターフェースを使用して、NIC を 1 つの チャンネル にバインドできます。このチャンネルボンディングにより、複数のネットワークインターフェースが 1 つとして機能できるようになり、また同時に帯域幅が増加し、冗長性を提供します。
複数のネットワークインターフェースをボンディングにチャネルするには、管理者は以下の手順を実行する必要があります。
- 「チャンネルボンディングインターフェース」 の説明に従って、チャネルボンディングインターフェースを設定します。
- パフォーマンスを強化するには、利用可能なモジュールオプションを調節して、最適な組み合わせを確認します。特に miimon、arp_interval、arp_ip_target パラメーターに注意してください。利用可能なオプション一覧と使用しているボンディングされたインターフェースに最適なオプションを迅速に決定する方法については、「ボンディングモジュールのディレクティブ」を参照してください。
31.8.1.1. ボンディングモジュールのディレクティブ
ボンディングインターフェース設定ファイル(例:
ifcfg-bond0
)で BONDING_OPTS="<bonding parameters>"
ディレクティブに追加する前に、ボンディングインターフェースにどのチャンネルボンディングモジュールパラメーターが最適であるかをテストすることが推奨されます。ボンディングされたインターフェースのパラメーターは、sysfs
ファイルシステム内のファイルを操作することで、ボンディングモジュールをアンロード (およびリロード) することなく設定できます。
sysfs
は、カーネルオブジェクトをディレクトリー、ファイル、シンボリックリンクとして表す仮想ファイルシステムです。sysfs
を使用すると、カーネルオブジェクトに関する情報のクエリーや、通常のファイルシステムコマンドを使用することでこれらのオブジェクトを操作することもできます。sysfs
仮想ファイルシステムには /etc/fstab
に行があり、/sys/
ディレクトリー下にマウントされます。ボンディングインターフェースはすべて、/sys/class/net/
ディレクトリー下にあるファイルと対話したり、これらを操作することで動的に設定できます。
ボンディングインターフェースに最適なパラメーターを決定するには、「チャンネルボンディングインターフェース」 の説明に従って
ifcfg-bond0
などのチャンネルボンディングインターフェースファイルを作成します。ボンディングされている各インターフェースの設定ファイルに SLAVE=yes
ディレクティブおよび MASTER=bond0
ディレクティブを bond0 に挿入します。これが完了すると、パラメーターの確認に進むことができます。
まず、ifconfig bond <
N>up
as root を実行して、作成したボンディング
を起動します。
~]# ifconfig bond0 up
ifcfg-bond0
ボンディングインターフェースファイルを正しく作成している場合は、ifconfig の出力に bond0
がリストされているはずです(オプションはありません)。
~]# ifconfig bond0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) eth0 Link encap:Ethernet HWaddr 52:54:00:26:9E:F1 inet addr:192.168.122.251 Bcast:192.168.122.255 Mask:255.255.255.0 inet6 addr: fe80::5054:ff:fe26:9ef1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:207 errors:0 dropped:0 overruns:0 frame:0 TX packets:205 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:70374 (68.7 KiB) TX bytes:25298 (24.7 KiB) [output truncated]
アップになっていないボンドも含めてすべての既存のボンドを表示するには、以下を実行します。
~]# cat /sys/class/net/bonding_masters
bond0
/sys/class/net/bond <N> /bonding/ ディレクトリーにあるファイルを操作することで、各ボンディングを
個別に設定できます。まず、設定するボンドをダウンにします。
~]# ifconfig bond0 down
たとえば、1 秒間隔で bond0 で MII 監視を有効にするには、(root で)実行できます。
~]# echo 1000 > /sys/class/net/bond0/bonding/miimon
balance-alb
モードで bond0 を設定するには、以下のいずれかを実行します。
~]# echo 6 > /sys/class/net/bond0/bonding/mode
またはモード名を使用します。
~]# echo balance-alb > /sys/class/net/bond0/bonding/mode
該当するボンディングのオプションを設定したら、ifconfig bond <N>
up
を実行してテストすることができ ます。オプションを変更する場合はインターフェースを停止して、sysfs
を使用してそのパラメーターを修正後、有効に戻して再確認します。
ボンディングに最適なパラメーターセットを決定したら、これらのパラメーターを空白区切りの一覧として、設定するボンディングインターフェースの
/etc/sysconfig/network-scripts/ifcfg-bond <N
> ファイルの BONDING_OPTS=
ディレクティブに追加します。ボンドが有効な場合 (たとえば、ONBOOT=yes
ディレクティブが設定されていて、ブートシーケンス中にシステムがボンドを有効にする場合) はいつでも、BONDING_OPTS
で指定されているボンディングオプションはそのボンドに対して有効となります。ボンディングインターフェース(および BONDING_OPTS
)の設定に関する詳細は、「チャンネルボンディングインターフェース」 を参照してください。
以下の一覧は、より一般的なチャンネルボンディングパラメーターの多くの名前と、その機能を説明します。詳細は、modinfo ボンディング 出力の各
parm
について簡単な説明、または kernel-doc パッケージの bonding.txt
ファイルの詳細の説明を参照してください( 「その他のリソース」を参照してください)。
ボンディングインターフェースパラメーター
-
arp_interval=<time_in_milliseconds>
- ARP モニタリングが発生する頻度(ミリ秒単位)を指定します。この設定を設定する場合は、このパラメーターの開始点は
1000
になります。必要なパラメーターをすべて指定するようにしてください。arp_interval
およびarp_ip_target
の両パラメーター、あるいはmiimon
パラメーターの指定は不可欠です。指定されないと、リンクが失敗した場合にネットワークパフォーマンスが低下する恐れがあります。mode=0
またはmode=2
(2 つの負荷分散モード) でこの設定を使用する場合、ネットワークスイッチは NIC 全体に均等にパケットを分散するよう設定する必要があります。これを実現する方法は、kernel-doc パッケージのbonding.txt
ファイル( 「その他のリソース」を参照)を参照してください。デフォルトでは値は0
に設定されており、ARP 監視を無効にします。 -
arp_ip_target=<ip_address>[,<ip_address_2>,…<ip_address_16>]
arp_interval
パラメーターが有効になっていると、ARP 要求のターゲット IP アドレスを指定します。最大 16 の IP アドレスは、コンマ区切りの一覧で指定できます。-
arp_validate=<value>
- ARP プローブのソース/ディストリビューションを検証します。デフォルトは
none
です。他の有効な値は、active
、backup
、およびall
です。 -
downdelay=<time_in_milliseconds>
- リンクを無効にする前に、リンクの失敗後に待機する時間を指定します (ミリ秒単位)。値は、
miimon
パラメーターで指定される値の倍数でなければなりません。デフォルトでは値は0
に設定されており、ARP 監視を無効にします。 - lacp_rate=<value>
- リンクパートナーが 802.3ad モードで LACPDU パケットを送信するレートを指定します。以下の値が使用できます。
slow
または0
: デフォルト設定。パートナーが 30 秒ごとに LACPDU を送信するよう指定します。fast
または1
: パートナーが LACPDU を 1 秒ごとに送信するように指定します。
-
miimon=<time_in_milliseconds>
- MII リンク監視が発生する頻度を指定します (ミリ秒単位)。MII は NIC がアクティブであることを検証するために使用されるため、これは高可用性が必要な場合に役立ちます。特定の NIC のドライバーが MII ツールに対応していることを確認するには、root で以下のコマンドを入力します。
~]# ethtool <interface_name> | grep "Link detected:"
このコマンドで、< ;interface_name> を、ボンドインターフェースではなくeth0
などのデバイスインターフェースの名前に置き換えます。MII が対応している場合は、コマンドは以下を返します。Link detected: yes
高可用性のためにボンディングされたインターフェースを使用する場合、各 NIC のモジュールは MII に対応していなければなりません。値を0
(デフォルト) に設定すると、この機能はオフになります。この設定を設定する際に、このパラメーターのスタート地点は100
になります。必要なパラメーターをすべて指定するようにしてください。arp_interval
およびarp_ip_target
の両パラメーター、あるいはmiimon
パラメーターの指定は不可欠です。指定されないと、リンクが失敗した場合にネットワークパフォーマンスが低下する恐れがあります。 -
mode=<value>
- ボンディングポリシーの指定が可能になります。< value > は、以下のいずれかになります。
balance-rr
または0
: 耐障害性とロードバランシングにラウンドロビンポリシーを設定します。利用可能な最初のインターフェースからそれぞれのボンディングされたスレーブインターフェースで送受信が順次行われます。active-backup
または1
: 耐障害性のためアクティブなバックアップポリシーを設定します。ボンディングインターフェースの中で最初に利用可能になったものから送受信が行われます。別のボンディングされたスレーブインターフェースは、アクティブなボンディングされたスレーブインターフェースが失敗した場合にのみ使用されます。balance-xor
または2
: フォールトトレランスおよび負荷分散用の XOR(排他的なor)ポリシーを設定します。この方法を使用すると、インターフェースは受信要求の MAC アドレスとスレーブ NIC のいずれかの MAC アドレスが一致します。このリンクが確立されると、最初の利用可能なインターフェースから順番に送信が送信されます。broadcast
または3
: 耐障害性にブロードキャストポリシーを設定します。すべての送信は、すべてのスレーブインターフェースで行われます。802.3ad
または4
: IEEE 802.3ad 動的リンクアグリゲーションのポリシーを設定します。同一の速度とデュプレックス設定を共有するアグリゲーショングループを作成します。アクティブなアグリゲーターのすべてのスレーブで送受信を行います。802.3ad に対応するスイッチが必要です。balance-tlb
または5
: 耐障害性とロードバランシングのための送信ロードバランシング (TLB) ポリシーを設定します。発信トラフィックは、各スレーブインターフェースの現在の負荷に従って分散されます。受信トラフィックは、現在のスレーブにより受信されます。受信しているスレーブが失敗すると、別のスレーブが失敗したスレーブの MAC アドレスを引き継ぎます。このモードは、カーネルボンディングモジュールが認識しているローカルアドレスにのみ、適したものになります。このため、仮想マシンのブリッジの背後では使用できません。balance-alb
または6
: 耐障害性とロードバランシングに適応型ロードバランシング (ALB) ポリシーを設定します。IPv4
トラフィック用の送受信ロードバランシングが含まれます。ARP
ネゴシエーションにより、受信ロードバランシングが可能です。このモードは、カーネルボンディングモジュールが認識しているローカルアドレスにのみ、適したものになります。このため、仮想マシンのブリッジの背後では使用できません。
-
num_unsol_na=<number>
- フェイルオーバーイベント後に発行される未諾の IPv6 Neighbor Advertisement の数を指定します。フェイルオーバーの直後に未要求の NA が発行されます。有効な範囲は
0 - 255
です。デフォルト値は1
です。このパラメーターは、active-backup モードにのみ影響します。 -
primary=<interface_name>
- プライマリーデバイスのインターフェース名(例:
eth0
)を指定します。primary
デバイスは、使用される最初のボンディングインターフェースであり、失敗しない限りは破棄されません。この設定が特に役立つのは、ボンディングインターフェースの NIC の 1 つが高速なため、大規模な負荷に対応できる場合です。この設定は、ボンディングインターフェースがactive-backup
モードの場合にのみ有効です。kernel-doc パッケージのbonding.txt
ファイル( 「その他のリソース」を参照)を参照してください。 -
primary_reselect=<value>
- プライマリースレーブに対して再選択ポリシーを指定します。これは、アクティブなスレーブの失敗やプライマリースレーブの回復が発生した場合に、どのようにプライマリースレーブが選択されてアクティブなスレーブになるかという点に影響します。このパラメーターは、プライマリースレーブと他のスレーブ間でのフリップフロップを防ぐように設計されています。以下の値が使用できます。
always
または0
: プライマリースレーブは有効になるといつでもアクティブなスレーブになります。better
または1
: プライマリースレーブの速度とデュプレックスが、現在のアクティブなスレーブの速度とデュプレックスと比べて良い場合は、プライマリースレーブは有効になるとアクティブなスレーブになります。failure
または2
: 現在のアクティブなスレーブが失敗してプライマリースレーブが有効になる場合のみ、プライマリースレーブはアクティブなスレーブになります。
primary_reselect
の設定は、以下の 2 つの場合では無視されます。- アクティブなスレーブがない場合は、回復する最初のスレーブがアクティブなスレーブになります。
- 初めにプライマリースレーブがスレーブにされた場合は、それは常にアクティブなスレーブになります。
sysfs
でprimary_reselect
ポリシーを変更すると、新しいポリシーに従って、アクティブなスレーブを即座に選択することができます。これにより、状況によってはアクティブなスレーブに変更が生じる場合があります。 -
updelay=<time_in_milliseconds>
- リンクを有効にする前の待機時間を指定します (ミリ秒単位)。値は、
miimon
パラメーターで指定される値の倍数でなければなりません。デフォルトでは値は0
に設定されており、ARP 監視を無効にします。 -
use_carrier=<number>
- リンク状態を決定するために
miimon
が MII/ETHTOOL ioctls またはnetif_carrier_ok()
を使用するかどうか指定します。netif_carrier_ok()
機能は、デバイスドライバーを使用してnetif_carrier_on/off
によりその状態を維持します。大半のデバイスドライバーはこの機能に対応しています。MII/ETHROOL ioctls ツールは、カーネル内で非推奨の呼び出しシーケンスを使用します。ただし、これは使用しているデバイスドライバーがnetif_carrier_on/off
に対応しない場合でも設定可能です。有効な値は以下のとおりです。1
: デフォルト設定。netif_carrier_ok()
の使用を有効にします。0
: MII/ETHTOOL ioctls の使用を有効にします。
注記リンクがアップになっているべきでない時にアップであるとボンディングインターフェースが主張した場合、使用しているネットワークデバイスドライバーはnetif_carrier_on/off
に対応しない可能性があります。 -
xmit_hash_policy=<value>
balance-xor
および802.3ad
モードで、スレーブを選択する時に使用する送信ハッシュポリシーを選択します。以下の値が使用できます。0
またはlayer2
: デフォルト設定。このパラメーターは、ハードウェア MAC アドレスの XOR を使用してハッシュを生成します。使用する式は以下のとおりです。(<source_MAC_address> XOR <destination_MAC>) MODULO <slave_count>
このアルゴリズムは、すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振り、802.3ad に対応します。1
またはlayer3+4
: 上位レイヤープロトコルの情報を (利用可能な場合は) 使用して、ハッシュを生成します。これにより、特定のネットワークピアへのトラフィックが複数のスレーブに及ぶようにできますが、単一の接続では複数のスレーブに及びません。断片化された TCP および UDP パケットに使用される公式は、以下のとおりです:((<source_port> XOR <dest_port>) XOR ((<source_IP> XOR <dest_IP>) AND
0xffff
) MODULO <slave_count>断片化された TCP または UDP パケットおよび他のすべての IP プロトコルトラフィックの場合、送信元および宛先ポート情報は省略されます。IP 以外のトラフィックの場合、この式は layer2 がハッシュポリシーを送信するものと同じです。このポリシーの目的は、特に PFC2 付きの Cisco スイッチや Foundry および IBM 製品など一部のスイッチの動作を真似ることです。このポリシーで使用されるアルゴリズムは、802.3ad に対応していません。2
またはlayer2+3
: layer2 および layer3 プロトコル情報の組み合わせを使用して、ハッシュを生成します。XOR のハードウェアの MAC アドレスと IP アドレスを使用してハッシュを生成します。式は以下のとおりです。(((<source_IP> XOR <dest_IP>) AND
0xffff
) XOR ( <source_MAC> XOR <destination_MAC> )) MODULO <slave_count>このアルゴリズムは、すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振ります。IP 以外のトラフィックの場合、この式は layer2 送信ハッシュポリシーと同じです。このポリシーの目的は、特に layer3 ゲートウェイデバイスが大半の宛先に到達する必要がある環境において、layer2 単独の場合より分散されたトラフィックを提供することです。このアルゴリズムは、802.3ad に対応しています。