对于企业系统的设计者来说,确保硬件性能跟上应用程序的需求是一项令人绞尽脑汁的工作。最令人头疼的性能挑战是存储 I/O。旋转介质在扩展面密度方面表现出色,但不幸的是,它永远无法跟上 I/O 需求。突破这些存储 I/O 限制最具成本效益的方法是将高性能固态硬盘(SSD)集成到系统中。
虽然我们经常在媒体上读到固态硬盘很快会将硬盘驱动器(HDD)技术驱逐到磁带存储领域,但事实是,固态硬盘技术只是最近才为企业级应用做好准备。并非所有固态硬盘都是一样的,而且极少有固态硬盘适合用作企业计算系统中的主存储设备。在媒体播放器中使用闪存与在 24/7 全天候关键任务操作中部署该技术从根本上是不同的。
随着这种新型固态设备的出现,在企业系统中使用固态硬盘的潜力已成为现实,这对系统性能产生了深远的影响。与此同时,利用固态硬盘的强大功能是困难的,甚至识别真正的企业级固态硬盘也是一项重大挑战。考虑到这些挑战,我们在本文中开发了一个框架,可用于评估固态硬盘技术并确定其企业就绪程度。
第一款企业级固态硬盘于 2007 年推出。该产品的关键架构维度之一是它结合了两种内存技术的最佳属性:闪存和 DRAM。该维度与复杂的控制器技术相结合,催生了一种全新的固态硬盘类别,适用于那些将性能作为客户使用固态硬盘而非硬盘驱动器的主要原因的市场。
现在受益于这项技术的主要应用是那些严重依赖驱动器 I/O 性能的应用——例如,在企业存储和服务器应用中,驱动器的 I/O 性能直接影响整体系统性能,并且成本是以性能而非仅以容量(成本/性能)来衡量的。在这些应用中,I/O 的增加等于最终用户收入的增加。
此类应用的两个例子是
企业级固态硬盘的另一个优点是消除了延迟。这些固态硬盘提供微秒级的访问时间,使数据访问时间更像 DRAM。凭借这种量级的响应时间,固态硬盘的行为更像主内存,但却拥有稳定磁盘存储的所有“舒适性”,例如持久性、通信协议、外形尺寸等。企业级固态硬盘原生支持长块数据传输(例如,520、524、528),这对于企业系统中的数据完整性和兼容性原因而言是强制性的。此外,由于固态硬盘的固态特性,主机系统的机械结构不会像硬盘驱动器那样引起性能损失。
实现正确的性能、容量和成本配置文件的关键是在这些驱动器中使用 NAND 闪存作为介质。DRAM 成本太高,显然不是持久性存储介质(断电时会丢失数据)。未来的存储技术声称有替代方法来满足固态硬盘的需求,但这些技术目前尚不可用,在容量扩展方面没有明确的途径,并且在可行性方面还很遥远,以至于在未来许多年甚至几十年内都不太可能被考虑用于固态硬盘设计。NAND 是最终的介质选择,但它也带来了一系列的设计挑战。
NAND 闪存使用浮栅技术,有两种类型:SLC(单层单元,意味着该技术每个存储单元可以存储一位)和 MLC(多层单元,意味着该技术每个单元可以存储多位)。SLC NAND 闪存的成本是 MLC 闪存的两倍;然而,它更可靠,并且具有更好的耐用性(写入/擦除周期)。它也比 MLC 闪存快得多(读/写速度)。
极其重要的是要注意,并非所有 NAND 来源都是相同的。虽然 SLC NAND 的理论优势和所有 SLC 设备的规格表明它们优于 MLC NAND,但现实情况是,并非所有 SLC 都像规格说明的那样。一个重要的结论是,必须勤奋地测试和筛选完全封装形式的 NAND,以及作为标准制造测试一部分的固态硬盘内的 NAND,以确保这些设备适合企业级工作周期。
在对常见的 SLC NAND 闪存特性进行概述时,该技术可以描述如下
这些不同的特性在介质管理方面造成了相当大的难题。
凭借这些 NAND 闪存特性,第一代低端固态硬盘具有以下性能特性
纯粹从性能的角度来看,最紧迫的问题是实现写入速度,特别是随机写入速度,尤其是在具有随机读取和写入的工作负载中。NAND 编程的基本原理给驱动器的写入性能带来了显著的延迟。这种现象的核心是在写入之前需要擦除块。这个过程引入了延迟,这也是笔记本电脑固态硬盘在写入方面如此缓慢的原因,特别是随机写入,尤其是在主机发送混合读取和写入时。因此,企业中典型的驱动器访问模式使得这些一维笔记本电脑固态硬盘由于架构和设计缺陷而变得毫无价值。
为了实现这些最终的驱动器级性能特性,需要与笔记本电脑固态硬盘中使用的产品架构完全不同的架构。企业级固态硬盘是一个优化的内存系统,具有复杂、紧密集成的硬件和软件。此类产品的核心是一个精密的芯片组,它执行所有重要的通信协议以及关键的介质管理。NAND 既是一种出色的介质,也是一种变化无常的介质。虽然与硬盘驱动器相比,基于 NAND 的驱动器的机械特性显然有所改进,但 NAND 具有硬盘驱动器不常见的独特可靠性挑战。正是固态硬盘芯片组和协调的制造过程最终使固态硬盘成为企业级产品。
企业级固态硬盘实现了高水平的并行闪存访问,并结合了 DRAM 和 NAND 两种内存技术的最佳组合,以实现企业应用所需的性能和可靠性。
DRAM 速度极快,但需要电力来维持数据。DRAM 设备也用于磁盘驱动器,通常用作缓存以增强性能,但当用于磁盘驱动器时,如果断电,它们会增加数据丢失的风险。对于企业级固态硬盘,DRAM 用作缓存,但驱动器增加了备用电源,因此当电源关闭时,设备有足够的剩余电力将 DRAM 中的数据写入闪存(类似于笔记本电脑上的休眠功能)。
企业级固态硬盘在驱动器内部使用相对较大的 DRAM 容量(在千兆字节范围内)。DRAM 的使用有助于系统克服 NAND 的最大缺点,最显着的是随机写入性能。它允许固态硬盘收集随机写入,并利用 NAND 良好的性能特性(相对良好的顺序写入)以非常高的速度写入数据。有人可能会对使用 DRAM 技术持怀疑态度,因为写入闪存的所有数据都将变成随机数据,但正如前面解释的那样,NAND 闪存具有非常好的随机读取特性。
通过将 DRAM 与备用电源结合使用,驱动器可以有效地创建一个非常快速的非易失性存储设备,它可以实现比机械驱动器快 150 倍的访问时间和延迟。这是固态硬盘的独特特性之一,无论并行使用多少机械磁盘驱动器都无法模拟。
为关键任务应用获得合适的可靠性水平需要驱动器保持完美的数据完整性,防止任何数据丢失或元数据损坏,否则将阻止驱动器在断电后重新启动。为了实现这一点,企业级固态硬盘必须在驱动器内部具有完整的数据路径保护。虽然此功能目前已在企业级硬盘驱动器中使用,但仅在一个固态硬盘中实现。图 2 显示了企业级固态硬盘的显着架构特征,包括所有完全受保护的内部数据流。
除了数据路径保护之外,驱动器还必须以协调的方式实现媒体管理的三个支柱
广泛的完整数据路径错误检测/纠正。 固态硬盘中一个有趣的现象是,错误发生率随着利用率呈指数增长;这意味着随着驱动器被使用,驱动器需要付出越来越多的努力来进行纠正。最终,来自介质的所有读取都需要纠正,这需要广泛而深入的 ECC(错误纠正校验)覆盖。在驱动器生命周期的后期良好地执行此类 ECC 而不影响系统级性能是一个重要的设计挑战,只有企业级固态硬盘才能解决。
磨损均衡。 固态硬盘控制器逻辑主动将写入操作存放到 NAND 阵列中的最佳物理位置,以使没有块不均匀或过度磨损。这是一个微妙的平衡,因为驱动器需要足够的有源磨损均衡来确保均匀的驱动器磨损,但驱动器不得引起过多的不必要的数据移动,否则可能会因过度重写数据而过度使用(请参阅本文后面关于写入放大的部分)。
坏块管理。 坏块管理的过程涉及主动测量整个 NAND 阵列中每个独立块的活力,以确保将坏块从轮换中移除并用好块替换,从而确保没有数据进入损坏的块。企业级固态硬盘实现了具有多重筛选的坏块管理算法,以确定块的健康状况并优化块的可用寿命,使其在轮换中保持足够长的时间,以提取最大可用寿命,而不会危及可靠性或性能。
固态硬盘的一个令人担忧的领域是驱动器在为内务处理(管理 NAND 块的使用和磨损所需的后台操作,如前所述)移动数据时可能发生驱动器损坏。驱动器必须不断跟踪和管理 NAND 阵列的物理利用率,以确保主机从驱动器获得最大的活力。此过程由硬件和固件运行,因此功效和可靠性因供应商而异。
需要评估的两个关键领域是
此固态硬盘内务处理过程的最后一个方面是,市场上大多数未针对企业应用优化的固态硬盘都存在性能问题,因为后台 NAND 管理过程最终成为前台瓶颈。笔记本电脑类别的固态硬盘需要从繁重的企业工作周期中获得缓解(以空闲时间的形式),以便进行 NAND 的内务处理。企业应用需要驱动器 24/7 全天候保持高性能,因此不允许空闲时间。
企业级固态硬盘中实施的另一项重要技术是 NAND 容量的过度配置,这是实现最佳性能和可靠性的重要手段。在企业中,不能容忍驱动器中出现变化的性能。驱动器不能期望有可用的空闲时间作为执行关键任务的便利。在驱动器内部拥有额外的 NAND 将允许驱动器执行关键的内务处理任务作为后台操作,然后在后台清理和准备后合并准备好的块。如果实施得当,此技术可显著减少写入放大并优化性能。
虽然思考一种驱动器技术相对于另一种驱动器技术的纯粹性能提升是很棒的,但现在让我们关注这对系统级别产生的深远影响。固态硬盘技术不仅极大地提升了系统级性能,而且还解决了数据中心最紧迫的问题之一:降低功耗。
企业级固态硬盘具有性能和节能的引人注目的组合,这使得该技术成为存储技术领域的重要组成部分。图 3 展示了这种节能效果,比较了为 STEC 企业级固态硬盘和典型企业级硬盘驱动器提供 135,000 IOPS 的功耗要求。
重要的是要注意,固态硬盘在小型随机传输中具有出色的性能,其中性能在 512 字节、1 KB、2 KB、4 KB 和 8 KB 随机读取和写入方面进行了优化。一旦您确定了固态硬盘将在存储层次结构中扮演的适当角色,就可以通过多种方法来调整系统访问模式,以实现最佳性能和可靠性。
关键之一是实现传输大小的适当对齐,这因产品而异。因此,您必须深入了解固态硬盘供应商,才能实施最佳技术来帮助实现最佳性能和可靠性。
在兼容性方面,企业级固态硬盘将在系统中无缝工作,作为硬盘驱动器的直接替代品。所有上述功能都在驱动器内部完全运行;固态硬盘不依赖于主机端文件系统来执行所有精密的介质管理方案。各种 OEM 厂商将开发独特的方法来优化系统级代码以提取最佳性能,但主机无需修改驱动器的寻址方式。
为了提取最大的系统级性能优势,关键是将固态硬盘用作高性能存储层。随着存储技术的分层普及(即,将 FC 硬盘驱动器用作 Tier 1,将 SATA 硬盘驱动器用于 Tier 2 和更低级别,并将磁带用于存档),企业级固态硬盘提供了前所未有的性能配置文件;因此,它们提供了一个全新的性能层。企业级固态硬盘提供的性能更像主内存,因此它们可以用作主内存的替代品,正如 Sun Microsystems 在其 ZFS 加速设计中所实现的那样。固态硬盘也可以用于替换多个高性能硬盘驱动器,正如 EMC 在其 Symmetrix 系统中所实现的那样。惯例是将企业级固态硬盘称为 Tier 0。图 4 显示了一个示例存储架构,其中企业级固态硬盘位于 Tier 0 位置。
企业存储和服务器 OEM 厂商普遍采用固态硬盘,以实现应用程序需求、处理器利用率和成本的最佳平衡。显然,固态硬盘技术正在成为需要改进关键任务应用程序交付,同时控制成本和简化管理的公司首选解决方案。然而,并非所有固态硬盘都是一样的:要真正成为企业级产品,驱动器的设计必须考虑到闪存的性能和可靠性细微差别。未能反映这些细微差别的驱动器将会令人失望,因为它们的性能会很差并且会过早失效——但那些围绕闪存设计的驱动器将使该技术充分发挥其颠覆性潜力。
MARK MOSHAYEDI 是 STEC 的总裁兼首席技术官,他在该公司工作了 16 年多。在此之前,他曾在德州仪器、索尼和富士通等多家公司担任从工程到销售的各种职位。在他的职业生涯中,他专注于存储和内存技术。他获得了加州大学欧文分校的电气工程学士学位和佩珀代因大学的工商管理硕士学位。
PAT WILKISON 是 STEC 的营销和业务发展副总裁。他负责 STEC 的产品,从定义到引入再到管理。他还负责新市场开发。他获得了西点军校的系统工程学士学位和南加州大学的工商管理硕士学位。
最初发表于 Queue 第 6 卷,第 4 期—
在 数字图书馆 中评论本文
Pat Helland - 关注你的状态,为了你的心理状态
应用程序在进入分布式和可扩展的世界的过程中,经历了一个有趣的演变。类似地,存储及其表亲数据库也与应用程序并肩变化。很多时候,存储和应用程序的语义、性能和故障模型都在微妙地跳舞,以支持不断变化的业务需求和环境挑战。向组合中添加规模确实引起了轰动。本文着眼于其中的一些问题及其对系统的影响。
Alex Petrov - 现代存储系统背后的算法
本文更仔细地研究了现代数据库中使用的两种存储系统设计方法(读取优化的 B 树和写入优化的 LSM(日志结构合并)树),并描述了它们的使用案例和权衡取舍。
Mihir Nanavati, Malte Schwarzkopf, Jake Wires, Andrew Warfield - 非易失性存储
对于大多数执业计算机科学家的整个职业生涯而言,一个基本的观察结果一直成立:CPU 的性能和成本都远高于 I/O 设备。CPU 可以极高的速率处理数据,同时为多个 I/O 设备提供服务,这一事实对各种规模系统的硬件和软件设计产生了广泛的影响,几乎从我们开始构建它们以来就一直是这样。
Thanumalayan Sankaranarayana Pillai, Vijay Chidambaram, Ramnatthan Alagappan, Samer Al-Kiswany, Andrea C. Arpaci-Dusseau, Remzi H. Arpaci-Dusseau - 崩溃一致性
数据的读取和写入是任何冯·诺依曼计算机最基本的方面之一,但却出人意料地微妙且充满细微差别。例如,考虑在具有多个处理器的系统中访问共享内存。虽然一种称为强一致性的简单直观方法最容易让程序员理解,但许多较弱的模型也得到了广泛应用(例如,x86 总存储排序);这些方法提高了系统性能,但代价是使系统行为的推理更加复杂且容易出错。