web-dev-qa-db-ja.com

eth0 NIC Link is Downカーネルログのメッセージが繰り返し表示されています

数日前から同じ種類のメッセージが繰り返し発生していることに気づきましたが、その期間に意図的に変更(インストール/アンインストール)されたものは何もないと断言できます。

これが/ var/log/kern.logメッセージのサンプルです。

Mar 30 06:32:45 aurora kernel: [566322.867110] e1000e: eth0 NIC Link is Down

Mar 30 06:32:47 aurora kernel: [566325.313634] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx

Mar 30 06:32:59 aurora kernel: [566337.632930] e1000e: eth0 NIC Link is Down

Mar 30 06:33:18 aurora kernel: [566356.543664] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

Mar 30 11:05:47 aurora kernel: [582689.779752] e1000e: eth0 NIC Link is Down

Mar 30 11:05:50 aurora kernel: [582692.174337] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx

完全なログファイルから-この種類のすべてのログメッセージをカウントすると-私は結論付けることができます:

  • eth0は数時間ごとに失敗します
  • 最初のケースではeth0が2秒間失敗し、2番目に19秒間失敗

ここで私が話しているのは本番サーバーです。

この問題を解決するには、メールサーバーが稼働中であり、19秒間のネットワーク障害が許容できないためです。

14
  1. ワイヤー上のエラーを確認するには、ifconfigの出力の「errors」フィールドを確認してください。ゼロ以外の場合、ハードウェア(ケーブル、NICカード、またはハブ/スイッチ)に問題があります。信頼できないイーサネットケーブルを使用すると、このフィールドにもエラーが発生します。
  2. 手順1に関係なく、イーサネットケーブルを交換します。これは迅速、安価、簡単であり、リンクがランダムな間隔で上下するたびに実行する必要があります。
  3. ethtoolを使用して、ネットワーク設定(デュプレックスなど)がスイッチの設定と一致していることを確認してください。スイッチの管理者でない場合は、ネットワーク管理者に設定を提供するよう依頼してください。
  4. スイッチでフロー制御が有効になっている場合は、Linuxボックスで有効になっていることを確認してください。それ以外の場合は、無効にします。

補足として、フロー制御が必要かどうかを評価する必要があります。 HPによると、これは高性能アプリケーションでのみ必要です。フロー制御を使用するタイミングに関するHPの記事 を参照してください

10

これが私の修正です。この問題は、特定のハードウェア(NICの2つのポートのうち1つのみのマシン)で発生します。カーネル3.9以降では、常にe1000eドライバーが使用されます。このファイルはcentos7用で、/etc/init.d/に含まれ、chkconfig --add <name>で有効にする必要があります。インターフェース名はハードコーディングされています...必ず設定してください。

#!/bin/sh

### BEGIN INIT INFO
# Provides:          pm-e1000e-fix
# Required-Start:    $network
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 6
# Short-Description: workaround for e1000e issue
# Description:       e1000e fix
### END INIT INFO

################################################################################
# Give Usage Information                                                       #
################################################################################
usage() {
    echo "Usage: $0 start|restart" >&2
    exit 1
}

################################################################################
# E X E C U T I O N    B E G I N S   H E R E                                   #
################################################################################
command="$1"
shift

interface="eth0"

case "$command" in
    start)
        ethtool -K "$interface" gso off gro off tso off
        ;;
    restart)
        ethtool -K "$interface" gso off gro off tso off
        ;;
    *)
        usage
        ;;
esac
1
Peter