【计算机系统导论】4.4 磁盘

草稿阶段


  • 可信度、可靠性和可用性
  • MTTF
  • 发展趋势
  • 磁盘(读写机制、数据组织、物理特性、性能参数)
  • Blu-Ray
  • RAID

硬盘历史

现在的IDE硬盘,容量动辄20GB,转速则大多为7200rpm,数据缓存则是2MB,这就是现在主流IDE硬盘的标准。那你知不知道以前的硬盘是什么样子呢?现在大家看到的硬盘大多是3.5英寸盘,但以前的硬盘又是什么一样子呢?硬盘发展到今日这个样子,又经过了多少发展过程呢?带着这些问题,让我们来看看硬盘的历史发展。

  最早的硬盘可算是1956年9月,IBM的一个工程小组向世界展示了第一台磁盘存储系统IBM 350 RAMAC(Random Access Method of Accounting and Control),它的磁头可以直接移动到盘片上的任何一块存储区域,从而成功地实现了随机存储,这套系统的总容量只有5MB,共使用了50个直径为24英寸的磁盘,这些盘片表面涂有一层磁性物质,它们被叠起来固定在一起,绕着同一个轴旋转。此款RAMAC在那时主要用于飞机预约、自动银行、医学诊断及太空领域内。普通用户是不可能用到得,当然当时的电脑也不多,还没有所谓的PC(Personal Computer)。

  由于RAMAC庞大的体积及低效的性能,使用或者制造都非常不便,因此在1968年IBM公司又提出了“温彻斯特/Winchester”技术,探讨对硬盘技术做重大改造的可能性。“温彻斯特”技术的精隋是:“密封、固定并高速旋转的镀磁盘片,磁头沿盘片径向移动,磁头悬浮在高速转动的盘片上方,而不与盘片直接接触”,这也是现代绝大多数硬盘的原型。在此项温氏技术提出后的5年,即1973年,IBM公司制造出了第一台采用“温彻期特”技术的硬盘,从此硬盘技术的发展有了正确的结构基础,现在大家所用的硬盘大多是此技术的延伸。

  下面让我们分块来介绍硬盘技术的历史与发展。

  一、磁头技术

  硬盘技术的更新换代,其中一个非常重要的技术就是磁头技术,现在的硬盘单碟容量一般都在10GB以上,最高的单碟容量已经达到了20GB,以后硬盘的单碟容量还将继续增大,对于单碟容量,它直接联系的技术就是磁头技术,磁头技术越先进,硬盘的单碟容量就可以做得更高。

  最早的磁头是采用铁磁性物质,它在不论磁头的感应敏感程度或精密度上都不理想,因此早期的硬盘单碟容量均非常低,单碟低了,硬盘的总容量就受到非常大的限制,因为在一块硬盘内封装的盘片数是非常有限的(目前一般的硬盘封装盘片数在3~5片)。同时早期使用的磁头在体积上也小,它使得早期的硬盘体积上相对而言比较庞大,这给用户的使用带来了非常的不便。

  1979年,IBM发明了薄膜磁头,为进一步减小硬盘体积、增大容量、提高读写速度提供了可能。接着在80年代末期,IBM公司对硬盘发展做出了非常重要的一个贡献,即研发了MR(Magneto Resistive)磁阻磁头,这种磁头在读取数据时对信号变化相当敏感,这使得盘片的存储密度能够比以往20MB每英寸提高了数十倍,磁盘存储密度提高了,单碟容量自然而然就提高了,而单碟的提高就带动着整块硬盘容量的增大。

  在1991年,IBM公司将此项MR磁头技术应用于3.5英寸硬盘中,使得普通电脑用户使用的硬盘容量首次达到了1GB,从此我们使用的硬盘容量开始进入了GB数量级。现在有些用户使用得迈拓钻石十一代(DiamondMax 80),它能提供高达80GB的容量,这些都是从那时的MR磁头技术开始得,当然这么高的容量最后还得归功于GMR(GaintMagneto Resistive,巨磁阻)磁头技术,GMR是IBM公司在MR技术的基础上研发成功的新一代磁头技术,它是最新的磁头技术,现在生产的硬盘全都应用了GMR磁头技术。GMR比MR具有更高的信号变化灵敏度,从而使得硬盘的单碟容量可以做得更高,目前最新的磁头技术为第四代GMR磁头技术。

  二、电机技术

  在硬盘中,与磁头技术一样重要的另一项技术就是电机技术了,它直接影响着硬盘转速的大小。目前最快主轴转速的硬盘即希捷公司推出的Cheetah X15(捷豹X15系列),它的主轴电机转速高达15,000rpm。目前主流的IDE硬盘转速为7200rpm,而主流的SCSI硬盘转速则为10,000rpm。

  早期的硬盘转速一般只有4000rpm甚至更低,低转速的主要原因是由于电机技术的限制,随着技术的革新,转速提高到了4400rpm及4900rpm,再后来就是5400rpm了。

  目前还有相当大部份的IDE硬盘转速只有5400rpm,这些产品的定位是低价位电脑市场,如上面提到的迈拓钻石十一代(DiamondMax 80),虽然它能提供最高容量达80GB,但其转速却只有5400rpm。在5400rpm后,推出的即7200rpm,这也是目前最高的IDE硬盘转速。

  这里提一个比较优秀的电机技术是希捷公司独有的 Fluid Dynamic Bearing (FDB) 电机,它在1996年第一次推出,现在已经发展到了第三代技术,最新推出的7200rpm Barracuda ATA III(希捷新酷鱼三代)采用的就是FDB III电机技术,它能有效降低噪音,减少震动,延长寿命和增强对震动的抵抗能力。电机技术发展了,直接影响的就是硬盘主轴转速的提高,而转速就决定着硬盘的寻道时间。当然在提高硬盘主轴转速的同时需要考虑得是硬盘的发热量及振动问题,还有就是硬盘的工作噪声问题。所以电机技术直接决定着硬盘的快慢、工作温度及工作噪声等。

  三、接口技术

  硬盘接口一直是人们关心的技术,随着电脑其他配件(如CPU、内存、显示等子系统)性能的大步迈进,硬盘的接口传输率越来越体现出它在整个电脑系统的瓶颈效应,硬盘接口越来越受到人们的关注。

  1、最早的硬盘接口要算是ST-506/412接口,它是希捷开发的一种硬盘接口,首先使用这种接口的硬盘为希捷的ST-506及ST-412。ST-506接口使用起来相当简便,它不需要任何特殊的电缆及接头,但是它支持的传输速度很低,因此到了1987年左右这种接口就基本上被淘汰了,采用该接口的老硬盘容量多数都低于200MB。早期IBM PC/XT和PC/AT机器使用的硬盘就是ST-506/412硬盘或称MFM硬盘,MFM(Modified Frequency Modulation)是指一种编码方案 。

  2、接在ST-506/412接口后发布得是ESDI(Enhanced Small Drive Interface)接口,它是迈拓公司于1983年开发的。其特点是将编解码器放在硬盘本身之中,而不是在控制卡上,理论传输速度是前面所述的ST-506的2~4倍,一般可达到10Mbps。但其成本较高,与后来产生的IDE接口相比无优势可言,因此在九十年代后就补淘汰了。

  3、IDE与EIDE接口,IDE(Integrated Drive Electronics)的本意实际上是指把控制器与盘体集成在一起的硬盘驱动器,我们常说的IDE接口,也叫ATA(Advanced Technology Attachment)接口,现在PC机使用的硬盘大多数都是IDE兼容的,只需用一根电缆将它们与主板或接口卡连起来就可以了。把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可*性得到了增强,硬盘制造起来变得更容易,因为厂商不需要再担心自己的硬盘是否与其他厂商生产的控制器兼容,对用户而言,硬盘安装起来也更为方便。

  4、ATA-1(IDE)接口,ATA是最早的IDE标准的正式名称,IDE实际上是指连在硬盘接口的硬盘本身。ATA在主板上有一个插口,支持一个主设备和一个从设备,每个设备的最大容量为504MB,ATA最早支持的PIO-0模式(Programmed I/O-0)只有3.3MB/s,而ATA-1一共规定了3种PIO模式和4种DMA模式(没有得到实际应用),要升级为ATA-2,你需要安装一个EIDE适配卡。

  5、ATA-2(EIDE Enhanced IDE/Fast ATA)接口,这是对ATA-1的扩展,它增加了2种PIO和2种DMA模式,把最高传输率提高到了16.7MB/s,同时引进了LBA地址转换方式,突破了老BIOS固有504MB的限制,支持最高可达8.1GB的硬盘。如你的电脑支持ATA-2,则可以在CMOS设置中找到(LBA,LogicalBlock Address)或(CHS,Cylinder,Head,Sector)的设置。其两个插口分别可以连接一个主设备和一个从设置,从而可以支持四个设备,两个插口也分为主插口和从插口。通常可将最快的硬盘和CD—ROM放置在主插口上,而将次要一些的设备放在从插口上,这种放置方式对于486及早期的Pentium电脑是必要的,这样可以使主插口连在快速的PCI总线上,而从插口连在较慢的ISA总线上。

  6、ATA-3(FastATA-2)接口,这个版本支持PIO-4,没有增加更高速度的工作模式(即仍为16.7MB/s),但引入了简单的密码保护的安全方案,对电源管理方案进行了修改,引入了S.M.A.R.T(Self-Monitoring,Analysis and Reporting Technology,自监测、分析和报告技术) 。

  7、ATA-4(UltraATA、UltraDMA、UltraDMA/33、UltraDMA/66)接口,这个新标准将PIO-4下的最大数据传输率提高了一倍,达到33MB/s,或更高的66MB/s。它还在总线占用上引入了新的技术,使用PC的DMA通道减少了CPU的处理负荷。要使用Ultra-ATA,需要一个空闲的PCI扩展槽,如果将UltraATA硬盘卡插在ISA扩展槽上,则该设备不可能达到其最大传输率,因为ISA总线的最大数据传输率只有8MB/s 。其中的Ultra ATA/66(即Ultra DMA/66)是目前主流桌面硬盘采用的接口类型,其支持最大外部数据传输率为66.7MB/s。

  8、Serial ATA接口,新的Serial ATA(即串行ATA),是英特尔公司在今年IDF(Intel Developer Forum,英特尔开发者论坛)发布的将于下一代外设产品中采用的接口类型,就如其名所示,它以连续串行的方式传送资料,在同一时间点内只会有1位数据传输,此做法能减小接口的针脚数目,用四个针就完成了所有的工作(第1针发出、2针接收、3针供电、4针地线)。这样做法能降低电力消耗,减小发热量。最新的硬盘接口类型ATA-100就是Serial ATA是初始规格,它支持的最大外部数据传输率达100MB/s,上面介绍的那两款IBM Deskstar 75GXP及Deskstar 40GV就是第一次采用此ATA-100接口类型的产品。在2001年第二季度将推出Serial ATA 1x标准的产品,它能提高150MB/s的数据传输率。对于Serial ATA接口,一台电脑同时挂接两个硬盘就没有主、从盘之分了,各设备对电脑主机来说,都是Master,这样我们可省了不少跳线功夫。

  四、盘片技术

  在硬盘磁头、电机及接口不断更新的过程中,存储数据的盘片也在更新中,一般而言,早期的硬盘的盘片都是使用塑料材料作为盘片基质,然后再在塑料基质上涂上磁性材料就可构成硬盘的盘片。

  其次于塑料基质后推出的采用铝材料作为硬盘盘片基质,现在市场上的IDE硬盘一般来说都是使用铝材料作为硬盘盘片基质。而最新的硬盘盘片则是采用玻璃材料作为盘片基质,采用玻璃材料能使硬盘具有更多的平滑性及更高的坚固性,此外玻璃材料在硬盘高转速时具有更高的稳定性。IBM公司最新推出的Deskstar 75GXP及Deskstar 40GV就是采用玻璃材料作为硬盘盘片基质。

  五、其他技术

  对于硬盘的历史发展来说,除了上面介绍的四大点外,其他还有各种硬盘的附加技术,如硬盘数据保护技术及防震技术,它们也随着硬盘的发展而不断更新,但一般而言,不同硬盘厂商都有自己的一套硬盘保护技术,如昆腾的数据保护系统DPS、震动保护系统SPS;迈拓的数据保护系统MaxSafe、震动保护系统ShockBlock;西部数据公司的数据保护系统Data SafeGuide(数据卫士)等等。这些保护技术都是在原有技术的基础上推出第二代、第三代…等技术。(对未来硬盘感兴趣的童鞋可以到www.52chuangyi.net科技频道查看,记得里面有一篇关于未来硬盘的介绍)

  此外硬盘的数据缓存也随着硬盘的不断发展而不断增大,早期IDE硬盘的数据缓存只有128KB甚至更小,而那时2MB的数据的只能在高端的SCSI硬盘上看到。当然随着存储技术及高速存储器价格的降低,IDE硬盘的数据缓存增加到了256KB,而接下来就是512KB了,目前主流的IDE硬盘数据缓存则为2MB。

  从上面的硬盘历史发展中,可以看出硬盘总是朝着容量更大、速度更多、运行更稳定的方向发展得,以前是这样,现在也是这样,将来也必然是这样。


