eth0 NIC Link is Down повторяет сообщение в журнале ядра

14

Несколько дней назад я заметил, что происходят такие же повторяющиеся сообщения, и я могу с уверенностью сказать, что ничего не было намеренно изменено (установлено / удалено) за этот период.

Вот пример сообщения /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 в первом случае - два, а во втором - 19 секунд.

Это рабочий сервер, о котором я говорю здесь.

Как решить эту проблему, так как почтовый сервер находится в рабочем состоянии и сбои в сети продолжительностью 19 секунд я не могу терпеть?

Милош Чаконович
источник
1
Что вы проверили до сих пор? Кабель подключен правильно и не поврежден? Переключатель на другом конце также наблюдает, как связь отключается? Стоит отметить, что обнаруженная ссылка отличается в разное время (управление потоком отличается в вашем журнале). Может быть, не удается автосогласование? Проблема исчезнет, ​​если вы заставите 1000Mbps FD Rx / Tx?
Хакан Линдквист,
@ HåkanLindqvist У меня нет возможности проверить кабель, поскольку сервер не находится рядом со мной. Это то, что я должен спросить, что проверяет технология на ферме серверов? Как заставить 1000Mbps FD Rx / Tx? И о том, что управление потоком отличается в разное время, это проблема?
Милош Чаконович
Изменение типа ссылки с течением времени наводит меня на мысль, что что-то не совсем правильно, но поиск фактической причины - это, конечно, отдельный вопрос. Спросить технический персонал может быть хорошей идеей.
Хокан Линдквист,
1
Вы можете использовать ethtool или mii-tool для проверки статуса автосогласования и т. Д. На стороне сервера. Вы должны убедиться, что коммутатор вашего сервера настроен на соответствие. Это похоже на аппаратную проблему - это может быть серверный адаптер, кабель или коммутатор. Я предлагаю посмотреть на состояние коммутатора, чтобы увидеть, что он думает, что происходит.
Пол Холдейн

Ответы:

10
  1. проверьте наличие ошибок на проводе, посмотрите на поле «ошибки» в выходных данных ifconfig. Если не ноль, то есть проблемы с оборудованием (кабель, сетевая карта или концентратор / коммутатор). Ненадежный кабель Ethernet также приведет к ошибкам в этой области.
  2. Замените кабель Ethernet независимо от шага 1. Это быстро, дешево и просто, и его следует делать всякий раз, когда ваш канал поднимается и опускается через случайные интервалы.
  3. используйте ethtoolи убедитесь, что настройки сети (дуплекс и т. д.) совпадают с настройками коммутатора. Если вы не являетесь администратором коммутатора, попросите администратора сети предоставить вам настройки.
  4. если на коммутаторе включено управление потоком данных, убедитесь, что он включен на вашем компьютере с Linux. В противном случае отключите его.

В качестве примечания, вы должны оценить, нужно ли вам управление потоком. По мнению HP, это необходимо только для высокопроизводительных приложений: см. Статью HP «Когда использовать управление потоком»

Майкл Мартинес
источник
1
Это были ошибки проводов. Специалисты по серверной ферме сделали свою работу после того, как сообщили об ошибках.
Милош Чаконович
1
'ifconfig' показывал ошибки?
Майкл Мартинес
1

Вот мое исправление. Эта проблема возникает на определенном оборудовании (на одной машине только 1 из 2 портов на сетевой карте), всегда с драйвером e1000e, начиная с ядра 3.9 или около того. Этот файл для 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
Питер
источник