Red Hat Training

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

16.4. 장치 컨트롤러 구성

게스트 가상 머신 아키텍처에 따라 일부 장치 버스는 가상 컨트롤러에 연결된 가상 장치 그룹과 함께 두 번 이상 나타날 수 있습니다. 일반적으로 libvirt는 명시적 XML 태그 없이 이러한 컨트롤러를 자동으로 유추할 수 있지만 경우에 따라 가상 컨트롤러 요소를 명시적으로 설정하는 것이 좋습니다.

그림 16.15. 가상 컨트롤러의 도메인 XML 예


  ...
  <devices>
    <controller type='ide' index='0'/>
    <controller type='virtio-serial' index='0' ports='16' vectors='4'/>
    <controller type='virtio-serial' index='1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </controller>
    ...
  </devices>
  ...
각 컨트롤러에는 다음 중 하나여야 하는 필수 특성 <컨트롤러 유형> 이 있습니다.
  • IDE
  • fdc
  • scsi
  • SATA
  • usb
  • CCID
  • virtio-serial
  • pci
<컨트롤러> 요소에는 버스 <컨트롤러가 발생하는 순서대로 설명하는 10진수 정수인 필수 특성 컨트롤러 인덱스> 가 있습니다( <Address> 요소의 컨트롤러 특성에 사용하기 위해). <컨트롤러 유형 ='virtio-serial'인 경우 컨트롤러를> 통해 연결할 수 있는 장치 수를 제어하는 두 가지 추가 선택적 속성( 포트벡터)이 있습니다.
<컨트롤러 유형 ='scsi'> 인 경우 선택적 특성 모델 모델이 있으며 이는 다음 값을 가질 수 있습니다.
  • auto
  • buslogic
  • ibmvscsi
  • lsilogic
  • lsisas1068
  • lsisas1078
  • virtio-scsi
  • vmpvscsi
<컨트롤러 유형 ='usb'> 인 경우 선택적 특성 모델 모델이 있으며 이는 다음 값을 가질 수 있습니다.
  • piix3-uhci
  • piix4-uhci
  • EHCI
  • ich9-ehci1
  • ich9-uhci1
  • ich9-uhci2
  • ich9-uhci3
  • vt82c686b-uhci
  • pci-ohci
  • NEC-xhci
게스트 가상 머신에 USB 버스를 명시적으로 비활성화해야 하는 경우 <model='none'> 을 사용할 수 있습니다.
PCI 또는 USB 버스에 있는 컨트롤러의 경우 선택적 하위 element <주소는> 16.5절. “장치용 주소 설정” 에 표시된 대로 의미 체계와 함께 마스터 버스에 컨트롤러의 정확한 관계를 지정할 수 있습니다.
선택적 하위 요소 <드라이버는 드라이버> 별 옵션을 지정할 수 있습니다. 현재 컨트롤러의 큐 수를 지정하는 특성 대기열만 지원합니다. 최적의 성능을 위해 vCPU 수와 일치하는 값을 지정하는 것이 좋습니다.
USB companion 컨트롤러에는 <마스터> 컨트롤러와의 파트너의 정확한 관계를 지정하는 선택적 하위 요소 마스터가 있습니다. 동반 컨트롤러는 마스터와 동일한 버스에 있으므로 그에 동반되는 인덱스 값이 동일해야 합니다.
사용할 수 있는 XML 예는 다음과 같습니다.

그림 16.16. USB 컨트롤러의 도메인 XML 예

   
     ...
  <devices>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0' bus='0' slot='4' function='7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0' bus='0' slot='4' function='0' multifunction='on'/>
    </controller>
    ...
  </devices>
  ...
   

PCI 컨트롤러에는 다음과 같은 가능한 값이 있는 선택적 모델 속성이 있습니다.
  • pci-root
  • pcie-root
  • pci-bridge
  • dmi-to-pci-bridge
암시적 PCI 버스를 제공하는 머신 유형의 경우 index='0 이 있는 pci-root 컨트롤러가 자동으로 추가되며 PCI 장치를 사용하는 데 필요합니다. pci-root에는 주소가 없습니다. PCI 브리지는 model='pci-root' 에서 제공하는 하나의 버스에 너무 많은 장치가 없거나 0보다 큰 PCI 버스 번호가 지정된 경우 자동으로 추가됩니다. PCI 브리지는 수동으로 지정할 수도 있지만, 해당 주소에는 이미 지정된 PCI 컨트롤러에서 제공하는 PCI 버스만 확인해야 합니다. PCI 컨트롤러 인덱스에서 간격을 남겨 두면 잘못된 구성이 발생할 수 있습니다. 다음 XML 예제를 <devices> 섹션에 추가할 수 있습니다.

그림 16.17. PCI 브릿지의 도메인 XML 예


  ...
  <devices>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='pci' index='1' model='pci-bridge'>
      <address type='pci' domain='0' bus='0' slot='5' function='0' multifunction='off'/>
    </controller>
  </devices>
  ...
암시적 PCI Express(PCIe) 버스(예: Q35 칩셋 기반 시스템 유형)의 경우 index='0의 auto-added는 도메인 구성에 자동으로 추가됩니다. profileie-root에는 주소가 없지만 31개의 슬롯 (numbered 1-31)만 사용할 수 있습니다. PCie-root 컨트롤러가 있는 시스템에서 표준 PCI 장치를 연결하기 위해 model='dmi-to-pci-bridge' 가 있는 pci 컨트롤러가 자동으로 추가됩니다. dmi-to-pci-bridge 컨트롤러는 PCIe 슬롯에 연결되며 (PCie-root에서 제공하는 경우) 31개의 표준 PCI 슬롯(사용할 수 없음)을 제공합니다. 게스트 시스템에 핫 플러그형 PCI 슬롯을 사용하기 위해 pci-bridge 컨트롤러도 자동으로 생성되고 자동 생성된 dmi-to-pci-bridge 컨트롤러의 슬롯 중 하나에 연결됩니다. libvirt 에 의해 자동 결정된 PCI 주소가 있는 모든 게스트 장치는 이 pci-bridge 장치에 배치됩니다.

그림 16.18. PCIe(PCI 표현)의 도메인 XML 예

   
     ...
  <devices>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'>
      <address type='pci' domain='0' bus='0' slot='0xe' function='0'/>
    </controller>
    <controller type='pci' index='2' model='pci-bridge'>
      <address type='pci' domain='0' bus='1' slot='1' function='0'/>
    </controller>
  </devices>
  ...
   

다음 XML 구성은 USB 3.0 / xHCI 에뮬레이션에 사용됩니다.

그림 16.19. USB3/xHCI 장치의 도메인 XML 예

   
     ...
  <devices>
    <controller type='usb' index='3' model='nec-xhci'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0f' function='0x0'/>
    </controller>
  </devices>
    ...