从7200转硬盘升级到10000转的迅猛龙,那叫量变。
从10000转的迅猛龙升级到SSD,这个叫质变。
2者的差距是有些地方相当大,而有些却很接近,主要是难比较。

经常听到有人说:我买2个黑盘组RAID 0,传输率也有接近250MB/s了,这个速度和Intel X25-M不相上下了,写入还高,容量又大,性价比明显好。一开始还试着会去纠正下他这个错误的观念,后来麻木了。有时候并不是他不懂,可能他是个商家,或者是刚买了黑盘的用户,又或者只是想"炒作"下,世界之大,啥人都会有么。

废话不多说了,下面我来说说自己的感觉。我用过7200转的机械盘,组过RAID 0。我也用过10000转的猛禽,组过RAID 0,我还用过SAS的15000转3.5inch还有2.5inch的盘,组过多盘RAID 0,用过早期的MLC,SLC,组过RAID 0,现在在用MLC的SandForce和barefoot SSD。
首先,先来看机械盘的运作,工作时磁盘在主轴马达的带动下,高速旋转,磁头臂在音圈马达控制下,在磁盘上方进行径向的移动和寻址,机械盘常见指标有下面几个:

1,每分钟转速:指的是主轴马达带动磁盘的转速,一般是7200~15000转,节能盘是5400转。(大家都知道)

2,平均寻道时间:一般是指读取的寻道时间,单位是ms。这个指标是说硬盘接到读/写指令后把磁头移动到指定的磁道(客观的说应该是柱面,但是相对指定的磁头来说就是磁道)上所需要消耗的时间。其实除了平均寻道时间外,还有道间寻道时间与全程寻道时间,前者是指磁头从当前磁道移动到旁边磁道上所需要时间,后者是指磁头从最外圈(内圈)移动到最内圈(外圈)磁道上所需要的时间,基本上是平均寻道时间的2倍。

3,平均潜伏期:这个指标是指当磁头移动到指定磁道后,需要等待指定读/写扇区移动到磁头下方所需要的时间。(盘片旋转),也就是说盘转速越快,潜伏期越短。一般平均潜伏期指的是磁盘转动半圈的时间,相同转速硬盘的平均潜伏期是固定的。7200转为4.167ms,5400转为5.556ms。

4,平均访问时间:这个就是平均寻道时间+平均潜伏期+指令操作时间,由于指令操作时间很短,所以一般就是前2者相加了,厂商一般不提供这个数据,因为不同固件,批次,会有不同,很难统一。

5,数据传输率:单位一般为MB/s,数据传输率就是传输速度了,大家都懂的。不同的数据请求会有不同的数据传输率,不过主要分外部传输率(接口)和内部传输率(介质)。外部就是指缓冲区与主机(内存)之间的数据传输率,内部指磁头与缓冲区之间的数据传输率。外部传输率会被接口限制,SATA 3G/6G, SAS 3G/6G, PCIE 4X, 8X等等接口会限制外部传输率,而内部传输率就是硬盘真正的数据传输能力。为了充分发挥内部传输率,外部传输率必须比内部传输率高。机械盘外圈磁道最长,可以让磁头在单位时间内比内圈磁道划过更多的扇区,所以外圈的内部传输率比内圈快。

6,缓冲区:单位为MB。有些人喜欢叫Cache。作用是平衡内部和外部的传输率。为了减少主机(内存)的等待时间,硬盘会把读取的数据先放入缓冲区,等全部读完或缓冲区填满后再以外部接口的速度快速向主机(内存)发送。随着技术发展,缓冲区在原本的基础上又增加了缓存的功能。缓存体现在3个方面:预读:磁盘“私自”扩大读取范围,在缓冲区向主机(内存)发送指定扇区数据(磁头已经读完指定扇区)后,接着读取相邻若干扇区并送入缓冲区,如果后面读取操作证号指向已经预读的区域,直接就可以从缓冲区读取而不需要再次磁头寻址,提高访问速度。写缓存:通常在写入操作时,先将数据写入缓冲区并发送到磁头,等磁头写入完毕后再报告主机写入完毕,主机才开始处理下一任务,如果写缓存被开启,那么数据写入缓冲区后即刻向主机报告写入完毕,让主机提前处理下一个数据,提高了效率。读缓存:读取过的数据暂时保存在缓冲区内,如果主机再次需要时可以直接从缓冲区调用,加快速度。(缓存有专门的控制器,有专门的算法,自然有不同的效率。不同容量的缓存算法不通用。)
1,转速与寻道时间:

