Chinaunix首页 | 论坛 | 博客
  • 博客访问: 572657
  • 博文数量: 168
  • 博客积分: 62
  • 博客等级: 民兵
  • 技术积分: 442
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-30 11:45
文章分类

全部博文(168)

文章存档

2016年(2)

2015年(19)

2014年(98)

2013年(22)

2012年(6)

2011年(21)

分类: 虚拟化

2014-02-03 16:38:22

原文地址:kvm 存储栈分析 作者:liujunwei1234

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)禁用ksm
3. 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。
阅读(456) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~