SSD断电测试这个题目,之前就想学习一下,一直没下决心。
前段时间兵哥写了一篇介绍SSD掉电测试的文章反响不错,他说是在飞机上随便写写,半个小时就搞定了。
我读的书不够多,走的路不够远,做不到他这么举重若轻,只能花笨功夫慢慢磨。
最近找到一篇还不错的paper,一帮外国友人自己设计了一套测试SSD掉电的流程,然后从市面上买了15块SSD回来跑,最后发现有13块有问题(你没有看错,13块有问题)。
首先,这群歪果仁列出了SSD掉电可能导致的问题:
1. Bit Corruption: User data里存在个别bit错误; (Cell编程未完成)
2. Flying Write: 正确的数据被写到了错误的地方; (Mapping table更新错误或缺失)
3. Shorn Write: 只写入了一部分数据; (为了提高性能,SSD可能将一个写操作分配多个Die上同步写入)
4. Metadata Corruption: 元数据(Mapping Table)损坏 (Mapping Table严重损坏)
5. Dead Device:变成砖 (Mapping table完全损坏,无法重建)
6. Unserializability: 时序乱序 — 写入操作的执行顺序与下发顺序不一致; (SSD内部的并行操作同步机制在断电时发生问题)
然而,能够让这些问题发生,和能够侦测到这些问题发生,是两回事。外国兄弟们为此特别设计了写入SSD上的Pattern,后面会解释。