LinuxでNICのデバイスマップを固定する
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