안 쓰는 PC로 가상화 서버 만들기 (Proxmox VE) 2편 - GPU Passthrough로 가상머신에서 게임하기

Yongjun OH·2025년 5월 12일

Home Server

목록 보기
2/2
post-thumbnail

미리 보는 최종 화면

NVIDIA GeForce RTX 3070 Ti가 오류 없이 사용중인 걸 볼 수 있음


GPU Passthrough 구성

VM에서 채굴, 머신러닝 등의 작업으로 인하여 GPU가 필요한 경우가 있고, 이러한 경우에 GPU Passthrough를 사용한다. 나같은 경우는 단순하게 게임을 위해 GPU passthrough를 구성하게 되었다.

GPU passthrough를 사용하면 서버 호스트에서는 모니터 사용이 불가하지만, Proxmox는 WebUI와 shell로 모든 부분이 커버가 가능하고 딱히 필요도 없기 때문에 설정해주었다.

VM + GPU passthrough + Parsec 조합이기 때문에 퍼포먼스가 얼마나 나올지 걱정이긴 하지만, 요즘엔 게임도 잘 안하고 PC방도 근처에 있기 때문에 실패해도 크게 상관 없을 듯 하다 ㅎㅎ

요구사항 확인

우선 GPU 패스스루를 구현하려면, 아래 요구사항을 충족해야 한다.
1. CPU가 IOMMU (Intel VT-d 또는 AMD-Vi)를 지원해야 함
2. 메인보드 BIOS에서 IOMMU 및 VT-d/AMD-V 활성화가 가능해야 함

또한 설정 전 GPU 장치 ID를 확인해야 한다.
lspci | grep VGA 명령어로 확인.

BIOS 설정

아래 기능 활성화

  • Intel: VT-d / AMD: SVM & IOMMU
  • CSM(Compatibility Support Module) 비활성화

Proxmox에서 IOMMU 활성화

/etc/default/grub에서 GRUB_CMDLINE_LIUNX_DEFAULT 부분을 아래와 같이 수정

Intel CPU

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

AMD CPU

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

설정 후 update-grub, reboot 명령어 수행

GPU를 VFIO로 바인딩

lspci -nnk | grep -A2 VGA 명령어로 GPU ID 확인


대괄호로 감싸져 있는 [10de:2482], [1458:408e]가 GPU ID임

확인 후 아래 명령어 입력

echo "options vfio-pci ids=10de:2482,1458:408e" > /etc/modprobe.d/vfio.conf

id는 본인 GPU ID 값으로 작성 후 update-initramfs -u -k all, reboot 명령어 수행

GPU 패스스루 적용

Shell에서 설정. (VM ID는 100이라고 가정)

/etc/pve/qemu-server/100.conf에서 아래 내용 추가

hostpci0: 2b:00.0,pcie=1,x-vga=1   # 만약 존재한다면 이 값으로 수정
machine: q35                       # 만약 존재한다면 이 값으로 수정
cpu: host, hidden=1,flags=+pcid    # 만약 존재한다면 이 값으로 수정

2b:00.0: GPU의 PCI ID (lspci로 확인한 맨 앞의 값)
x-vga=1: GPU 콘솔 초기화 (NVIDIA 카드에서 필수)
hidden=1: NVIDIA 드라이버에서 가상 환경 탐지 방지

NVIDIA 관련 추가 설정

NVIDIA GPU의 경우 가상 환경에서 Error 43을 띄우기 때문에 아래 설정을 적용해줘야 한다.
같은 파일에서 아래 내용 추가.

args: -cpu 'host,kvm=off,vmx=off'

Parsec 설정

macOS(클라이언트) - Windows 10 VM(호스트) 환경으로 구성

Client 설정

‼️ 반드시 해 줘야 하는 설정 ‼️

  1. Swap Command and Ctrl for MacOS : Ctrl과 Command의 기능을 치환하는 옵션이지만, 정작 사용해보면 너무 헷갈림. Off 하는 것을 추천
  2. Decoder: 무조건 Hardware로 설정.

Host 설정

‼️ 반드시 해 줘야 하는 설정 ‼️

  1. Bandwidth Limit: 대역폭 최대 한도 설정. 말 그대로 최대 한도이기 때문에 최대인 50Mbps로 설정

이 외 설정은 본인 입맛이에요


결과

테스트로 게임 몇 판을 해 봤는데 상상 이상으로 구동이 잘 되었습니다.
게임도 하고 서버도 돌리고 싶은 고사양 PC + 가난뱅이 학생 or 직장인은 이런 방법으로 본인의 온프레미스 서버를 구축해 보는 것도 나쁘지 않을 것 같아요.

물론 지금은 서버에서 돌아가는 서비스도 없고, 게임 하나만 하고 있기 때문에 가용성이 어느 정도 나올지는 모르겠지만 지속적으로 벨로그에 소식을 알리겠습니다...

profile
이것저것 하는걸 좋아합니다

0개의 댓글