5장. PCI 패스스루 구성

PCI 통과를 사용하여 그래픽 카드 또는 네트워크 장치와 같은 물리적 PCI 장치를 인스턴스에 연결할 수 있습니다. 장치에 PCI 패스스루를 사용하는 경우 인스턴스는 작업을 수행하기 위해 장치에 대한 전용 액세스를 예약하고 호스트에서 장치를 사용할 수 없습니다.

중요

라우팅된 공급자 네트워크에서 PCI 패스스루 사용

계산 서비스는 여러 프로바이더 네트워크에 걸쳐 있는 단일 네트워크를 지원하지 않습니다. 네트워크에 여러 물리적 네트워크가 포함된 경우 계산 서비스에서는 첫 번째 실제 네트워크만 사용합니다. 따라서 라우팅된 공급자 네트워크를 사용하는 경우 모든 컴퓨팅 노드에서 동일한 physical_network 이름을 사용해야 합니다.

VLAN 또는 플랫 네트워크에서 라우팅된 공급자 네트워크를 사용하는 경우 모든 세그먼트에 동일한 physical_network 이름을 사용해야 합니다. 그런 다음 네트워크에 대한 여러 세그먼트를 만들고 세그먼트를 적절한 서브넷에 매핑합니다.

클라우드 사용자가 PCI 장치가 연결된 인스턴스를 생성할 수 있도록 하려면 다음을 완료해야 합니다.

  1. PCI 패스스루를 위해 컴퓨팅 노드를 지정합니다.
  2. 필요한 PCI 장치가 있는 PCI 패스스루에 대해 컴퓨팅 노드를 구성합니다.
  3. Overcloud를 배포합니다.
  4. PCI 장치가 연결된 인스턴스를 시작하기 위한 플레이버를 만듭니다.

사전 요구 사항

  • 컴퓨팅 노드에는 필수 PCI 장치가 있습니다.

5.1. PCI 패스스루를 위한 컴퓨팅 노드 지정

물리적 PCI 장치가 연결된 인스턴스용으로 Compute 노드를 지정하려면 새 역할 파일을 생성하여 PCI 패스스루 역할을 구성하고 PCI 패스스루를 위해 Compute 노드에 태그를 지정하는 데 사용할 새 오버클라우드 플레이버 및 PCI 통과 리소스 클래스를 구성해야 합니다.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. stackrc 파일을 소싱합니다.

    [stack@director ~]$ source ~/stackrc
  3. Controller,Compute 및 Compute PCI 역할이 포함된 roles_data_pci_passthrough.yaml 이라는 새 역할 데이터 파일을 생성합니다.

    (undercloud)$ openstack overcloud roles \
     generate -o /home/stack/templates/roles_data_pci_passthrough.yaml \
     Compute:ComputePCI Compute Controller
  4. roles_data_pci_passthrough.yaml 을 열고 다음 매개변수 및 섹션을 편집하거나 추가합니다.

    섹션/패랜드현재 값새 값

    역할 설명

    역할: 컴퓨팅

    역할: ComputePCI

    역할 이름

    name: 컴퓨팅

    name: ComputePCI

    description

    기본 컴퓨팅 노드 역할

    PCI 통과 계산 노드 역할

    HostnameFormatDefault

    %stackname%-novacompute-%index%

    %stackname%-novacomputepci-%index%

    deprecated_nic_config_name

    compute.yaml

    compute-pci-passthrough.yaml

  5. 노드 정의 템플릿 node. json 또는 node. yaml에 추가하여 오버클라우드의 PCI 패스스루 컴퓨팅 노드를 등록합니다. 자세한 내용은 Director 설치 및 사용 가이드 의 오버클라우드 노드 등록을 참조하십시오.
  6. 노드 하드웨어를 검사합니다.

    (undercloud)$ openstack overcloud node introspect \
     --all-manageable --provide

    자세한 내용은 Director 설치 및 사용 가이드 의 베어 메탈 노드 하드웨어 인벤토리 생성을 참조하십시오.

  7. PCI 패스스루 컴퓨팅 노드의 compute-pci-passthrough 오버클라우드 플레이버를 생성합니다.

    (undercloud)$ openstack flavor create --id auto \
     --ram <ram_size_mb> --disk <disk_size_gb> \
     --vcpus <no_vcpus> compute-pci-passthrough
    • <ram_size_mb> 를 베어 메탈 노드의 RAM(MB)으로 바꿉니다.
    • <disk_size_gb> 를 베어 메탈 노드의 디스크 크기(GB)로 바꿉니다.
    • <no_vcpus> 를 베어 메탈 노드의 CPU 수로 바꿉니다.

      참고

      이러한 속성은 인스턴스를 예약하는 데 사용되지 않습니다. 그러나 계산 스케줄러는 디스크 크기를 사용하여 루트 파티션 크기를 결정합니다.

  8. 사용자 정의 PCI 패스스루 리소스 클래스를 사용하여 PCI 패스스루를 지정하려는 각 베어 메탈 노드에 태그를 지정합니다.

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.PCI-PASSTHROUGH <node>

    <node> 를 베어 메탈 노드의 ID로 바꿉니다.

  9. compute-pci-passthrough 플레이버를 사용자 지정 PCI 패스스루 리소스 클래스와 연결합니다.

    (undercloud)$ openstack flavor set \
     --property resources:CUSTOM_BAREMETAL_PCI_PASSTHROUGH=1 \
      compute-pci-passthrough

    베어 메탈 서비스 노드의 리소스 클래스에 해당하는 사용자 지정 리소스 클래스의 이름을 확인하려면 리소스 클래스를 대문자로 변환하려면 모든 문장 부호를 밑줄로 바꾸고 접두사는 CUSTOM_ 로 바꿉니다.

    참고

    플레이버는 베어 메탈 리소스 클래스의 인스턴스 하나만 요청할 수 있습니다.

  10. Compute 스케줄러가 베어 메탈 플레이버 속성을 사용하여 인스턴스를 예약하지 못하도록 다음 플레이버 속성을 설정합니다.

    (undercloud)$ openstack flavor set \
     --property resources:VCPU=0 --property resources:MEMORY_MB=0 \
     --property resources:DISK_GB=0 compute-pci-passthrough
  11. node-info.yaml 파일에 다음 매개변수를 추가하여 PCI 패스스루 컴퓨팅 노드 수와 PCI 패스스루 지정 컴퓨팅 노드에 사용할 플레이버를 지정합니다.

    parameter_defaults:
      OvercloudComputePCIFlavor: compute-pci-passthrough
      ComputePCICount: 3
  12. 역할이 생성되었는지 확인하려면 다음 명령을 입력합니다.

    (undercloud)$ openstack overcloud profiles list