跳转到内容

QEMU/设备/VirtIO

来自维基教科书,开放的书籍,为开放的世界

VirtIO 是一个 I/O 虚拟化平台,在多个管理程序(和 QEMU)中很常见。

客户机操作系统需要专门的驱动程序来处理这些设备。

支持的设备列表

[编辑 | 编辑源代码]
功能 总线 类型 设备 使用示例
网络 PCI 10Gb/s virtio-net-pci -net nic,model=virtio ...
存储 PCI SCSI virtio-scsi-pci -device virtio-scsi-pci -drive file=disk.img,if=none,id=hd0 -device scsi-hd,drive=hd0 ...
存储 PCI 自定义 virtio-blk -drive file=disk.img,if=virtio ...
内存 PCI RAM virtio-balloon-pci
串行 PCI 串行 virtio-serial-pci
随机数生成器 PCI RNG virtio-rng-pci virtio-rng-pci

virtio-rng-pci

[编辑 | 编辑源代码]

要设置一个 VirtIO RNG,您首先需要为它提供一个熵源。

对于类 Unix 系统上内核导出的设备,您可以像这样操作
-object rng-random,filename=/dev/random,id=rng0

它显然不限于内核 RNG,您也可以以完全相同的方式选择硬件 RNG。

它还支持 EGD,但由于性能不佳,不建议使用它。
示例:-chardev socket,host=10.199.13.151,port=9000,id=chr0 -object rng-egd,chardev=chr0,id=rng0

添加实际设备

[编辑 | 编辑源代码]

然后,您可以添加实际设备,如下所示:-device virtio-rng-pci,rng=rng0

还有一个选项可以限制客户机接收的数据量,以避免主机饥饿。
示例:max-bytes=512,period=1000,表示 512 字节/秒。

支持的客户机系统

[编辑 | 编辑源代码]
操作系统 驱动程序
Microsoft Windows http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
基于 Linux 的 2.6.x, 3.x, 4.x
FreeBSD 9.x(可用)、10.x(在 GENERIC 内核中) https://freebsd.ac.cn/cgi/man.cgi?query=virtio&sektion=4
NetBSD 6.0+
OpenBSD 5.9+
华夏公益教科书