https://zh.wikipedia.org/wiki/%E7%A1%AC%E7%9B%98

硬盘(英语:Hard Disk Drive,简称HDD)是电脑上使用坚硬的旋转盘片为基础的非挥发性存储设备,它在平整的磁性表面存储和检索数字数据,信息通过离磁性表面很近的磁头,由电磁流来改变极性方式被电磁流写到磁盘上,信息可以通过相反的方式读取,例如读头经过纪录数据的上方时磁场导致线圈中电气信号的改变。硬盘的读写是采用随机存取的方式,因此可以以任意顺序读取硬盘中的数据[2]。硬盘包括一至数片高速转动的磁盘以及放在执行器悬臂上的磁头。
早期的硬盘存储介质是可替换的,不过今日典型的硬盘采用的是固定的存储介质,碟片与磁头被封装在机身里(除了一个有过滤的气孔,用来平衡工作时产生的热量导致的气压差)。
硬盘是由IBM在1956年开始使用[3],在1960年代初成为通用式电脑中主要的辅助存放设备,随着技术的进步,硬盘也成为服务器及个人电脑的主要组件。生产过硬盘的厂商超过二百家,但现阶段大部分的硬盘已经只剩下由希捷科技、东芝和西部数据生产,2013年全部硬盘的营业额约330亿美元,比2012年的378亿美元下滑了12%。[来源请求]
目录 [隐藏]
1 接口
1.1 数据接口
1.2 电源接口
2 结构
2.1 物理结构
2.1.1 避免故障
2.2 逻辑结构
2.3 MBR和GPT
3 尺寸
4 主要参数
5 发展史
6 硬盘制造商
7 注释
8 参考文献
9 外部链接
9.1 硬盘制造商
10 参见
接口[编辑]
数据接口[编辑]

硬盘读取状态
File:HardDisk1.ogg
硬盘内部的碟片在通电后开始高速转动
硬盘按数据接口不同,大致分为ATA(IDE)和SATA以及SCSI和SAS。接口速度不是实际硬盘数据传输的速度,目前非基于闪存技术的硬盘数据实际传输速度一般不会超过300MB/s。
ATA,全称Advanced Technology Attachment,是用传统的40-pin并口数据线连接主板与硬盘的,接口速度最大为133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被SATA所替换。
SATA,全称Serial ATA,也就是使用串口的ATA接口,因抗干扰性强,且对数据线的长度要求比ATA低很多,支持热插拔等功能,SATA-II的接口速度为300MiB/s,而新的SATA-III标准可达到600MiB/s的传输速度。SATA的数据线也比ATA的细得多,有利于机箱内的空气流通,整理线材也比较方便。
SCSI,全称是Small Computer System Interface(小型机系统接口),经历多代的发展,从早期的SCSI-II,到目前的Ultra320 SCSI以及Fiber-Channel(光纤通道),接口型式也多种多样。SCSI硬盘广为工作站级个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速15000rpm的高转速,且资料传输时CPU占用率较低,但是单价也比相同容量的ATA及SATA硬盘更加昂贵。
SAS(Serial Attached SCSI)是新一代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到6Gb/s。此外也透过缩小连接线改善系统内部空间等。
此外,由于SAS硬盘可以与SATA硬盘共享同样的背板,因此在同一个SAS存储系统中,可以用SATA硬盘来替换部分昂贵的SAS硬盘,节省整体的存储成本。但SATA存储系统并不能连接SAS硬盘。
FC(Fibre Channel,光纤通道接口),拥有此接口的硬盘在使用光纤联接时具有热插拔性、高速带宽(4Gb/s或10Gb/s)、远程连接等特点;内部传输速率也比普通硬盘更高。限制于其高昂的售价,通常用于高端服务器领域。
电源接口[编辑]

