Linux Bonding設定に関連する話。
前回までにBonding設定におけるおおまかな流れを書いたが、その前にやらなければ
いけないことがある。
Linuxカーネルは、起動時に認識した順番でNICのポートに対してeth0,1…とネットワークデバイス名を割り当てるため、再起動するたびに名NICのデバイスマップが変動してしまい、想定しているマッピングがずれる可能性がある(ちなみに商用UNIXではデバイス名が固定されるため、このような現象はおきないそうだ)。
どういうことかというと、こちらがeth2と想定しているポートにeth1が割り当てられてしまう、ということが起こる。
NICのポートにおけるマッピングを固定するには、NICとシステムが管理するネットワークデバイス名を関連付けてやる必要がある。恒久的な対応として、/etc/sysconfig/network-scripts/配下のifcfg-eth*に以下の記述を追加すればよい。
HWADDR=NICのMACアドレス
….と、ここまではいくつかのサイトでも記述されていることなのだが、以降は若干オリジナルが入る。動作保証するものではないので、参考までに。
ここで正しく指定するMACアドレスを割り出す方法だが、# ifconfig eth*で確認したMACアドレスは、その時点でOSから見えているアドレスなので、正しいとは言えない。
# dmesg | grep eth*としても同様。この時点ではLinux起動のたびに読み込まれるNICのネットワークデバイス名が変動するわけだから、今見えているデバイスのアドレスも、再起動したら変わってしまう可能性があるからだ。
ここでは例として、PCIの識別番号の値で検索をかける方法をあげてみるけれど、他のキーワードも利用してみて、検証しながら探っていくのがいいと思う。PCI識別番号はlspciコマンドの出力結果、先頭の値となる。
ちなみに、ここではあらかじめPCI識別番号に対応するネットワークデバイス名(eth2〜5)の割当が決まっているものと想定して、話を進めてます。
PCI識別番号を元にdmesgでNICのMACアドレスをdmesgから探す。この結果表示されたMACアドレスを、eth2〜5のMACアドレスとして固定する。
# dmesg | grep 13:00.0 < - - この例ではe1000のPCI識別番号で検索
ここで例えばeth2ではなくeth0とかが返されたとしても、それはまやかしなので気にしない。しつこいが、この時点で出力される内容は起動時にカーネルが読み込んだ順番でしかないので。
/etc/sysconfig/network-scripts/ifcfg-eth2 に上記で割り出したMACアドレスを記述する。この辺は、前回のLinux Bonding : NWインターフェイスの設定に書いたこと。
DEVICE=eth2
BOOTPROTO=none
IPADDR=xxx.xxx.xx.xx
NETMASK=255.255.255.0
ONBOOT=yes
:
:
HWADDR=00:08:28:64:97:CA
ちなみにここではeth0,1がオンボードのNICに対応しているという前提で書いているが、eth0,1のMACアドレス割り出しは、”node addr”か、もしくはベースメモリアドレスで検索するのがいいかな・・・
(マシンによって”node addr”ではなく”MAC addr”となったりもするようである)
「ベースメモリアドレス」は何かというと、実は本人もよく分かっていないのだが(汗)、NICの口を識別するための値というか。オンボードの種類、マシンのバージョンによって変わってくる。ではベースメモリアドレスの割り出し方法はというと、すみません、はっきりしたことは言えない。。(要するに現時点で不明)
# dmesg | grep “node addr”
# dmesg | grep f8000000 <- - ベースメモリアドレス
これで出力されるMACアドレスであれば、確実であろうと思われる(しつこいけど
保証するものではありません)。
やはり同様に/etc/sysconfig/network-scripts/ifcfg-eth0,1にHWADDRとして固定する。
以降は前回書いたように、ネットワークの再起動を実施して反映させる。
このような値の確実な割り出し方法というのはマシンの環境によって異なるだろうし、個人的な知識からしても「これが絶対!」というのはないように思う(なにせ未熟者ゆえ…)。
自分の頭を整理するために書いているので、あやふやな箇所や認識違いもあると思う。修正箇所や追加事項が発生したら、また書きます。
関連記事
LinuxのBondingをもっとよく知りたい
Linux Bonding : modprobe.confの編集
Linux Bonding : NWインターフェイスの設定
Linux Bonding : NICフェイルオーバーのテスト
Linux記事一覧はこちらをどうぞ
↓ ↓ ↓
Linux-index
追記(2012/10/27)
Red Hat系 5まではifcfg-eth*内のHWADDR、modprobe.confを編集してネットワークデバイスのマッピングを固定していたが、6以降は全てudev一本で制御できるようになっている、とのこと。(5でもudevにより対応することは可能)udevによる制御は、/etc/udev/rules.d/70-persistent-net.rules編集で行う。
参考
http://aikotobaha.blogspot.jp/2011/09/rhel6sl6centos6.html