SSD即固态硬盘(Solid State Disk或Solid State Drive),也称作电子硬盘或者固态电子盘,是由控制单元和固态存储单元(DRAM或FLASH芯片)组成的存储设备,目前支持SATA、FC、SAS接口,可以替代普通的机械硬盘。
SSD盘根据容量、可靠性和性能的要求分为SLC SSD和MLC SSD,SLC主要应用于服务器、工作站、存储等高可行性环境中,MLC主要应用于桌面PC可靠性要求不高的环境中。
相比传统的机械硬盘,SSD硬盘拥有如下优点:
数据存取速度快。因为全部采用了闪存芯片,所以SSD固态存储器内部不存在任何机械部件,SSD在密集的IO读写和低延迟方面与传统硬盘对比性能优异。
故障率低。防震抗摔是SSD的一个特点之一,因为全部采用了闪存芯片,所以SSD固态存储器内部不存在任何机械部件,这样即使在高速移动甚至伴随翻转倾斜的情况下也不会影响到正常使用,而且在笔记本电脑发生意外掉落或与硬物碰撞时能够将数据丢失的可能性降到最小。
绿色环保。固态存储器工作时静音(固态存储器因为没有机械马达和风扇,工作时噪音值为0分贝)、发热量小、散热快。
重量更轻。固态存储器在重量方面更轻,有利于移动设备的携带。
在目前HDD机械硬盘容量每年增速较慢,读写速度10年来基本上没有增加,而处理器的速度已经是按莫尔定律成倍的增加,HDD硬盘存储介质已经成为计算系统的瓶颈,而SSD随着半导体工业的发展,Flash集成度愈来愈高,成本不断下降,在采用多通道并行等技术下,SSD盘以其读写速度快、绿色省电和无机械部件可靠性高,在高端服务器、存储和便携机中愈来愈广泛使用。
2.SSD的分类
SSD主流的产品目前有SLC和MLC两种,两种产品的主要差别在于擦写次数和性能。
SLC全称单层式储存(Single Level Cell),是指一个Block(块,Flash的基本存储单元,也可称为Cell)只有两种电荷值,高低不同的电荷值表明0或者1,因为只需要一组高低电压就可以区分出0或者1信号,所以SLC最大的驱动电压可以做到很低,传统的双电压卡或者低电压版本卡片肯定采用SLC类型的NAND Flash芯片。
SLC因为结构简单,在写入数据时电压变化的区间小,所以寿命较长,传统的SLC Flash可以经受10万次的读写,因此出现坏Block的几率较小,因为存储结构非常简单,一组电压即可驱动,所以其速度表现更好,目前所有的超高速卡都采用SLC类型的Flash芯片。
MLC(多层式储存—Multi Leveled Cell)是种充分利用Block的技术,它采用较高的电压驱动,通过不同级别的电压在一个Block中记录两组位信息(00、01、11、10),这样就可以将原本SLC的记录密度理论提升一倍。不过MLC除了同制程、同晶圆面积时理论大一倍的记录空间外,存在一些先天的弊端,比如说电压区间更小,Flash就需要更多的CRC校验空间,这会大概占据Block中10%的空间,因此实际使用中同制程同晶圆面积的MLC的容量不到SLC的一倍。
因为电压变化更频繁,所以MLC技术的Flash在寿命方面远劣于SLC,官方给出的可擦写次数仅为1万次,这是MLC最要命的一个缺点。
MLC技术的Flash还有一个缺点,它的读写速度先天不如SLC,一个Block存储两组位数据,自然需要更长的时间,这里面还有电压控制、CRC写入方式等因素需要考虑。
3. SSD技术解析
NAND FLASH 损耗均衡算法(Wear Leveling)
因为闪存的写操作的次数是有限制的,如果针对某些单元进行过10万次写操作,那么后续这些单元的写入可靠性则无法保证,有些单元则可能会失效,例如有些管理数据系统日志等改写频繁,而某些静态文件数据却几乎从不改写。如不加控制,部分块就会因反复多次擦除而提前损坏,而部分块还未被改写过,以至影响SSD盘的使用寿命,为解决此问题,使用写操作均匀分布到各闪存单元上,从整体上做一个平衡,以避免个别单元失效,损耗均衡算法(Wear Leveling)就是为解决此问题而广泛采用的算法。
Wear Leveling就是提供一个块映射机制, 把写入损耗分散在不同的块上, 不会导致某些块先被写坏而使整个SSD盘失效,而是把在预期寿命前失效的块, 会有一些保留块来替代, 这个算法使得整个设备的寿命跟Flash的最大寿命在同一量级。
一般为实现损耗均衡算法(Wear Leveling)会采用一种基于页的文件存储算法,闪存物理地址和逻辑地址之间并没有一一对应的关系。当固态硬盘收到数据写入请求时,并不会循规蹈矩的按顺序进行写入,而是找到最少写入的单元写入。因而,在为写入数据动态分配物理块时,会根据各块的使用情况不同分配相应的优先级,从而均衡整个存储器各单元的使用寿命。
多通道技术
由于目前Nand Flash的数据总线为8bit,最大能提供25MB/s的读速度和3MB/s的写速度,显然SSD如果提供此速度是用户无法接受的,目前SSD控制器普遍采用多个通道同时并行操作多片Flash,类似RAID0,这样读写速度得到了极大地提高,如下图所示:
纠错管理与映射机制
SSD控制器会监测和校验读写Flash的数据,以确保对数据操作的成功,并内置纠错冗余数据,防止基于闪存设备的个别单元数据丢失造成整个数据块丢失。
SSD的映射机制一般采用基于页的文件存储算法,闪存物理地址和逻辑地址之间并没有一一对应的关系。当固态硬盘收到数据写入请求时,并不会循规蹈矩的按顺序进行写入,而是找到最方便写入最快的位置进行写入,以提高写入速度。
通常检测工作通过片上状态寄存器和特定的硬件部件来校验写操作和擦除操作是否成功,校验工作通过回读写入数据与用户数据进行比较来完成。当写操作失败时,系统并不将错误简单的反馈给用户,而是通过块重映射机制,另外分配一个空闲块重新执行写操作,由于SSD在设计的时候,已经预留了一部分Flash用于临时存储数据和坏块替换使用,再加上Flash芯片对擦写次数有限制,读没有次数限制,这样即使某些块被写坏了,也不会影响到整个SSD的使用寿命。因此,SSD通过自动校验来预防错误发生,个别单元读错误可以通过纠错来恢复数据,确保数据的完整性,逻辑地址与物理地址的映射机制,解决了写物理区块错误问题,同时在损耗均衡算法中也需要逻辑地址与物理地址的映射机制来实现。
4. SSD应用环境
SSD盘相对于普通机械硬盘的特点是顺序和随机读取数据性能一样,且响应时间小于1毫秒,无机械部件,可靠性高。通过仔细研究分析测试多个厂家的SSD盘后,H3C为与万兆存储配合使用和发挥最好的性能,选用了高可靠性和高性能的SLC SSD盘,每个盘读性能能达到250MB/s,每个磁盘的写性能能达到170MB/s,在4 KB块读的情况下,每个盘可以达到35KIOPS, 在4 KB块写的情况下,每个盘可以达到3.3KIOPS。
SSD盘性能和可靠性都很高,但价格相对也较高,而且容量偏小。这就决定了SSD比较适合随机读比例较高,响应时间有较高要求的应用场合,主要包括如下:
数据库环境。数据库的数据盘一般是小数据块的随机读写,响应时间要求较高,容量在2TB以下的占绝大多数,采用SSD盘组成的RAID5既可以提供很高的IOPS又最大限度地利用其容量。
高性能集群系统的共享数据盘。在集群系统中需要共享大量数据,且数据需要被各节点频繁访问,要求响应速度快,在此系统中通过采用SSD盘后,可以极大地减少各节点的访问共享盘的待定时间,提高其性能。
原创文章,作者:大柱,如若转载,请注明出处:SSD固态硬盘常用技术和特性解读让更多人理解固态硬盘到底快在哪儿!