『CentOS 6.2 + e1000eでうまくいかなかった話』
ほぼ↑に記載ある通りなんですが、同様の事象が発生した為、メモしておきます。
OS
OS | CentOS 6.2 |
---|---|
カーネル | 2.6.32-220.el6.x86_64 |
事象
上記OS環境でbonding(active-backup)環境を組んでいたところ、
突然、backup側のeth1がdownしました。
downするまではしばらく問題なく使えているのですが、急にダウンしてしまいます。
active側のeth0は問題ありません。
インターフェース名 | MACアドレス | bonding設定 | 事象 |
---|---|---|---|
eth0 | 00:25:90:xx:xx:xa | avtive | 問題なし |
eth1 | 00:25:90:xx:xx:xb | backup | 突然ダウン |
突然ダウンするという事象が発生するとdmesgに
bonding: bond0: link status definitely down for interface eth1, disabling it
こんな表記が出ます。
bondig状態を確認する為、
cat /proc/net/bonding/bond0
を見ると、↓のようにeth1がdown状態になっているのが分かります。
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: fault-tolerance (active-backup) Primary Slave: eth0 (primary_reselect always) Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 0 Up Delay (ms): 0 Down Delay (ms): 0 ARP Polling Interval (ms): 1000 ARP IP target/s (n.n.n.n form): 10.0.0.254 Slave Interface: eth0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 00:25:90:xx:xx:xa Slave queue ID: 0 Slave Interface: eth1 MII Status: down Speed: 1000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 00:25:90:xx:xx:xb Slave queue ID: 0
/var/log/messagesには
Sep 11 00:00:01 test kernel: e1000e 0000:05:00.0: eth1: Error reading PHY register
こんなメッセージも出ています。
手掛かり
eth1が突然ダウンするのも当然不可解だったのですが、事象がeth1だけで発生してeth0は問題ないのが疑問でした。
が、どうもマザーボードに載っているネットワークコントローラのチップがeth0とeth1とで別という情報を同僚より入手。
マジすかと調べてみると、確かに違ってました。
上記の表にチップ名を追記してまとめてみると以下のようになりました。
インターフェース名 | MACアドレス | bonding設定 | 事象 | ネットワークコントローラチップ名 |
---|---|---|---|---|
eth0 | 00:25:90:xx:xx:xa | avtive | 問題なし | 82579LM |
eth1 | 00:25:90:xx:xx:xb | backup | 突然ダウン | 82574L |
調べ方
lspciでPCIデバイス情報を確認
[root@test ~]# lspci -tvv -[0000:00]-+-00.0 Intel Corporation Xeon E3-1200 Processor Family DRAM Controller +-01.0-[01]-- +-01.1-[02]-- +-06.0-[03]-- +-19.0 Intel Corporation 82579LM Gigabit Network Connection +-1a.0 Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 +-1c.0-[04]-- +-1c.4-[05]----00.0 Intel Corporation 82574L Gigabit Network Connection +-1d.0 Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 +-1e.0-[06]----03.0 Matrox Graphics, Inc. MGA G200eW WPCM450 +-1f.0 Intel Corporation C204 Chipset Family LPC Controller +-1f.2 Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller \-1f.3 Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller
dmesgからeth0,eth1のioポートアドレスを確認
[root@test ~]# dmesg | grep -i eth e1000e 0000:00:19.0: eth0: (PCI Express:2.5GT/s:Width x1) 00:25:90:xx:xx:xa e1000e 0000:00:19.0: eth0: Intel(R) PRO/1000 Network Connection e1000e 0000:00:19.0: eth0: MAC: 10, PHY: 11, PBA No: FFFFFF-0FF e1000e 0000:05:00.0: eth1: (PCI Express:2.5GT/s:Width x1) 00:25:90:xx:xx:xb e1000e 0000:05:00.0: eth1: Intel(R) PRO/1000 Network Connection e1000e 0000:05:00.0: eth1: MAC: 3, PHY: 8, PBA No: FFFFFF-0FF
マザーボードの型番も確認
[root@test ~]# dmidecode -s baseboard-product-name X9SCL/X9SCM
型番からオンラインマニュアルを落としてきてチップ情報等を確認。
対策
『CentOS 6.2 + e1000eでうまくいかなかった話』
こちらを参考にさせて頂きました。
/etc/grub.conf
の
kernelパラメータに
pcie_aspm=off
を追加して以下のようにしました。
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=UUID=3e1127e2-c328-4487-b49c-d1e95e9adf39 console=tty0 console=ttyS1,115200n8 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM rd_NO_DM pcie_aspm=off
これでOS再起動。
確認
再起動後、
dmesg | grep -i pcie
とコマンドを打ってみると、
PCIe ASPM is disabled
と表示されるのが分かります。
再起動後はeth1はダウンすることなく、動作し続けています。
原因
最初はbondingの設定に原因があるのかと思ってましたが、どうもそうではなく、ASPM(Active-State Power Management)が、この問題に関係している模様。
bondingのbackup側のインターフェースが基本使われないからASPM機能が働いてダウンに繋がったのかな?とも思いましたが、
http://bugs.centos.org/view.php?id=5614
ここを見ると同一のチップで同様の事象の報告が上がってました。
http://docs.fedoraproject.org/ja-JP/Fedora/15/html/Power_Management_Guide/ASPM.html
ここ曰く、
pcie_aspm=force はシステムが反応しない原因になる可能性があります。
pcie_aspm=force がセットされると、ASPM をサポートしていないハードウェアではシステムが反応しない原因になる 可能性があります。
pcie_aspm=force をセットする前にシステム上の全ての PCIe ハードウェアが ASPM を サポートすることを確認して下さい。
『radserv ZR1 モデル』という製品でも同様の対処をしていました。
http://online.atworks.co.jp/product/server/1u/radserv_zr1/index.html
※オンボード Intel 82574L LAN × 2
■CentOS 6.2 x86_64 (注*2)
(注*2) OSインストール後に「pcie_aspm=off」をカーネルパラメータに追記する必要があります。