[RHEL5.2] 起動時にNICが認識されない場合の対処

2009/02/25PC::Linux/BSD

RHEL5.2環境でbondingを組んでいるのだが、起動時に下記メッセージが表示され、対象のデバイスが利用できないという問題が発生した。

インターフェイス bond1 を活性化中: デバイス eth2 は存在しないようですので、初期化を遅らせます
[OK]

上記メッセージではeth2であるが、eth4であったり、が出なかったりし、規則性は見出せなかった。


環境

  • Red Hat Enterprise Linux 5.2/x86_64
  • eth0,1: Broadcom NetXtreme II BCM5708 Gigabit Ethernet
  • eth2,3,4,5: Intel 82571EB Gigabit Ethernet Controller
  • bond0: Active-Backup, eth0+eth2
  • bond1: Active-Backup, eth1+eth3+eth4

調査

環境を確認する

lspciを実行し、NICに関する情報を収集

#lspci | grep Ether
03:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)
05:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)
10:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)
10:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)
11:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)
11:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)

モジュールを確認

以下はドライバをインストールした際などに自動的に設定された。

# cat /etc/modprobe.conf
alias eth0 e1000
alias eth1 e1000e
alias eth2 e1000
alias eth3 e1000
alias eth4 e1000e
alias eth5 e1000
(以下略)

対処

本環境では/etc/sysconfig/network-script/ifcfg-ethXにてMACアドレスとethXの対応付けが行われているので以下の様になっている。対応付けが正しくされていない場合にもこのエラーが出る為、まずは意図した割り当てがされるかどうかを確認すること

aliasNIC
eth0Broadcom BCM5708 Port1
eth1Broadcom BCM5708 Port2
eth2Intel 82571EB Port1
eth3Intel 82571EB Port2
eth4Intel 82571EB Port3
eth5Intel 82571EB Port4

次に、Broadcom BCM5708にe1000及びe1000eドライバを組み込むことが指定されているが、bnx2が正しく、Intel 82571EBにはe1000ではなくe1000eが正しい。このあたりの不整合が原因でエラーが発生しているものと考えられる。

よって、modprobe.confを以下のように編集

alias eth0 bnx2
alias eth1 bnx2
alias eth2 e1000e
alias eth3 e1000e
alias eth4 e1000e
alias eth5 e1000e

再起動して、エラーが発生しないことを確認。

bonding環境で改善されない場合

bonding設定が誤っている可能性があるため、別記事「[CentOS] ボンディングを構成する」を参照。