一颗希捷硬盘电源接口处的Molex徽标

电脑内部硬盘电源线,白色的是D形4针电源接口,黑色的是SATA电源线
3.5寸的台式机硬盘,与ATA配合使用的是“D形4针电源接口”(俗称“大4pin”),由Molex公司设计并持有专利;而SATA接口也有相应的SATA电源线。
2.5寸的笔记本电脑用硬盘,可直接由数据口供电,不需要额外的电源接口。在插上外接的便携式硬盘盒之后,由计算机外部的USB接口提供电力来源,而单个USB接口供电约为4~5V 500mA,若移动硬盘盒用电需求较高,有时需要接上两个USB接口才能使用,否则,需要外接电源供电。但如今多数新型硬盘盒(使用2.5寸或以下硬盘)已可方便地使用单个USB口供电。
结构[编辑]

磁道(Track)
柱面(Cylinder)
扇区(Sector)
磁头(Heads)
盘片(Platters)
每个碟片都有两面,因此也会相对应每碟片有2个磁头。

A:磁道
B:扇面
C:扇区
D:簇(扇区组)
在硬盘上定位某一数据记录位置—C扇区,使用了三维定位。
物理结构[编辑]
硬盘的物理结构一般由磁头与碟片、电动机、主控芯片与排线等部件组成;当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁头悬浮在碟面上画出一个与碟片同心的圆形轨道(磁轨或称柱面),这时由磁头的磁感线圈感应碟面上的磁性与使用硬盘厂商指定的读取时间或数据间隔定位扇区,从而得到该扇区的数据内容;
磁道
当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道(Track)。
柱面
在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面(Cylinder)。
扇区
磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)。硬盘的第一个扇区,叫做引导扇区。
避免故障[编辑]
硬盘碟片转速极快,与碟片的距离极小;因此硬盘内部是无尘状态,硬盘有过滤器过滤进入硬盘的空气(最新的技术是把硬盘密封、内部充氦,以降低能耗及废热,提高容量;但只有少数高级硬盘使用此技术)。为了避免磁头碰撞碟片,厂商设计出各种保护方法;目前硬盘对于地震有很好的防护力(1990年代的一些硬盘,若在使用中碰到略大的地震,就很可能损坏),防摔能力也大幅进步,电源关闭及遇到较大震动时磁头会立刻移到安全区(近期的硬盘也开始防范突然断电的情况);而许多笔记本电脑厂商也开发出各种笔记本电脑结构来加强硬盘的防摔性。但硬盘在通电时耐摔度会降低、也只能温和的移动,许多人也已经养成在关闭硬盘后30秒至一分钟内、不会移动硬盘(及笔记本电脑)的习惯。
逻辑结构[编辑]
主条目:文件系统
操作系统对硬盘进行读写时需要用到文件系统把硬盘的扇区组合成簇,并创建文件和树形目录制度,使操作系统对其访问和查找变得容易,这是因为操作系统直接对数目众多的扇区进行寻址会十分麻烦。
MBR和GPT[编辑]
主条目:主引导记录和全局唯一标识分区表
主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是电脑开机后访问硬盘时所必须要读取的首个扇区,主引导扇区记录着硬盘本身的相关消息以及硬盘各个分区的大小及位置消息,是数据消息的重要入口。如果它受到破坏,硬盘上的基本数据结构消息将会丢失,需要用繁琐的方式试探性的重建数据结构消息后才可能重新访问原先的数据,对于那些扇区为512位组的磁盘,MBR分区表不支持容量大于2.2TB(2.2×1012字节)的分区,[4]。
全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区表的结构布局的标准。它是可扩展固件接口(EFI)标准(被Intel用于替代个人计算机的BIOS)的一部分。GPT分配64bits给逻辑块地址,因而使得最大分区大小在264-1个扇区成为了可能。对于每个扇区大小为512字节的磁盘,那意味着可以有9.4ZB(9.4 x 1021字节)[4][5]或8 ZiB-512字节(9,444,732,965,739,290,426,880字节或 18,446,744,073,709,551,615(264-1)个扇区x 512(29)字节每扇区)。
尺寸[编辑]

带一个小提手的笔记本电脑用SATA接口2.5英寸东芝硬盘
硬盘驱动器的尺寸和用途可分为:
0.85英寸,多用于手机等便携设备中,已无厂商生产。
1英寸(微型硬盘,MicroDrive),多用于数码相机(CF type II接口),已无厂商生产。
1.8英寸,多用于笔记本电脑及外置硬盘盒中,已无厂商生产。
2.5英寸,多用于笔记本电脑及外置硬盘盒中。采用2.5”硬盘的外置硬盘盒一般不需外接电源。
3.5英寸,多用于台式机中。采用3.5”硬盘的外置硬盘盒一般需要外接电源,因为秏电量超过USB的供电上限。
5.25英寸,多为早期台式机使用,已无厂商生产。
10.5英寸。
14英寸,NEC DKU800。

5.25英寸硬盘与3.5英寸硬盘的尺寸比较
主要参数[编辑]
除了接口和尺寸以外,硬盘还有以下参数:
容量 目前硬盘的容量有36GB、40GB、45GB、60GB、75GB、80GB、120GB、150GB、160GB、200GB、250GB、300GB、320GB、400GB、500GB、640GB、750GB、1TB、1.5TB、2TB、2.5TB、3TB、4TB、5TB、6TB、8TB等多种规格,但计算误差,详见文件大小转换。
转速 硬盘每分钟旋转的圈数,单位是rpm(每分钟的转动数),有4200rpm、5400rpm、5900rpm、7200rpm、10000rpm、15000rpm、18000rpm等几种规格。转速愈高通常数据传输速率愈好,但同时噪音、耗电量和发热量也较高。
缓存 主要有2MB、8MB、16MB、32MB、64MB等规格。
平均寻道时间 单位是ms(毫秒),有5.2ms、8.5ms、8.9ms、12ms等规格。
内部传输速度 包括磁头把数据从盘片读入缓存的速度,以及磁头把数据从缓存写入盘片的速度。可用来评价硬盘的读写速度和整体性能[6]。
一般固态硬盘的输入电压在5V左右,偏差5%以内。一般功耗较低,2.5W左右,电流500mA,这样即使usb2.0接口也能采用。
发展史[编辑]
时间 发展内容
1956年 IBM的IBM 305 RAMAC是现代硬盘的雏形,它相当于两个冰箱的体积,不过其存储容量只有5MB。
1973年 这一年IBM 3340问世,它拥有“温彻斯特”这个绰号,来源于它的两个30MB存储单元,恰好是当时出名的“温彻斯特来福枪”的口径和填弹量。至此,硬盘的基本架构被确立。
1980年 两位前IBM员工创立的公司开发出5.25英寸规格的5MB硬盘,这是首款面向台式机的产品,而该公司正是希捷公司(Seagate)公司。
1980年代末 IBM推出MR(Magneto Resistive磁阻)技术令磁头灵敏度大大提升,使盘片的存储密度较之前的20Mbpsi(bit/每平方英寸)提高数十倍,该技术为硬盘容量的巨大提升奠定基础。1991年,IBM应用该技术推出首款3.5英寸的1GB硬盘。
1970年到1991年 硬盘碟片的存储密度以每年25%~30%的速度增长;从1991年开始增长到60%~80%;至今,速度提升到100%甚至是200%。从1997年开始的惊人速度提升得益于IBM的GMR(Giant Magneto Resistive,巨磁阻)技术,它使磁头灵敏度进一步提升,进而提高了存储密度。
1993年 康诺(Conner Peripherals)推出CP30344硬盘容量是340MB。
1995年 为了配合Intel的LX芯片组,昆腾与Intel携手发布UDMA 33接口——EIDE标准将原来接口数据传输率从16.6MB/s提升到了33MB/s同年,希捷开发出液态轴承(FDB,Fluid Dynamic Bearing)电动机。所谓的FDB就是指将陀螺仪上的技术引进到硬盘生产中,用厚度相当于头发直径十分之一的油膜替换金属轴承,减轻硬盘噪音与发热量。
1996年 希捷收购康诺(Conner Peripherals)。
1998年2月 UDMA 66规格面世。
2000年10月 迈拓(Maxtor)收购昆腾。
2003年1月 日立宣布完成20.5亿美元的收购IBM硬盘事业部项目,并成立日立环球存储科技公司(Hitachi Global Storage Technologies, Hitachi GST)。
2005年 日立环储和希捷都宣布了将开始大量采用磁盘垂直写入技术(perpendicular recording),该原理是将平行于盘片的磁场方向改变为垂直(90度),更充分地利用的存储空间。
2005年12月21日 希捷宣布收购迈拓(Maxtor)。
2007年1月 日立环球存储科技宣布将会发售全球首只1Terabyte的硬盘,比原先的预定时间迟了一年多。硬盘的售价为399美元,平均每美分可以购得27.5MB硬盘空间。
2011年3月 西部数据以43亿美元的价格,收购日立环球存储科技[7]。
2011年4月 希捷宣布与三星强化策略伙伴关系,传统的硬盘逐渐地被固态硬盘所替换。[8]。
2011年12月 希捷宣布收购了三星旗下的硬盘业务[9]。

