Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

16장. 게스트 가상 머신 장치 구성

Red Hat Enterprise Linux 7은 게스트 가상 머신을 위한 세 가지 유형의 장치를 지원합니다.
  • 에뮬레이션된 장치는 실제 하드웨어를 모방하는 순수하게 가상 장치이므로 수정되지 않은 게스트 운영 체제가 표준 인 박스 드라이버를 사용하여 작업할 수 있습니다.
  • virtio 장치 (또는 반가상화라고도 함)는 가상 머신에서 최적으로 작동하도록 설계된 가상 장치입니다. virtio 장치는 에뮬레이션된 장치와 유사하지만 Linux 이외의 가상 시스템에는 기본적으로 필요한 드라이버가 포함되어 있지 않습니다. Virtual Machine Manager(virt-manager)와 같은 가상화 관리 소프트웨어 및 Red Hat Virtualization Hypervisor는 지원되는 비 Linux 게스트 운영 체제에 대해 이러한 드라이버를 자동으로 설치합니다. Red Hat Enterprise Linux 7은 최대 216개의 virtio 장치를 지원합니다. 자세한 내용은 5장. KVM Paravirtualized (virtio) 드라이버 의 내용을 참조하십시오.
  • 할당된 장치는 가상 머신에 노출되는 물리적 장치입니다. 이 방법을 passthrough 라고도 합니다. 장치 할당을 통해 가상 머신은 다양한 작업에 대해 PCI 장치에 독점적으로 액세스할 수 있으며 PCI 장치가 게스트 운영 체제에 물리적으로 연결된 것처럼 표시되고 동작할 수 있습니다. Red Hat Enterprise Linux 7은 가상 머신당 최대 32개의 할당된 장치를 지원합니다.
    장치 할당은 일부 그래픽 장치를 포함하여 PCIe 장치에서 지원됩니다. 병렬 PCI 장치는 할당된 장치로 지원될 수 있지만 보안 및 시스템 구성 충돌로 인해 심각한 제한 사항이 있습니다.
Red Hat Enterprise Linux 7은 가상 머신에 단일 기능 슬롯으로 노출되는 PCI 핫 플러그를 지원합니다. 다기능 호스트 장치 및 다중 기능 호스트 장치의 개별 기능은 이를 활성화하도록 구성할 수 있습니다. 가상 머신에 다중 기능 PCI 슬롯으로 장치를 노출하는 구성은 비 핫 플러그 애플리케이션에만 권장됩니다.
특정 장치 및 관련 제한에 대한 자세한 내용은 23.17절. “devices” 을 참조하십시오.
참고
호스트에서 할당된 장치를 사용하여 게스트를 완전히 격리하려면 인터럽트 재 매핑에 대한 플랫폼 지원이 필요합니다. 이러한 지원이 없으면 호스트는 악의적인 게스트의 삽입 공격을 중단하는 데 취약할 수 있습니다. 게스트가 신뢰하는 환경에서 관리자는 allow_unsafe_interrupts 옵션을 vfio_iommu_type1 모듈에 사용하여 PCI 장치 할당을 계속 허용할 수 있습니다. 다음 내용이 포함된 /etc/modprobe.d 에 .conf 파일(예: local.conf)을 추가하여 이 작업을 영구적으로 수행할 수 있습니다.
options vfio_iommu_type1 allow_unsafe_interrupts=1
또는 sysfs 항목을 사용하여 동일한 작업을 수행하는 것이 좋습니다.
# echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts

16.1. PCI 장치

PCI 장치 할당은 Intel VT-d 또는 AMD IOMMU를 지원하는 하드웨어 플랫폼에서만 사용할 수 있습니다. 호스트 BIOS에서 PCI 장치 할당이 작동하려면 이러한 Intel VT-d 또는 AMD IOMMU 사양을 활성화해야 합니다.

