20.23. 在 KVM 客户机虚拟机中添加多功能 PCI 设备
在 KVM 客户机虚拟机中添加多功能 PCI 设备:
- 运行 virsh edit guestname 命令,编辑 guest 虚拟机的 XML 配置文件。
- 在
<address>
元素中,添加multifunction='on'
属性。这可让将其他功能用于特定的多功能 PCI 设备。<disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/var/lib/libvirt/images/rhel62-1.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/> </disk>
对于有两个功能的 PCI 设备,修改 XML 配置文件使其包含第二个设备,其插槽号与第一个设备和不同的功能号,如 function='0x1'。例如:<disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/var/lib/libvirt/images/rhel62-1.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/var/lib/libvirt/images/rhel62-2.img'/> <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/> </disk>
- 运行 lspci 命令。KVM 客户机虚拟机的输出显示了 virtio 块设备:
$ lspci 00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:05.1 SCSI storage controller: Red Hat, Inc Virtio block device
注意SeaBIOS 应用以实际模式运行,以便与 BIOS 接口兼容。这将限制可用的内存量。因此,SeanBIOS 只能处理有限数量的磁盘。目前,支持的磁盘数量是:- virtio-scsi — 64
- virtio-blk - 4
- 一个hci/sata - 24(4 个控制器连接了所有 6 端口)
- USB-storage - 4
作为临时解决方案,当将大量磁盘附加到虚拟机时,请确定您的系统磁盘有一个小的 pci 插槽号,因此 SeaBIOS 会首先在扫描 pci 总线时看到它。另外,也建议使用 virtio-scsi 设备而不是 virtio-blk,因为每个磁盘内存开销比较小。