机械硬盘

固态硬盘

https://zh.wikipedia.org/wiki/%E5%9B%BA%E6%80%81%E7%A1%AC%E7%9B%98

固态硬盘(英语:Solid State Disk、Solid State Drive,简称SSD)是一种以内存作为永久性存储器的电脑存储设备。[1]虽然SSD已不是使用“碟盘”来记存数据,而是使用NAND Flash,但是人们依照命名习惯,仍然称为固态硬盘(Solid-State Disk)或固态驱动器(Solid-State Drive)。当然,SSD内也没有用来驱动(Drive)旋转的马达,但亦可称作“固存(固态存储器)”。
由于固态硬盘技术与传统硬盘技术不同,所以产生了不少新兴的存储器厂商。厂商只需使用闪存(NAND FLASH),再配合适当的控制芯片,就可以制造固态硬盘了。新一代的固态硬盘普遍采用SATA-III接口,也有使用PCI-E x8或者mSATA、ZIF、IDE、CF、CFast等接口的固态硬盘销售,如Intel 910,Goldendisk CFast,Glodendisk Esatadom。
目录 [隐藏]
1 分类
1.1 易失性内存
1.2 非易失性内存
2 形式
3 优点
4 缺点
4.1 高成本
4.2 写入次数
4.3 读取干扰
4.4 损坏时的不可挽救性
4.5 掉速
5 演变
6 预留空间
7 参见
8 参考文献
9 外部链接
分类[编辑]
易失性内存[编辑]

使用DIMM内存制成的固态硬盘
由易失内存制成的固态硬盘主要用于临时性存储。因为这类内存需要靠外界电力维持其记忆,所以由此制成的固态硬盘还需要配合电池才能使用。易失性内存,例如SDRAM,具有访问速度快的特点。利用这一特点,可以将需要运行的程序从传统硬盘复制到固态硬盘中,然后再交由电脑运行,这样可以避免由于传统硬盘的引导延迟、搜索延迟等对程序以及系统造成的影响。
由易失性内存制成的固态硬盘通常会依靠电池来保证完成应急备份:当电源意外中断时,靠电池驱动的这类固态硬盘可以有足够的时间将数据转移到传统硬盘中。当电力恢复后,再从传统硬盘中恢复数据。
非易失性内存[编辑]
非易失性内存的数据访问速度介于易失性内存和传统硬盘之间。和易失性内存相比,非易失性内存一经写入数据,就不需要外界电力来维持其记忆。因此更适于作为传统硬盘的替代品。
闪存当中的NAND Flash是最常见的非易失性内存。小容量的NAND闪存可被制作成带有USB接口的移动存储设备,亦即人们常说的“U盘”。随着生产成本的下降,将多个大容量闪存模块集成在一起,制成以闪存为存储介质的固态硬盘已经是目前的趋势。
目前用来生产固态硬盘的NAND Flash有三种,分别是单层式存储(SLC)、多层式存储(MLC,通常用来指称双层式存储)、三层式存储(TLC)。有些厂商亦称TLC为3-bit MLC。[2]SLC、MLC、TLC的读写速度依序从快至慢(约4:2:1),使用寿命依序从长至短(约6:3:2),成本依序从高至低,需要纠错比特数(ECC)则是相反地从低至高(同一制程下1:2:4。不过ECC也受制程的影响,同一种芯片,越小尺度的制程需要越多的纠错比特)。[3][4]固态硬盘的主流从SLC芯片转到MLC芯片,促成了2011年的大降价,固态硬盘因此普及。
由于因为SLC的速度较快但成本过高,用于服务器的企业级SSD都改用了MLC。[5]TLC因为速度较慢但成本低,原本只用来做U盘;不过2012下半年,SAMSUNG首先推出使用TLC的消费级固态硬盘(型号840系列),固态硬盘名牌Plextor也打算于2013年量产TLC产品作为低级廉价市场的主力,[6][7]然而TLC的寿命、速度和可靠性(错误率)成为消费者的最大疑虑(见下文:缺点)。生产商会在TLC SSD使用更先进的主控及更多预留空间(OP)来处理这些问题。
TLC的错误率已经很高,需要使用先进的主控及大量的空间进行纠错。如果发展4-bit MLC会令错误率升得更高,同时寿命更短。三星已量产两代3D垂直闪存,利用3D堆栈增加存储密度。[8]
形式[编辑]