절차 16.1. PCI 장치 할당을 위한 Intel 시스템 준비

  1. Intel VT-d 사양 활성화

    Intel VT-d 사양은 가상 머신에 물리적 장치를 직접 할당하는 하드웨어 지원을 제공합니다. Red Hat Enterprise Linux에서 PCI 장치 할당을 사용하려면 이러한 사양이 필요합니다.
    BIOS에서 Intel VT-d 사양을 활성화해야 합니다. 일부 시스템 제조업체에서는 기본적으로 이러한 사양을 비활성화합니다. 이러한 사양을 확인하는 데 사용되는 용어는 제조업체마다 다를 수 있습니다. 시스템 제조업체의 설명서를 참조하십시오.
  2. 커널에서 Intel VT-d 활성화

    /etc/sysconfig/grub 파일에 있는 따옴표 내에서 intel_iommu=oniommu=pt 매개 변수를 추가하여 커널에서 Intel VT-d를 활성화합니다.
    다음은 Intel VT-d가 활성화된 수정된 grub 파일입니다.
    GRUB_CMDLINE_LINUX="rd.lvm.lv=vg_VolGroup00/LogVol01
    vconsole.font=latarcyrheb-sun16 rd.lvm.lv=vg_VolGroup_1/root
    vconsole.keymap=us $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/
    rhcrashkernel-param || :) rhgb quiet intel_iommu=on iommu=pt"
  3. 구성 파일 재생성

    다음을 실행하여 /etc/grub2.cfg를 다시 생성합니다.
    grub2-mkconfig -o /etc/grub2.cfg
    UEFI 기반 호스트를 사용하는 경우 대상 파일은 /etc/grub2-efi.cfg 여야 합니다.
  4. 사용 준비

    시스템을 재부팅하여 변경 사항을 활성화합니다. 이제 PCI 장치 할당이 가능합니다.

절차 16.2. PCI 장치 할당을 위한 AMD 시스템 준비

  1. AMD IOMMU 사양 활성화

    Red Hat Enterprise Linux에서 PCI 장치 할당을 사용하려면 AMD IOMMU 사양이 필요합니다. 이 사양은 BIOS에서 활성화해야합니다. 일부 시스템 제조업체에서는 기본적으로 이러한 사양을 비활성화합니다.
  2. IOMMU 커널 지원 활성화

    /etc/sysconfig/grub 의 따옴표 내에 GRUB_CMDLINX_LINUX 행의 끝에 iommu=pt 를 추가하여 AMD IOMMU 사양이 부팅 시 활성화되도록 합니다.
  3. 구성 파일 재생성

    다음을 실행하여 /etc/grub2.cfg를 다시 생성합니다.
    grub2-mkconfig -o /etc/grub2.cfg
    UEFI 기반 호스트를 사용하는 경우 대상 파일은 /etc/grub2-efi.cfg 여야 합니다.
  4. 사용 준비

    시스템을 재부팅하여 변경 사항을 활성화합니다. 이제 PCI 장치 할당이 가능합니다.
참고
IOMMU에 대한 자세한 내용은 부록 E. IOMMU 그룹 작업 을 참조하십시오.

16.1.1. virsh를 사용하여 PCI 장치 할당

이러한 단계는 KVM 하이퍼바이저의 가상 머신에 PCI 장치를 할당하는 단계를 포함합니다.
이 예에서는 PCI 식별자 코드 pci_0000 644300_0guest1-rhel7-64 라는 완전히 가상화된 게스트 시스템과 함께 PCIe 네트워크 컨트롤러를 사용합니다.

