11.7. 가상 머신에서 PCI 장치 관리


VM(가상 머신)을 사용하는 경우 호스트 시스템에 연결된 스토리지 또는 네트워크 컨트롤러와 같은 PCI 장치에 액세스하고 제어할 수 있습니다. 이 시나리오에서 호스트 시스템은 장치 제어를 VM에 전달합니다. 이는 PCI 장치 할당 또는 PCI 패스스루 라고도 합니다.

11.7.1. 가상 머신에 PCI 장치 연결

VM(가상 머신)에서 호스트에 연결된 PCI 하드웨어 장치를 사용하려면 호스트에서 장치를 분리하고 VM에 할당할 수 있습니다. 이는 PCI 패스스루 라고도 합니다.

사전 요구 사항

  • 호스트가 IBM Z 아키텍처를 사용하는 경우 호스트에 vfio 커널 모듈을 로드해야 합니다. 확인하려면 다음 명령을 사용합니다.

    # lsmod | grep vfio
    Copy to Clipboard Toggle word wrap

    출력에는 다음 모듈이 포함되어야 합니다.

    • vfio_pci
    • vfio_pci_core
    • vfio_iommu_type1
절차

다음 단계에서는 일반적인 PCI 장치 할당을 설명합니다. 특정 유형의 PCI 장치를 할당하는 방법은 다음 절차를 참조하십시오.

  1. 사용하려는 장치의 PCI 주소 식별자를 가져옵니다. 예를 들어 호스트에 연결된 NVME 디스크를 사용하려는 경우 다음 출력에서는 장치 0000:65:00.0 으로 표시됩니다.

    # lspci -nkD
    
    0000:00:00.0 0600: 8086:a708 (rev 01)
    	Subsystem: 17aa:230e
    	Kernel driver in use: igen6_edac
    	Kernel modules: igen6_edac
    0000:00:02.0 0300: 8086:a7a1 (rev 04)
    	Subsystem: 17aa:230e
    	Kernel driver in use: i915
    	Kernel modules: i915, xe
    0000:00:04.0 1180: 8086:a71d (rev 01)
    	Subsystem: 17aa:230e
    	Kernel driver in use: proc_thermal_pci
    	Kernel modules: processor_thermal_device_pci
    0000:00:05.0 0604: 8086:a74d (rev 01)
    	Subsystem: 17aa:230e
    	Kernel driver in use: pcieport
    0000:00:07.0 0604: 8086:a76e (rev 01)
    	Subsystem: 17aa:230e
    	Kernel driver in use: pcieport
    0000:65:00.0 0108: 144d:a822 (rev 01)
        DeviceName: PCIe SSD in Slot 0 Bay 2
        Subsystem: 1028:1fd9
        Kernel driver in use: nvme
        Kernel modules: nvme
    0000:6a:00.0 0108: 1179:0110 (rev 01)
        DeviceName: PCIe SSD in Slot 11 Bay 2
        Subsystem: 1028:1ffb
        Kernel driver in use: nvme
        Kernel modules: nvme
    Copy to Clipboard Toggle word wrap
  2. PCI 장치를 연결할 VM의 XML 구성을 엽니다.

    # virsh edit vm-name
    Copy to Clipboard Toggle word wrap
  3. XML 파일의 & lt; devices > 섹션에 다음 <hostdev > 구성을 추가합니다.

    address 행의 값을 장치의 PCI 주소로 바꿉니다. 선택적으로 장치가 VM에서 사용할 PCI 주소를 변경하려면 <address type="pci"> 행에 다른 주소를 구성할 수 있습니다.

    예를 들어 호스트의 장치 주소가 0000:65:00.0 이고 게스트에서 0000:02:00.0 을 사용하려면 다음 구성을 사용합니다.

    <hostdev mode="subsystem" type="pci" managed="yes">
      <driver name="vfio"/>
       <source>
        <address domain="0x0000" bus="0x65" slot="0x00" function="0x0"/>
       </source>
       <address type="pci" domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </hostdev>
    Copy to Clipboard Toggle word wrap
  4. 선택 사항: IBM Z 호스트에서 게스트 운영 체제가 PCI 장치를 감지하는 방법을 수정할 수 있습니다. 이렇게 하려면 < zpci> 하위 요소를 < address> 요소에 추가합니다. < zpci > 줄에서는 uidfid 값을 조정하여 게스트 운영 체제에서 장치의 PCI 주소 및 기능 ID를 수정할 수 있습니다.

    <hostdev mode="subsystem" type="pci" managed="yes">
      <driver name="vfio"/>
       <source>
        <address domain="0x0000" bus="0x65" slot="0x00" function="0x0"/>
       </source>
       <address type="pci" domain='0x0000' bus='0x02' slot='0x00' function='0x0'>
         <zpci uid="0x0008" fid="0x001807"/>
       </address>
    </hostdev>
    Copy to Clipboard Toggle word wrap

    이 예제에서는 다음을 수행합니다.

    • UID="0x0008" 은 VM에 있는 장치의 도메인 PCI 주소를 0008:00:00.0 로 설정합니다.
    • FID="0x001807" 은 장치의 슬롯 값을 0x001807 로 설정합니다. 결과적으로 VM의 파일 시스템의 장치 구성이 /sys/bus/pci/slots/00001087/address 에 저장됩니다.

      이러한 값을 지정하지 않으면 libvirt 에서 자동으로 구성합니다.

  5. XML 구성을 저장합니다.
  6. VM이 실행 중이면 종료합니다.

    # virsh shutdown vm-name
    Copy to Clipboard Toggle word wrap