华硕Eee PC的SSD
固态硬盘大部分被制作成与传统硬盘相同的外壳尺寸,例如常见的1.8吋、2.5吋或3.5吋规格,并采用了相互兼容的接口;但有些固态硬盘也使用PCI Express或是Express Card作为接口来突破现有硬盘传输接口的速度,或是在有限空间(如上网本、超级移动电脑等)中置放固态硬盘。
优点[编辑]
和传统硬盘相比,固态硬盘具有低功耗、无噪音、抗震动、低热量的特点。这些特点不仅使得数据能更加安全地得到保存,而且也延长靠电池供电的设备的连续运转时间。
例如三星电子于2006年3月推出的容量为32GB的固态硬盘,采用和传统微硬盘相同的1.8吋规格。其耗电量只有常规硬盘的5%,写入速度是传统硬盘的1.5倍,读取速度是传统硬盘的3倍,并且没有任何噪音。[9]
在2007年台北国际电脑展览会中,闪迪公司发表64GB与32GB的固态硬盘,并有2.5吋、SATA接口与1.8吋、UATA接口两种规格。OCZ Technology现场展出的固态硬盘分为2.5吋与1.8吋两种,其中2.5吋采用SATA接口,最大容量可达128GB;1.8吋机种则是采用IDE接口,最大容量可达64GB,可分别使用在笔记本电脑与更小的UMPC上,用来替换传统的硬盘。OCZ的2.5吋固态硬盘OCTANE,容量已达到1TB。[10][11]
三星在“闪存高峰会”(Flash Memory Summit)上发表容量高达16TB的2.5吋固态硬盘(SSD)PM1633a,其存储容量甚至高过于传统硬盘。(V-NAND)
固态硬盘的表现与传统硬盘互有胜负,一般在容量、速度、价钱、性价比等作出比较。最初的固态硬盘容量少、价钱高,性价比远不及传统的机器性硬盘。但随着固态硬盘的不断发展,固态硬盘的容量已有实用性,价钱明显下滑之下,已为传统硬盘市场制造危机。
缺点[编辑]
目前固态硬盘普及的五大问题:成本、写入次数、读取干扰、损坏时的不可挽救性及掉速。[12]
高成本[编辑]
固态硬盘以往由于价格高昂,通常只用于军事及工业用途上;不过随着NAND闪存成本的不断下降,如今固态硬盘已经使用在一般的笔记本电脑上,并预计逐步于刀片服务器上采用,提供全新的电脑使用体验。固态硬盘比起传统硬盘,具有速度快、耗电量低与不会出现实体坏轨的优点。由于硬盘早已是系统性能的瓶颈,因此改用固态硬盘可以带来明显及令人兴奋的性能提升。但由于价格与存储空间比于传统硬盘仍有较大差距,固态硬盘成为真正主流存储设备而替换传统硬盘仍需一定时间。
写入次数[编辑]
成本方面,无论是易失性内存还是非易失性内存,其每百万字节(MB)成本都远高于传统硬盘。因此只有小容量的固态硬盘的价格能够被大多数人所承受。当消费级传统硬盘2012年已经来到2T、3T甚至5T时,相当价位的固态硬盘只有128G或256G。寿命方面,由于闪存上每一个电闸都有一定的写入次数限制,寿命结束后会无法写入变成只读状态;而且随着使用的闪存从SLC架构到MLC,到最近开始改用TLC,若电闸的质量不变,理论上电闸寿命呈现6:3:2的衰退(因为其原理是在同一个电闸上记录1、2或3个比特,记录越多比特,被写入的机会就越高),[13]因此成为大众接受固态硬盘的另一个障碍。
不过技术总是在更新:成本方面,随着NAND Flash的19nm制程于2012年初进入量产,使得能够在同样大小的闪存空间内塞入倍增的容量;随着NAND Flash从SLC架构到MLC,到最近开始改用TLC;这两项技术都进一步降低每百万字节的成本[14][15]。而寿命方面,随着固态硬盘主控芯片的改进,能将写入地址依照电闸使用率更平均地分散,使只读状态不会太快到来;而固态硬盘容量的增大,也有助于拉低电闸平均使用率,因为一般使用习惯上,会经常改写的文件只占全部数据的一小部分。优秀的厂商通常会用软件算法进一步延长一倍以上的寿命,使固态硬盘能经历极大量的使用也不至于立即达到使用终点,甚至比电脑其它硬件还长久耐用,给予用户足够的缓冲时间将数据转移和备份。[16]
对于台式机及大型笔记本电脑的用户来说,使用两台硬盘是成本效益比最佳的方法:小容量的SSD来安装操作系统及常用数据,大容量HDD安装数据。但是对于小型笔记本电脑、Ultra book及平板电脑的用户来说,SSD的高成本仍是问题:容量够大的SSD很贵,而且紧凑的电脑通常无法自行更换SSD。
读取干扰[编辑]
读取干扰是较少发生的问题,但仍会发生:闪存随着多次的读取,会导致在同一区块中相近的记忆单元内容改变(变成写入动作)。这即是所谓的读取干扰。会导致读取干扰现象的读取次数门槛介于区块被抹除间,通常为100,000次。假如连续从一个记忆单元读取,此记忆单元将不会受损,而受损却是接下来被读取的周围记忆单元。为避免读取干扰问题,闪存控制器通常会计算从上次抹除动作后的区块读取动作总次数。当计数值超过所设置的目标值门槛时,受影响的区块会被复制到一个新的区块,然后将原区块抹除后释放到区块回收区中。原区块在抹除动作后就会像新的一样。若是闪存控制器没有即时介入时,读取干扰错误就会发生,如果错误太多而无法被ECC机制修复时就会伴随着可能的数据丢失。[17][18]
损坏时的不可挽救性[编辑]
很多人最在意的问题:固态硬盘数据损坏后是难以修复的。当负责存储数据的闪存颗粒有毁损时,现在的数据修复技术不可能在损坏的芯片中救回数据,相反传统机械硬盘或许还能通过一些数据恢复技术挽回一些数据。不过真正在意数据保存的人士一般也会定期备份数据。
在量产之前,TLC架构的速度相较于SLC和MLC产品,原本也是令人质疑的,因为理论上随着每一电闸记录比特数的增加,判读和写入的速度在相同的准确度之下都必然更缓慢。不过正式量产之后,TLC固态硬盘的读写速度甚至略高于同容量MLC的最高速产品,这归功于主控芯片的进步,以及多通道的使用。[19]
掉速[编辑]
SSD的另一个问题是掉速,SSD的速度会随着写入次数而降低,若SSD接近装满时速度也会下降;原因包括耗损平均技术的副作用、控制芯片及固件的优劣等。目前较佳的解决方案是Secure Erase(会略微缩短SSD寿命,不过在出现掉速时、SSD的剩余寿命还很长)及提高更换频率。
演变[编辑]
目前有众多存储厂商推出融合SSD/HDD优点的固态混合硬盘,像是OCZ RevoDrive Hybrid. Seagate Momentus XT 750GB等等。其它像主板厂商也有使用多个SATA连接端口将SSD/HDD同时使用,像是ASUS的SSD Caching功能。还有磁盘阵列厂商的缓存加速卡,像是HighPoint RocketCache 3240x8等等。
于2012年底,苹果公司发布新一代iMac时同时展示了“Fusion Drive”技术,Fusion Drive技术除了融合了HDD和SSD外(合并在同一的逻辑卷),还在操作系统(只限在OS X)上作配合。原理是在用户不知情的情况下,操作系统自动在背景将用户常用应用程序、文件、照片或者其他数据来存储在SSD中,同时将很少访问或者使用的文件留在HDD。苹果公司在发布时指出在正常情况使用下,Fusion Drive的平均性能是SSD的80%,可以让用户体验“SSD的性能,HDD的容量”。
预留空间[编辑]
SSD的预留空间(Over-provisioning,OP)可用作垃圾收回(Garbage collection)、ECC或其他数据保护技术。
预留空间可分成三层。第一层是容量的7.37%,128GB SSD实际上有128GiB NAND Flash,厂商以十进制标示容量大小,以二进制计算两者有7.37%差额。这层是不会标示的。所以标示为0% OP的SSD,实际上也有7% OP。
第二层是厂商决定的,通常是0%、7%、28%。所以,我们会看见128GB、120GB、100GB的SSD。它们都有128GB,只是被厂商保留起来作OP。企业版SSD注重稳定性及耐用性,所以会保留多达28%空间作OP。要注意,把一个120GB SSD连接到电脑只可看见112GB空间,是因为大部分操作系统(包括Windows及Android)以二进制计算空间大小120x109=112x230,就如16GB SD卡插进手机或电脑只看见15GB一样,与OP无关。
第三层是用户自行划分的,用户在分区时可自行预留空间作为OP,以满足不同需要(稳定性/可用空间)。如果预留多达50%空间作OP,持续地写入大量细小文件的高负载情况下,写入性能只有轻微下降。[20]但一般情况下,没有需要再保留更多空间作OP,因为家用电脑不会大量和持续地写入数据。若以SSD创建RAID,应保留一定空间以弥补没有TRIM的影响。


4K对齐是一种高级硬盘使用技术,用特殊方法将文件系统格式与硬盘物理层上进行契合,为提高硬盘寿命与高效率使用硬盘空间提供解决方案。因该技术将物理扇区与文件系统的每簇4096字节对齐而得名。
目录 [隐藏]
1 原理
2 机械硬盘
3 固态硬盘
4 注释
5 参考
原理[编辑]
当前电脑传统机械硬盘的每个扇区一般大小为512字节;当使用某一文件系统将硬盘格式化时,文件系统会将硬盘扇区、磁道与柱面统计整理并定义一个簇为多少扇区方便快速存储。
例如:现时windows中常见使用的NTFS文件系统,默认定义为4096字节大小为一个簇,但NTFS分区因为其引导区占用了一个磁道共63个扇区[1],真正的文件系统在63号扇区之后,那么依照计算得出前63个扇区大小为:
512Bx63=32256B
并按照默认簇大小得出63扇区为多少个簇:
32256B÷4096B=7.875
即为每个簇都会跨越两个物理单元,占据第一个单元的组后512字节和第二个单元的前3584字节。这样文件系统在读写某个簇的时候,硬盘需要读写两个物理单元,这会降低读写速度,并缩短使用寿命。现时一般使用一些硬盘分区软件在主引导记录的63个扇区后作牺牲地空出数个扇区以对齐文件系统的4096B每簇,以避免过多的读写操作,提升读写速度、延长使用寿命。
机械硬盘[编辑]
主条目:先进格式化
在磁盘发展早期,每扇区为512字节比较适合当时硬盘的储存结构。但随着单盘容量的增加,储存密度的上升会明显降低磁头读取磁盘的信噪比,虽然可以用ECC校验保证数据可靠性,但消耗的空间会抵消储存密度上升带来的多余空间。所以提出了以4KB为一个扇区为主的改变。现时硬盘厂商新推出的硬盘,都将遵循先进格式化(4KB扇区)的设计以对应新的储存结构和文件系统问题。

