注:本文内容引用自黄岩老师的微博https://weibo.com/mphy?refer_flag=1005055013,他现任云和恩墨分布式存储架构师,是一位有多年存储研发经验的资深专家。
论文阅读:A Study of SSD Reliability in Large Scale Enterprise Storage Deployments
原文地址:https://www.usenix.org/conference/fast20/presentation/maneas
这篇文章总结了NetApp的140万片SSD在用户现场的使用情况,找出了一些关于SSD故障情况的规律。总体来说,SSD的故障率比机械硬盘小太多了,1千片SSD一年更换一两片,最多5-6片。100块机械硬盘差不多就要更换这么多。
表格1(点开后可放大)
对我来说,这篇文章最重要的信息就是其中的两张表格,他们包含很多信息。文章作者的发现也是从这两张表格总结出来的。下面列出其中一些值得注意的规律:
表格2(点开后可放大)
1、SSD失效的分为三种类型:
a、彻底失效,SCSI error或者完全无响应,数据也就全丢了;
b、部分失效,写进去的数据丢了(读出来之后校验checksum不对了),读写请求超时,或者被aborted了,这类错误发生会导致丢掉部分数据,不会全丢;
c、可预测的失效,比如SSD盘内部的over-provisioning的空间用块完了,或者发生超时次数太多了,可以预见到这盘寿命到了,再不换就要丢数据了。
上面三类原因各占1/3。可以推测,第一类、第二类,多半是由于SSD盘的生产缺陷导致的,当然也有可能是软件Bug。第三类是由于Flash颗粒磨损导致的。
2、从损坏时间点上看,SSD盘不符合可靠性理论中的“浴盆曲线”。经典可靠性理论认为,一般设备损坏最容易发生在上线开始使用的初期和临近设备寿命终结的末期。因为各种制造方面缺陷导致设备的初期损坏率比较高,因为磨损导致后期损坏率比较高。但是SSD盘在上线之后很长一段时间内,损坏率都处于高位,直到一年半左右才降下来。
3、除了3D-TLC SSD损坏率稍高之外,其他颗粒类型的SSD损坏率差不多,甚至消费级别的损坏率也并不更高。
4、容量大的SSD盘损坏率更高。这个结论比较容易理解,因为容量大,Flash芯片就多,焊点就多,故障点也多,制造缺陷导致的损坏率就会更高。Flash芯片多也会导致功耗比较高,工作温度就会更高,这个可能也是损坏率高的一个原因,当然,这都是我个人猜测的,原文并没有给出原因。
5、SSD早期firmware软件Bug多,所以早期Firmware版本的SSD明显故障率高。
6、坏道多的SSD损坏率高。(这个不言而喻)
读完之后的感受是:
1、学到了不少新知识,纠正了自己很多错误认识。比如:我以前认为,SSD的LBA通过FTL转换到内部flash芯片地址,不再有一一对应关系了,就应该不会再有坏道了,看来这个认识是错误的。我对SSD损坏率的观念还停留在硬盘时代,一直有一个错误的印象,SSD盘的损坏率应该跟硬盘差不多,其实这个是错的,SSD损坏率远远小于硬盘。
2、感觉对文章美中不足的是,文章只是做一些所谓的“规律”总结,并没有给出原因。
这篇文章是FAST20的best paper。今年FAST22会议上这篇作者,也有一篇类似的文章,不过不再是研究可靠性了,而是研究Operational Characteristics,2月底就揭幕了。
作者:黄岩
原文:企业存储技术
推荐阅读
欢迎关注企业存储技术极术专栏