O link eth0 da NIC está inativo, repetindo a mensagem no log do kernel

14

Eu notei desde alguns dias atrás que o mesmo tipo de mensagem repetida ocorre e posso dizer positivamente que nada foi intencionalmente alterado (instalado / desinstalado) nesse período.

aqui está uma amostra da mensagem /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

do arquivo de log completo - quando levar todas as mensagens de log desse tipo em conta - posso concluir:

  • eth0 falha a cada poucas horas
  • eth0 falha no primeiro caso por dois e no segundo por 19 segundos

Estou falando do servidor de produção aqui.

Como resolver esse problema, já que o servidor de correio está em produção e as falhas de rede de 19 segundos de duração não posso tolerar?

Miloš Đakonović
fonte
1
O que você verificou até agora? O cabo está conectado corretamente e sem danos? O interruptor do outro lado também observa o link caindo? É importante notar que o link detectado é diferente em momentos diferentes (o controle de fluxo difere no seu log). Talvez a negociação automática falhe? O problema desaparece se você forçar 1000Mbps FD Rx / Tx?
Håkan Lindqvist
@ HåkanLindqvist Não tenho opção de verificar o cabo, pois o servidor não está fisicamente perto de mim. É algo que eu deveria pedir para verificar as coisas técnicas do farm de servidores? Como forço 1000Mbps FD Rx / Tx? E, sobre o controle de fluxo ser diferente em momentos diferentes, esse é o problema?
Miloš Đakonović 30/03
O link "tipo" que muda ao longo do tempo sugere para mim que algo não está certo, mas encontrar a causa real é obviamente uma questão totalmente separada. Pedir à equipe técnica pode ser uma boa ideia.
Håkan Lindqvist
1
Você pode usar o ethtool ou o mii-tool para verificar o status da negociação automática etc. no final do servidor. Você precisa ter certeza de que o switch que seu servidor está configurado para corresponder. Isso parece um problema de hardware - pode ser um adaptador, cabo ou switch do servidor. Eu sugiro olhar para o status do switch para ver o que ele pensa que está acontecendo.
Paul Haldane 30/03

Respostas:

10
  1. verifique se há erros no fio, observe o campo "erros" na saída de ifconfig. Se diferente de zero, há problemas com o hardware (cabo, placa NIC ou hub / switch). Um cabo Ethernet não confiável também apresentará erros nesse campo.
  2. substitua o cabo Ethernet, independentemente da etapa 1. Isso é rápido, barato e fácil, e deve ser feito sempre que o seu link for ativado e desativado em intervalos aleatórios.
  3. use ethtoole verifique se as configurações de rede (dúplex, etc) correspondem às do switch. Se você não é o administrador do switch, peça ao administrador da rede que forneça as configurações.
  4. se o switch tiver o controle de fluxo ativado, verifique se ele está ativado na sua caixa Linux. Caso contrário, desative-o.

Como uma observação lateral, você deve avaliar se precisa de controle de fluxo. De acordo com a HP, isso é necessário apenas para aplicativos de alto desempenho: consulte o artigo da HP sobre Quando usar o controle de fluxo

Michael Martinez
fonte
1
Foram erros de conexão. O material técnico do farm de servidores fez o trabalho depois que eu relatei erros.
Miloš Đakonović 19/03/2015
1
'ifconfig' estava mostrando erros?
Michael Martinez
1

Aqui está a minha correção. Esse problema ocorre em hardware específico (em uma máquina, apenas 1 em 2 portas na NIC), sempre com o driver e1000e, desde o kernel 3.9 ou mais. Este arquivo é para o centos7, entra /etc/init.d/e precisa ser ativado com chkconfig --add <name>. O nome da interface é codificado permanentemente ... certifique-se de defini-lo.

#!/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
Pedro
fonte