随着SSD应用的越来越广,我们的台式机、笔记本甚至服务器都被SSD占领。你有没有想过一个很细思极恐的问题:红旗到底能打多久——SSD硬盘能用多久?我们的数据安全吗?
根据我们前文杂谈闪存二:NOR和NAND Flash
我们知道NAND Flash单元的寿命是由擦写(P/E)次数决定的,而目前大部分的SSD都是由MLC颗粒组成,一般的MLC只有3000次擦写寿命。如下图:
幸亏我们有FTL,提供了写平衡,整体SSD的寿命才没有仅仅3000次写操作。那么究竟我们写入多少数据才会把SSD写坏呢?
这个实际上和很多因素有关:容量的大小,OP的大小,主控的算法等等。很多SSD产品在出厂说明中都有标有品保的最大写入量,如Intel的 240GB 335系列,标称的最大写入量是22TB。据统计,平均硬盘写入量年均1500GB~2000GB, 我们做个简单的计算就可以知道可以用多久:22/2= 11年,似乎还不错。
Wait a Minute! 如果你把SSD硬盘用来做BT下载,假设我们以10MB/s的速度下载,一天就会下载10 × 60 × 60 × 24 / 1024 = 843GB,22 × 1024 / 843 = 26 天,还不到一个月!如果你是个勤奋的程序员,在进行Android/ target=_blank class=infotextkey>安卓手机开发,为了build快点,你把程序放到SSD上并每过一个小时做一次clean build同时产生10G临时文件,那么你的SSD可以用 22 × 1024 / 240 = 94天!太糟糕了!当然,这些都是理论最差情况,实际情况是这样吗?
TechReport上有一期文章(The SSD Endurance Experiment: They're all dead) 作者找了5块市面上常见的SSD,它们是Corsair Neutron GTX 240GB, Intel 335 Series 240GB, KingstonHyperX 3K 240GB, Samsung 840 Series 250GB, and Samsung 840 Pro 256GB。
作者通过诙谐的文笔,详细描述了通过持续不断的写入数据,实际测试SSD硬盘的可靠性,推荐读者详细阅读。
我们这里就描述一下结论。首先要提的是所有的SSD都可以写入数百TB。在写入100TB数据以后,它们都安然无恙,这是一件了不起的事情,要知道,这远远超过它们所标称的写入量。
测试结果如下图:
写入200TB后,最先出问题的是三星的840系列,它已经出现可以记录的坏块。这和它是唯一的TLC(1000次P/E)是分不开的。在300TB后出现不可修正错误,严重影响了数据可靠性,应该被立刻换下。如果继续,在900TB就彻底挂掉了。
Intel的335表现比较平稳,在600TB出现问题后,在700TB后,SMART信息就发出了失败警告,但是使用起来仍然一切正常,闪存单元也几乎都是完整的。继续写入,仅仅只过了50TB,也就是到达750TB,最终就崩溃了。金士顿的HyperX 3K,在写入近800TB死掉,而海盗船则表现异常优秀,在1.1PB前都表现平稳。只有在1.2PB才由SMART报告大量错误,在重启后,就不认盘了。
我们以Intel 335为例再来算一下,BT用户可以用600TB × 1024 / 843 = 728天,程序员可用 600TB × 1024 / 240 = 2560天=7.11年,普通用户可以用600TB/2 = 300年!情况十分乐观!
NAND的数据存储是把电子禁锢在Gate里,这个可怜的囚徒会不会在无人监管时逃出来呢?就是说,我们把SSD断电放在柜子里,数据会不会丢失呢?
这个并不是多虑,实际上,温度越高,电子越活跃,越有可能跑掉一部分,当很多电子跑掉后,数据就有可能丢失。实际上JEDEC组织早已对SSD定下了标准,如下图:
即消费品在掉电情况下,在30度室温中需要保证1年数据不丢失。它的来源是一份Intel的研究报告:
在30度情况下,数据经过52周即有可能出现数据丢失。如果我们把温度提高到55度,2周数据就有可能丢失!多么可怕的数字。
当然这是最低标准,而且要求很破旧的SSD都要遵守的原则。实际情况会好的多,但是也为我们敲响了警钟:SSD放着不动,数据可能会丢失的!
看了这么多的数字,我们能得出什么结论呢?
1. SSD作为一般用途不需要担心使用寿命的问题,但是千万不要把它当作BT等下载盘!
2. SSD不适合作为冷数据备份用途,还是磁带/硬盘等比较合适,毕竟SSD这么贵,经济上也划不来。还有不要把SSD放在暴晒的汽车内置之不理,数据可是无价的。
3. 如果妥善使用SSD,SSD还是十分可靠的。
4. SSD挂掉之前会有很多坏块产生,我们需要在发生坏块的时候就开始进行数据迁移。不要等不认盘的时候,就后悔晚矣。