很多人认为机械硬盘转速快寻道时间就越快,这个是常见的错误认识,事实上寻道速度根本和转速完全没关系,因为2者不是一个设备控制的。

看过上面解释的朋友应该发现,转速是由主轴马达控制的,而寻道很明显是由音圈马达控制,所谓寻道就是磁头臂径向运动的速度和控制。很多情况下我们可以看到5400转和7200转的硬盘寻道时间一样,而之所以高速硬盘寻道时间快,是厂商的有意设计,就像高配机器低内存那样让人觉得不平衡,厂商会给高速盘配备更好的元件也是理所当然。

2,转速与数据传输率:

厂商宣传和用户的理解都是,高转速意味着高数据传输率,但是这个并不完全正确。持续数据传输率取决于很多指标,不单单是转速。转速高,单位时间磁头划过的扇区多,自然传输率快,这个没错,但是前提要盘片密度相等,低速硬盘提高盘片密度一样可以提升数据传输率。5400转的高单碟容量硬盘传输率强过10000转的猛禽就是一个例子。只要单碟密度提升1倍,那么5400转和10000转比传输率就不会输。高转速的优势是平均潜伏期,因为转速是死的,在这种情况下5400转永远处于劣势。

3,真正的内部数据传输率:

硬盘传输率大家都懂,但是有个误区,拿Mbps为单位的最高内部传输率说事,这其实是某些厂商与所谓高手的误导,后果相当严重。由于内部传输率决定了硬盘的实际数据传输性能,是个非常重要的指标,很多用户也最关心这个指标,厂商就投其所好,在产品资料中公布了最大内部传输率,但是很多都是以Mbps为单位,不少用户会拿这个数值来预测硬盘性能。但是这个数值是不能单纯的以除以8来换算成MB/s的,因为这个数值是磁头处理2进制的0/1信号(bit)纯理论性能,而磁头处理信号很大部分并不是用户数据(很多重编码的辅助信息)。很多硬盘厂商把这个数值标的相当高,但是这个数值没有任何实际价值,给人假象而已。厂商心里很明白,他们"偷着乐"而已。

4,拿缓冲区容量和性能说事:

缓冲区容量越大越好吗?容量缓冲区对零散数据传输有优势,不见得。大缓冲区容量会带来很多新问题,比如忽然断电等情况,笔记本有电池会好点。而缓冲区对性能的影响体现在厂商的缓存管理技术上,每个厂商是不同的,不同缓冲区容量也不适用相同的算法。我们拿最新的WD 4KB扇区EAR盘来说吧,配备了64MB的缓冲区,相对32MB的EADS来的快吗?不一定,你知道这个多出来的32MB是用来做啥的吗?相当大一部分用来做4KB和512B的模拟转换开销,映射表。厂商不是傻子,增加成本的做法他们才不做。当然既然给多缓存了,广告还是要打的。缓存管理算法比缓存容量更重要,命中率才是关键,光有容量没命中率只会带来安全隐患。
接下来我们来看看SSD吧,SSD里面的介质是闪存,一般是用的NAND。SSD的优势体现在极低平均访问时间,SSD没有寻道(里面没磁头),没潜伏期(没盘片)。由这里可以看出,随机性能上SSD可以说是绝对秒杀机械硬盘,没有任何的机械硬盘可以和SSD比较。差距是非常巨大的,50~100倍以上。

