문서의 이전 판입니다!


Intel nic e1000e hardware unit hang

물론임. Proxmox VE 환경에서 자주 발생하는 e1000e 네트워크 드라이버 끊김(Hang) 현상에 대한 해결 방법을 한글로 상세히 알려드리겠다.

이 문제는 Intel 기가비트 네트워크 카드(NIC)의 `e1000e` 드라이버와 관련이 있으며, 특정 부하가 발생할 때 네트워크 연결이 끊기거나 심한 경우 호스트 전체가 멈추는 증상을 보임. 주로 드라이버의 고급 기능인 TSO (TCP Segmentation Offload), GSO (Generic Segmentation Offload), GRO (Generic Receive Offload) 등이 원인으로 지목된다.

가장 확실하고 널리 사용되는 해결 방법은 이 기능들을 비활성화하는 것임.

해결 절차 (단계별 가이드)

1단계: 문제 증상 확인 (선택 사항)

먼저 Proxmox 호스트의 로그에서 실제로 e1000e 드라이버 오류가 발생했는지 확인할 수 있다. SSH로 호스트에 접속하거나 웹 UI의 'Shell'을 열어 다음 명령어를 입력함.

  dmesg | grep e1000e

만약 결과에 "Detected Hardware Unit Hang" 또는 이와 유사한 메시지가 보인다면 이 문제일 가능성이 매우 높다.

2단계: 네트워크 인터페이스 이름 확인

설정을 변경할 네트워크 인터페이스의 이름을 확인해야 함. 일반적으로 물리적인 NIC 이름은 `eno1`, `enp3s0` 등과 같은 형태이며, Proxmox에서는 가상 브릿지(Virtual Bridge)인 `vmbr0`에 설정을 적용하는 경우가 많다.

다음 명령어로 현재 활성화된 인터페이스 목록을 확인함.

  ip a

출력된 목록에서 Proxmox의 관리 IP가 할당된 브릿지 이름(보통 `vmbr0`)을 확인함.

3단계: Offloading 기능 비활성화 (영구 적용)

Proxmox는 Debian 기반이므로, 네트워크 설정 파일(`interfaces`)을 직접 수정하여 부팅 시에도 설정이 유지되도록 하는 것이 가장 좋다.

1. 설정 파일 열기:

  `nano` 또는 `vim` 편집기를 사용하여 네트워크 설정 파일을 엽니다.
  nano /etc/network/interfaces

2. 설정 추가:

파일 내용 중에서 `vmbr0` (또는 사용하는 브릿지) 설정 부분을 찾다. 그리고 해당 블록의 마지막에 `post-up` 명령어를 추가하여 Offloading 기능을 비활성화함.

수정 전 예시:

  auto vmbr0
  iface vmbr0 inet static
      address 192.168.1.10/24
      gateway 192.168.1.1
      bridge-ports eno1
      bridge-stp off
      bridge-fd 0
  

수정 후 예시:

`post-up` 한 줄을 아래와 같이 추가함.

  
  auto vmbr0
  iface vmbr0 inet static
      address 192.168.1.10/24
      gateway 192.168.1.1
      bridge-ports eno1
      bridge-stp off
      bridge-fd 0
      post-up ethtool -K vmbr0 tso off gso off gro off
  
  • `post-up`: 네트워크 인터페이스가 활성화된 후 실행할 명령어를 지정함.
  • `ethtool -K vmbr0 tso off gso off gro off`: `vmbr0` 인터페이스의 TSO, GSO, GRO 기능을 비활성화함.

3. 저장 및 종료:

  `nano` 편집기 기준, `Ctrl + X`를 누르고, `Y`를 눌러 변경 사항을 저장한 뒤 `Enter`를 칩니다.

4단계: 설정 적용 및 확인

1. 설정 적용:

서버를 재부팅하면 변경된 설정이 가장 확실하게 적용된다. 재부팅이 어렵다면 다음 명령어로 네트워크 서비스를 재시작할 수 있지만, 원격으로 작업 시 연결이 끊길 위험이 있으니 주의해야 함.

  systemctl restart networking
  
  또는
  ifdown vmbr0 && ifup vmbr0
  

2. 설정 확인:

  설정이 제대로 적용되었는지 확인하려면 다음 명령어를 실행함.
  ethtool -k vmbr0
  
  결과 목록에서 다음 항목들이 `off`로 표시되는지 확인함.
  • `tcp-segmentation-offload: off`
  • `generic-segmentation-offload: off`
  • `generic-receive-offload: off`

추가 해결 방안

만약 위 방법으로도 문제가 해결되지 않는다면, EEE (Energy-Efficient Ethernet) 기능을 비활성화하는 것도 도움이 될 수 있다.

1. 물리 NIC의 EEE 상태 확인 (예: `eno1`):

  ethtool --show-eee eno1
  

2. EEE 비활성화 (영구 적용):

  `/etc/network/interfaces` 파일의 `post-up` 라인에 EEE 비활성화 명령어를 추가함.
  
  post-up ethtool -K vmbr0 tso off gso off gro off
  post-up ethtool --set-eee eno1 eee off
  
  • *주의:** EEE 설정은 브릿지(`vmbr0`)가 아닌 실제 물리 인터페이스(`eno1`)에 적용해야 함.