절차 16.3. virsh를 사용하여 게스트 가상 머신에 PCI 장치 할당

  1. 장치 식별

    먼저 가상 머신에 대한 장치 할당용으로 지정된 PCI 장치를 식별합니다. lspci 명령을 사용하여 사용 가능한 PCI 장치를 나열합니다. grep 을 사용하여 lspci 출력을 구체화할 수 있습니다.
    이 예에서는 다음 출력에 강조 표시된 이더넷 컨트롤러를 사용합니다.
    # lspci | grep Ethernet
    00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection
    01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    이 이더넷 컨트롤러는 짧은 식별자 00:19.0 과 함께 표시됩니다. 이 PCI 장치를 가상 머신에 할당하려면 virsh 에서 사용하는 전체 식별자를 찾아야 합니다.
    이렇게 하려면 virsh nodedev-list 명령을 사용하여 호스트 시스템에 연결된 특정 유형(pci)의 모든 장치를 나열합니다. 그런 다음 사용하려는 장치의 짧은 식별자에 매핑되는 문자열의 출력을 확인합니다.
    이 예에서는 짧은 식별자 00:19.0 을 사용하여 이더넷 컨트롤러에 매핑되는 문자열을 보여줍니다. 및 . 문자 전체 식별자에서 밑줄로 교체됩니다.
    # virsh nodedev-list --cap pci
    pci_0000_00_00_0
    pci_0000_00_01_0
    pci_0000_00_03_0
    pci_0000_00_07_0
    pci_0000_00_10_0
    pci_0000_00_10_1
    pci_0000_00_14_0
    pci_0000_00_14_1
    pci_0000_00_14_2
    pci_0000_00_14_3
    pci_0000_00_19_0
    pci_0000_00_1a_0
    pci_0000_00_1a_1
    pci_0000_00_1a_2
    pci_0000_00_1a_7
    pci_0000_00_1b_0
    pci_0000_00_1c_0
    pci_0000_00_1c_1
    pci_0000_00_1c_4
    pci_0000_00_1d_0
    pci_0000_00_1d_1
    pci_0000_00_1d_2
    pci_0000_00_1d_7
    pci_0000_00_1e_0
    pci_0000_00_1f_0
    pci_0000_00_1f_2
    pci_0000_00_1f_3
    pci_0000_01_00_0
    pci_0000_01_00_1
    pci_0000_02_00_0
    pci_0000_02_00_1
    pci_0000_06_00_0
    pci_0000_07_02_0
    pci_0000_07_03_0
    사용할 장치에 매핑되는 PCI 장치 번호를 기록합니다. 다른 단계에서 필요합니다.
  2. 장치 정보 검토

    domain, bus 및 function에 대한 정보는 virsh nodedev-dumpxml 명령의 출력에서 확인할 수 있습니다.

    그림 16.1. 덤프 내용

    
    # virsh nodedev-dumpxml pci_0000_00_19_0
    <device>
      <name>pci_0000_00_19_0</name>
      <parent>computer</parent>
      <driver>
        <name>e1000e</name>
      </driver>
      <capability type='pci'>
        <domain>0</domain>
        <bus>0</bus>
        <slot>25</slot>
        <function>0</function>
        <product id='0x1502'>82579LM Gigabit Network Connection</product>
        <vendor id='0x8086'>Intel Corporation</vendor>
        <iommuGroup number='7'>
          <address domain='0x0000' bus='0x00' slot='0x19' function='0x0'/>
        </iommuGroup>
      </capability>
    </device>
    
    
    참고
    IOMMU 그룹은 IOMMU의 관점에서 장치의 가시성과 격리를 기반으로 결정됩니다. 각 IOMMU 그룹은 하나 이상의 장치를 포함할 수 있습니다. 여러 장치가 있는 경우 IOMMU 그룹 내의 모든 끝점을 게스트에 할당할 그룹 내 모든 장치에 대해 요청해야 합니다. 이 작업은 게스트에 추가 엔드포인트를 할당하거나 virsh nodedev-detach 를 사용하여 호스트 드라이버에서 분리하여 수행할 수 있습니다. 단일 그룹에 포함된 장치는 여러 게스트 간에 분할되거나 호스트와 게스트 간에 분할되지 않을 수 있습니다. PCIe 루트 포트, 스위치 포트, 브리지와 같은 비 엔드 포인트 장치는 호스트 드라이버에서 분리해서는 안 되며 끝점 할당을 방해하지 않습니다.
    IOMMU 그룹 내의 장치는 virsh nodedev-dumpxml 출력의 iommuGroup 섹션을 사용하여 확인할 수 있습니다. 그룹의 각 멤버는 별도의 "address" 필드에 제공됩니다. 이 정보는 다음을 사용하여 sysfs에서 찾을 수도 있습니다.
    $ ls /sys/bus/pci/devices/0000:01:00.0/iommu_group/devices/
    이 예제의 예는 다음과 같습니다.
    0000:01:00.0  0000:01:00.1
    0000.01.00.0만 게스트에 할당하려면 게스트를 시작하기 전에 사용되지 않은 엔드 포인트를 호스트에서 분리해야 합니다.
    $ virsh nodedev-detach pci_0000_01_00_1
  3. 필요한 구성 세부 정보 확인

    구성 파일에 필요한 값은 virsh nodedev-dumpxml pci_0000_00_19_0 명령의 출력을 참조하십시오.
    예제 장치에는 bus = 0, 슬롯 = 25 및 function = 0의 값이 있습니다. 10진수 구성은 다음 세 가지 값을 사용합니다.
    bus='0'
    slot='25'
    function='0'
  4. 설정 세부 정보 추가

    virsh edit 를 실행하여 가상 머신 이름을 지정하고 <devices> 섹션에 장치 항목을 추가하여 PCI 장치를 게스트 가상 머신에 할당합니다. 예를 들면 다음과 같습니다.
    # virsh edit guest1-rhel7-64

    그림 16.2. PCI 장치 추가

    
    <devices>
    	[...]
     <hostdev mode='subsystem' type='pci' managed='yes'>
       <source>
          <address domain='0' bus='0' slot='25' function='0'/>
       </source>
     </hostdev>
     [...]
    </devices>
    
    또는 virsh attach-device 를 실행하여 가상 머신 이름과 게스트의 XML 파일을 지정합니다.
    virsh attach-device guest1-rhel7-64 file.xml
    참고
    PCI 장치는 장치에 대한 장치 펌웨어 또는 사전 부팅 드라이버 (예: PXE)를 제공하기 위한 옵션 2.0.0 또는 확장 Makefile(예: PXE)이라고도 하는 선택적 읽기 전용 메모리(ROM) 모듈을 포함할 수 있습니다. 일반적으로 이러한 옵션은 PCI 장치 할당을 사용하여 물리적 PCI 장치를 VM에 연결할 때 가상화된 환경에서도 작동합니다.
    그러나 경우에 따라 옵션 RAM이 불필요하여 VM을 더 느리게 부팅하거나 장치에서 제공하는 사전 부팅 드라이버가 가상화와 호환되지 않을 수 있으므로 게스트 OS 부팅이 실패할 수 있습니다. 이러한 경우 Red Hat은 VM에서 옵션 Rom을 마스킹하는 것을 권장합니다. 이렇게 하려면 다음을 수행합니다.
    1. 호스트에서 할당할 장치에 확장 Makefile 베이스 주소 레지스터(BAR)가 있는지 확인합니다. 이렇게 하려면 장치에 lspci -v 명령을 사용하고 다음이 포함된 행의 출력을 확인합니다.
      Expansion ROM at
    2. <rom bar='off'/> 요소를 게스트의 XML 구성에서 <hostdev> 요소의 자식으로 추가합니다.
      <hostdev mode='subsystem' type='pci' managed='yes'>
        <source>
           <address domain='0' bus='0' slot='25' function='0'/>
        </source>
        <rom bar='off'/>
      </hostdev>
      
  5. 가상 머신 시작

    # virsh start guest1-rhel7-64
