文章目录
- 13 KVM虚拟机配置-配置虚拟设备(总线配置)
- 13.1 概述
- 13.2 元素介绍
- 13.3 配置示例
13 KVM虚拟机配置-配置虚拟设备(总线配置)
13.1 概述
总线是计算机各个部件之间进行信息通信的通道。外部设备需要挂载到对应的总线上,每个设备都会被分配一个唯一地址(由子元素address指定),通过总线网络完成与其他设备或中央处理器的信息交换。常见的设备总线有ISA总线、PCI总线、USB总线、SCSI总线、PCIe总线。
PCIe总线是一种典型的树结构,具有比较好的扩展性,总线之间通过控制器关联,这里以PCIe总线为例介绍如何为虚拟机配置总线拓扑。
说明:
总线的配置相对比较繁琐,若不需要精确控制设备拓扑结构,可以使用libvirt自动生成的缺省总线配置。
13.2 元素介绍
在libvirt的XML配置中,每个控制器元素(使用controller元素表示)可以表示一个总线,根据虚拟机架构的不同,一个控制器上通常可以挂载一个或多个控制器或设备。这里介绍常用属性和子元素。
controller:控制器元素,表示一个总线。
- 属性type:控制器必选属性,表示总线类型。常用取值有“pci”、“usb”、“scsi”、“virtio-serial”、“fdc”、“ccid”。
- 属性index:控制器必选属性,表示控制器的总线“bus”编号(编号从0开始),可以在地址元素“address”元素中使用。
- 属性model:控制器必选属性,表示控制器的具体型号,其可选择的值与控制器类型“type”的值相关,对应关系及含义请参见表4。
- 子元素address:为设备或控制器指定其在总线网络中的挂载位置。
- 属性type:设备地址类型。常用取值有“pci”、“usb”、“drive”。address的type类型不同, 对应的属性也不同,常用type属性值及其该取值下address的属性请参见表5。
- 子元素model:控制器具体型号的名称。
- 属性name:指定控制器具体型号的名称,和父元素controller中的属性model对应。
表 4 controller属性type常用取值和model取值对应关系
type属性值 | model属性值 | 简介 |
---|---|---|
pci | pcie-root | PCIe根节点,可挂载PCIe设备或控制器 |
pcie-root-port | 只有一个slot,可以挂载PCIe设备或控制器 | |
pcie-to-pci-bridge | PCIe转PCI桥控制器,可挂载PCI设备 | |
usb | ehci | USB 2.0控制器,可挂载USB 2.0设备 |
nec-xhci | USB 3.0控制器,可挂载USB 3.0设备 | |
scsi | virtio-scsi | virtio类型SCSI控制器,可以挂载块设备,如磁盘,光盘等 |
virtio-serial | virtio-serial | virtio类型串口控制器,可挂载串口设备,如pty串口 |
表 5 address元素不同设备类型下的属性说明
类型type属性值 | 含义 | 对应地址属性 |
---|---|---|
pci | 地址类型为PCI地址,表示该设备在PCI总线网络中的挂载位置。 | domain:PCI设备的域号bus:PCI设备的bus号slot:PCI设备的device号function:PCI设备的function号multifunction:controller元素可选,是否开启multifunction功能 |
usb | 地址类型为USB地址,表示该设备在USB总线中的位置。 | bus:USB设备的bus号port:USB设备的port号 |
drive | 地址类型存储设备地址,表示所属的磁盘控制器,及其在总线中的位置。 | controller:指定所属控制器号bus:设备输出的channel号target:存储设备target号unit:存储设备lun号 |
13.3 配置示例
该示例给出一个PCIe总线的拓扑结构。PCIe根节点(BUS 0)下挂载了三个PCIe-Root-Port控制器。第一个PCIe-Root-Port控制器(BUS 1)开启了multifunction功能,并在其下挂载一个PCIe-to-PCI-bridge控制器,形成了一个PCI总线(BUS 3),该PCI总线上挂载了一个virtio-serial设备和一个USB 2.0控制器。第二个PCIe-Root-Port控制器(BUS 2)下挂载了一个SCSI控制器。第三个PCIe-Root-Port控制器(BUS 0)下无挂载设备。配置内容如下:
<domain type='kvm'>
...
<devices>
<controller type='pci' index='0' model='pcie-root'/>
<controller type='pci' index='1' model='pcie-root-port'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/>
</controller>
<controller type='pci' index='2' model='pcie-root-port'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='pci' index='3' model='pcie-to-pci-bridge'>
<model name='pcie-pci-bridge'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</controller>
<controller type='pci' index='4' model='pcie-root-port'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='scsi' index='0' model='virtio-scsi'>
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x03' slot='0x02' function='0x0'/>
</controller>
<controller type='usb' index='0' model='ehci'>
<address type='pci' domain='0x0000' bus='0x03' slot='0x01' function='0x0'/>
</controller>
...
</devices>
</domain>
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!