20.16.4. controllers
根据客户机虚拟机架构,可以为单个总线分配多个虚拟设备。在正常情况下,libvirt 可以自动推断控制器用于总线的情况。但是,可能需要在客户机虚拟机 XML 中提供显式
<控制器>
元素:
图 20.25. 控制器元素
... <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 type='scsi' index='0' model='virtio-scsi' num_queues='8'/> </controller> ... </devices> ...
每个控制器都有强制属性
类型
,它必须是 "ide ", "fdc", "scsi", "sata", "usb", "ccid" 或 "virtio-serial"
的强制属性 索引
,它是强制属性索引,描述总线控制器被遇到的十进制整数(用于控制器元素的控制器属性)。
"virtio-serial"
控制器具有两个额外的可选属性,即端口和 向量
,它控制能够通过控制器连接多少个设备。
<控制器 type='scsi'>
有一个可选的属性 模型
,它是 "auto"
, "buslogic"
, "ibmvscsi"
, "lsilogic"
, "lsias1068"
, "virtio-scsi
或 "vmpvscsi
"。应注意,virtio-scsi 控制器和驱动程序将在 KVM 和 Windows 客户机虚拟机上均工作。<控制器 type='scsi'>
也具有属性 num_queues
,它为指定的队列数量启用多队列支持。
"usb"
控制器具有可选属性 模型
,它是 "piix3-uhci"
, "piix4-uhci"
, "ehci"
, "ich9-ehci1"
, "ich9-uhci1"
, "ich9-uhci2"
, "ich9-uhci3"
, "vt82c686b-uhci"
, "pci-ohci "
或 "nec-xhci
"。另外,如果需要为 guest 虚拟机明确禁用 USB 总线,则可以使用 model='none'
。PowerPC64 "spapr-vio" 地址没有关联的控制器。
对于 PCI 或 USB 总线上的设备,可选的子元素
地址
可以使用上面给出的语义指定控制器与其主总线的确切关系。
USB companion 控制器具有一个可选的子元素
master
,用于指定与主控制器相配套的关系。companion 控制器与其 master 位于同一个总线上,因此相应的索引值应该相等。
图 20.26. 设备 - 控制器 - USB
... <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> ...