固态硬盘[编辑]
相对于机械硬盘来说,4K对齐对于固态硬盘意义更大,现时的固态硬盘多为使用NAND Flash 闪存作存储核心,该闪存是有删除写入次数限制的,当次数用完后该固态硬盘便会性能下降甚至报废;当然很多厂商设计固态硬盘存储方式为不在短时间内删除写入同一个位置,尝试全面地均匀地使用每一个扇区以达到期望寿命,然而在没有4K对齐的电脑上这将会使固态硬盘寿命快速下降。


1.什么是SSD
固态硬盘(Solid State Drives),用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。被广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等领域。
2.SSD的分类
固态硬盘(SSD)的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质,另外一种是采用DRAM作为存储介质。
基于闪存类:基于闪存的固态硬盘(IDEFLASH DISK、Serial ATA Flash Disk),采用FLASH芯片作为存储介质,这也是通常所说的SSD。它的外观可以被制作成多种模样,例如:笔记本硬盘、微硬盘、存储卡、U盘等样式。这种SSD固态硬盘最大的优点就是可以移动,而且数据保护不受电源控制,能适应于各种环境,适合于个人用户使用。
基于DRAM类:基于DRAM的固态硬盘,采用DRAM作为存储介质,应用范围较窄。它仿效传统硬盘的设计,可被绝大部分操作系统的文件系统工具进行卷设置和管理,并提供工业标准的PCI和FC接口用于连接主机或者服务器。应用方式可分为SSD硬盘和SSD硬盘阵列两种。它是一种高性能的存储器,而且使用寿命很长,美中不足的是需要独立电源来保护数据安全。DRAM固态硬盘属于比较非主流的设备。
3.SSD的构成
SSD主要由主控制器,存储单元,缓存(可选),以及跟HOST接口(诸如SATA,SAS, PCIe等)组成。
3.1 主控制器
每个 SSD 都有一个控制器(controller)将存储单元连接到电脑,主控器可以通过若干个通道(channel)并行操作多块FLASH颗粒,类似RAID0,大大提高底层的带宽。控制器是一个执行固件(firmware)代码的嵌入式处理器。主要功能如下:
错误检查和纠正(ECC)
磨损平衡(Wear leveling)
坏块映射(Bad block mapping)
Read disturb(读取某个块的数据的时候会影响到相邻块的数据)管理
缓存控制
垃圾回收
加密
3.2 存储单元
尽管有某些厂商推出了基于更高速的 DRAM 内存的产品,但 NAND 闪存依然最常见,占据着绝对主导地位。低端产品一般采用 MLC(multi-level cell) 甚至 TLC(Triple Level Cell) 闪存,其特点是容量大、速度慢、可靠性低、存取次数低、价格也低。高端产品一般采用 SLC(single-level cell) 闪存,其特点是技术成熟、容量小、速度快、可靠性高、存取次数高、价格也高。但是事实上,取决于不同产品的内部架构设计,速度和可靠性的差别也可以通过各种技术加以弥补甚至反转。
存储单元内部结构
一个Flash Page由两个或者多个Die(又称chips组成),这些Dies可以共享I/0数据总线和一些控制信号线。一个Die又可以分为多个Plane,而每个Plane又包含多个多个Block,每个Block又分为多个Page。以Samsung 4GB Flash为例,一个4GB的Flash Page由两个2GB的Die组成,共享8位I/0数据总线和一些控制信号线。每个Die由4个Plane组成,每个Plane包含2048个Block,每个Block又包含64个4KB大小的Page。
存储单元的分类
SLC(Single Level Cell 单层单元),就是在每个存储单元里存储 1bit 的数据,存储的数据是0还是1是基于电压阀值的判定,对于 NAND Flash 的写入(编程),就是控制 Control Gate 去充电(对 Control Gate 加压),使得浮置栅极存储的电荷够多,超过4V,存储单元就表示 0(已编程),如果没有充电或者电压阀值低于4V,就表示 1(已擦除)。
MLC(Multi-Level Cell 多层单元), 就是每个存储单元里存储 2bit 的数据,存储的数据是 “00”, “01”, “10”, “11”也是基于电压阀值的判定,当充入的电荷不足3.5V时,就代表”11”,当充入的电荷在3.5V和4.0V之间,则代表 “10”,当充入的电荷在4V和5.5V之间,则表示 “01”,当充入的电荷在5.5V以上,则表示”00”。同时由前面的图可以看到,MLC 相比 SLC 虽然使用相同的电压值,但是电压之间的阀值被分成了4份,可以想象这样就直接影响了性能和稳定性。
TLC(Triple Level Cell 三层单元), 就更加复杂,因为每个存储单元里存储 3bit 的数据,所以它的电压阈值的分界点就更细致,导致的结果也就每个存储单元的可靠性也更低。
4.Host访问SSD的原理
Host是通过LBA(Logical BlockAddress,逻辑地址块)访问SSD的,每个LBA代表着一个Sector(一般为512B大小),操作系统一般以4K为单位访问SSD,我们把Host访问SSD的基本单元叫用户页(Host Page)。而在SSD内部,SSD主控与Flash之间是Flash Page为基本单元访问Flash的,我们称Flash Page为物理页(Physical Page)。Host每写入一个Host Page, SSD主控会找一个Physical Page把Host数据写入,SSD内部同时记录了这样一条映射(Map)。有了这样一个映射关系后,下次Host需要读某个Host Page 时,SSD就知道从Flash的哪个位置把数据读取上来。
SSD内部维护了一张映射表(Map Table),Host每写入一个Host Page,就会产生一个新的映射关系,这个映射关系会加入(第一次写)或者更改(覆盖写)Map Table;当读取某个Host Page时, SSD首先查找Map Table中该Host Page对应的Physical Page,然后再访问Flash读取相应的Host数据。
大多数SSD,我们可以看到上面都有板载DRAM,其主要作用就是用来存储这张映射表。也有例外,比如基于Sandforce主控的SSD,它并不支持板载DRAM,那么它的映射表存在哪里呢?SSD工作时,它的绝大部分映射是存储在FLASH里面,还有一部分存储在片上RAM上。当Host需要读取一笔数据时,对有板载DRAM的SSD来说,只要查找DRAM当中的映射表,获取到物理地址后访问Flash从而得到Host数据.这期间只需要访问一次FlashH;而对Sandforce的SSD来说,它首先看看该Host Page对应的映射关系是否在RAM内,如果在,那好办,直接根据映射关系读取FLASH;如果该映射关系不在RAM内,那么它首先需要把映射关系从FLASH里面读取出来,然后再根据这个映射关系读取Host数据,这就意味着相比有DRAM的SSD,它需要读取两次FLASH才能把HOST数据读取出来,底层有效带宽减半。对HOST随机读来说,由于片上RAM有限,映射关系Cache命中(映射关系在片上RAM)的概率很小,所以对它来说,基本每次读都需要访问两次FLASH,所以我们可以看到基于Sandforce主控的SSD随机读取性能是不太理想的。

  1. SSD相关概念和技术
    5.1 多 Plane NAND
    多 Plane NAND 是一种能够有效提升性能的设计。例如,一个晶片内部分成了2个 Plane,而且2个 Plane 内的 Block 编号是单双交叉的,想象我们在操作时,也可以进行交叉操作(一单一双)来提升性能。
    5.2 FTL
    操作系统通常将硬盘理解为一连串 512B 大小的扇区[注意:操作系统对磁盘进行一次读或写的最小单位并不是扇区,而是文件系统的块,一般为 512B/1KB/4KB 之一(也可能更大),其具体大小在格式化时设定],但是闪存的读写单位是 4KB 或 8KB 大小的页,而且闪存的擦除(又叫编程)操作是按照 128 或 256 页大小的块来操作的。更要命的是写入数据前必须要先擦除整个块,而不能直接覆盖。这完全不符合现有的、针对传统硬盘设计的文件系统的操作方式,很明显,我们需要更高级、专门针对 SSD 设计的文件系统来适应这种操作方式。但遗憾的是,目前还没有这样的文件系统。为了兼容现有的文件系统,就出现了 FTL(闪存转换层),它位于文件系统和物理介质之间,把闪存的操作习惯虚拟成以传统硬盘的 512B 扇区进行操作。这样,操作系统就可以按照传统的扇区方式操作,而不用担心之前说的擦除/读/写问题。一切逻辑到物理的转换,全部由 FTL 层包了。
    FTL 算法,本质上就是一种逻辑到物理的映射,因此,当文件系统发送指令说要写入或者更新一个特定的逻辑扇区时,FTL 实际上写入了另一个空闲物理页,并更新映射表,再把这个页上包含的旧数据标记为无效(更新后的数据已经写入新地址了,旧地址的数据自然就无效了)。
    5.3 磨损平衡(Wear leveling)
    简单说来,磨损平衡是确保闪存的每个块被写入的次数相等的一种机制。通常情况下,在 NAND 块里的数据更新频度是不同的:有些会经常更新,有些则不常更新。很明显,那些经常更新的数据所占用的块会被快速的磨损掉,而不常更新的数据占用的块磨损就小得多。为了解决这个问题,需要让每个块的编程(擦写)次数尽可能保持一致:这就是需要对每个页的读取/编程操作进行监测,在最乐观的情况下,这个技术会让全盘的颗粒物理磨损程度相同并同时报废。
    磨损平衡算法分静态和动态。动态磨损算法是基本的磨损算法:只有用户在使用中更新的文件占用的物理页地址被磨损平衡了。而静态磨损算法是更高级的磨损算法:在动态磨损算法的基础上,增加了对于那些不常更新的文件占用的物理地址进行磨损平衡,这才算是真正的全盘磨损平衡。简单点说来,动态算法就是每次都挑最年轻的 NAND 块来用,老的 NAND 块尽量不用。静态算法就是把长期没有修改的老数据从一个年轻 NAND 块里面搬出来,重新找个最老的 NAND 块放着,这样年轻的 NAND 块就能再度进入经常使用区。
    尽管磨损均衡的目的是避免数据重复在某个空间写入,以保证各个存储区域内磨损程度基本一致,从而达到延长固态硬盘的目的。但是,它对固态硬盘的性能有不利影响。
    5.4 垃圾回收(Garbagecollection)
    当整个SSD写满后,从用户角度来看,如果想写入新的数据,则必须删除一些数据,然后腾出空间再写。用户在删除和写入数据的过程中,会导致一些Block里面的数据变无效或者变老。Block中的数据变老或者无效,是指没有任何映射关系指向它们,用户不会访问到这些FLASH空间,它们被新的映射关系所取代。比如有一个Host Page A,开始它存储在FLASH空间的X,映射关系为A->X。后来,HOST重写了该Host Page,由于FLASH不能覆盖写,SSD内部必须寻找一个没有写过的位置写入新的数据,假设为Y,这个时候新的映射关系建立:A->Y,之前的映射关系解除,位置X上的数据变老失效,我们把这些数据叫垃圾数据。随着HOST的持续写入,FLASH存储空间慢慢变小,直到耗尽。如果不及时清除这些垃圾数据,HOST就无法写入。SSD内部都有垃圾回收机制,它的基本原理是把几个Block中的有效数据(非垃圾数据)集中搬到一个新的Block上面去,然后再把这几个Block擦除掉,这样就产生新的可用Block了.
    另一方面,由前面的磨损平衡机制知道,磨损平衡的执行需要有“空白块”来写入更新后的数据。当可以直接写入数据的“备用空白块”数量低于一个阀值后,SSD主控制器就会把那些包含无效数据的块里的所有有效数据合并起来写到新的“空白块”中,然后擦除这个块以增加“备用空白块”的数量。
    有三种垃圾回收策略:
    闲置垃圾回收:很明显在进行垃圾回收时候会消耗大量的主控处理能力和带宽造成处理用户请求的性能下降,SSD 主控制器可以设置在系统闲置时候做“预先”垃圾回收(提前做垃圾回收操作),保证一定数量的”备用空白块”,让 SSD 在运行时候能够保持较高的性能。闲置垃圾回收的缺点是会增加额外的”写入放大”,因为你刚刚垃圾回收的”有效数据”,也许马上就会被更新后的数据替代而变成”无效数据”,这样就造成之前的垃圾回收做无用功了。
    被动垃圾回收:每个 SSD 都支持的技术,但是对主控制器的性能提出了很高的要求,适合在服务器里用到,SandForce 的主控就属这类。在垃圾回收操作消耗带宽和处理能力的同时处理用户操作数据,如果没有足够强劲的主控制器性能则会造成明显的速度下降。这就是为啥很多 SSD 在全盘写满一次后会出现性能下降的道理,因为要想继续写入数据就必须要边垃圾回收边做写入。
    手动垃圾回收:用户自己手动选择合适的时机运行垃圾回收软件,执行垃圾回收操作。
    可以想象,如果系统经常进行垃圾回收处理,频繁的将一些区块进行擦除操作,那么 SSD 的寿命反而也会进一步下降。由此把握这个垃圾回收的频繁程度,同时确保 SSD 中的闪存芯片拥有更高的使用寿命,这确实需要找到一个完美的平衡点。所以,SSD 必须要支持 Trim 技术,不然 GC 就显不出他的优势了。
    5.5 Trim
    Trim 是一个 ATA 指令,当操作系统删除文件或格式化的时候,由操作系统同时把这个文件地址发送给 SSD 的主控制器,让主控制器知道这个地址的数据无效了。当你删除一个文件的时候,文件系统其实并不会真正去删除它,而只是把这个文件地址标记为“已删除”,可以被再次使用,这意味着这个文件占的地址已经是“无效”的了。这就会带来一个问题,硬盘并不知道操作系统把这个地址标记为“已删除”了,机械盘的话无所谓,因为可以直接在这个地址上重新覆盖写入,但是到了 SSD 上问题就来了。NAND 需要先擦除才能再次写入数据,要得到空闲的 NAND 空间,SSD 必须复制所有的有效页到新的空闲块里,并擦除旧块(垃圾回收)。如果没有 Trim 指令,意味着 SSD 主控制器不知道这个页是“无效”的,除非再次被操作系统要求覆盖上去。
    Trim 只是条指令,让操作系统告诉 SSD 主控制器这个页已经“无效”了。Trim 会减少写入放大,因为主控制器不需要复制“无效”的页(没 Trim 就是“有效”的)到空白块里,这同时代表复制的“有效”页变少了,垃圾回收的效率和 SSD 性能也提升了。Trim 能大量减少伪有效页的数量,它能大大提升垃圾回收的效率。目前,支持 Trim 需要三个要素,
    系统:操作系统必须会发送 Trim 指令,Win7, Win2008R2 , Linux-2.6.33 以上。
    固件: SSD 的厂商在固件里要放有 Trim 算法,也就是 SSD 的主控制器必须认识 Trim 指令。
    驱动: 控制器驱动必须要支持 Trim 指令的传输,也就是能够将 Trim 指令传输到 SSD 控制器。MS 的驱动,Intel 的 AHCI 驱动目前支持。别的要看之后的更新了。
    目前,RAID 阵列里的盘明确不支持 TRIM,不过 RAID 阵列支持 GC。
    5.6 预留空间(Over-provisioning)
    预留空间是指用户不可操作的容量,为实际物理闪存容量减去用户可用容量。这块区域一般被用来做优化,包括磨损均衡,GC和坏块映射。
    第一层为固定的7.37%,这个数字是如何得出的哪?我们知道机械硬盘和 SSD 的厂商容量是这样算的,1GB 是1,000,000,000字节(10的9 次方),但是闪存的实际容量是每 GB=1,073,741,824,(2的30次方) ,两者相差7.37%。所以说假设1块 128GB 的 SSD,用户得到的容量是 128,000,000,000 字节,多出来的那个 7.37% 就被主控固件用做OP了。
    第二层来自制造商的设置,通常为 0%,7%,28% 等,打个比方,对于 128G 颗粒的 SandForce 主控 SSD,市场上会有 120G 和 100G 两种型号卖,这个取决于厂商的固件设置,这个容量不包括之前的第一层 7.37% 。
    第三层是用户在日常使用中可以分配的预留空间,用户可以在分区的时候,不分到完全的 SSD 容量来达到这个目的。不过需要注意的是,需要先做安全擦除(Secure Erase),以保证此空间确实没有被使用过。
    预留空间的具体作用:
    垃圾回收:就是要把数据搬来搬去,那就需要始终有空的地方来放搬的数据。空的越多,搬的越快,多多益善,有些SSD为了更快,还会再拿走一些用户的容量。
    映射表等内部数据保存:SSD里面有一个巨大的映射表,把用户地址转成物理Flash颗粒地址,需要保存,以防掉电丢失。这个大概是千分之三的容量。
    坏块替换:写得多了,坏块会逐渐增加,需要用好的顶替。随着Flash的制程从32nm不断变小,变到现在的14nm,Flash质量越来越差,坏块越来越多,这部分可能会到3%甚至更多。
    5.7 写入放大(Write amplification)
    因为闪存必须先擦除(也叫编程)才能写入,在执行这些操作的时候,移动或覆盖用户数据和元数据(metadata)不止一次。这些额外的操作,不但增加了写入数据量,减少了SSD的使用寿命,而且还吃光了闪存的带宽,间接地影响了随机写入性能。这种效应就叫写入放大(Write amplification)。一个主控的好坏主要体现在写入放大上。
    比如我要写入一个 4KB 的数据,最坏的情况是,一个块里已经没有干净空间了,但是有无效数据可以擦除,所以主控就把所有的数据读到缓存,擦除块,从缓存里更新整个块的数据,再把新数据写回去。这个操作带来的写入放大就是:我实际写4K的数据,造成了整个块(1024KB)的写入操作,那就是256倍放大。同时带来了原本只需要简单的写4KB的操作变成闪存读取(1024KB),缓存改(4KB),闪存擦(1024KB),闪存写(1024KB),造成了延迟大大增加,速度急剧下降也就是自然的事了。所以,写入放大是影响 SSD 随机写入性能和寿命的关键因素。
    用100%随机4KB来写入 SSD,对于目前的大多数 SSD 主控而言,在最糟糕的情况下,写入放大的实际值可能会达到或超过20倍。当然,用户也可以设置一定的预留空间来减少写入放大,假设你有个 128G 的 SSD,你只分了 64G 的区使用,那么最坏情况下的写入放大就能减少约3倍。
    许多因素影响 SSD 的写入放大。下面列出了主要因素,以及它们如何影响写入放大。
    垃圾回收虽然增加了写入放大(被动垃圾回收不影响,闲置垃圾回收影响),但是速度有提升。
    预留空间可以减少写入放大,预留空间越大,写入放大越低。
    开启 TRIM 指令后可以减少写入放大
    用户使用中没有用到的空间越大,写入放大越低(需要有 Trim 支持)。
    持续写入可以减少写入放大。理论上来说,持续写入的写入放大为1,但是某些因素还是会影响这个数值。
    随机写入将会大大提升写入放大,因为会写入很多非连续的 LBA。
    磨损平衡机制直接提高了写入放大
    5.8 交错操作
    交错操作可以成倍提升NAND的传输率,因为NAND颗粒封装时候可能有多Die、多Plane(每个plane都有4KB寄存器),Plane操作时候可以交叉操作(第一个plane接到指令后,在操作的同时第二个指令已经发送给了第二个plane,以此类推),达到接近双倍甚至4倍的传输能力(看闪存颗粒支持度)。
    5.9 ECC
    ECC的全称是Error Checking and Correction,是一种用于Nand的差错检测和修正算法。由于NAND Flash的工艺不能保证NAND在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用NAND Flash的系统中一般都会采用一定的坏区管理机制,而管理坏区的前提是能比较可靠的进行坏区检测。如果操作时序和电路稳定性不存在问题的话,NAND Flash出错的时候一般不会造成整个Block或是Page不能读取或是全部出错,而是整个Page中只有一个或几个bit出错,这时候ECC就能发挥作用了。不同颗粒有不同的基本ECC要求,不同主控制器支持的ECC能力也不同,理论上说主控越强ECC能力越强。

