Linux 서버(CentOS7.9 커널 5.4.179-1.el7.elrepo.x86_64)에서 이상한 문제를 조사하고 있습니다. 완벽하게 정상적인 서비스가 있습니다.
# /etc/systemd/system/test.service
[Unit]
Description=tet
Before=frr.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/test.sh
[Install]
WantedBy=multi-user.target
test.sh는 네트워크를 구성합니다(예: 단순화된 의사 코드).
show nic name by mac
enp1s0f0
예를 들어 레거시 이름 등 대신 최신 네트워크 카드 이름을 출력하며 eth1
서비스는 다른 모든 서버에서 제대로 작동합니다.
그런데 어느 날 예를 들어 옛날 방식의 네트워크 카드 이름이 출력된 것 같은데 eth1
, 그 당시로 거슬러 올라가는 관련 로그를 찾을 수 없습니다.
dmesg에서 네트워크 카드 이름 변경 로그를 찾았습니다.
[Fri Sep 15 00:38:24 2023] bnxt_en 0000:01:00.1 eth1: Broadcom BCM57414 NetXtreme-E 10Gb/25Gb Ethernet found at mem 4000200000, node addr 11:11:11:11:11:11
[Fri Sep 15 00:38:24 2023] bnxt_en 0000:01:00.1 enp1s0f1: renamed from eth1
그래서 네트워크 카드 이름은 eth1이 아닐까 싶습니다.
multi-user.target이 시작된 후에도 네트워크 카드 이름 변경이 발생할 수 있는지 알고 싶습니다. (multi-user.target은 대부분의 서비스에 연결됩니다)
네트워크 카드 이름 바꾸기는 더 일찍 시작되는 systemd-udevd.service에서 발생하지만 하드웨어 이벤트를 지속적으로 수신하므로 네트워크 카드가 예상보다 느리게 나타날 수 있고 test.service가 시작된 후에도 이름이 바뀔 수 있는 것처럼 보입니다.
이것이 사실이라면 사용해야 할 것 같습니다.
udevadm settle
nic 이름 변경이 자동으로 대기될 수 있도록 보류 중인 udev 이벤트가 없는지 확인하십시오.