QEMU支持的设备列表wiki
虚拟网络设备,提供虚拟机与主机之间的网络连接。它可以将网络协议虚拟化为一个virtio设备。virtio-net可以提供高性能、低延迟的网络访问,支持多个虚拟机共享同一个物理设备。virtio-net的作用包括:
虚拟块设备,提供基于磁盘的存储访问。它通过将块存储协议虚拟化为一个 virtio 设备来实现虚拟机与宿主机之间的数据交换。virtio-blk 可以提供高性能、低延迟的存储访问,同时支持多个虚拟机共享同一个物理设备。其主要作用包括:
虚拟 SCSI 设备,提供与物理硬件 SCSI 设备相同的功能,可以连接多个 SCSI 设备。它通过将 SCSI 存储协议虚拟化为一个 virtio 设备来实现虚拟机与宿主机之间的数据交换。virtio-scsi 可以提供高性能、低延迟的存储访问,同时支持多个虚拟机共享同一个物理设备。其主要作用包括:
虚拟控制台设备,提供与虚拟机之间的控制台通信。virtio-console 可以通过串口或者socket方式与虚拟机连接,并且支持多个虚拟机同时连接。virtio-console 的主要作用是方便虚拟机与宿主机之间的交互和管理,比如虚拟机的开机、重启、关机、挂起等操作,以及虚拟机内部的日志输出、调试信息等。virtio-console 的实现通常需要在虚拟机内部安装相应的驱动程序,而宿主机上也需要对应的管理工具和驱动程序来实现与虚拟机的通信。
虚拟随机数生成器设备,提供随机数生成服务。可用于虚拟机中的加密操作、密钥生成和其他需要真随机数的应用场景。虚拟机中生成的随机数通常是伪随机数,而 virtio-rng 可以提供真随机数,因为它将主机中的真随机数提供给虚拟机使用。virtio-rng 设备可以在 QEMU 启动时通过命令行参数或 XML 配置文件进行配置,可以指定源真随机数的种子和质量级别等参数。通常,virtio-rng 设备被用于加密和安全应用场景,以及需要高质量随机数的科学计算和模拟等应用场景。在虚拟机中启用 virtio-rng 设备可以提高虚拟机的安全性和随机数质量。
虚拟内存管理设备,用于动态调整虚拟机中的内存分配和释放。它通过在虚拟机和宿主机之间创建一个简单的通信通道,与虚拟机中的操作系统内核进行通信,以管理虚拟机中的内存使用情况。 Virtio-balloon技术可以在需要时将未使用的内存释放回宿主机,从而提高虚拟机的性能和效率。
虚拟串行接口设备,提供虚拟串口连接。可用于虚拟机中的通信、控制和调试操作。使用 virtio-serial 设备,可以在虚拟机和主机之间建立双向的串行通信通道,实现虚拟机与主机之间的数据传递和控制命令的交互。virtio-serial 设备可以支持多个虚拟串口,每个串口都有自己的 ID 和名称,可以与虚拟机中的应用程序或服务进行绑定。virtio-serial 还支持多种通信协议,包括普通的字符设备、标准的串行协议和 RFC2217 协议等。使用这些协议,可以在虚拟机中实现各种应用场景,例如 Secure Shell (SSH)、Telnet、串口终端、串口设备驱动程序等。
虚拟输入设备,用于在虚拟机中模拟输入设备,例如键盘、鼠标和触摸板等。virtio-input 设备通过 QEMU 支持的 virtio 协议与虚拟机通信,从而实现虚拟机中的输入事件传递和处理。virtio-input 设备支持多种输入设备协议,例如 evdev 协议、USB HID 协议和 PS/2 协议等,可以为虚拟机中的各种操作系统和应用程序提供相应的驱动支持。使用 virtio-input 设备,可以在虚拟机中实现各种输入设备的模拟,例如键盘、鼠标、触摸板、游戏手柄、遥控器等