검증

  1. VM을 시작하고 게스트 운영 체제에 로그인합니다.
  2. 게스트 운영 체제에서 PCI 장치가 나열되는지 확인합니다.

    예를 들어 게스트 장치 주소를 0000:02:00.0 으로 구성한 경우 다음 명령을 사용합니다.

    # lspci -nkD | grep 0000:02:00.0
    
    0000:02:00.0 8086:9a09 (rev 01)
    Copy to Clipboard Toggle word wrap

11.7.2. 웹 콘솔을 사용하여 가상 머신에 장치 연결

VM(가상 머신)에 특정 기능을 추가하려면 웹 콘솔을 사용하여 호스트 장치를 VM에 연결할 수 있습니다.

참고

여러 호스트 장치를 동시에 연결할 수 없습니다. 한 번에 하나의 장치만 연결할 수 있습니다.

자세한 내용은 RHEL 8 Known Issues를 참조하십시오.

사전 요구 사항

  • RHEL 8 웹 콘솔을 설치했습니다.
  • cockpit 서비스를 활성화했습니다.
  • 사용자 계정이 웹 콘솔에 로그인할 수 있습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • PCI 장치를 연결하는 경우 hostdev 요소의 managed 속성 상태가 yes 로 설정되어 있는지 확인합니다.

    참고

    PCI 장치를 VM에 연결할 때 hostdev 요소의 관리 속성을 생략하거나 no 로 설정하지 마십시오. 이렇게 하면 VM에 전달할 때 PCI 장치는 호스트에서 자동으로 분리할 수 없습니다. 또한 VM을 끄면 호스트에 자동으로 다시 연결할 수 없습니다.

    결과적으로 호스트가 응답하지 않거나 예기치 않게 종료될 수 있습니다.

    VM의 XML 구성에서 managed 속성의 상태를 찾을 수 있습니다. 다음 예제에서는 example-VM-1 VM의 XML 구성을 엽니다.

    # virsh edit example-VM-1
    Copy to Clipboard Toggle word wrap
  • VM에서 중요한 데이터를 백업합니다.
  • 선택 사항: VM의 XML 구성을 백업합니다. 예를 들어 example-VM-1 VM을 백업하려면 다음을 수행합니다.

    # virsh dumpxml example-VM-1 > example-VM-1.xml
    Copy to Clipboard Toggle word wrap
  • 웹 콘솔 VM 플러그인이 시스템에 설치되어 있습니다.

절차

  1. RHEL 8 웹 콘솔에 로그인합니다.

    자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.

  2. Virtual Machines (가상 시스템) 인터페이스에서 호스트 장치를 연결할 VM을 클릭합니다.

    VM의 그래픽 인터페이스에 액세스할 수 있도록 선택한 VM 및 콘솔 섹션에 대한 기본 정보가 포함된 개요 섹션이 포함된 새 페이지가 열립니다.

  3. 호스트 장치로 스크롤합니다.

    Host devices (호스트 장치) 섹션에는 VM에 연결된 장치와 장치 추가 또는 제거 옵션이 표시됩니다.

  4. 호스트 장치 추가를 클릭합니다.

    호스트 장치 추가 대화 상자가 나타납니다.

  5. VM에 연결할 장치를 선택합니다.
  6. 추가를클릭합니다.

    선택한 장치가 VM에 연결되어 있습니다.

검증

  • VM을 실행하고 장치가 Host devices (호스트 장치) 섹션에 표시되는지 확인합니다.