SSD的控制器也比机械盘的控制器复杂的多,这样形容的话可能会明白点:我们知道一个34nm的Intel NAND MLC Die的容量为4GB,如果我手头有个80G的X25-M G2,那么就是20个Die组成的(10个闪存颗粒,每个颗粒里2个Die封装),因为Intel主控是10通道的,如果我们把这块SSD理解成一个10块机械盘的RAID 0会如何哪?U盘为啥慢,因为主控一般是单通或者双通的,而且NAND颗粒也差点。而SSD快就是因为主控强,不看接口限制的话10个U盘RAID 0速度也很可观哦。"10盘"RAID 0带来的就是传输率的暴增,再加上SSD独有的极低平均访问时间,如何能不快?SSD的主控要管理10个”盘“,而机械盘主控只要管好1个”盘“就行了,复杂度当然会完全不同了。再加上NAND的物理特性,-读写/擦单位不等,坏块管理,映射表管理(OS LBA和SSD 物理page),缓存算法等等..可以想象。朋友,不看外部接口(SATA),你买块SSD就等于是买了块阵列卡加"盘"啊。

以我用电脑的经验来看,WINXP SP3系统对内存的要求是768MB可以基本流畅,明显减少了磁盘虚拟缓存负担,大于768MB后瓶颈转向磁盘系统,再提高内存也无济于事,只有提高磁盘速度才能感觉到速度提升。对于磁盘系统来说,50MB/s和100MB/s的传输率在XP下是完全2个感觉,如果大于150MB/s,这个感觉就又小下来了。早期的磁盘单盘很难达到100MB/s的传输率,普遍在60MB/s附近,所以很多朋友组了RAID 0来提高传输率破100MB/s,这样会感觉性能的提升。相对的,如今100MB/s传输率的盘已经烂大街了,再组RAID 0到200MB/s对XP的提升已经不明显了,也就显得无意义了,除非你是”视频复制党“,天天没事来回拷视频。以上是XP的感想。

至于Vista这个系统,烂就烂在磁盘性能上,没事都要拖磁盘后腿(后台做乱七八糟的Search Indexing,Fetch等等),用户就会感觉磁盘灯永远不太平(熄不掉),这里就有个问题就被扩大了,哪个问题?平均访问时间。对了,相信组过RAID 阵列的用户会感觉到Vista系统明显流畅很多,单盘的话总是有这有那的不舒服(即使你的盘传输率再高)。(优化到极限的那种系统不算,啥都关了自然快了)特别是加了外置阵列卡(卡上有缓存),或者开了南桥回写的。(主板会用内存做缓存,比如Intel的RST驱动,会用8~16MB内存做缓存,所以很多用户在开了卷回写缓存的Intel阵列上跑HDtune会看到突发传输率XXXXMB/s的速度,这是因为Hdtune软件测的是目标传输率,爆发率自然是发生在内存上的)这是为啥哪?机械硬盘同一时间只能一个磁头读/写数据,虽然多盘片的硬盘每张盘片会有1到2个磁头,但是同一时间只有1个磁头是读/写的。那么当Vista在后台请求那些零碎文件的时候,硬盘就会来回的挪动磁头去处理这些碎小文件,而当用户要去读/写某些文件的时候,2者就会抢着轮流让磁头处理,自然传输率不稳定了。(很多用户应该有这个经历,单块硬盘不同分区之间传输文件速度很慢,如果是大文件的基本是一半速度,如果是小文件就会很悲剧,而如果是两块硬盘或者是RAID阵列,速度就会明显快很多)而RAID阵列下,每个磁盘都有1个磁头可以同时读/写,自然会减轻负担。所以对Vista这类系统来说,平均存取时间比传输率对系统的流畅度来的更重要。如果是SSD哪?情况自然好很多了,前面不是说了SSD就像是一套"磁盘阵列系统"么,还带”卡“。

这个是我的1块ST 160G的盘,型号ST160827AS。单跑64KB速度。

