Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3127996
  • 博文数量: 710
  • 博客积分: 14546
  • 博客等级: 上将
  • 技术积分: 6738
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 10:20
文章分类

全部博文(710)

文章存档

2016年(1)

2014年(7)

2013年(22)

2012年(227)

2011年(322)

2009年(119)

2008年(12)

分类: LINUX

2011-05-05 19:29:45

1.raid的stripe size设置越大,通过多块磁盘响应更少的I/O请求,这样提高IO吞吐的带宽;
 
2.raid的stripe size设置越小,通过多块磁盘响应更多的I/O请求,这样提高IO吞吐的iops;
 
3.我们知道顺序和随机对于带宽和iops的需求成反比,即顺序的读写比较消耗带宽,随机的读写比较消耗iops;
 
4.假设我们有10块硬盘做raid5+hotspare,那么stripe的width就是10-1-1=8,现在假设有7MB的文件要写入,那么就是7*1024/8=896k,平均每个硬盘需要承担896k的数据写入,此时如果我们的设定的stripe size为64k,就有14个block被写入数据,如果stripe size设定成128k,就有7个block被写入数据;
 
5.从上面得到的结论可以看出,当stripe size设定的越大,平均写入的block就越少,带宽吞吐能力就越强,但iops能力就越弱。做一个不恰当的比喻:这里可以想象stripe size是一个房间的门,如果是一个整齐的军队进入这个门(顺序读写),那么这个门越宽大越好,这样才可以容纳更多的士兵同时进入;相反,如果是一个酒吧的门,因为进入的人都是三三两两(随机读写),那么这个门灵活越容易推开越好;
 
6.那么回到文件系统,文件系统的block size是磁盘在被格式化后,文件系统赋予的最小单元,应该属于一个抽象的概念,对于它来说,它是不知道stripe size的存在的,因为它是原生于文件系统之上的,stripe size对于它来说是透明的,所以直接的评价block size和stripe size关系,不是很妥;
 
7.还没有完,文件系统之上,还有应用,比如DB,那么DB的block size又是怎样呢?比如说是oracle,oracle在基于文件系统的方式,block size应该设定为文件系统block size的整数倍;
 
8.但是,是不是就没有一个方法可以评估了呢?也不是,这也是今天我所讲的经验值,根据我们实际的测试,在linux ext3的文件系统下,视频媒体文件建议设定在128k stripe size,数据库文件建议设定在32k或64k的stripe size。但这个也不少绝对的,还是要根据实际情况作一些对比测试,才能找到适合你应用的最佳stripe size。其指导的理论就是看你的应用是属于随机还是顺序。但是光是stripe size调整到最佳还远远不够,这只是万里长征第一步,从底层通讯协议,应用程序优化,文件系统选择等等,这是一个系统化的工程,是需要实战经验中慢慢摸索出最佳方案的。

阅读(4731) | 评论(1) | 转发(0) |
0

上一篇:ip-san正确的连接方法

下一篇:IOPS

给主人留下些什么吧!~~

maomaostyle2013-02-18 16:20:54

受教了,最近正弄不明白stripe size,看了博主的文章很容易理解,想请问一下:比如IOmeter这个测试软件,为什么测试IOPS建议使用512byte,而测试吞吐时就用64K呢?我觉得是512代表一个扇区,物理的最小单位,所以能得到最理想的IOPS吧,那么测试吞吐量使用64K这个块大小是哪里来的呢??博主帮忙指教一下,谢谢!