11.7.3. 명령줄을 사용하여 가상 머신에서 PCI 장치 제거

VM(가상 머신)에서 PCI 장치를 제거하려면 VM의 XML 구성에서 장치 정보를 제거합니다.

절차

  1. PCI 장치가 연결된 VM의 XML 구성에서 장치의 설정을 사용하여 < hostdev > 섹션에서 < address domain > 행을 찾습니다.

    # virsh dumpxml <VM-name>
    
    [...]
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x65' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </hostdev>
    [...]
    Copy to Clipboard Toggle word wrap
  2. virsh detach-device 명령을 --hostdev 옵션과 장치 주소와 함께 사용합니다.

    예를 들어 다음 명령은 이전 단계에 있는 장치를 영구적으로 제거합니다.

    # virt detach-device <VM-name> --hostdev 0000:65:00.0 --config
    Domain 'VM-name' defined successfully.
    Copy to Clipboard Toggle word wrap
    참고

    실행 중인 VM에서 PCI 장치를 제거하려면 --live 인수를 이전 명령에 추가합니다.

  3. 선택 사항: PCI 장치를 호스트에 다시 연결합니다. 예를 들어 다음 명령은 이전 단계에서 VM에서 제거된 장치를 다시 연결합니다.

    # virsh nodedev-reattach pci_0000_65_00_0
    Device pci_0000_65_00_0 re-attached
    Copy to Clipboard Toggle word wrap

검증

  1. VM의 XML 구성을 다시 표시하고 장치의 < hostdev > 섹션이 더 이상 나타나지 않는지 확인합니다.

    # virsh dumpxml <VM-name>
    Copy to Clipboard Toggle word wrap

11.7.4. 웹 콘솔을 사용하여 가상 머신에서 장치 제거

리소스를 확보하거나 VM의 기능을 수정하려면, 웹 콘솔을 사용하여 VM을 수정하고 더 이상 필요하지 않은 호스트 장치를 제거할 수 있습니다.

주의

웹 콘솔을 사용하여 연결된 USB 호스트 장치를 제거하면 장치와 USB 장치의 버스 번호 간의 잘못된 상관 관계가 없기 때문에 실패할 수 있습니다.

자세한 내용은 RHEL 8 Known Issues를 참조하십시오.

이 문제를 해결하려면 virsh 유틸리티를 사용하여 VM의 XML 구성에서 USB 장치의 <hostdev> 부분을 제거합니다. 다음 예제에서는 example-VM-1 VM의 XML 구성을 엽니다.

# virsh edit <example-VM-1>
Copy to Clipboard Toggle word wrap

사전 요구 사항

  • RHEL 8 웹 콘솔을 설치했습니다.
  • cockpit 서비스를 활성화했습니다.
  • 사용자 계정이 웹 콘솔에 로그인할 수 있습니다.

    자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.

  • 웹 콘솔 VM 플러그인이 시스템에 설치되어 있습니다.
  • 선택 사항: virsh dumpxml example-VM-1을 사용하여 VM 의 XML 구성을 백업하고 출력을 파일로 전송합니다. 예를 들어 다음은 testguest1 VM의 구성을 testguest1.xml 파일로 백업합니다.

    # virsh dumpxml testguest1 > testguest1.xml
    # cat testguest1.xml
    <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
      <name>testguest1</name>
      <uuid>ede29304-fe0c-4ca4-abcd-d246481acd18</uuid>
      [...]
    </domain>
    Copy to Clipboard Toggle word wrap

절차

  1. 가상 머신 인터페이스에서 호스트 장치를 제거할 VM을 클릭합니다.

    VM의 그래픽 인터페이스에 액세스할 수 있도록 선택한 VM 및 콘솔 섹션에 대한 기본 정보가 포함된 개요 섹션이 포함된 새 페이지가 열립니다.

  2. 호스트 장치로 스크롤합니다.

    Host devices (호스트 장치) 섹션에는 VM에 연결된 장치와 장치 추가 또는 제거 옵션이 표시됩니다.

  3. VM에서 제거할 장치 옆에 있는 Remove (제거) 버튼을 클릭합니다.

    제거 장치 확인 대화 상자가 나타납니다.

  4. 제거를 클릭합니다.

    장치가 VM에서 제거됩니다.

문제 해결

  • 호스트 장치를 제거하면 VM을 부팅할 수 없게 되는 경우 virsh define 유틸리티를 사용하여 이전에 백업한 XML 구성 파일을 다시 로드하여 XML 구성을 복원합니다.

    # virsh define testguest1.xml
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat