Proxmox LXC에 1060 passthrough 하기
NVIDIA GPU Passthrough in Proxmox LXCs • clait.sh
안녕하세요 항상 제가 무서워하는 proxmox 업데이트 시간이 왔습니다 :) tteck의 스크립트를 사용한 기존의 Plex는 업데이트만 돌리면 gpu passthrough가 풀렸거든요...풀리기만하면 문제 없지만 제대로 다시 잡아줘도 Plex로 트랜스코딩이 안되는 문제가 있었습니다. 이제 tteck에서 7.4는 스크립트 지원을 하지 않기 때문에 죽더라도 업데이트를 해줘야 할 때가 오고 만겁니다.
결론만 이야기하자면 이번 업데이트에서 무엇이 바뀌었는지 모르지만 8.1로 업데이트가 성공적이었습니다. GPU Passthrough는 풀리고 다시 설정해줘야 했지만 nvidia-smi으로 plex 트랜스코딩을 확인했습니다.
제가 참고한 가이드는 위에 링크를 걸어뒀습니다.
개요
- 호스트 준비하기 (Proxmox shell)
- 필수 패치지 설치하기
-
apt install pve-headers dkms
-
nano /etc/default/grub
- GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt" 와 같이 grub 수정하기
- 팁. 인텔은 intel_iommu=on으로 변경해주세요
- Grub 변경사항 반영GRUB수정
-
- GRUB 반영
-
update-grub2
-
- 시스템 GPU 블랙리스트
-
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
-
- /etc/modules을 수정하기
-
nano /etc/modules
- 추가
-
vfio vfio_iommu_type1 vfio_pci vfio_virqfd
-
- 저장하고 Initramfs 업데이트
-
update-initramfs -u -k all
-
- 호스트 재부팅 (헤놀은 웹GUI 에서 미리 종료해주셔야합니다)
- 엔당 드라이버를 받아줍니다. (NVIDIA Drivers) 직접다운하시려면 wget으로 원하시는 드라이버를 지정하시면 됩니다. 다운로드를 한번 누르시면 Agree&Download의 링크를 사용하셔야합니다.
-
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/550.67/NVIDIA-Linux-x86_64-550.67.run
-
- 실행가능하게 다운받은 파일을 설정해줍니다.
-
chmod +x NVIDIA-Linux-*
-
- 설치합니다
-
./NVIDIA-Linux-x86_64-535.113.01.run
-
- 호스트 재부팅 (헤놀은 웹GUI 에서 미리 종료해주셔야합니다)
- 쉘에서 드라이버가 정상적으로 작동하는지 확인해줍니다.
-
./NVIDIA-Linux-x86_64-535.113.01.run
-
- NVIDIA ID를 체크해줍니다.
-
ls -al /dev/nvidia*
-
- 아래와 비슷한화면이 나오면 5번째줄에 숫자들을 기억해주세요
-
root@nugget:~# ls -al /dev/nvidia* crw-rw-rw- 1 root root 195, 0 Oct 30 12:32 /dev/nvidia0 crw-rw-rw- 1 root root 195, 255 Oct 30 12:32 /dev/nvidiactl crw-rw-rw- 1 root root 509, 0 Oct 30 12:32 /dev/nvidia-uvm crw-rw-rw- 1 root root 509, 1 Oct 30 12:32 /dev/nvidia-uvm-tools /dev/nvidia-caps: total 0 drwxr-xr-x 2 root root 80 Oct 30 12:32 . drwxr-xr-x 20 root root 4580 Oct 30 14:07 .. cr-------- 1 root root 235, 1 Oct 30 12:32 nvidia-cap1 cr--r--r-- 1 root root 235, 2 Oct 30 12:32 nvidia-cap2
-
- 195, 255,509 그리고 235를 적어둡니다. (저는 업데이트하면서 이부분이 변경되었습니다.)
- 필수 패치지 설치하기
- LXC 컨테이너 셋업
- tteck를 사용해서 미리 Plex를 세팅하셨으면 좋습니다.
- LXC 설정파일을 변경해줍니다 (/etc/pve/lxc/xxx.conf)
- 아래 설정을 추가해줍니다.
-
lxc.cgroup2.devices.allow: c 195:* rwm lxc.cgroup2.devices.allow: c 235:* rwm lxc.cgroup2.devices.allow: c 255:* rwm lxc.cgroup2.devices.allow: c 509:* rwm lxc.mount.entry: /dev/nvidia0 /dev/nvidia0 none bind,optional,create=file lxc.mount.entry: /dev/nvidiactl /dev/nvidiactl none bind,optional,create=file lxc.mount.entry: /dev/nvidia-modeset /dev/nvidia-modeset none bind,optional,create=file lxc.mount.entry: /dev/nvidia-uvm /dev/nvidia-uvm none bind,optional,create=file lxc.mount.entry: /dev/nvidia-uvm-tools /dev/nvidia-uvm-tools none bind,optional,create=file
-
- LXC를 시작합니다.
- 엔당 드라이버를 받아줍니다. (NVIDIA Drivers) 직접다운하시려면 wget으로 원하시는 드라이버를 지정하시면 됩니다. 다운로드를 한번 누르시면 Agree&Download의 링크를 사용하셔야합니다.
-
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/550.67/NVIDIA-Linux-x86_64-550.67.run
-
- LXC 내부에서의 설치는 --no-kernel-modules를 붙여서 설치합니다.
-
./NVIDIA-Linux-x86_64-535.113.01.run --no-kernel-modules
-
- nvidia-smi로 체크해줍니다.
제 경험으로는 플랙스에서 hw가 나오면 대부분 하드웨어 트랜스코딩을 해주고 있다고 보시면 됩니다!