我跑2个任务,各跑64KB,2个位置跨度是10%的C盘29G(也就是2.9G)

跑2个任务,各跑64KB,2个位置跨度是90%,从160G的头到接近内圈90%初,(160GX 90%= 144G)跨度。

我们发觉跨度越大,速度越慢,到了90%跨度后,这个速度已经很离谱了,因为磁头来回寻道的关系,时间都浪费了。这就是机械盘单磁头存取和平均存取时间慢的限制,多任务性能肯定低下了,像Vista这类系统,能快起来吗?磁盘对拷机器卡的同志们,看到这个图还认为不应该“卡”吗?

Win7这个系统是在Vista基础上开发而来,不得不说进步不少,后台操作明显比Vista轻很多,这样对磁盘负担减轻不少。但是SSD的优势还是显得很明显,由于操作系统比XP来的”臃肿“,开机启动项,驱动,服务都比较多,内存占用也很大,开机时需要把更多的数据读进内存,一块高传输率的磁盘是必要的,当传输率达到一定程度后,平均存取时间的要求就来了,SSD有着传输率和平均存取时间的双方面优势,开机显得快自然很正常。在多核CPU和大内存的带领下,多任务变成家常便饭,势必带来多请求,对机械盘的同一时间单磁头读/写是个非常沉重的打击,RAID系统或者SSD在这个时候优势明显,SSD多开/秒开程序的速度相信都看过,这就是差距。所以在当今主流操作系统上,单块机械盘已经不可能完全发挥整个电脑的性能了,磁盘系统的瓶颈也就凸现出来。
为啥会有这个问题?呵呵,玩速度,就是折腾。咋样折腾都可以,只要体现出速度就成。比如CPU,显卡上大炮(液氮),显卡开管线,CPU开核,内存超频等等都是”玩“速度的表现。在磁盘系统上,所谓的”玩“无非体现在下面几种:个人用户拿RAM来虚拟磁盘,安装Cache软件,使用EWF系统,这些原本都是用来规避磁盘系统瓶颈的方式,但是很多用户都喜欢SHOW出来,这样就变成了玩了,我很难想象拿这类机器来工作,至少我还没这个胆量。而所谓的”用“速度,自然就是我们日常最基本的操作速度,自然加上少量的”优化“来降低那些无用的操作来提升平均磁盘能力也是必要的。SSD是个新事物,SSD是个无底洞,SSD的速度可以标的老高,只要堆(钱),你要多少速度就可以给你多少速度。但是这些都是量变,我们从机械盘到SSD已经有了质变了,这些量变又有啥意义哪?而且不管如何折腾,有一个速度是提不上去的,厂商也不会告诉你。哪个速度?随机读取QD1速度,这个速度是SSD速度的关键。用CDM做测试的朋友会发觉,不管啥SSD,4KB读取的速度永远在1xMB~3xMB/s之间徘徊,你永远见不到4xMB/s以上,这是硬性限制(缓存内存不算啊)。啥东西都要讲道理,数据也是,如果哪天你看到NAND这个数据变成1XXMB/s了,大哥,你看到火星来的产品了。NAND是不可能有这个速度的。为啥?因为NAND的读取延迟摆在那里,同一时间的请求数是固定的,相对的SLC会比MLC高点而已。堆出来的高端产品,数据很好看,厂商可以说几十万,几百万的IOPS,但是这些IOPS都是在某些条件下达成的,而且绝对不可能是QD1下。一样的,如果是内存,当前4KB的QD1要到2xxxMB/s不可能,大部分都在1000MB/s以下,因为内存的延迟就是那样,不管你再如何快,这是当前工艺的物理限制。我们日常操作会用到多少QD?这个是很多人会问的问题,我可以告诉你,平均不会超过4,大部分都在1和2之间。而厂商给出的数据大部分是QD32或者64的,不用到数据库服务器等请求多的应用,你这辈子用不到,你喜欢为你用不到的性能买单吗?起先,那些PCIE接口的SSD都是为企业级服务器设计的,这样堆出来的性能自然没错,而且用的是正确的地方,而如今,随着OCZ, Supertalent, Photofast 那些厂商推出PCIE接口的SSD,然后标称值都老高的数据来吸引用户,这些做法我感觉是非常”忽悠人“的,因为用户根本"用不到"这些性能,而会冲着这些高指标去买单。(我这里说的”用不到“不是指你不需要,而是你不可能用到这性能,因为要达到这个性能需要有很多条件,但是厂商会标up to XXXMB/s甚至XXXXMB/s来忽悠你,产品可以达到这个速度不代表在你的平台和应用上会有这个速度)。

