Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2635646
  • 博文数量: 258
  • 博客积分: 9440
  • 博客等级: 少将
  • 技术积分: 6998
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-03 10:28
个人简介

-- linux爱好者,业余时间热衷于分析linux内核源码 -- 目前主要研究云计算和虚拟化相关的技术,主要包括libvirt/qemu,openstack,opennebula架构和源码分析。 -- 第五届云计算大会演讲嘉宾 微博:@Marshal-Liu

文章分类

全部博文(258)

文章存档

2016年(1)

2015年(4)

2014年(16)

2013年(22)

2012年(41)

2011年(59)

2010年(40)

2009年(75)

分类: 虚拟化

2012-10-12 10:34:42

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。
阅读(7371) | 评论(1) | 转发(7) |
给主人留下些什么吧!~~

风影刃2013-04-22 07:48:15

“kvm默认的cache方式是writethrouh,这种方式不会是最安全的,不会造成数据的不一致性”
这个地方是笔误么?writethrough 是最安全的吧