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 進数の整数)を記述する必須の属性コントローラーインデックスがあります><controller type ='virtio-serial'> の場合に、2 つのオプションの属性 (名前ポートと ベクター )があり、コントローラーを介して接続できるデバイスの数を制御します。
<コントローラータイプが ='scsi'> の場合、任意の属性モデルがあり、以下の値を使用できます。
  • 自動
  • 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 <バス上のデバイス自体のコントローラーの場合、オプションのサブ要素アドレスで>、コントローラーの正確な関係をマスターバスに指定できます(例: 「デバイスのアドレスの設定」
<オプションのサブ要素ドライバーは>、ドライバー固有のオプションを指定できます。現在、コントローラーにキューの数を指定する属性キューのみをサポートしています。最適なパフォーマンスを得るには、仮想 CPU の数に一致する値を指定することが推奨されます。
USB コンパニオンコントローラーには、オプションのサブ要素 <マスターがあり>、企業とマスターコントローラーへの正確な関係を指定します。コンパニオンコントローラーはマスターと同じバスにあるため、コンパニオンのインデックス値は同等でなければなりません
使用できる 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 コントローラーが auto-added で、PCI デバイスを使用する必要があります。pci-root にはアドレスがありません。model='pci-root' によって提供される 1 つのバスに収まるデバイスまたはゼロよりも大きい PCI バス番号が指定されている場合は、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 チップセットに基づくマシンタイプ)では、pcie-root コントローラーはドメインの設定に自動的に追加されます。pcie-root にはアドレスもありますが、31 スロット(数値付け 1-31)が提供され、PCIe デバイスの割り当てのみに使用できます。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 express)のドメイン 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>
    ...