Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

31.8. 特定のカーネルモジュール機能

本セクションでは、さまざまなカーネルモジュールを使用して特定のカーネル機能を有効にする方法を説明します。

31.8.1. チャンネルボンディングの使用

Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux を使用すると、管理者は ボンディングカーネルモジュールと、チャンネルボンディング インターフェースと呼ばれる特別なネットワークインターフェースを使用して、NIC を 1 つの チャンネル にバインドできます。このチャンネルボンディングにより、複数のネットワークインターフェースが 1 つとして機能できるようになり、また同時に帯域幅が増加し、冗長性を提供します。
複数のネットワークインターフェースをボンディングにチャネルするには、管理者は以下の手順を実行する必要があります。
  1. 「チャンネルボンディングインターフェース」 の説明に従って、チャネルボンディングインターフェースを設定します。
  2. パフォーマンスを強化するには、利用可能なモジュールオプションを調節して、最適な組み合わせを確認します。特に miimonarp_intervalarp_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>upas 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 です。他の有効な値は、activebackup、および 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:"
このコマンドで、&lt ;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 つの場合では無視されます。
  • アクティブなスレーブがない場合は、回復する最初のスレーブがアクティブなスレーブになります。
  • 初めにプライマリースレーブがスレーブにされた場合は、それは常にアクティブなスレーブになります。
sysfsprimary_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 に対応しています。