首页/云/云平台与虚拟化速查/virtio 半虚拟化驱动框架
虚拟化基础63 条

virtio 半虚拟化驱动框架

virtio 是 Linux 上的半虚拟化设备驱动标准:guest 内前端驱动与宿主 QEMU 后端通过共享环交换请求,网卡、磁盘等设备不再依赖硬件模拟,性能与资源占用更友好。

云平台与虚拟化速查云更新于 2026-10-13

virtio 是什么

virtio 是 Linux 上的半虚拟化设备驱动标准:客体内的前端驱动与宿主侧的 QEMU 后端通过共享内存环交换请求,设备不再假装成一个真实硬件,而是按约定的协议高效通信。网卡、磁盘、气球与串口等设备都有对应的 virtio 实现,代价是客体必须认识这套驱动。

基本信息

架构客体前端驱动加宿主后端,通过共享环传递请求
传输层常见为基于 PCI 的形态,另有 MMIO 与通道形态
Linux 支持内核原生包含网卡、块设备与 SCSI 等驱动
Windows 支持需要单独安装 virtio 驱动包,安装介质由社区项目提供
性能收益相比纯硬件模拟减少陷入次数,磁盘与网络吞吐更高
失配后果客体缺少驱动时认不到设备,表现为磁盘缺失或网卡未识别

在客体识别 virtio 设备

在客体识别 virtio 设备
lspci -nnk | grep -A2 -i virtio        # 查看 virtio 设备与绑定的驱动
lsmod | grep -E 'virtio_(net|blk|scsi|pci)'   # 确认已加载的 virtio 模块
find /sys/bus/virtio/devices -maxdepth 1 -mindepth 1 | head   # 查看 virtio 设备列表
ethtool -i eth0 | grep driver           # 确认网卡使用的是 virtio 驱动
virt-what                                # 判断当前运行环境类型

设备与驱动对照

设备Linux 驱动常见问题
网卡内核内置 virtio 网卡驱动精简镜像裁掉模块后无网卡
块设备内核内置 virtio 块设备驱动缺少驱动时系统盘不可见
SCSI 控制器virtio SCSI 驱动换总线类型后引导失败
气球设备内核内置气球驱动缺失时动态内存调整无效
串口与代理代理组件缺失时关机与信息获取走不通
迁移前确认目标平台的磁盘总线类型:源侧使用其他总线类型的镜像转到 virtio 平台,需要在客体内预装驱动并调整引导配置。直接切换总线类型是最常见的启动失败原因。
自制精简镜像时不要裁掉 virtio 模块:这类镜像在本地物理机上一切正常,上云或换宿主后直接认不到系统盘。制作云上基线镜像时把 virtio 驱动列入必须保留项,并在创建实例后验证。

易错点

  • 精简自制镜像裁掉 virtio 模块:上云后认不到系统盘,实例无法启动
  • Windows 镜像迁移后直接切到 virtio 总线而未预装驱动:开机出现蓝屏错误代码
  • 只改磁盘总线不做引导调整:系统找不到引导设备,卡在启动画面
  • 缺少气球与代理组件:动态内存调整、优雅关机与信息采集功能全部不可用
  • 只看性能不看兼容性:在旧版本系统上启用 virtio 特性,出现间歇性 IO 错误

数据来源与参考

  • Linux 内核文档 Documentation/driver-api/virtio
  • OASIS virtio 规范
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