VFIO(Virtual Function I/O)
这是一个设备直通的方案,与Xen中的passthrough概念是一致的;主要是基于IOMMU和中断重映射,将制定的一个或几个设备安全的分配给某一个虚拟机使用,注意,是分配给单个虚拟机使用,它是在硬件支持的情况下解决单个设备多个虚拟机的问题。它是通过在硬件支持虚拟化如SR-IOV等特性的时候,将SR-IOV虚拟化出的物理设备实例直接映射给虚拟机使用,注意,上面这句话是说一个设备可以虚拟化出多个此设备的实例,VFIO将某个实力直接映射到虚拟机,这样虚拟机使用此设备可以安全的bypass掉host(划重点)。
Virtio
这是基于Virtio标准协议,虚拟机的内核中的Virtio驱动是前端,Host中可能是用软件模拟这个设备、操作支持Virtio协议的外设等方式,完成具体工作,而这其中的数据传输一般会是通过共享内存传递提高效率,Virtio没有bypass host。
如上,VFIO与Virtio的区别也就显而易见了。