이제 PCI 장치를 가상 머신에 할당하고 게스트 운영 체제에 액세스할 수 있어야 합니다.

16.1.2. virt-manager로 PCI 장치 할당

그래픽 virt-manager 도구를 사용하여 PCI 장치를 게스트 가상 머신에 추가할 수 있습니다. 다음 절차에서는 게스트 가상 머신에 Gigabit 이더넷 컨트롤러를 추가합니다.

절차 16.4. virt-manager를 사용하여 게스트 가상 머신에 PCI 장치 할당

  1. 하드웨어 설정 열기

    게스트 가상 머신을 열고 하드웨어 추가 버튼 을 클릭하여 가상 시스템에 새 장치를 추가합니다.

    그림 16.3. 가상 머신 하드웨어 정보 창

    상단 작업 표시줄에서 선택한 Information(정보) 버튼이 있는 가상 머신 하드웨어 창과 왼쪽 메뉴 창에서 선택한 개요입니다.
  2. PCI 장치 선택

    왼쪽의 하드웨어 목록에서 PCI 호스트 장치를 선택합니다.
    사용되지 않는 PCI 장치를 선택합니다. 현재 다른 게스트에서 사용 중인 PCI 장치를 선택하면 오류가 발생합니다. 이 예제에서는 예비 오디오 컨트롤러가 사용됩니다. 완료 를 클릭하여 설정을 완료합니다.

    그림 16.4. 새 가상 하드웨어 추가 마법사

    왼쪽 메뉴 창에서 PCI Host Device를 선택한 상태에서 새 가상 하드웨어 추가 마법사를 사용하여 오른쪽 메뉴 창에서 선택할 호스트 장치 목록을 표시합니다.
  3. 새 장치 추가

    설정이 완료되고 게스트 가상 머신에서 PCI 장치에 직접 액세스할 수 있습니다.

    그림 16.5. 가상 머신 하드웨어 정보 창

    왼쪽 메뉴 창에서 새로 추가된 PCI 장치 목록에 새로 추가된 PCI 장치 목록에 Information(정보) 버튼을 선택한 Information(정보) 버튼을 사용하는 가상 머신 하드웨어 창은 왼쪽 메뉴 창에 새로 추가된 PCI 장치를 표시합니다.
