Solução de desvio da placa de rede do sistema operacional do sistema Linux e causas do problema

1. Descrição do problema

A empresa tem 100-150 servidores instalados com o sistema RHEL7.4 e Kirin 7.4. Para facilitar a edição e configuração da placa de rede, use o método de script para configurar biosname = 0, ifname = 0, o objetivo é padronizar o nome da placa de rede de caracteres longos de en1o2p para o tradicional eth *, usando o método de identificação de placa de rede tradicional, mas após a instalação ser concluída, configure o IP, a placa de rede dupla BOND tem um fenômeno de desvio de rede, o fenômeno é que, após reiniciar a placa de rede, todas as portas de rede mudaram e a rede está bloqueada

2. Descrição do princípio

  • Há uma regra em /usr/lib/udev/rules.d/60-net.rules instruindo o utilitário assistente de udev / lib / udev / rename_device para visualizar todos os arquivos de sufixo / etc / sysconfig / network-scripts / ifcfg. Se descobrir que um arquivo ifcfg com uma entrada HWADDR corresponde ao endereço MAC de uma interface, ele renomeia a interface com o nome dado pela instrução DEVICE no arquivo ifcfg.
  • Instrua biosdevname em /usr/lib/udev/rules.d/71-biosdevname.rules para renomear a interface de acordo com sua estratégia de nomenclatura, desde que a interface não seja renomeada nas etapas anteriores, biosdevname esteja instalado e na linha de comando de inicialização Nenhum biosdevname = 0 é fornecido como um comando do kernel.
  • As regras em /lib/udev/rules.d/75-net-description.rules instruem o udev a preencher os valores de atributo do dispositivo udev interno id_net_name_board, ID_NET_NAME_SLOT, ID_NET_NAME_PATH, ID_NET_NAME_MAC verificando o dispositivo de interface de rede. Observe que alguns atributos do dispositivo podem ser indefinidos.
  • Há uma regra em /usr/lib/udev/rules.d/80-net-name-slot.rules instruindo o udev a renomear a interface (desde que a interface não seja renomeada na etapa 1 ou 2) e os parâmetros do kernel internet. De acordo com a seguinte prioridade: id_net_name_board, ID_NET_NAME _SLOT, ID_NET_NAME_PATH, ifnames = 0 não é especificado. Se um deles não for definido, ele irá para o próximo na lista. Se esses parâmetros não forem definidos, a interface não será renomeada.
    A Etapa 2 realmente executa a política de biosdevname. As etapas 3 e 4 executam o Esquema 1, 2, 3

3. Etapas de processamento

Como no cenário atual, a configuração de biosdevname = 0 ifname = 0 é usada, o arquivo afetado real é o arquivo /usr/lib/udev/rules.d/60-net.rules, que é então usado no arquivo de configuração As seguintes configurações:
Solução de desvio da placa de rede do sistema operacional do sistema Linux e causas do problema

Depois de usar esta configuração, o problema do sistema RHEL7.4 está completamente resolvido.Após quase 20 testes, a porta de rede não irá flutuar. No entanto, no sistema Kylin 7.4 vencedor do lance, após usar a configuração secundária, não haverá variação quando o status da porta de rede permanecer inalterado, mas se uma das portas de rede for desconectada aleatoriamente, todas as portas de rede serão alteradas e, em
seguida, use o comando udevadm test. Teste, este comando pode retroceder qual estratégia é eficaz de acordo com o nome da placa de rede. A partir do resultado de saída, o sistema RHEL7.4 e Kylin 7.4 bem-sucedido mostram que a regra das 60 regras entrou em vigor, mas ainda há um problema de desvio no Kylin vencedor. Após a consulta ao documento e posterior teste de substituição, é basicamente determinado que este problema é causado por diferenças de sistema

Quatro. Solução

Ao usar as regras de nomenclatura do systemd, o nome da placa de rede é semelhante a en1o2p3. Esse comando pode indicar com precisão de qual slot e barramento PCI na placa-mãe vem a placa de rede e a porta específica. Embora o método de nomenclatura do systemd não seja legível, é uma alteração feita para resolver esse problema. Recomenda-se usar o nome da placa de rede de formato longo no mesmo método do systemd.
O script de restauração é o seguinte:

#! /bin/bash
#  redhat还原脚本
cd /etc/sysconfig/network-scripts/
mv ifcfg- bak/
mv ifcfg-eth* bak/
mv ifcfg-bond0 bak/
cd /etc/sysconfig
cp grub  /home/grub.bak
sed -i "s/ net.ifnames=0/ /g" grub
sed -i "s/ biosdevname=0/ /g" grub
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
cd /boot/efi/EFI/redhat/
cp grub.cfg /home/grub.cfg.bak
sed -i "s/ net.ifnames=0/ /g" grub.cfg
sed -i "s/ biosdevname=0/ /g" grub.cfg
sleep 5
sync
sync
sync
reboot
#! /bin/bash
# 中标麒麟还原脚本
cd /etc/sysconfig/network-scripts/
mv ifcfg- bak/
mv ifcfg-eth* bak/
mv ifcfg-bond0 bak/
cd /etc/sysconfig
cp grub  /home/grub.bak
sed -i "s/net.ifnames=0/ /g" grub
sed -i "s/biosdevname=0/ /g" grub
grub2-mkconfig -o /boot/efi/EFI/neokylin/grub.cfg
cd /boot/efi/EFI/neokylin/
cp grub.cfg /home/grub.cfg.bak
sed -i "s/ net.ifnames=0/ /g" grub.cfg
sed -i "s/ biosdevname=0/ /g" grub.cfg
sleep 5
sync
sync
sync
reboot

Indique a fonte da reimpressão:
1. Os direitos autorais do artigo original marcado no blog pertencem ao autor original ouvido;
2. O conteúdo deste artigo não pode ser reimpresso sem a permissão do autor original, caso contrário, será considerado uma violação;
3. A fonte da reimpressão ou citação deste artigo deve ser indicada E o autor original:
4. Para aqueles que não cumprirem esta declaração ou usarem ilegalmente o conteúdo deste artigo, reservo-me o direito de prosseguir com as investigações nos termos da lei.

Acho que você gosta

Origin blog.51cto.com/13906754/2595685
Recomendado
Clasificación