免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1026 | 回复: 0
打印 上一主题 下一主题

[RAID与磁盘阵列] 硬盘、文件系统和存储 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-18 16:43 |只看该作者 |倒序浏览

先介绍一篇非常好的讲述硬盘的文章:
http://www.storagereview.com/guide2000/ref/hdd/index.html

Cylinder, Tracks and Sector

Cylinder,有人给翻译成柱面,这个中文意思得好好想想才明白:一根木头棍,用刀横向一切,形成的这个平面就是柱面。硬盘的一个中心轴上,平行放置了好几块碟片,每个碟片就是一个柱面。
Track,每个碟片逻辑上有好多个同心圆形成的轨道,这些轨道就是Track。数据分布在这些Track上。
Sector,为了更有效地利用空间,每个Track都会化成相同大小的小块,每个小块512Byte,就是一个Sector。

硬盘写数据时,都是从外圈的Track忘里写。角速度相同的情况下,相同时间内外圈的track能读取更多的数据,即transfer rate(MB/s)更大,一般最外圈的transfer rate可以比最内圈的大1倍以上。

磁盘阵列的一个重要功能是虚拟出LUN,一个LUN对主机来讲就是一个硬盘,也有C(Cylinder)H(Heads)S(Sector)参数。同样的每个LUN的Sector大小仍然是512 Byte(有点厂商是520B)。

操作系统读写文件时,不是按照512Byte的Sector大小来进行的,而是按照文件系统定义的Cluster大小读写数据。

文件系统一般按照Cluster大小,有时候也称为Block大小来读写数据,这个Cluster一般最小的4K,大的定为32K、64K等都可以,主要根据应用的不同。比如Oracle的应用一般就用4K或8K的Block大小,大文件读写就用128K甚至256K都可以。


那主机文件系统定义的Block块和后端存储的哪个参数相关呢?

Stripe Size:存储阵列在做RAID的时候,比如RAID5,一般都要指定Stripe Size,就是在硬盘上读写数据的条带化单位。这个单位设得太小,比文件系统的Block Size还小的话,存储就需要在多个条带单位上写一个Block数据,对读写性能显然有影响;这个单位如果设得太大,对文件系统的读写应该影响不大,因为文件系统读写数据是按照模拟出来的LUN的Geometry 读写的,只要这个LUN平均分配到了多个硬盘上,即使是远小于Stripe Size的多个Block,也应该能平均分到多个硬盘上。(这点不太确定,但对数据库应用还是很重要的,直觉上对这类应用,应该设比较小的Stripe Size)―――这是不是说Array上的Stripe Size尽量设大一点呢?

Cache Block Size:有些存储能调整Cache 的Block Size。如果cache block size正好等于文件系统的block size,那么cache就能够被充分利用。假设一种情况:cache block size等于128k,而文件系统block size等于8k,那么cache的利用率就大大降低了。而如果cache block size等于8k,但文件系统的block size等于128k,那存储就需要把一个读写数据块拆成16个缓存数据块,这样会造成CPU的负载加重。(如果我是存储的设计者,我会选择比较小的cache block size,因为Cache主要给Oracle这样的小数据块频繁读写的应用使用。对大流量的文件读写应用,cache用处不大,这个更考验系统的总线和通道吞吐能力)


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/73762/showart_1085536.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP