13 KVM虚拟机配置-配置虚拟设备(总线配置)

407 阅读4分钟

13 KVM虚拟机配置-配置虚拟设备(总线配置)13.1 概述13.2 元素介绍13.3 配置示例

13 KVM虚拟机配置-配置虚拟设备(总线配置)

13.1 概述

总线是计算机各个部件之间进行信息通信的通道。外部设备需要挂载到对应的总线上,每个设备都会被分配一个唯一地址(由子元素address指定),通过总线网络完成与其他设备或中央处理器的信息交换。常见的设备总线有ISA总线、PCI总线、USB总线、SCSI总线、PCIe总线。

PCIe总线是一种典型的树结构,具有比较好的扩展性,总线之间通过控制器关联,这里以PCIe总线为例介绍如何为虚拟机配置总线拓扑。

img 说明: 总线的配置相对比较繁琐,若不需要精确控制设备拓扑结构,可以使用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属性值简介
pcipcie-rootPCIe根节点,可挂载PCIe设备或控制器
pcie-root-port只有一个slot,可以挂载PCIe设备或控制器
pcie-to-pci-bridgePCIe转PCI桥控制器,可挂载PCI设备
usbehciUSB 2.0控制器,可挂载USB 2.0设备
nec-xhciUSB 3.0控制器,可挂载USB 3.0设备
scsivirtio-scsivirtio类型SCSI控制器,可以挂载块设备,如磁盘,光盘等
virtio-serialvirtio-serialvirtio类型串口控制器,可挂载串口设备,如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>

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

2ad9e1ae385fd03556e950f5dd2cd7ab.jpg