写在前面,我的主要工作是销售企业级存储系统的备品备件和提供一些额外的增值服务。谈到销售备件,很重要的就是备件质量了。现在SSD磁盘使用越来越广泛,对于SSD磁盘的健康度就是甲方爷爷们非常关心的一个问题。本文就是想梳理一下企业级SSD固态磁盘的健康度如何评测,估计会写成一个系列文章,本文是第一篇梳理一下基本概念和所有企业级SSD固态磁盘的基本原理和健康health 衡量指标,以后有机会会对我们focus的几个重要存储产品-DELL,EMC和NetApp,从存储OS的角度来看如何检查健康度。
科普为主,如果有理解不对的地方欢迎拍砖,加vx StorageExpert。非常底层专业的半导体技术不在我们cover范围之内,当然我也不懂。
基本概念
开始基本概念,这个对于熟悉Hard disk的传统工程师们很重要,HDD和SSD是完全不同的东西,不要使用一样的健康衡量指标。多说一句,有个国内巨大的第三方公司的采购要求就是所有磁盘的健康度都必须是100%,这就是瞎扯,根本不懂。
目前的主流SSD技术是NAND颗粒,还有NOR颗粒,用的比较少了,主要就是NAND,这个符合市场需求呀,存储密度高,擦写速度快,最重要的是成本低。
HDD磁盘存放数据的原理很简单,0和1就是通过有磁性和没有磁性来区分的。但SSD就不是这个原理了,它是通过晶体管来存放0和1的,简单理解,没有电子的时候就是1,有电子的时候就是0,与机械硬盘不同,浮栅晶体管写操作只能将“1”改写成“0”,不能将“0”改为“1”。如果想将“0”改为“1”,需要采取另外一个称为“擦写”的操作。
对于写操作,是将电子拉入晶体管的浮栅极,状态就变成了“0”。对于擦写操作则是将浮栅极中的电子拉出,这就是将其状态变成了“1”。重要概念来了,这里需要注意的是擦写操作会损伤隧道氧化层,如果隧道氧化层被完全损毁,那就失去了隔离电子的能力,这样这个晶体管就坏了。这就是为什么SSD的闪存颗粒有擦写次数限制的原因。
第二个重要概念,NAND的家族中,有不同的颗粒说法:
- SLC - Single level cell
- MLC - Multi level cell
- TLC - Triple level cell
- QLC - Quad level cell
看名字就大概知道含义了,这个1234就是一个单元可以存储1个/2个/3个/4个bit数据,简单理解就是在一个晶体管中可以存储更多的数据了。由于MLC、TLC和QLC需要严格控制电子数量,其写入动作就要繁琐很多,对应着写入速度就会变慢。同时,氧化层的寿命也会有差异,就是密度越高的寿命越短了,好处也是大大的,就是单位容量增加了,SSD容量更大了,当然单位成本就更便宜了。
下面的图可以简单清晰看到几种不同颗粒存放数据的差异。
还有一个一个问题就是,存储容量确实变大了,但是由于每个单元存储的数据变多,其擦写频率就变高了,速度也会下降,擦写对介电层的破坏是不可逆的,寿命自然就短了,但是无奈MLC以上的颗粒存储数据密度更高,单位价格就便宜便宜,所以还是有很大市场的。现在存储系统上的类似于960G,1.92T,3.84T,7.68T..... 最大好像有30T还是60T的磁盘,类似这样容量的都是TLC或者QLC去了,寿命变短了。
健康度衡量指标
在简单说明了SSD磁盘的原理以后,我们下面来到主题,如何衡量一个SSD磁盘的健康度呢?Health rate。
耐久性 - endurance:这个是SSD磁盘最重要一个衡量指标。耐久性的单位是P/E(Program/Erase)周期,也就是编程/擦写周期。由于每次擦写都会损伤浮栅晶体管的氧化层,这个指标描述了可以安全擦写的次数。下面的表是我找到的一个专业描述不同颗粒的P/E。
对比可以看出,SLC可以擦写5万到10万次,而TLC只可以安全擦写大概1千次。这个是对SSD寿命非常非常重要的一个指标。
TBW(Total Bytes Written,总写入量):灰常重要,用于衡量 SSD 可以写入多少数据。TBW是SSD的容量与P/E周期数的乘积,然后除以一个写放大因素。对于前面的乘积是很容易理解的,相当于每个单元都被擦写到极限次数了。举例来说,如果一个TLC的SSD的容量为960GB,P/E为1000,那么理论上来说可以反复写入960TB的数据。但是我们知道SSD的写数据是有最小粒度限制的,比如4KB或者8KB。所以,即使你写入1个字节的数据,那也要写4KB或者8KB的一个页。鉴于上述原因,在TBW的公式里面有有个写放大因素的系数在这里。
DWPD(Drive Writes Per Day,每日驱动器写入):这是一个衡量 SSD 每天可以写入多少数据的指标。他表示在设备保修期内,每天可以写入SSD总容量的多少倍。举个例子,如果一个400GB的SSD,如果DWPD是 3,每天可以写入1200GB的数据。但是如果此SSD设备的DWPD是10的话,那么每天可以写入4TB的数据。在EMC的存储磁盘上,这个DWPD有清晰的说明,经常可以看到有3WPD,1WPD,还有 1/2WPD的盘。EMC都是按照5年来计算的。根据这些可以反着计算出磁盘的总写入量。
下面是EMC存储磁盘的对应关系:
- 1/2 pwd 这个也叫做 sas flash 4, 也有是DWPD 的说法,7.68T和15T的SSD就是这种类型
- 1 WPD → New SAS Flash 4
- 3 WPD → SAS Flash 3 (TLC LE drives) 这个主要是 400/800/1.6T和3.2T
- 10 WPD → SAS Flash 2
- 25 WPD → SAS Flash
假设一个磁盘是 3WPD的400G SSD磁盘,使用5年,理论上总写入量TBW就应该是 400G*3*365*5=2190T
其他相关术语
SMART(Self-Monitoring, Analysis and Reporting Technology):这个无论是HDD,还是SSD都有的。这是一个硬盘健康状态监控机制,可以提供 SSD 的各种健康状态信息,包括上述的 TBW 和 PE Cycles,以及其他如通电时间、加电次数、温度、错误率等信息。我知道在HDD,很多人是可以把这个SMART信息给清除掉,这样你要的健康度都是100%了。SSD能改的我知道应该不多。
Wear Leveling(磨损均衡):由于SSD的存储单元有擦写次数的限制,SSD控制器的算法会尽量保证闪存芯片的存储单元之间均匀分配写入操作,以最大限度地延长SSD的寿命。对于存储系统来说也有磨损均衡的说明,比如一个有100块SSD的存储系统,通常也有算法保证这100块SSD的数据写入是均衡的。在存储系统中,这个存储的操作系统会处理磨损均衡的问题。当然也有一些bug会导致某些磁盘磨损更快,我知道EMC的Unity某些SSD磁盘就有这个问题,很快就到了EOL的时间,这个通过升级磁盘的firmware是可以解决的。
Garbage Collection(垃圾回收):前面介绍过,SSD的空间不能直接覆盖写,必须擦除后才能重新写数据,这就是垃圾回收的问题。
最后,到底怎么看SSD的健康度呢?有了上述这些概念,再去使用类似硬盘哨兵Harddisk Sential 这样的软件去理解health rate了。当然你也可以通过SMART指标去自己计算。
写到最后,每个存储系统都根据自己使用的磁盘的P/E,会有一套自己的健康度计算方式,和这个hard Disk Sentinel 软件出来的结果会有所不同,但不会产生趋势性的差异,就是Hard Disk Sentinel中的健康度是95%,而到了存储系统里面确变成了5%,这个是不可能的,永远不可能的。
不同厂商的SSD磁盘在SMART中的内容是不同的,但大体是差不多的,很多可以看到一个Endurance的项目,就是持久度的值,这个是很多非专业存储软件定义的健康度。
后面会针对不同的EMC,NetApp和DELL存储产品,单独来写些东西给大家,怎么去看SSD的健康度和剩余寿命等。
好了,有问题加vx StorageExpert吧。