virtio解析 - 1

1 virtio

virtio是一种IO(块设备和网络设备等)虚拟化技术,它是一种半虚拟化(paravirtualization)解决方案,由guest应用和hypervisor之间的一些IO通信协议组成,这也意味着设备驱动是专门为虚拟化设计的。同全虚拟化方案相比,半虚拟化方案大大减少了在guest和host中交互需要的cpu cycles,因为性能更加优秀。

2 Architecture

virtio可以分为这么几个部分:前端驱动层,后端驱动层和传输层

  1. 前端virtio驱动,在guestos中一般作为一个设备驱动存在

  2. 后端virtio驱动,在hypervisor中实现,接收前端virtio驱动的io 请求,在具体的物理设备上执行io请求

  3. 传输层,前端virtio驱动和后端virtio驱动的通信通过一个称为virtqueue的队列来实现

3 前端virtio驱动

上图中的virtio-blk virtio-net virtio-pci virtio-balloon virtio-console都是前端virtio驱动。

这五种virtio设备可以抽象为virtio_device,这样就可以通过virtqueue来与后端驱动通信。

这些数据类型定义在 linux/include/linux/virtio.h里。

最后更新于