一. 简介
Vhost-blk 是为VirtIO-Block在驱动层增加的一个IO加速的模块,通过ioctl直接跳到驱动层完成一次IO请求。
说到Vhost Block是一个很争议的模块,争议在于,有某某公司宣称自己开发出来这个模块,IO读写提高的 xx%,但一直没有被社区接受,我也翻了社区邮件,总之是写着写着就没下文了。
所以网上对于Vhost Blk描述几乎没有,如果想去弄清楚,对不起,自己看代码,我分析的Vhost-blk基于如下版本:
http://lists.linuxfoundation.org/pipermail/virtualization/2012-December/022175.html
我也相信,即便某某公司改进了这个版本,原理也应该是一样的。
二. VirtIO Block
1.为什么先要介绍VirtIO Block呢
答:Vhost-blk是VirtIO block的加速模块,如果我们将虚拟化的三个主要元素定义:Host, QEMU, Guest
Host : 就是我们运行hypervisor的主机,它包括Linux内核和KVM,与本博客无关的,不一一列举。
QEMU:就是模拟硬件的虚拟机,要强调的是QEMU与KVM不是一回事儿,在没有kvm之前,QEMU有自己的指令集模拟。
Guest:就是常说的Guest OS,是运行在虚拟机中的操作系统。
以上三个主要元素定义,是为了理解后面要分享的内容,想详细了解hypervisor有什么,再去找其它相关文章。
VirtIO Block是一个驱动程序,属于GuestOS,这个驱动程序要驱动的硬件就是在QEMU中模拟的V