1. 概述
Kvm是一种全虚拟化架构的虚拟机,其IO通常由qemu进行模拟实现,相比半虚拟化方案xen,其IO效率相对较低,为了提高kvm的IO效率,在其中引入virtio模块。Virtio是一种linux的半虚拟化IO框架,对块设备、网络等进行了虚拟化。将virtio运用半虚拟化思想,分为前端驱动和后端驱动,前端驱动在客户机中,因此,需要在原来客户机操作系统中增加一个新的virtio前端驱动模块,后端驱动处于主机中。前端驱动中,由虚拟队列中的环形缓冲区保存一次或多次IO请求,并交由后端驱动处理,最终由主机中设备驱动实现真正的IO操作,从而实现批量IO 处理,减少由于IO带来的vmexit/vmentry次数,提高虚拟机IO效率。将virtio引入kvm优点在于提高IO效率,而缺点在于需要对客户操作系统进行修改。
2. virtio前端驱动模块
Virtio分为前端与后端驱动,前端驱动在客户机操作系统中实现,在本文中,主要介绍前端驱动的架构以及与块设备相关的主要模块的初始化流程。
2.1 架构
前端驱动由多个模块组成,virtio作为一种linux 内部的API,连接块设备、网络设备等前端驱动模块,并