kvm 存储栈分析
1. kvm与qemu的关系发现好多同学还是不太了解kvm与qemu的关系,首先做个简单的介绍:[*]qemu:it is a emulator, 用来仿真cpu,设备,总线等设备
[*]kvm: it's a kenerl module, 用来处理qemu向内核发起的请求
总结一下: qemu是kvm的客户端展现,kvm是内核为qemu提供的服务代理,用来处理qemu的请求。
2. kvm 存储栈的原理从上图的storage stack中可以看出有些模块都是double的,比如:(1)两层file system: guest file system 和 host file system(2)两层的page cache:guest和host中分别有针对文件的page cache(3)两层的IO scheduler鉴于这么多的冗余结构,因此,可以采用适当的优化来提高io的性能。主要的优化方法包括:(1)采用virtio驱动代替ide驱动(2)禁用host层的page cache(3)开启huge page(4)禁用ksm3. host层对kvm image文件io的cache方式kvm通过三个参数来制定host对image文件的io cache方式:none,writeback和writethrough,下图详细的阐述了三种不同的cache方式的区别。
从图中可以清晰的看到,writeback采用了guest和host两层的page cache,也就是说同一个文件会存在两份cache,这基本是没有必要的。none和writethrough都会绕过host层的page cache。kvm默认的cache方式是writethrouh,这种方式不会是最安全的,不会造成数据的不一致性,但是性能也是最差的。综合数据的安全性和性能,建议选择none模式。 但是,随着barrier passing技术的出现,writeback也能保证数据的一致性,所以,如果采用raw格式的image,建议选择none,如果采用qcow2格式的image,建议选择writeback。
版权声明:本文为博主原创文章,未经博主允许不得转载。
页:
[1]