跳转至

VMM

虚拟机监视器, virtual machine monitor(VMM),又称为Hypervisor.
是用来建立与执行虚拟机器的软件、固件或硬件。

被Hypervisor用来执行一个或多个虚拟机器的电脑称为主体机器(host machine),
这些虚拟机器则称为客体机器(guest machine)。

软件虚拟化

硬件虚拟化

半虚拟化

全虚拟化

Virtio

virtio是qemu的半虚拟化驱动
guest中的半虚拟化前端驱动和host上的后端服务简单的使用virtqueue共享队列交换数据
guest使用virtio driver将请求发送给virtio-backend。

前端

是存在于客户机中的驱动模块。

后端

是存在于Qemu中的处理程序。

中间层

在前端和后端之间,还定义了一层来支持客户机与Qemu之间的通信。Virtio和virtio-ring可以看成是一层,Virtio是虚拟队列接口,就是将前端驱动程序附加到后端处理程序,算是前后端通信的桥梁,主要实现控制面,virtio-ring实现了两个环形缓冲,分别保存前后端的信息,实现具体的通讯机制和通讯流是偏向数据面,是桥梁的具体实现。

注意

virtio设备都是pci设备

virtio_net

vhost_net

vhost技术对virtio-net进行了优化,在内核中加入了vhost-net.ko模块,使得对网络数据可以在内核态得到处理。

vhost_user

vhost-backend从原来kernel中的vhost-net 变成了用户空间的snabbswitch,snabbswitch直接接管物理网卡的驱动,从而直接控制网络信息的输入输出。

支持得网卡

Bash
1
qemu-system-x86_64 -net nic,model=?