Solución de derivación de la tarjeta de red del sistema operativo del sistema Linux y causas del problema

1. Descripción del problema

La empresa cuenta con 100-150 servidores instalados con el sistema RHEL7.4 y Kirin 7.4. Para facilitar la edición y configuración de la tarjeta de red, utilice el método de script para configurar biosname = 0, ifname = 0, el propósito es estandarizar el nombre de la tarjeta de red de caracteres largos de en1o2p al tradicional eth *, utilizando el método tradicional de identificación de la tarjeta de red, pero una vez completada la instalación, configure la IP, la tarjeta de red dual BOND tiene un fenómeno de deriva de red, el fenómeno es que después de reiniciar la tarjeta de red, todos los puertos de red han cambiado y la red está bloqueada

2. Descripción del principio

  • Hay una regla en /usr/lib/udev/rules.d/60-net.rules que indica a la utilidad del asistente udev / lib / udev / rename_device que vea todos los archivos de sufijo / etc / sysconfig / network-scripts / ifcfg. Si encuentra que un archivo ifcfg con una entrada HWADDR coincide con la dirección MAC de una interfaz, cambia el nombre de la interfaz al nombre dado por la instrucción DEVICE en el archivo ifcfg.
  • Indique a biosdevname en /usr/lib/udev/rules.d/71-biosdevname.rules que cambie el nombre de la interfaz de acuerdo con su estrategia de nomenclatura, siempre que no se cambie el nombre de la interfaz en los pasos anteriores, que biosdevname esté instalado y en la línea de comando de arranque No se proporciona biosdevname = 0 como comando del kernel.
  • Las reglas en /lib/udev/rules.d/75-net-description.rules indican a udev que complete los valores de los atributos del dispositivo udev interno id_net_name_board, ID_NET_NAME_SLOT, ID_NET_NAME_PATH, ID_NET_NAME_MAC comprobando el dispositivo de interfaz de red. Tenga en cuenta que algunos atributos del dispositivo pueden no estar definidos.
  • Hay una regla en /usr/lib/udev/rules.d/80-net-name-slot.rules que indica a udev que cambie el nombre de la interfaz (siempre que no se cambie el nombre de la interfaz en el paso 1 o 2) y los parámetros del kernel red. De acuerdo con la siguiente prioridad: id_net_name_board, ID_NET_NAME _SLOT, ID_NET_NAME_PATH, no se especifica ifnames = 0. Si uno de ellos no está configurado, pasará al siguiente de la lista. Si no se configuran estos parámetros, no se cambiará el nombre de la interfaz.
    El paso 2 realmente ejecuta la política de biosdevname Los pasos 3 y 4 realmente ejecutan el esquema 1, 2, 3

3. Pasos de procesamiento

Dado que en el escenario real, se usa la configuración de biosdevname = 0 ifname = 0, el archivo afectado real es el archivo /usr/lib/udev/rules.d/60-net.rules, que luego se usa en el archivo de configuración Los siguientes ajustes:
Solución de derivación de la tarjeta de red del sistema operativo del sistema Linux y causas del problema

Después de usar esta configuración, el problema del sistema RHEL7.4 está completamente resuelto Después de casi 20 pruebas, el puerto de red no se desviará. Sin embargo, en el sistema Kylin 7.4 ganador de la licitación, después de usar la configuración secundaria, no habrá desviación cuando el estado del puerto de red permanece sin cambios, pero si uno de los puertos de red se desconecta al azar, todos los puertos de red se cambiarán y
luego se usará el comando de prueba udevadm. Prueba, este comando puede retroceder qué estrategia es efectiva de acuerdo con el nombre de la tarjeta de red. A partir del resultado de salida, el sistema RHEL7.4 y Successful Kylin 7.4 muestran que la regla de las 60 reglas ha entrado en vigencia, pero todavía hay un problema de deriva en el Kylin ganador. Después de la consulta del documento y la prueba de reemplazo adicional, básicamente se determina que este problema es causado por diferencias del sistema

Cuatro. Solución

Cuando se utilizan las reglas de nomenclatura de systemd, el nombre de la tarjeta de red es similar a en1o2p3 Este comando puede indicar con precisión de qué ranura PCI y bus en la placa base proviene la tarjeta de red y el puerto específico. Aunque el método de asignación de nombres de systemd no es legible, es un cambio realizado para resolver este problema. Se recomienda utilizar el nombre de la tarjeta de red de formato largo en el mismo método de systemd.
El script de restauración es el siguiente:

#! /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 la fuente de la reimpresión:
1. Los derechos de autor del artículo original marcado en el blog pertenecen al autor original oído;
2. El contenido de este artículo no puede ser reimpreso sin el permiso del autor original, de lo contrario se considerará una infracción;
3. Se debe indicar la fuente de la reimpresión o cita de este artículo. Y el autor original:
4. Me reservo el derecho de proseguir con las investigaciones para quienes no cumplan con esta declaración o utilicen el contenido de este artículo de manera ilegal.

Supongo que te gusta

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