对服务器 SSD 而言,数据丢失是非常严重的事故。为防止此类事故发生,厂商会按照每日驱动器写入次数 (DPWD) 对 SSD 进行评级,以告知购买者每款 SSD 的耐用度。这种方法看似简单,但 DWPD 值不是恒定不变的,会受到工作负载类型的影响,而现实世界中的工作负载种类繁多,不胜枚举。
2010 年,JEDEC 发布了“固态硬盘 (SSD) 耐用度工作负载”规范 (JESD219)。其目的是通过定义标准化工作负载来消除不确定性,让 SSD 制造商能够根据规范中定义的工作负载来宣传旗下产品的 DWPD。该规范的初衷很好,实际效果如何?
答案是:效果良好,但也有不足之处。单一参考工作负载的一大优势是,每款 SSD 都能以此为基准进行衡量。不足之处在于,经过 15 年的发展,SSD 的运行环境和 SSD 本身都发生了巨大变化。随着时间的推移,人们开始质疑规范中定义的 SSD 耐用度工作负载。
2010 年的企业工作负载是否仍然适用?
2010 年的时候,大多数企业存储工作负载都是围绕 HDD 构建的。那时候 SSD 刚推出不久,操作系统和应用程序在访问数据时只会考虑 HDD。当时的工作负载主要考虑大量的 4KB 以下数据访问,大多数写入数据块小于 4KB,最大写入数据块为 64KB。
下图展示了当今时代常见工作负载中的数据操作。从图中可以看出,现在已没有低于 4KB 的数据操作。写入时的数据块大小非常分散,与具体的工作负载类型有关。此外,某些工作负载的数据访问操作全部大于 64KB。
文件系统也发生了改变,主要是针对 SSD 的访问优化。如今,常见文件系统的默认块大小均为 4KB。EXT4、XFS、BTRFS 文件系统的默认块大小为 4KB。在 Linux 上新建文件系统时,默认块大小也是 4KB。
间接单元 (IU) 大小和写入放大因子 (WAF)
去年,我的同事 Luca Bert 写了一篇博客,探讨了上面提及的问题。SSD 中 DRAM 与 NAND 的容量比正在成为限制 SSD 的因素,因此业界正在考虑为大容量设备配备更大的间接单元 (IU) 大小。在文章的分析部分,Luca Bert 展示了在多种工作负载下,不同 IU 大小对写入放大因子 (WAF) 的影响。他还指出,JESD219 在测试中表现不佳,尤其是在 IU 较大的情况下。
SSD 可以向轮胎行业学习什么?
我曾与一位同事讨论耐用度工作负载,他在讨论中将 SSD 比作轮胎。受其启发,我对轮胎的耐用度进行了深入研究。在美国,轮胎公司会将轮胎在测试路面上的测试结果与交通部定义的参考值进行比较,然后对轮胎进行评级。但是,如果将主要用于正常路面驾驶的轮胎用于竞速比赛或越野赛,会发生什么情况? 它们可能不会坚持太久,因为轮胎的评级是基于典型道路情况而做出的。对于 SSD,我们也应该考虑采用类似方法,即根据更具代表性的操作条件来定义工作负载,而不是基于过时或者罕见的条件。
未来展望
在从事标准制定工作时,一个比较困难的决策是:当前标准是应该更新?保持不变?还是应该淘汰? JESD219 正在日益过时,越发不能代表“常见工作负载”。
但 JESD219 的目标仍然具有价值,即定义一个常见工作负载,整个业界可以用来衡量 SSD 的耐用度。从这个角度来看,比较好的做法是改进现有规范。可以通过以下几方面改进企业工作负载的标准:
- 降低小于 4KB 的事务在整体有效负载分布中的百分比。
- 耐用度工作负载需要考虑 IU 的大小,并根据 IU 大小进行扩展。
- 最大有效负载大小需要扩展到 64KB 以上。
在做出这三方面的改进后,并不意味着新规范能 100% 准确反映实际的每个工作负载。但我们的目标是让更新后的指标更能代表当前实际环境中的工作负载。因此,改进后的规范肯定会在未来 15 年(或更长时间)内使 SSD 消费者和生产商受益。
*感谢 Sampath Ratnam 和 John Maroney 对本文的贡献