참고
장치 할당에 실패하면 동일한 IOMMU 그룹에 여전히 연결된 다른 끝점이 있을 수 있습니다. virt-manager를 사용하여 그룹 정보를 검색할 수 있는 방법은 없지만 virsh 명령을 사용하여 IOMMU 그룹의 경계를 분석하고 필요한 경우 sequester 장치를 분석할 수 있습니다.
IOMMU 그룹 및 virsh를 사용하여 엔드포인트 장치를 분리하는 방법에 대한 자세한 내용은 16.1.1절. “virsh를 사용하여 PCI 장치 할당”참고 를 참조하십시오.

16.1.3. virt-install을 사용한 PCI 장치 할당

virt-install 명령을 사용하여 게스트를 설치할 때 PCI 장치를 할당할 수 있습니다. 이 작업을 수행하려면 --host-device 매개 변수를 사용합니다.

절차 16.5. virt-install을 사용하여 가상 머신에 PCI 장치 할당

  1. 장치 식별

    게스트 가상 머신에 대한 장치 할당용으로 지정된 PCI 장치를 식별합니다.
    # lspci | grep Ethernet
    00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection
    01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    virsh nodedev-list 명령은 시스템에 연결된 모든 장치를 나열하고 각 PCI 장치를 문자열로 식별합니다. 출력을 PCI 장치로만 제한하려면 다음 명령을 입력합니다.
    # virsh nodedev-list --cap pci
    pci_0000_00_00_0
    pci_0000_00_01_0
    pci_0000_00_03_0
    pci_0000_00_07_0
    pci_0000_00_10_0
    pci_0000_00_10_1
    pci_0000_00_14_0
    pci_0000_00_14_1
    pci_0000_00_14_2
    pci_0000_00_14_3
    pci_0000_00_19_0
    pci_0000_00_1a_0
    pci_0000_00_1a_1
    pci_0000_00_1a_2
    pci_0000_00_1a_7
    pci_0000_00_1b_0
    pci_0000_00_1c_0
    pci_0000_00_1c_1
    pci_0000_00_1c_4
    pci_0000_00_1d_0
    pci_0000_00_1d_1
    pci_0000_00_1d_2
    pci_0000_00_1d_7
    pci_0000_00_1e_0
    pci_0000_00_1f_0
    pci_0000_00_1f_2
    pci_0000_00_1f_3
    pci_0000_01_00_0
    pci_0000_01_00_1
    pci_0000_02_00_0
    pci_0000_02_00_1
    pci_0000_06_00_0
    pci_0000_07_02_0
    pci_0000_07_03_0
    PCI 장치 번호를 기록합니다. 다른 단계에서 번호가 필요합니다.
    도메인, 버스 및 기능에 대한 정보는 virsh nodedev-dumpxml 명령의 출력에서 확인할 수 있습니다.
    # virsh nodedev-dumpxml pci_0000_01_00_0

    그림 16.6. PCI 장치 파일 콘텐츠

    
    <device>
      <name>pci_0000_01_00_0</name>
      <parent>pci_0000_00_01_0</parent>
      <driver>
        <name>igb</name>
      </driver>
      <capability type='pci'>
        <domain>0</domain>
        <bus>1</bus>
        <slot>0</slot>
        <function>0</function>
        <product id='0x10c9'>82576 Gigabit Network Connection</product>
        <vendor id='0x8086'>Intel Corporation</vendor>
        <iommuGroup number='7'>
          <address domain='0x0000' bus='0x00' slot='0x19' function='0x0'/>
        </iommuGroup>
      </capability>
    </device>
    
    참고
    IOMMU 그룹에 끝점이 여러 개 있고 모두 게스트에 할당되지 않은 경우 게스트를 시작하기 전에 다음 명령을 실행하여 호스트에서 다른 끝점을 수동으로 분리해야 합니다.
    $ virsh nodedev-detach pci_0000_00_19_1
    IOMMU 그룹에 대한 자세한 내용은 16.1.1절. “virsh를 사용하여 PCI 장치 할당”참고 를 참조하십시오.
  2. 장치 추가

    virsh nodedev 명령의 PCI 식별자 출력을 --host-device 매개 변수의 값으로 사용합니다.
    virt-install \
    --name=guest1-rhel7-64 \
    --disk path=/var/lib/libvirt/images/guest1-rhel7-64.img,size=8 \
    --vcpus=2 --ram=2048 \
    --location=http://example1.com/installation_tree/RHEL7.0-Server-x86_64/os \
    --nonetworks \
    --os-type=linux \
    --os-variant=rhel7
    --host-device=pci_0000_01_00_0
  3. 설치 완료

    게스트 설치를 완료합니다. PCI 장치를 게스트에 연결해야 합니다.

