작물 단계: #seed
참고한 것들
준비물
개요
- GPU Passthrough 로 격리된 GPU 를 Proxmox VM 에 붙여보자.
1. PVE Role 추가
- PVE 에서 device mapping 을 사용해야 하는데, 이건 추가적인 권한이 필요하다. 그래서 role 을 추가해준다.
pveum role add {{Role 이름}} -privs "Mapping.Modify"- 여기 에서 생성한 계정에 달아주면 된다.
pveum aclmod / -user {{USER}}@pve -role {{Role 이름}}2. 정보 확인
- 우선 이 명령어를 실행해서 정보들을 쭉 뽑아본다.
pvesh get /nodes/t7910/hardware/pci --pci-class-blacklist ""- 여기서 원하는 device 의 다음 정보들을 찾아준다.
iddeviceiommugroupvendorsubsystem_vendorsubsystem_device
3. HW mapping resource 작성
- 위에서 확인한 정보를 바탕으로 아래의 resource 를 작성해준다.
resource "proxmox_hardware_mapping_pci" "{{Resource 이름}}" {
name = "{{이름}}"
map = [
{
node = "{{Node 이름}}"
path = "{{id}}"
id = "{{vendor}}:{{device}}"
subsystem_id = "{{subsystem_vendor}}:{{subsystem_device}}"
iommu_group = {{iommugroup}}
}
]
}4. VM resource 작성
조심할 것 (중요)
- 일반 VM 의 메모리 할당량은 실제로 설치된 물리 메모리 크기보다 같거나 좀 커도 된다. 어차피 KVM 이 실제로 VM 에서 사용하는 양만을 메모리에 올려놓기 때문.
- 근데 GPU VM 의 경우에는 그러면 절대 안된다. VFIO 를 쓰면 메모리를 pinning 하기 때문에, 물리 메모리의 양보다 충분히 작게 설정해야 한다.
- 그래서 VM 을 생성한 뒤에 PVE 대시보드에서 VM 메모리 사용량을 확인하면 항상 100%로 찍히는 것을 볼 수 있다. VM 메모리가 host 메모리에 pinning 되어있기 때문에 host 메모리 사용량 기준으로는 100%인 셈.
- 이거 랑 동일한데 여기에 아래 것들을 추가해주면 된다.
- 다만
machine=q35,bios=ovmf를 추천한다고 한다. 이게 아니면 안되는지는 잘 모르겠지만, 궁합이 이게 제일 좋다네.
- 다만
machine = "q35"
bios = "ovmf"
efi_disk {
datastore_id = "local-lvm"
}
hostpci {
device = "hostpci0"
mapping = "{{이름}}"
pcie = true
rombar = false
xvga = false
}