http://cighao.com/2015/08/31/introduction-of-SSD/


固态硬盘(SSD)为什么需要TRIM?
固态硬盘(SSD)突破了传统硬盘的速度瓶颈,并且工作稳定、无噪音、耗电少,随着成本的下降,大有取代传统硬盘的势头。使用SSD的人大多听说过TRIM,操作系统一定要支持TRIM才能让SSD的性能实现最优化,那么TRIM到底是什么东西,为什么SSD需要TRIM而传统硬盘却不需要呢?

TRIM的出现,实际上是由于SSD在执行数据删除、覆盖操作时和传统硬盘在原理上的差异所造成的。我们知道,存储设备(无论是SSD还是传统硬盘)只负责最底层的物理存储,并不知道所存储的数据到底有什么意义,反正操作系统让我读或写什么数据我照办就可以了,而将物理设备中的数据组织成目录、文件并赋予它们意义的,是文件系统(File System)负责的工作。文件系统是操作系统的一部分,由操作系统负责管理,不同的操作系统支持的文件系统不一样,例如较古老的FAT16/32、Windows的NTFS、OS X的HFS+、Linux的ext(ext2/3/4)等等。

那么为什么说问题出在数据的删除和覆盖上面呢?我们来看一下删除文件的时候操作系统是如何处理的吧。首先,一个文件在物理设备上是存放在多个数据块中的,这些块可以是不连续的,文件系统中会有一张表(例如FAT中的文件分配表)来管理每个文件的数据所对应的存储位置。那么,在删除的文件的时候,操作系统只要将该文件所对应的数据块在文件系统中标记为“空闲”就可以了,根本不需要实际去清除数据块中存放的数据。