16.1.4. 할당된 PCI 장치 분리

호스트 PCI 장치가 게스트 시스템에 할당되면 호스트는 더 이상 장치를 사용할 수 없습니다. PCI 장치가 도메인 XML 파일에서 managed ='yes' 매개 변수를 사용하여 구성된 경우 게스트 시스템에 연결하고 게스트 시스템에서 분리한 후 필요에 따라 호스트 시스템에 다시 연결합니다. PCI 장치가 관리 모드가 아닌 경우 게스트 시스템에서 PCI 장치를 분리하고 virsh 또는 virt-manager 를 사용하여 다시 연결할 수 있습니다.

절차 16.6. virsh를 사용하여 게스트에서 PCI 장치 분리

  1. 장치 분리

    다음 명령을 사용하여 게스트의 XML 파일에서 해당 장치를 제거하여 게스트에서 PCI 장치를 분리합니다.
    # virsh detach-device name_of_guest file.xml
  2. 장치를 호스트에 다시 연결(선택 사항)

    장치가 관리 모드에 있는 경우 이 단계를 건너뜁니다. 장치가 호스트에 자동으로 반환됩니다.
    장치가 관리 모드를 사용하지 않는 경우 다음 명령을 사용하여 PCI 장치를 호스트 머신에 다시 연결합니다.
    # virsh nodedev-reattach device
    예를 들어 pci_0000 644300_0 장치를 호스트에 다시 연결하려면 다음을 수행합니다.
    # virsh nodedev-reattach pci_0000_01_00_0
    이제 호스트를 사용할 수 있는 장치를 사용할 수 있습니다.

