~ TrueNAS VM 백업 편 ~
Jellyfin설치전에 먼저 지금까지 설정한 TrueNAS를 백업해 보자.
1. TrueNAS 구성 백업
기본적으로 TrueNAS에서 설정파일을 다운받아 저장해두고 복원이 가능하다.
전체 서비스 설정에서 이미지 순서를
ON/OFF 할 수 있습니다.
다만 구성 저장에는 ssh키가 제외되고 TrueNAS를 다시 설치하는 번거로움이 존재한다.
2. Proxmox VM 백업
TrueNAS 설정(특히 PCI passthrough)하다가 TrueNAS가 부팅되지 않거나 boot pool이 망가졌을때
Proxmox의 강력(!)한 VM백업을 이용하면 아주쉽게 VM을 백업 및 복원이 가능하다.
먼저 현재까지 작업한 VM을 백업해보자.
보호됨을 선택하면 추후에 설정할 주기적 백업의 보존 갯수를 넘어가도 삭제되지 않으므로 중요한 설정을 마친 후에 해두면 좋다.
백업은 VM이 동작하는 중에도 가능하고 용량도 ZSTD로 압축되어 3G남짓 된다.
다음은 백업외에 VM 볼륨이 정상일 경우 사용 가능한 스냅샷 기능을 이용해보자.
주기적인 스냅샷 생성기능은 지원하지 않으나 1초면 생성되고 순식간에 VM설정 및 볼륨을 롤백할 수 있다.
RAM포함은 추천하지 않는게 RAM까지 스냅샷을 만들면 라이브 롤백이 가능하다는 장점이 있지만
램을 위해 추가로 용량을 사용하고 PCI passthrough장치와 같이 QEMU가 장치 상태 백업을 지원하지 않는 경우
시스템이 정상동작하지 않을 수 있어 반드시 주의해서 사용해야 한다.
순식간에 스냅샷이 생성되었다.
3. 정기 백업 설정
추가적으로 위에서 언급한 주기적인 백업을 활성화 해보자
일요일 1시마다 백업이 수행된다.
선택 모드에서 모두를 선택해 두면 추후 생성되는 모든 VM및 볼륨이 자동으로 백업된다.
보존탭에서 유지되는 백업갯수를 지정할 수 있다.
이는 VM별로 카운트되며 위에서 매뉴얼 백업에서 설정한것과 같이 보호되는 백업은 제외한 숫자이다.
정상적으로 설정되었음을 확인할 수 있고 일정 시뮬레이터도 사용 가능하다.
백업 및 스냅샷 설정은 iGPU passthrough시 문제가 발생하면 쉽게 롤백하기 위한 준비 과정이기도 하다.
~ iGPU PCI passthrough 편 ~
iGPU PCI passthrough는 PCI bus구성이 묶여있는 장치들이 많아 난이도도 높고 실패할 가능성이 높다.
특히 잘못 설정하는 경우 host가 재부팅 될 수 있고 VM이 바로 재시작되면서 무한 재부팅이 될 수 있다.
따라서 부팅 시 VM이 자동으로 켜지는 옵션을 끄고 설정이 완료된 후 부팅 시 VM이 자동으로 켜지도록 다시 설정하는 것이 좋다.
WTR MAX를 쓰는 경우는 아래 가이드 대로 하면 실패하지 않고 한번에 완료 가능할 것이라 믿는다. (삽질은 내가 다했음)
AMD iGPU의 경우 VM에서 reset이 제대로 되지 않는 문제가 있어
SATA 컨트롤러처럼 부팅 시 blacklist에 등록하고 pci-vfio driver에 바인딩 되도록 해놓는 방법으로 할 경우
호스트 부팅 후 한번은 동작하더라도 VM을 껐다 켜거나 재부팅 시 iGPU가 정상 reset되지 않는 문제가 있다.
그러나 이를 깔끔하게 회피할 방법이 있으니 추후 아래에서 설명하겠다.
1. TrueNAS App용 디스크 추가
먼저 TrueNAS 앱들을 SSD에서 실행할 풀을 만들기 위한 풀을 추가로 만들어주자.
다만 이렇게 만들면 디스크 serial 번호가 유사해 TrueNAS가 저장소 풀로 만들어 주지 않으므로 아래 커맨드를 추가로 입력해
디스크 시리얼 번호를 변경하자
2. iGPU PCI passthrough 설정
lspci -nnk 명령어로 PCI passthrough 할 것들을 확인하자. (bus주소, PCI ID 및 사용 driver명)
AMD GPU의 경우 iGPU와 오디오 컨트롤러 두개다 PCI passthrough해주어야 하며 실수로 All Functions를 눌러 passthrough하게 되면
묶여있는 7개의 장치가 모두 passthrough되면서 호스트가 재부팅 될 수 있으니 주의해야 할 부분이다.
설정시 ROM-Bar설정이 되어있지 않으면 vBIOS가 정상적으로 로딩되지 않아서
TrueNAS 부팅 시 드라이버 로딩에서 실패하게 된다.
나는 PCI순서대로 보기좋게 정렬하기 위해 기존 hostpci0에 할당되어있던 SATA 컨트롤러를 삭제하고
iGPU, 오디오 컨트롤러, SATA 컨트롤러 순으로 다시 등록해주었다.
이제 마법의 소스를 꺼낼 차례다. (참고출처: 링크)
번거로운 BIOS, grub, blacklist, vfio, vBIOS rom file 설정 등은 필요없고
바로 Proxmox의 hookscript기능으로 실시간 PCI장치를 unbind/bind하는 방법을 쓸것이다.
이러면 host에서는 amdgpu -> unbind -> pci-vfio(VM 켜질때 자동 bind) -> unbind -> amdgpu로 돌아오며 iGPU가 정상적으로 reset된다!
이제 TrueNAS VM을 다시 켜서 확인해보면
PCI passthrough 되었고 driver역시 잘 바인딩 되어있음을 알 수 있다.
이 방법으로 할 경우 VM reset이나 shutdown후 다시 켜더라도 iGPU가 정상동작한다.
3. apps 풀 구성
먼저 media 용으로 만들어 둔 데이터 세트에 Jellyfin이 접근하려면 apps 유저에 권한을 주어야 한다.
그리고 Apps용으로 만들어둔 디스크를 이용하여 새로운 apps 저장소 풀을 만들자.
여기서 스트라이프를 골라도 Proxmox가 백업해주기 때문에 문제 없다. (990Pro SSD 자체가 고장나지 않는다면)
다음은 Jellyfin을 설치해보자.
~ Jellyfin 설치 및 설정 편 ~
새로 만든 apps 풀을 사용할 것이다.
나는 Jellyfin 기본 Port설정으로 변경하였다.
Host Path에 미디어 경로를 설정하고 컨테이너 안에서 마운트될 경로를 정해주어야 한다.
AMD iGPU를 사용할것이므로 체크해주고 설치를 누르자.
설치가 정상적으로 완료 되었고 이제 Web UI로 들어가자.
적절한 서버 이름을 쓰면 된다.
Jellyfin에서 사용할 관리자 계정을 등록해야한다.
이제 미디어 라이브러리를 추가해보자.
폴더를 눌러 공유 데이터 세트의 폴더를 지정하자.
mount된 jellyfin-media에 Movie가 보이는데 storage-share 데이터 세트의 Movie 폴더에 이미 영화를 넣어두었다.
이제 남은 설정은 트랜스코딩 뿐이다.
설정 > 대시보드 > 재생 > 트랜스코딩
여기서 VA API를 골라주고 VA API 장치는 renderD129로 변경해 주어야 한다.
변경할 이름은 아래와 같이 확인 가능하다.
디코딩 활성화는 일단 다 켜두었는데 재생이 안되면 끄면된다. (아마 다 되지 않을까?)
RDNA3(780M)의 경우 AV1 인코딩시 소스 1080p 영상이 1082p로 블랙바가 포함된 상태로 인코딩 되는 제약사항(16의 배수 pixel) 있어
'AV1 포맷으로 인코딩 허용'은 추천하지 않는다. (1080p영상을 보지 않는다면 써도 무방)
Tone 매핑 관련설정들도 일단 다 켜주었다.
아래와 같이 붉은돼지 블루레이 백업 ISO재생시 HEVC로 트랜스코딩이 매우 잘 되는 것을 확인할 수 있다.
~ 끝 ~
다음은 UPS 및 기타 편이 될것 같다.
- UPS 설정후 계속 됨(?) -
어제 나도 그랬는데 글 내용 복사되서 두번 써지더라 한번 수정해야할듯.
01.06 01:10글 써지는 중에 뭐가 잘못 꼬여서 올라가버렸네.
01.06 01:36드디어 젤리핀까지 오냐 ㄷㄷ 근데 작성자는 어케 다알고함?
01.06 01:22시행착오를 거쳐서... ㅠㅠ
01.06 01:36GPU 패스스루를 사용 못하고 있었는데 이글을 보고...
프로목스 '딸깍' 지원해줄때까지 안쓰기로 결심했어요! - dc App
안되면 롤백하면 되니 한번 도전해봐
01.06 10:38