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,您首先需要为它提供一个熵源。
对于类 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+ |