VMware ESXi 환경에서 갑작스럽게 나타나는 “bnx2x_dynamic_alloc_rx_queue_single” 오류는 많은 관리자들을 당황하게 만들곤 합니다. 이 오류가 발생하면 네트워크 연결이 불안정해지거나 아예 끊어지는 상황이 발생하죠.
bnx2x_dynamic_alloc_rx_queue_single 오류는 Broadcom NetXtreme II 네트워크 카드의 bnx2x 드라이버에서 발생하는 메모리 누수(Memory Leak) 문제입니다. 이 오류는 주로 네트워크 큐(Queue) 할당 과정에서 메모리 부족으로 인해 발생하며, 심각한 경우 ESXi 호스트의 PSOD(Purple Screen of Death)를 유발할 수 있습니다.
1. “bnx2x_dynamic_alloc_rx_queue_single” 오류 발생 원인 및 증상
주요 원인
이 문제는 bnx2x 드라이버 버전 2.712.70.x.3에서 확인된 메모리 누수 이슈로 인해 발생합니다. NetPacketPool이 고갈되면서 LRO(Large Receive Offload)가 활성화된 네트워크 큐에서 버퍼 할당에 실패하는 것이 핵심 원인입니다.
주요 증상
다음과 같은 로그 메시지들이 나타날 수 있습니다:
2017-03-15T17:17:14.810Z cpu1:32868)<3>[bnx2x_dynamic_alloc_rx_queue_single:789(vmnic2)]Could not start queue:1
2017-03-15T17:17:14.788Z cpu1:32868)<3>[bnx2x_esx_init_rx_ring:1944(vmnic2)]was only able to allocate 0 rx sges
2017-03-15T17:17:19.786Z cpu0:32868)<3>[bnx2x_alloc_rx_sge:734(vmnic2)]Can't alloc sge
2. 사전 진단 및 체크 방법
현재 드라이버 버전 확인
SSH로 ESXi 호스트에 접속한 후 다음 명령어를 실행하세요:
# 네트워크 카드 목록 확인
esxcli network nic list
# 특정 네트워크 카드의 드라이버 정보 확인
esxcli network nic get -n vmnic0
하드웨어 정보 확인
# PCI 정보 확인
vmkchdev -l | grep vmnic
아래 표는 문제가 되는 주요 하드웨어 식별자입니다:
VID | DID | SVID | SSID | 제품명 |
---|---|---|---|---|
14e4 | 16a2 | 103c | 22fa | HPE Broadcom BCM5709C |
14e4 | 163d | – | – | Broadcom NetXtreme II |
14e4 | 163e | – | – | Broadcom NetXtreme II |
3. 드라이버 업그레이드 (권장 해결법)
최신 드라이버 다운로드
bnx2x 드라이버 버전 2.713.70.v60.6 이상으로 업그레이드하는 것이 가장 확실한 해결책입니다.
- VMware 다운로드 센터에서 해당 드라이버 검색
- ESXi 버전과 호환되는 드라이버 선택
- Offline Bundle (.zip) 파일 다운로드
드라이버 설치 과정
1단계: 호스트를 유지보수 모드로 변경
# vSphere Client에서 또는 명령어로
esxcli system maintenanceMode set --enable true
2단계: 드라이버 설치
# VIB 설치
esxcli software vib install -d /vmfs/volumes/datastore1/driver-offline-bundle.zip
# 설치 확인
esxcli software vib list | grep bnx2x
3단계: 호스트 재부팅
reboot
4. 네트워크 드라이버 변경 방법
ESXi 6.7 이상에서는 bnx2x 대신 qfle3 네이티브 드라이버를 사용할 수 있습니다.
bnx2x에서 qfle3로 변경
# 유지보수 모드 활성화
esxcli system maintenanceMode set --enable true
# qfle3 드라이버 활성화
esxcli system module set --enabled=true --module=qfle3
# bnx2x 드라이버 비활성화
esxcli system module set --enabled=false --module=bnx2x
# 재부팅
reboot
qfle3에서 bnx2x로 되돌리기
# bnx2x 드라이버 활성화
esxcli system module set --enabled=true --module=bnx2x
# qfle3 드라이버 비활성화
esxcli system module set --enabled=false --module=qfle3
# 재부팅
reboot
5. 평소 모니터링 하는 방법
드라이버 상태 확인
# 현재 활성 드라이버 확인
esxcli network nic list
# 메모리 사용량 확인
esxcli system stats get
오류 로그 모니터링
# 실시간 로그 모니터링
tail -f /var/log/vmkernel.log | grep bnx2x
6. “bnx2x_dynamic_alloc_rx_queue_single” 현상을 미리 예방 하려면…
정기 점검 항목
- 드라이버 버전 관리: 분기별로 최신 드라이버 확인
- 메모리 사용률 모니터링: NetPacketPool 사용률 주기적 점검
- 하드웨어 호환성 확인: VMware 호환성 가이드에서 최신 정보 확인
권장 설정
설정 항목 | 권장 값 | 설명 |
---|---|---|
bnx2x 드라이버 버전 | 2.713.70.v60.8 이상 | 메모리 누수 문제 해결 |
NetPacketPool 크기 | 기본값의 150% | 메모리 부족 방지 |
점검 주기 | 월 1회 | 드라이버 및 펌웨어 업데이트 확인 |
bnx2x_dynamic_alloc_rx_queue_single 오류는 복잡해 보이지만, 대부분 드라이버 업그레이드만으로도 해결됩니다. 다만 프로덕션 환경에서는 반드시 유지보수 시간을 확보하고 백업 계획을 수립한 후 작업하시길 추천드립니다. 🙂