ramdisk

OCZ Vertex 2 100GB

WD VelociRaptor 600GB

持续速度很不错,一到随机就悲剧了,大部分时间都浪费在寻道加潜伏期上去了(也就是说大部分时间磁头都没在要的数据上)
这个问题很难准确的回答,电子产品看RP相信大家都知道。如果我告诉你,SSD已经有30多年的历史了,你们可能会不相信,是的,1976年就有了。技术在进步,耐久度却越来越烂,为啥?因为越来越小,越来越精密,越来越便宜。一个产品从军用,工业用到企业用再沦为民用后,产品本身的定位已经发生质变,可以想象我们手上的SSD和军用产品的SSD是完全不同的。 军用产品不讲究绝对的高性能,而讲究高耐久/稳定/恶劣环境,价格也不是考虑范围。到了工业用的要的就剩下适合恶劣环境,企业用的只要高性能/稳定/耐久了,到了我们手里。。。啥都不要了,只要高性能和便宜就成,难道不是吗?MLC的出现不正是为了弥补SLC在价格上的弱势吗?要是人人用得起SLC,还要MLC做啥哪?容量不够我堆就成了。

从SSD的初衷来看,耐久度和寿命肯定是高过传统机械盘的,但是实际受到影响的地方太多了,可以想象,即使我有一块0.001%故障率的盘,但是我用100多个盘组成了个RAID 0阵列,那么这个故障率就会明显提高,甚至不如故障率0.1%的单盘了吧。SSD是由N个Die组成的,每个Die都有可能会坏,很多Die出厂内部就有坏块,所以SSD主控要有坏块管理机制。即使1个Die的故障率低,但是盘一多故障率也是很可观的。选择主控ECC能力强还是很必要的

