15.4. 명령줄을 사용하여 가상 머신에 PCI 장치 연결


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

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

참고

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

사전 요구 사항

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

    # lsmod | grep vfio

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

    • vfio_pci
    • vfio_pci_core
    • vfio_iommu_type1

프로세스

  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: 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
  2. PCI 장치를 연결할 VM의 XML 구성을 엽니다.

    # virsh edit vm-name
  3. XML 파일의 <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>
  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>

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

    • 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

검증

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

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

    # lspci -nkD | grep 0000:02:00.0
    
    0000:02:00.0 8086:9a09 (rev 01)
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동