작물 단계: #seed

준비물

개요

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 의 다음 정보들을 찾아준다.
    • id
    • device
    • iommugroup
    • vendor
    • subsystem_vendor
    • subsystem_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
}