关于硬盘写入读取的寿命的疑问(主要针对NAND Flash)

       由于媒体长时间的报道,以及对MLC颗粒与SLC颗粒在读写次数限制的渲染,使得很多用户对现在众多使用MLC颗粒SSD产品的寿命问题非常关注; 实际上在不同的应用领域,如Windows日常应用、服务器应用又或者其它专业用途,就算是同一款SSD产品也会有不同的寿命表现。一般来说,读写操作的比率(操作频率)、写入数据块的大小、写入数据的相关性乃至于SSD产品的容量等都会对寿命产生影响。 

  • 数据的读写比例 

        在日常使用中,我们对硬盘的访问总是读写操作掺杂在一起的,不同的应用需求所产生的读写比例也是不一样的。例如VoD点播系统,Web Server(网络服务器)、Search Engine(搜索引擎)这一类的应用,读数据的操作占了绝大多数,写操作非常少。而对于另外一些在线服务器、数据服务器、文件服务器以及邮件服务器等,其读写比例比较固定,大约是3∶1,即写入操作占到总IO比重的25%。对于视频监控、备份服务器、Log(日志)服务器以及数据采集系统等,它们的写操作占了绝大多数,读取只在少数时间发生。 

        具体到个人计算机、通用服务器之类的用途,读写比例都是视情况而定,这与用户的使用习惯关系非常密切。一般的统计结果,个人用户对硬盘的读写操作比例大约是3∶1~5∶1之间。而且在可能的情况下,尽量优化写入策略,合并一些不必要的写入操作对延长SSD寿命有着重要作用。 

  • 写入数据块的大小 

        无论是SSD还是HDD,在进行文件管理时并不是直接由操作系统管理每一个数据存储位置;而是控制IC将若干个空间看成一个数据簇,对于操作系统来说最小的数据单位就是一个簇。以我们常用的HDD为例,在NTFS文件分区模式下,一个数据簇的大小为4KB或者8KB。也就是说,哪怕一个文件只含有1个字节它也要占用4KB的存储空间;且这种数据管理方式具有唯一性,一旦某个数据簇被使用,其它文件就无权再调用该数据簇。对于HDD来说,因为每个磁碟面只有一个读写磁头,即便这种簇管理方式会浪费一些空间,也不会造成太大的影响,况且每个簇也不会有读写次数的限制。 


多通道技术实际上是在不同的颗粒之间展开的,我们可以形象地将其理解为一种“RAID 0”技术 

        对于SSD产品来说,情况就不一样了,因为NAND Flash的管理方式是按照“页(Page)”和“块(Block)”来管理的。每个Page的数据实际上就是一个数据簇,一般4KB或者8KB,这样在存储大量小文件时会造成比较严重的浪费;而且多通道数据技术大大增加了这种浪费的几率。例如对于一个16KB大小的文件来说,正常情况下只需要占用4个4KB的数据块即可:但在引入了8通道数据存储技术之后,控制IC会将文件分成8份进行存储,也就是占用8个Page。这种情况不仅会造成一定的浪费,而且进一步加剧了数据块的写入频率,对于SSD产品的寿命来说是非常不利的。


  • Tips:NAND颗粒的读写操作 

     

       NAND型Flash颗粒的 基本存储单元 叫做Cell。通过在栅极的绝缘层中注入或者释放电子来达到存储数据的目的。所以NAND Flash的操作分为三种,注入电子叫做“Erase”、释放电子叫做“Program”、读取电子叫做“Read”。 

        由于Cell的充电和放电都需要借助高压来完成,所以会对Gate Oxide(栅极)造成损耗,因此  NAND FLASH是有Program/Erase的周期数限制的,对于SLC颗粒这个次数为8~10万次,MLC颗粒为2~3万次。 

Program操作只能将电子释放,即写入0;写入0之后就不能再通过Program写入1,写入1只能通过Erase来实现。 

        让操作系统每次寻址精确到一个Cell将会带来复杂的地址线,让大容量变得遥不可及;所以工程师们使用了一种“串串烧”的方式将若干个Cell串接起来,一个串称为一个“Page(页面)”,然后将多个Page做成一个集合用一个栅极进行充电,则成为“Block(块)”。当前多数NAND Flash结构多为4KB组成一个Page,而64或者128个Page组成一个Block。Page是读取和写入的基本单位,而Block则是Erase操作的最小单位。 

 

NAND Flash中的页面组织方式 

        由于NAND FLASH的结构组织中,Block的size比较大(256KB或者512KB),而Block又是Erase的基本单位,所以要对Block内的任何数据进行改写,必须先将不需要改写的旧数据读出,对整个Block进行擦除,然后再将新旧组合的数据写入。

  •  写入数据的相关性 

        数据的相关性是指系统对SSD多次访问的关系,具体表现就是多次访问地址的范围大小。这是属于操作系统一级的操作,在多数PC用户的应用环境中,系统的数据访问相关度是非常高的,很多操作的地址前后是连续的,或者说集中在一定范围内;而在多用户的Server应用中,数据的相关度则比较低,因为各个用户之间的相关性本身就比较低,导致其需要的范围也没有太大的相关性。对于相关性较高的多次数据请求,可以由SSD的控制IC合并成一个请求,从而减少Erase操作次数、延长SSD的寿命。 

  • 写入数据的边界对齐

        这是NAND存储颗粒特有的一个属性。因为在NAND Flash中,数据的存放是以Page和Block来组织的,所以如果系统的数据访问能够对齐到Page或者Block,就能够大大减少写入操作跨Page、跨Channel(数据通道)、跨Block的情况出现,也会减少Flash的P/E延迟,延长整个SSD的寿命,并且在一定程度上能够提高写入性能。 

  • 应用的使用强度 

        每种应用方式都有对SSD的访问强度,例如有些应用场合需要24(小时)×7(天)不间断工作,而且几乎每秒钟都在进行数据读写操作(服务器应用);而另外一些场合则只需要进行8×5的应用,且工作时间对SSD的访问频率很低。对于这两种截然不同的应用场合和需求,SSD产品所表现出的寿命长短肯定会存在巨大差异。 

  • SSD产品的总体容量 

        可能有些朋友会觉得这个理由比较牵强,容量越大的SSD产品使用寿命也会越长吗?答案是肯定的,因为从理论上来说,SSD容量越大,其能够承受的总的写入请求数就越大;从Flash磨损和坏块管理机制的角度来看SSD的寿命基本上跟容量成正比。虽然在实际应用中我们不可能等到“海枯石烂”的时候再想起换硬盘,但是容量越大的硬盘,其在硬度磨损时的余量也越大。 



 

你可能感兴趣的:(NAND,Flash)