结果:存储设备只知道哪些地方存了数据,但不知道这个数据到底还有没有用(因为文件删除之后,数据实际上可能还留在数据块中),数据有没有用只有操作系统才知道。

当我们需要存放新文件时,那些已经标记为“空闲”的数据块就会被当作空的数据块来使用(尽管里面实际上不是空的),对于操作系统来说,它们和原本就没有内容的空数据块是完全一样的。但这样的设计必须建立在一个前提下:

对于物理存储设备来说,“写入空白数据块”和“覆盖已有内容的数据块”所需要的操作是完全相同的。

上述前提对于传统硬盘来说是完全成立的,传统硬盘的工作方式跟磁带差不多,数据的记录是根据介质上某个记录单元的磁化方向来完成的。也就是说,在写入数据时,磁头只要将指定的记录单元(扇区)磁化为所需的状态即可,完全不必关心这个单元原本是怎样的状态。

然而,上述前提在SSD上却是不能成立的!为什么呢?因为在SSD中,只有空数据块才能直接执行写入操作;而对于非空数据块,需要先执行擦除操作之后才能进行写入。

乍看之下,SSD和传统硬盘的区别仅仅是多了一步擦除操作而已,但实际上并非如此,更要命的还在后头。在SSD中,数据存储的最小单位是页面(page),一个页面的大小一般是4KB,若干个页面又被组合成块(block),一个块的大小一般是512KB。由于硬件方面的限制,SSD单独对某个页面进行读/写的操作,但擦除操作却只能对整个块进行,也就是说,一旦擦除就必须一次性擦除整个块。想想看,如果操作系统要让SSD改写某个页面的数据,SSD需要执行怎样的操作呢:

将要改写的目标页面所在的整个块的数据读取到缓存。
在缓存中修改目标页面的数据。
对整个块执行擦除操作。
将缓存中的数据重新写入整个块中。

这就意味着,如果我要修改某个4KB大小的页面,就必须把512KB大小的整个块都折腾一遍,大家应该可以想象出这将带来何等巨大的性能和寿命上的损失。

正是出于上述原因,SSD中提供了一个TRIM命令,操作系统在删除文件时可以通过向SSD发送TRIM命令告诉它哪些数据块中的数据已经不再使用了。SSD在收到TRIM命令后,通常会在定期的垃圾收集操作中重新组织这些区块,为将来写入数据做好准备,不过每一款SSD在底层对TRIM命令的执行机制都不尽相同,但无论如何,通过TRIM能够显著改善SSD的性能和寿命。当然,大家可能已经发现了,有了TRIM,删除的文件数据会被SSD自动回收,这意味着以往在传统硬盘上能够使用的一些数据恢复(反删除)软件,在SSD上可能就不再管用了。

既然TRIM如此重要,我应该如何启用呢?一般来说,只要你所使用的操作系统支持TRIM,就无需额外的操作。支持TRIM的操作系统:Windows 7及后续版本、OS X 10.6.8及后续版本、Linux内核版本2.6.33及后续版本。

对于Windows XP用户,系统不支持TRIM,可以选择SSD厂商(如Intel)提供的软件来实现定期的垃圾回收,模拟TRIM的效果。对于Mac用户,OS X系统虽然支持TRIM,但只支持苹果自家的SSD,如果你安装了第三方品牌的SSD,系统是无法启用TRIM的,通过TRIM Enabler软件给内核打个补丁,就可以启用TRIM了。

磁盘冗余阵列

捧个钱场?