5.2. PCI 패스스루 컴퓨팅 노드 구성
클라우드 사용자가 PCI 장치가 연결된 인스턴스를 생성할 수 있도록 하려면 PCI 장치와 컨트롤러 노드가 있는 컴퓨팅 노드 모두를 구성해야 합니다.
절차
-
환경 파일을 생성하여 PCI 패스스루의 오버클라우드에서 컨트롤러 노드를 구성합니다(예:
pci_passthrough_controller.yaml
). pci_pass
through_controller.yaml의
throughFilter를 추가합니다.NovaSchedulerDefaultFilters
매개변수에 PciPassparameter_defaults: NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','NUMATopologyFilter']
컨트롤러 노드에서 장치의 PCI 별칭을 지정하려면
pci_passthrough_controller.yaml에 다음 구성을 추가합니다.
parameter_defaults: ... ControllerExtraConfig: nova::pci::aliases: - name: "a1" product_id: "1572" vendor_id: "8086" device_type: "type-PF"
device_type
필드 구성에 대한 자세한 내용은 PCI 패스스루 장치 유형 필드를 참조하십시오.참고nova-api
서비스가 Controller 역할과 다른 역할에서 실행 중인 경우Controller
ExtraConfig
를<Role>ExtraConfig
형식의 사용자 역할로 교체합니다.선택 사항: PCI 패스스루 장치에 대한 기본 NUMA 선호도 정책을 설정하려면 3단계의
nova::pci::aliases:
구성에numa_policy
를 추가합니다.parameter_defaults: ... ControllerExtraConfig: nova::pci::aliases: - name: "a1" product_id: "1572" vendor_id: "8086" device_type: "type-PF" numa_policy: "preferred"
-
PCI 패스스루에 대해 오버클라우드에서 Compute 노드를 구성하려면 환경 파일(예:
pci_passthrough_compute.yaml
)을 생성합니다. Compute 노드에서 장치에 사용 가능한 PCI를 지정하려면
vendor_id 및
옵션을 사용하여 인스턴스 통과에 사용할 수 있는 PCI 장치 풀에 일치하는 모든 PCI 장치를 추가합니다. 예를 들어 인스턴스에 대한 패스스루에 사용할 수 있는 PCI 장치 풀에 Intel® 이더넷 컨트롤러 X710 장치를 추가하려면product_id
pci_passthrough_compute.yaml에 다음 구성을 추가합니다.
parameter_defaults: ... ComputePCIParameters: NovaPCIPassthrough: - vendor_id: "8086" product_id: "1572"
NovaPCIPassthrough 구성 방법에 대한 자세한 내용은
NovaPCIPassthrough
구성을 위한 지침을 참조하십시오.
인스턴스 마이그레이션 및 크기 조정 작업을 위해 컴퓨팅 노드에 PCI 별칭 사본을 생성해야 합니다. PCI 패스스루 컴퓨팅 노드에서 장치의 PCI 별칭을 지정하려면
pci_passthrough_compute.yaml에 다음을 추가합니다.
parameter_defaults: ... ComputePCIExtraConfig: nova::pci::aliases: - name: "a1" product_id: "1572" vendor_id: "8086" device_type: "type-PF"
참고컴퓨팅 노드 별칭은 컨트롤러 노드의 별칭과 동일해야 합니다. 따라서 pci_passthrough
_
controller.yaml의
를 추가한 경우 pci_nova::pci::aliases
에 numa_affinitypassthrough_compute.yaml
의nova::pci::aliases
에도 추가해야 합니다.Compute 노드의 서버 BIOS에서 IOMMU를 활성화하여 PCI 패스스루를 지원하려면
KernelArgs
매개변수를pci_passthrough_compute.yaml
에 추가합니다. 예를 들어 다음KernalArgs
설정을 사용하여 Intel IOMMU를 활성화합니다.parameter_defaults: ... ComputePCIParameters: KernelArgs: "intel_iommu=on iommu=pt"
AMD IOMMU를 사용하려면
KernelArgs
를"amd_iommu=on iommu=pt"
로 설정합니다.참고KernelArgs
매개변수를 역할 구성에 처음 추가하면 오버클라우드 노드가 자동으로 재부팅됩니다. 필요한 경우 노드 자동 재부팅을 비활성화하고 대신 각 오버클라우드 배포 후 노드를 수동으로 재부팅할 수 있습니다. 자세한 내용은KernelArgs
를 정의하도록 수동 노드 재부팅 구성을 참조하십시오.다른 환경 파일을 사용하여 스택에 사용자 지정 환경 파일을 추가하고 오버클라우드를 배포합니다.
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/pci_passthrough_controller.yaml \ -e /home/stack/templates/pci_passthrough_compute.yaml \
클라우드 사용자가 PCI 장치를 요청하는 데 사용할 수 있는 플레이버를 생성하고 구성합니다. 다음 예제에서는 각각 7단계에 정의된 별칭을 사용하여 공급업체 ID가
8086
이고 제품 ID가1572
인 두 개의 장치를 요청합니다.(overcloud)# openstack flavor set \ --property "pci_passthrough:alias"="a1:2" device_passthrough
선택 사항: PCI 통과 장치의 기본 NUMA 선호도 정책을 재정의하려면 플레이버 또는 이미지에 NUMA 선호도 정책 키를 추가할 수 있습니다.
플레이버를 사용하여 기본 NUMA 선호도 정책을 재정의하려면
hw:pci_numa_affinity_policy
속성 키를 추가합니다.(overcloud)# openstack flavor set \ --property "hw:pci_numa_affinity_policy"="required" \ device_passthrough
hw:pci_numa_affinity_policy
의 유효한 값에 대한 자세한 내용은 Flavor metadata 를 참조하십시오.이미지를 사용하여 기본 NUMA 선호도 정책을 재정의하려면
hw_pci_numa_affinity_policy
속성 키를 추가합니다.(overcloud)# openstack image set \ --property hw_pci_numa_affinity_policy=required \ device_passthrough_image
참고이미지와 플레이버 모두에 NUMA 선호도 정책을 설정하면 속성 값이 일치해야 합니다. 플레이버 설정이 이미지와 기본 설정보다 우선합니다. 따라서 이미지에 대한 NUMA 선호도 정책의 구성은 플레이버에 특성이 설정되지 않은 경우에만 적용됩니다.
검증
PCI 패스스루 장치를 사용하여 인스턴스를 생성합니다.
# openstack server create --flavor device_passthrough \ --image <image> --wait test-pci
- 클라우드 사용자로 인스턴스에 로그인합니다. 자세한 내용은 인스턴스에 연결을 참조하십시오.
인스턴스에서 PCI 장치에 액세스할 수 있는지 확인하려면 인스턴스에서 다음 명령을 입력합니다.
$ lspci -nn | grep <device_name>