RHEL4/CentOS4で複数Bonding

RedHat Enterprise Linux ES/AS 4で複数のbondingを構成しようとした際に、想定した動作と違う場合があったので設定方法について調べてみた。すると、HPのWebサイトでこんな情報を発見した。結論から言えば、RHELのUpdate2以前か以降かで設定書式が異なるということ。以下、参考資料(FAQ: Linuxディストリビューション・パッケージ)からの引用を織り交ぜて説明していく。

「RHEL4で複数の bonding interface が作成できないが?」

RHEL4では、RHEL3と同一の設定方法で複数 bonding interfaceを作成すると、最初の bonding interface以外は全て起動に失敗してしまう問題がある。(以下の起動失敗例を参照)。

  • 起動失敗例(bonding interfaceが2つの場合):


# service network start
ネットワークパラメーターを設定中:     [ OK ]
ループバックインターフェイスを呼び込み中  [ OK ]
インターフェイス bond0 を活性化中:    [ OK ]
インターフェイス bond1 を活性化中: bonding デバイス bond1 は存在しないようですので、初期化を遅らせます。  [失敗]
RHEL4で複数 bonding interfaceを作成する場合、「RHEL4/U2未満ならば max_bondsオプションを利用した方法(※)を使い、RHEL4/U2以降ならば modprobe.confの installディレクティブを利用した方法」を使う必要がある。ただし、モジュールオプション(監視インターバル時間が異なる、primary interfaceが指定されている等)が異なる複数のbonding interfaceは、installディレクティブを利用した方法でのみ作成可能という制約があるので注意。
※本FAQ作成当時、RedHat社 knowledgebaseでは installディレクティブで複数の bonding interfaceを作成する方法のみ言及されていたが、後に max_bondsを利用した設定方法が追加された。

  • max_bondsオプションを利用した方法(bonding interfaceが2つの場合):


alias eth0 tg3
alias eth1 tg3
alias eth2 e1000
alias eth3 e1000
alias bond0 bonding
alias bond1 bonding

options bonding max_bonds=2 miimon=100 mode=1

  • installディレクティブを利用した方法(bonding interfaceが2つの場合):


alias eth0 tg3
alias eth1 tg3
alias eth2 e1000
alias eth3 e1000
alias bond0 bonding
alias bond1 bonding

options bond0 miimon=300 mode=1
install bond1 /sbin/modprobe bonding -o bond1 miimon=300 mode=2

まとめ:RHEL4における複数bonding設定上の留意事項

  • RHEL4のプラットフォーム上で複数bondingを設定する場合には、Update2の前後どちらかであるかにより、設定書式が異なる。RHEL4/U2以前ならmax_bonds、RHEL4/U2以降ならinstallディレクティブを使う。
  • max_bondsオプションを利用して bonding interfaceを 3ヶ以上作成する場合、option指定行の max_bonds=の値を 3等の interface数に変更すること。installディレクティブを利用する場合は、aliasでの指定は bond0だけのままにしておき、`install bond2 /sbin/modprobe .......` の行を interfaceの数を増やした分だけ随時追加する。
  • installディレクティブを利用した場合、bondingインターフェース毎にオプション指定を個別に設定する事が可能。max_bondsオプションを利用した場合には、全ての bondXのオプション値は同じものを利用しなければならないため注意が必要。