机械硬盘与SSD固态硬盘性能的深度的更多相关文章

  1. 6款实用的硬盘、SSD固态硬盘、U盘、储存卡磁盘性能测试工具

    一.检测工具名称汇总 HDTune ATTO Disk Benchmark CrystalDiskMark AS SSD Benchmark Parkdale CrystalDiskInfo 二.各项 ...

  2. 机械硬盘和ssd固态硬盘的原理对比分析

    固态硬盘和机械硬盘的区别 机械硬盘 磁头是不是直接和盘片接触的呢 磁盘中有几个盘片 机械硬盘的工作原理 固态硬盘的寻址方式 SMR叠瓦式真的比PMR优秀吗 固态硬盘 主控芯片 闪存颗粒 缓存单元 固态 ...

  3. 5款实用的硬盘、SSD固态硬盘、U盘、储存卡磁盘性能测试工具绿色版

    http://www.iplaysoft.com/disk-benchmark-tools.html/comment-page-1#comment-149425

  4. 基于SSD固态硬盘的数据库性能优化

    基于SSD固态硬盘的数据库性能优化 2010-11-08 00:0051cto佚名   关键字:固态硬盘 数据库管理 SSD 企业软件热点文章 Java内存结构与模型结构分析 Oracle触发器的语法 ...

  5. SSD固态硬盘使用注意事项

    SSD固态硬盘的结构和运行方式不同于传统硬盘,在购买以后强烈建议进行一些设置以达到最优的运行效能,延长SSD的使用寿命.以下第一部分是一些可以在网上找到的关于SSD硬盘相关的注意事项,已经介绍很多,这 ...

  6. 【转】如何使用分区助手完美迁移系统到SSD固态硬盘?

    自从SSD固态硬盘出世以来,一直都被持续关注着,SSD的性能优势让无数用户起了将操作系统迁移到SSD的心思,直接后果就是让无数机械硬盘为止黯然退场,很多软件都可以做到系统迁移,然而,被完美迁移的系统却 ...

  7. 笔记本光驱位置装SSD固态硬盘(亲自试验)

    我的笔记本买的早了,2010年的联想Z460,速度有点慢,本来想换台电脑,想想还是算了,没有太大必要.固态硬盘便宜了,于是在原来的光驱位置装了一个256G的SSD固态硬盘,现在的性能能达到刚买来时的1 ...

  8. 笔记本安装SSD固态硬盘详细的优化设置

    现在好多笔记本.台式机都加上固态硬盘了,固态硬盘的优势大家应该都有所了解了,在此略写一下固态硬盘优势:  1.启动快,没有电机加速旋转的过程:  2.不用磁头,快速随机读取,读延迟极小:  3.相对固 ...

  9. SSD固态硬盘的GC与Trim

    操作系统:其实并没有删除数据: 事实上,它只是在硬盘前的索引区里标记这块文件占用的区域为无效的, 所以等该区域被擦除后,下次数据将要再次写入的时候,可以写入这块被标记的区域. 这也就是为啥那 些所谓的 ...

随机推荐

  1. [D3] 8. Margins

    If you want ot add margins, should append graphics container in svg var svg = d3.select('#chartArea' ...

  2. Ⅶ.AngularJS的点点滴滴-- 事件

    事件(和js一样有冒泡和捕获) <html> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2 ...

  3. 版本控制-git的使用

    最近刚到公司实习,知道了版本控制,并略微会用了git的版本控制,下面就简单的记录一下,给健忘的自己日后回顾~ 师傅教我的是命令行的使用,所以暂时只说命令行的方法, 1.首先进入CLone到本地的那个本 ...

  4. HTML+CSS基础学习笔记(7)

    CSS布局模型 在网页中,元素有三种布局模型: 1.流动模型(Flow) 2.浮动模型(Float) 3.层模型(Layer) 一.流动模型 流动(Flow)是默认的网页布局模型,网页在默认状态下的H ...

  5. Java多线程读书笔记之一

    今天开始陆续将这几天跟进Java多线程知识的成果记录下来分享. Java多线程的知识是一直想要系统彻底的看完的,但是懒惰加无聊早就了我每天都没有进展,这回下决心一定要把这块知识系统梳理完. 我的知识来 ...

  6. onTextChanged参数解释及实现EditText字数监听

    http://www.picksomething.cn/?p=34 由于最近做项目要检测EditText中输入的字数长度,从而接触到了Android中EditText的监听接口,TextWatcher ...

  7. 使用methodSignatureForSelector与forwardInvocation实现消息转发 (转)

    转自:http://blog.sina.com.cn/s/blog_8c87ba3b0102v006.html 在给程序添加消息转发功能以前,必须覆盖两个方法,即methodSignatureForS ...

  8. iOS程序员的自我修养之道

    新技术的了解渠道 WWDC开发者大会视频 官方文档 General -> Guides -> iOS x.x API Diffs 程序员的学习 iOS技术的学习 官当文档 Sample C ...

  9. OC相关-02:oc和c的基本差异

    前言: 面向过程和面向对象. 简单的说,面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用. 面向对象是把构成问题事务分解成各个对象,建立对象的目的不 ...

  10. C++ 不使用virtual实现多态

    不使用virtual实现多态可以用成员函数指针完成. 成员函数指针形式:返回类型(A::*指针名)(形参表) 其中A是类类型,即这个指针是指向A类的成员函数的函数指针 例如:int(A::*P)(in ...