第 5 章 KVM 半虚拟化(virtio)驱动程序
半虚拟化驱动程序可增强客户机性能,降低客户机 I/O 延迟,并将吞吐量几乎增加到裸机级别。建议将半虚拟化驱动程序用于运行 I/O 密集型任务和应用程序的完全虚拟化客户机。
VirtIO 驱动程序是 KVM 泛虚拟化设备驱动程序,可用于 KVM 主机上运行的 虚拟机。这些驱动程序包含在
virtio
软件包中。virtio 软件包支持块(存储)设备和网络接口控制器。
注意
PCI 设备受虚拟化系统架构的限制。在使用分配的设备时,请参阅 第 16 章 虚拟机设备配置 以了解其他限制。
5.1. 为现有存储设备使用 KVM virtio 驱动程序
您可以修改附加到客户机的现有硬盘设备,以使用
virtio
驱动程序,而不是虚拟化 IDE 驱动程序。本节中显示的示例编辑 libvirt 配置文件。请注意,不需要关闭客户端虚拟机来执行这些步骤,但更改不会应用,直到 guest 完全关闭并重新引导为止。
过程 5.1. 为现有设备使用 KVM virtio 驱动程序
- 在继续执行此流程前,请确保
您已安装了
适当的驱动程序( viostor )。 - 以 root 身份运行 virsh edit guestname 命令,编辑设备的 XML 配置文件。例如: virsh edit guest1。配置文件位于
/etc/libvirt/qemu/
目录中。 - 以下是使用虚拟化 IDE 驱动程序基于文件的块设备。这对于虚拟机的典型条目不使用 virtio 驱动程序。
<disk type='file' device='disk'> ... <source file='/var/lib/libvirt/images/disk1.img'/> <target dev='hda' bus='ide'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk>
- 通过将 bus= 条目修改为 virtio,将条目更改为使用 virtio 设备。请注意,如果磁盘之前是 IDE,它有一个类似于
hda
、hdb
或hdc
的目标。当更改为 bus=virtio 时,目标需要相应地更改为vda
、vdb
或vdc
。<disk type='file' device='disk'> ... <source file='/var/lib/libvirt/images/disk1.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk>
- 删除 磁盘标签 中的 地址 标签。此过程必须完成。libvirt 将在虚拟机下次启动时正确重新生成地址 标签。
或者,virt-manager、virsh attach-disk 或 virsh attach-interface 可使用 virtio 驱动程序添加新设备。
有关使用 Virtio 的详情,请查看 libvirt 网站: http://www.linux-kvm.org/page/Virtio