作者:John.Gong 微信:hitgom
本打算放上前段时间team内部share的pdf的,但是pdf过于简单,只涉及了virtio-blk中读请求的实现。对于没有virtio基础的同学来说比较难于理解,故打算写一篇稍微详细点的关于virtio的文章。
一、virtio是什么?
virtio是一个传输协议,只在para-virtualization中使用的一个IO传输协议。它的出现解决了IO虚拟化效率低下的问题,基本可以达到native IO的90%以上,在各个虚拟化平台中(xen、kvm、vmware、lguest)得到广泛应用。
二、virtio优点
- 性能突出:传统的full-virtualization中,IO设备是由qemu模拟实现,qemu不仅需要模拟真实设备的内部处理过程,还需要模拟设备发现、中断等与具体总线、接口(ide、scsi)相关的处理,具体总线、接口的模拟导致VM exit的频繁发生以及一些不必要的IO操作,导致了qemu模拟的设备IO效率低下。而virtio正是为了解决这些问题出现的。virtio传输协议简化了VM中guest的处理,所以能够提高IO效率。
- 接口简化:在不同的虚拟化平台中可以使用相同的一套传输机制,减少平台的代码开发量。
三、virtio缺点
- 驱动安装:显然,作为para-virtualization的virtio,需要VM中的guest kernel(front end)与host(back end)的配