본문 바로가기
NVIDIA

[NVIDIA] NVIDIA SR-IOV 설정을 통한 vGPU 활성화 가이드

by Yoon_estar 2025. 2. 23.
728x90

🚀 개요

최근 GPU 가상화 기술이 발전하면서 하나의 물리 GPU(PGPU)를 여러 개의 가상 GPU(vGPU)로 인식하여 사용할 수 있는 Nvidia SR_IOV(Single Boot I/O Virtualization) 기능이 주목 받고 있습니다. 이 글에서는 Passthrough GPU를 vGPU처럼 인식하도록 설정하는 방법을 다룹니다. 

 

🖥️ NVIDIA SR-IOV란 ?

📌 SR-IOV란?

SR-IOV(Single Root I/O Virtualization)는 PCIe 디바이스를 물리적으로 분할하여 가상머신에 독립적으로 사용할 수 있도록 해주는 기술입니다. 특히 GPU 가상화에서 활용되며, 하나의 GPU를 여러 개의 가상 GPU(vGPU)로 나눠서 여러 VM이 사용할 수 있도록 합니다. 

📌 왜 NVIDIA SR-IOV를 사용하는가?

GPU 자원 효율 극대화: 여러 개의 VM이 단일 GPU를 공유 가능.

고성능 GPU 가상화: SR-IOV를 활용하면 Passthrough와 유사한 성능을 제공.

물리 GPU 분할 기능: 1개의 GPU를 여러 개의 가상 GPU처럼 인식 가능.

 

 

🖥️ NVIDIA SR-IOV 활성화를 위한 시스템 설정

1️⃣ GRUB 설정 (IOMMU 및 VFIO 활성화)

  • 아래 내용을 추가합니다. 
# vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt vfio-pci.ids=0000:0d:00.0"

 

 

 

🔹 설명

  • intel_iommu=on: Intel VT-d(IOMMU) 활성화 (AMD의 경우 amd_iommu=on 사용).
  • iommu=pt: IOMMU를 pass-through 모드로 설정하여 성능 최적화.
  • vfio-pci.ids=0000:0d:00.0: 특정 GPU를 VFIO 드라이버로 바인딩하여 Passthrough 가능하게 함.

🔹 반영방법

# update-grub

 

2️⃣ 커널 모듈 설정 (VFIO 활성화)

  • 아래 내용을 추가합니다. 
 
# vi /etc/modules

```
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
```

 

🔹 설명

  • vfio: VFIO(Virtual Function I/O) 활성화.
  • vfio_iommu_type1: IOMMU 지원 추가.
  • vfio_pci: VFIO-Passthrough 모듈 활성화.
  • vfio_virqfd: 가상 IRQ 처리 지원.

3️⃣ Nouveau 드라이버 블랙리스트 설정

# vi /etc/modprobe.d/blacklist.conf
---------------------------------
blacklist nouveau

 

🔹 설명

  • nouveau(오픈소스 NVIDIA 드라이버) 사용을 차단하여 NVIDIA 공식 드라이버를 강제 사용.

4️⃣ VFIO 바인딩 설정

# nano /etc/modprobe.d/vfio.conf
--------------------------------
options vfio-pci ids=10de:26b9 disable_vga=1

 

🔹 설명

  • 10de:26b9: NVIDIA GPU의 PCI ID(Vendor ID: 10de, Device ID: 26b9).
  • disable_vga=1: VGA 기능 비활성화하여 GPU Passthrough 충돌 방지.

5️⃣ NVIDIA SR-IOV 서비스 생성

# vi /etc/systemd/system/nvidia-sriov.service
[Unit]
Description=Enable NVIDIA SR-IOV
After=network.target nvidia-vgpud.service nvidia-vgpu-mgr.service
Before=pve-guests.service

[Service]
Type=oneshot
ExecStart=/usr/lib/nvidia/sriov-manage -e b5:00.0
ExecStartPre=/bin/sleep 5

[Install]
WantedBy=multi-user.target

 

🔹 설명

  • ExecStart=/usr/lib/nvidia/sriov-manage -e b5:00.0
    • SR-IOV를 GPU(b5:00.0)에 적용하여 vGPU처럼 사용.
  • ExecStartPre=/bin/sleep 5
    • NVIDIA vGPU 서비스 실행 전에 5초 대기하여 안정성 확보.
  • After=network.target nvidia-vgpud.service nvidia-vgpu-mgr.service
    • NVIDIA 가상 GPU 매니저 서비스 이후 실행.
  • Before=pve-guests.service
    • VM 실행 전에 SR-IOV 적용.

🔹 서비스 활성화

# systemctl daemon-reload
# systemctl enable nvidia-sriov.service
# systemctl start nvidia-sriov.service

 

🖥️ 설정 적용 및 확인

1️⃣ GRUB 및 Initramfs 업데이트

update-grub
update-initramfs -u -k all

2️⃣ 재부팅

reboot

3️⃣ GPU 상태 확인

  • SR-IOV가 정상적으로 활성화되었다면, GPU 하나가 여러 개의 vGPU처럼 인식될 것입니다.
# lspci -nn | grep NVIDIA

# nvidia-smi

 

🚀 NVIDIA SR-IOV 설정의 최종 효과

하나의 Pgpu(물리 GPU)를 여러 개의 vGPU처럼 사용 가능
VM에 vGPU 할당 가능 → GPU 자원을 효율적으로 활용
IOMMU 및 VFIO 설정을 통해 안정적인 GPU Passthrough 구현