logo-micron
Microchip background

特色文章

NVMe: 适用于哪些领域?

评测人员一直都对 Micron 9100 赞不绝口。 作为他们中的一员,我非常赞同他们的评价,因为我曾亲自测试 9100 PRO 并目睹了它的超高性能,当时我几乎想去找台灭火器,真怕它会着起火来。但即使 9100 再出色,它也无法解决所有问题,本文将讨论非常适合使用基于 NVMe 的 9100 的几个关键领域。让我们来探索这些领域,借助 9100 让这些应用更上一层楼。

但首先,我们要花两分钟时间了解一下 NVMe。我们已经有了 PCIe SSD,为什么还需要这种名为 NVMe 的新技术呢?NVMe 是一项协议,而不是连接器或接口,弄清楚这一点非常重要。我们的所有 NVMe 硬盘都要通过 PCIe 连接到服务器。上一代 PCIe 硬盘(例如 Micron P420m)通常使用名为高级主机控制器接口 (AHCI) 的协议。AHCI 是专为 SATA 磁盘控制器而设计的,这意味着它有两次跳跃:命令先从主机(对客户经理而言就是“计算机”)发送到控制器,然后控制器再将命令发送到硬盘。数据流的方向则与之相反。这两次跳跃会导致长时间延迟,即使发生在同一 PCIe 硬盘上也不例外。请记住,延迟的是时间,而时间就是金钱,谁也不希望在 AHCI 的两次跳跃上浪费金钱。NVMe 消除了这两次跳跃,存储设备本身直接从主机(记住:主机 = 计算机)接收命令,因此可以更快地进行操作。我们应该记得,硬盘直接基于 PCIe 还可以消除控制器和硬盘之间的慢速 SATA(或 SAS)连接,从而消除更多延迟,并显著增加主机和硬盘之间的带宽量。

所以说,NVMe 的速度很快,真的非常非常快!那么,我们为何不能将其用于所有领域呢?因为现代服务器架构中存在的一些限制否决了这种可能性。首先,PCIe 设备通过直接连接到 CPU 实现快速性。每个 9100 硬盘使用 4 个第 3 代 PCIe 通道。想一想常见的英特尔 E5-2600 v4 (Broadwell) 系列 CPU,其中每个 CPU 最多支持 40 个 PCIe 通道。这意味着在双 CPU 服务器中,PCIe 通道不能超过 80 个。另外再减去用于以太网和所连接的其他外围设备的通道,用于存储的通道一般不能超过 40 个。这意味着,任何给定服务器中的 NVMe 硬盘数量都不能超过 10 个。现代 NVMe 硬盘(Micron 7100 系列低功耗 NVMe 硬盘除外)的功耗也会限制每台服务器的设备数量。最终结果是,所有服务器供应商在任何服务器中都最多配备 4 个 NVMe 插槽(U.2,2.5 英寸外形规格,位于服务器正面),只有一家供应商例外(有一家供应商为 NVMe 提供了 24 个非常酷的硬盘系统,但这些硬盘系统使用 PCIe 交换机,这意味着每个 NVMe 硬盘可以使用的带宽要少得多)。 所以,我们基本上只能在每台服务器上配备四个快速硬盘。我们能用这些硬盘来做什么呢?以下是一些使用案例:

  1. 视频转码。想一想互联网上的各种视频。如果你看过 YouTube 上的猫咪视频,想想会有多少人在各种设备上观看视频。如今,视频和内容领域的新老参与者针对各种设备提供了各种格式。例如,通过蜂窝网络在智能手机的小屏幕上观看猫咪视频,以及通过有线电视公司点播频道选择同一个精彩的摄影作品并在 65 英寸 4K 液晶电视上观看,这两种观看体验不可同日而语。创建各种视频格式是一项紧张的工作,需要大量的存储带宽,并且 I/O 延迟会大大减慢该过程。这正是非常适合使用 NVMe 硬盘的案例。
  2. 实时数据捕获。这种应用在研究及其他领域很常见,在制药或油气勘探过程中,都会使用显微镜等工具或传感器快速收集数据。在快速存储这些信息的同时为下一次数据流动做好准备,这一点非常重要,在大型(1TB 以上)数据集中搜索数据以进行分析时,实现超低延迟的搜索也同样重要。在这一领域,存储的延迟较低意味着能够更充分地利用极其昂贵的设备,并大大加快获取数据处理结果的速度。
  3. 缓存或文件系统日志记录。许多依赖于网络的大型分布式系统都利用本地缓存来实现对数据的快速访问并显著提高系统性能。例如,CEPH 系统使用所谓的“日志”(记住这个词,你还会看到它),这是一个高速存储位置,用于吸收写入内容,使它们能够在降级存储到速度较慢的存储介质中之前获得客户端确认,这可能会跨过一次网络跳跃。VMware vSAN 也是这么做的,但它无法保证在没有网络跳跃的情况下完成写入,即便如此,写入缓冲层中 NVMe 硬盘的高带宽和低延迟仍然让它获益良多。其他应用包括用于实现服务器端数据局部性的 Datagres、Microsoft Storage Spaces 缓存层以及 Linux 上的 dm-cache(支持将 NVMe 用作任何本地或远程 SAN 块存储设备前面的缓存缓冲器)。
  4. 数据库日志。我说过你会再次看到“日志”这个词,现在它又出现了。在所谓的传统数据库环境中,数据库服务器通过日志吸收写入内容,然后,在客户端确认写入内容之后,再将写入内容提交到完整数据库中。最好的做法是使用速度最快、延迟最低的可用存储来作为日志卷。尽管许多数据库仍继续使用 SAN 存储,但本地的单实例数据库已经大规模东山再起。例如,Microsoft SQL Server 专注于单服务器数据库已有很长一段时间了。这并不适用于集群应用(例如 Oracle RAC),但当通过在主要主机和备用主机之间传送日志来保护数据库时,使用 NVMe 存储日志会对性能产生巨大的积极影响。即使在网络延迟通常远长于存储延迟的镜像数据库中,向镜像服务器上的日志提交数据所花费的时间也有所缩短,这对整体系统性能影响重大。
  5. 数据库。我们刚才不是讨论过数据库了吗?好吧,我们确实讨论了数据库,但我们讨论的是数据库日志,介绍了使用 NVMe 作为驻留在其他存储上的数据库前面的日志卷。虽然有很多大型数据库,但也有很多数据库的规模处于可管理范围内,且远低于 9100 的最大容量(目前为 3.2TB)。在这些案例中(同样,通过在服务器之间传送日志来处理 HA),将整个数据库(很可能没有单独的日志卷)迁移到 NVMe 可以带来巨大的性能优势。NVMe 的使用案例还有很多,但作为入门应用,以上几种应当足够了。不断寻找良机来使数据更靠近 CPU 并显著缩短向存储读写数据所需的时间,这将会大幅提升应用级别的性能。请记住,我们生活在一个有趣的时代;过去,实现 4TB 存储空间和 75 万 IOPS 需要多个机柜,而且每一步都会遭遇延迟障碍。而现在,只需一个设备就能实现这一切,且延迟只有约 30 微秒。

NVMe 的使用案例还有很多,但作为入门应用,以上几种应当足够了。不断寻找良机来使数据更靠近 CPU 并显著缩短向存储读写数据所需的时间,这将会大幅提升应用级别的性能。请记住,我们生活在一个有趣的时代。过去,实现 4TB 存储空间和 75 万 IOPS 需要多个机柜,而且每一步都会遭遇延迟障碍。而现在,只需一个设备就能实现这一切,且延迟只有约 30 微秒。