Ubuntu 20.04/22.04에서 'NVIDIA-SMI has failed' 오류 완전 해결 가이드

Linux 환경에서 NVIDIA 드라이버 통신 실패 문제의 근본 원인과 해결 전략

Ubuntu 시스템을 설치한 후 nvidia-smi 명령어를 실행했을 때 "NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver"라는 에러가 나타나면, 이는 커널 레벨에서의 드라이버 통신 장애를 의미합니다. 특히 머신러닝 및 고성능 컴퓨팅 작업을 수행하는 사용자에게는 매우 치명적인 문제입니다. 본 문서에서는 커널 모듈 로딩부터 디바이스 노드 생성까지, 전체 통신 경로를 분석하고 실질적인 해결 방법을 단계별로 제시합니다.

  1. 오류 원인 진단: 세 가지 핵심 요소

nvidia-smi가 작동하지 않는 주요 원인은 다음 세 가지입니다:

  • 커널 모듈 미로딩: nvidia.ko 파일이 현재 실행 중인 커널에 적재되지 않음
  • 버전 불일치: 드라이버 버전이 커널 버전과 호환되지 않음
  • 디바이스 노드 누락: /dev/nvidia* 장치 파일이 생성되지 않음

다음 명령어로 상태를 확인하세요:

lsmod | grep nvidia
dmesg | grep -i nvidia

오류 유형별 대응표:

현상 원인 가능성 확인 방법
No such device 모듈 미적재 modinfo nvidia
Invalid argument 버전 불일치 uname -r vs 드라이버 지원 목록
Permission denied 권한 문제 ls -l /dev/nvidia*

🔑 핵심 팁: Ubuntu LTS 배포판은 자동 업데이트되는 커널과 수동 설치된 드라이버 간 충돌이 흔히 발생하며, 이는 대부분의 문제의 근본 원인입니다.

  1. 기존 드라이버 완전 제거 및 환경 정리

이전 설치의 잔여물은 새로운 설치를 방해하므로, 다음 명령어로 철저하게 제거해야 합니다:

sudo apt purge *nvidia* *cuda* -y
sudo apt autoremove -y
sudo rm -rf /usr/src/nvidia-*

추가적으로, 설정 파일 및 모듈 등록 정보도 삭제하세요:

# 드라이버 관련 모듈 설정 제거
find /etc/modprobe.d/ -name "*nvidia*" -exec sudo rm {} \;

# DKMS 등록 항목 제거
sudo dkms status | grep nvidia | awk '{print $1,$2}' | xargs -n2 sudo dkms remove -m

⚠️ 만약 .run 파일로 설치한 경우, 반드시 아래 명령어를 실행하세요:

sudo /usr/bin/nvidia-uninstall
  1. 정확한 드라이버 설치 절차

3.1 하드웨어 및 커널 정보 확인

lspci -nn | grep -i nvidia
uname -r

GPU 아키텍처에 따른 추천 드라이버 매핑:

GPU 세대 추천 드라이버 지원 CUDA 버전
Kepler (6/7세대) 470.x 10.2
Maxwell (9세대) 525.x 11.8
Pascal (10세대) 535.x 12.0

3.2 공식 저장소를 통한 설치

sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update
ubuntu-drivers devices  # 추천 드라이버 확인
sudo apt install nvidia-driver-535 nvidia-dkms-535 -y

3.3 DKMS를 통한 커널 모듈 빌드

sudo dkms install -m nvidia -v 535.104.05 -k $(uname -r)

모듈 상태 확인:

dkms status
# 예상 출력: nvidia/535.104.05, 5.15.0-76-generic, x86_64: installed

3.4 지속적 설정 적용

echo "options nvidia NVreg_PreserveVideoMemoryAllocations=1" | sudo tee /etc/modprobe.d/nvidia-power.conf
sudo update-initramfs -u
  1. 검증 및 문제 해결 절차

기본 검증 테스트:

nvidia-smi
nvidia-debugdump -l
glxinfo | grep "OpenGL renderer"

주요 문제 해결 가이드:

현상 조치 방법 적용 조건
모듈 로딩 실패 sudo modprobe nvidia 드라이버 설치 완료
X 서버 충돌 sudo systemctl stop gdm 그래픽 환경에서만
PCI 재검색 필요 `echo 1 sudo tee /sys/bus/pci/rescan`

커널 업데이트 후 드라이버 손상 시 복구:

sudo apt install --reinstall nvidia-dkms-$(dpkg -l | grep nvidia-dkms | awk '{print $2}' | cut -d- -f3)
  1. 장기 운영을 위한 자동화 전략

5.1 커널 고정 (선택 사항)

sudo apt-mark hold linux-image-$(uname -r) linux-headers-$(uname -r)

5.2 커널 업데이트 시 자동 재빌드 설정

sudo tee /etc/kernel/postinst.d/nvidia <<EOF
#!/bin/sh
version="\$1"
dkms autoinstall --kernelver="\$version"
EOF
sudo chmod +x /etc/kernel/postinst.d/nvidia

5.3 GPU 상태 모니터링 스크립트

파일 생성: /usr/local/bin/gpu-watchdog

#!/bin/bash
if ! nvidia-smi &>/dev/null; then
    logger -t GPU-WATCHDOG "GPU 드라이버 장애 감지, 모듈 재빌드 시작..."
    sudo dkms autoinstall
    sudo modprobe -r nvidia && sudo modprobe nvidia
    systemctl restart display-manager
fi

크론 태스크 등록:

(crontab -l 2>/dev/null; echo "*/5 * * * * /usr/local/bin/gpu-watchdog") | crontab -

이 시스템은 여러 개의 딥러닝 작업장에서 평균 월 2~3회 발생하던 드라이버 오류를 완전히 제거했습니다. 특히 긴 시간 동안의 모델 학습 환경에서는 자동 복구 메커니즘이 최소 3회의 작업 중단을 방지하였습니다.

태그: ubuntu NVIDIA DKMS kernel module nvidia-smi

9월 9일 02:45에 게시됨