절차 16.7. virt-manager를 사용하여 게스트에서 PCI 장치 분리

  1. 가상 하드웨어 세부 정보 화면 열기

    virt-manager 에서 장치가 포함된 가상 머신을 두 번 클릭합니다. 가상 하드웨어 세부 정보 표시 버튼을 선택하여 가상 하드웨어 목록을 표시합니다.

    그림 16.7. 가상 하드웨어 세부 정보 버튼

    가상 하드웨어 세부 정보 표시 버튼.
  2. 장치 선택 및 제거

    왼쪽 패널에 있는 가상 장치 목록에서 분리할 PCI 장치를 선택합니다.

    그림 16.8. 분리할 PCI 장치 선택

    PCI 장치 세부 정보 및 제거 버튼
    Remove (제거) 버튼을 클릭하여 확인합니다. 이제 호스트를 사용할 수 있는 장치를 사용할 수 있습니다.

16.1.5. PCI 브리지

주변 구성 요소 상호 연결 (PCI) 브리지는 네트워크 카드, 모뎀 및 음향 카드와 같은 장치에 연결하는 데 사용됩니다. 물리적 대응과 마찬가지로 가상 장치를 PCI 브릿지에 연결할 수도 있습니다. 이전에는 게스트 가상 머신에 31개의 PCI 장치만 추가할 수 있었습니다. 이제 31st PCI 장치가 추가되면 PCI 브리지가 31st 슬롯에 자동으로 배치되어 추가 PCI 장치를 PCI 브리지로 이동합니다. 각 PCI 브릿지에는 31개의 추가 장치에 대한 31개의 슬롯이 있으며, 모두 브리지가 될 수 있습니다. 이러한 방식으로 게스트 가상 시스템에서 900개 이상의 장치를 사용할 수 있습니다.
PCI 브릿지에 대한 XML 구성 예는 PCI 브리지의 도메인 XML 예를 참조하십시오. 이 구성은 자동으로 설정되며 수동으로 조정하는 것은 권장되지 않습니다.

16.1.6. PCI 장치 할당 제한

PCI 장치 할당(가상 머신에 PCI 장치 연결)을 사용하려면 호스트 시스템에 PCIe 장치의 장치 할당을 활성화하기 위해 AMD IOMMU 또는 Intel VT-d 지원이 필요합니다.
Red Hat Enterprise Linux 7은 게스트 장치 드라이버에 의해 제한된 PCI 구성 공간 액세스를 제공합니다. 이 제한은 확장된 PCI 구성 공간에 있는 장치 기능 또는 기능에 종속된 드라이버를 유발하여 구성이 실패할 수 있습니다.
Red Hat Enterprise Linux 7 가상 시스템당 총 32개의 장치를 할당할 수 있습니다. 이는 가상 머신에 있는 PCI 브릿지 수 또는 이러한 기능을 결합하여 멀티 기능 슬롯을 생성하는 방법에 관계없이 32개의 총 PCI 함수로 변환됩니다.
호스트에서 할당된 장치를 사용하여 게스트를 완전히 격리하려면 인터럽트 재 매핑에 대한 플랫폼 지원이 필요합니다. 이러한 지원이 없으면 호스트는 악의적인 게스트의 삽입 공격을 중단하는 데 취약할 수 있습니다. 게스트가 신뢰하는 환경에서 관리자는 allow_unsafe_interrupts 옵션을 vfio_iommu_type1 모듈에 사용하여 PCI 장치 할당을 계속 허용할 수 있습니다. 다음 내용이 포함된 /etc/modprobe.d 에 .conf 파일(예: local.conf)을 추가하여 이 작업을 영구적으로 수행할 수 있습니다.
options vfio_iommu_type1 allow_unsafe_interrupts=1
또는 sysfs 항목을 사용하여 동일한 작업을 수행하는 것이 좋습니다.
# echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts