
简而言之:在直接比较 NVMe over TCP 与 iSCSI 时,我们看到 NVMe over TCP 在所有类别中都超过了 iSCSI,IOPS 提升高达 50%(甚至更多),延迟改善最多可达 34%。
随着数据的增长,存储需求也必须增长。这时,远程附加的 SAN(存储区域网络)系统便应运而生。到目前为止,这些系统通常通过三种协议中的一种进行连接:光纤通道(Fibre Channel)、Infiniband 或 iSCSI。然而,后者被认为是“低端”选择,无需特殊硬件即可操作。基于 Fabrics 的 NVMe(NVMe over Fabrics,NVMe-oF),尤其是作为 iSCSI 继任者的 NVMe over TCP (NVMe/TCP),正在崛起,逐渐取代这些传统协议,并带来延迟、吞吐量和 IOPS 的即时改进。

iSCSI:简短的历史课

iSCSI 是一种协议,用于将远程存储解决方案(通常是硬件存储设备)连接到存储客户端。后者通常是没有本地存储或仅有极少存储的服务器,或是虚拟机。近年来,我们也看到 iSCSI 被用作容器存储的后端。
iSCSI 代表互联网小型计算机存储接口,它将标准的 SCSI 命令封装在 TCP/IP 数据包中。这意味着 iSCSI 可以通过普通的以太网网络工作,无需像网络卡(NIC)和交换机等专用硬件。
iSCSI 标准首次发布于 2000 年初。那时的世界与今天大不相同。你还记得 2000 年时手机是什么样的吗?
尽管那时已经有了首批基于闪存的系统,但价格依然昂贵,存储系统仍以旋转磁盘为设计核心。记住这一点,稍后我们会回到这一话题。
什么是SCSI?
SCSI,或者你猜对了,它是小型计算机存储接口(Small Computer Storage Interface),是一组用于连接计算机与外围设备之间传输数据的标准。SCSI最初开发于1980年代,已成为数据存储接口的基础技术,支持各种设备类型,主要是硬盘、光驱和扫描仪。
尽管SCSI在不断改进,并为像NVMe这样的技术添加新命令,但它的基础依然根植于1980年代初期。然而,许多标准仍然使用SCSI命令集,比如SATA(家用计算机)、SAS(服务器)和iSCSI。
什么是NVMe?
非易失性内存表达(NVMe)是一种现代的基于PCI Express(PCI-e)的存储接口。NVMe的原始规范可追溯到2011年,专门为通过PCIe总线连接的固态硬盘(SSD)设计。因此,NVMe设备直接连接到CPU和总线上的其他设备,从而增加吞吐量并减少延迟。与传统存储接口相比,NVMe显著减少了延迟,并提高了每秒输入/输出操作次数(IOPS)。
作为NVMe标准的一部分,还开发了其他规范,例如传输规范,定义了NVMe命令的传输方式(例如,通过PCI Express总线,也包括网络协议如TCP/IP)。
旋转硬盘与NVMe的根本区别
传统的旋转硬盘驱动器(HDD)依赖于物理旋转的盘片和可移动的读写头来写入或访问数据。当请求数据时,机械部件必须物理地定位到盘片堆栈的正确位置,这导致了10-14毫秒的显著访问延迟。
闪存存储,包括 NVMe设备,取消了机械部件,改为使用NAND闪存芯片。NAND仅通过电子方式存储数据,访问延迟低至20微秒(在超高端设备上甚至更低)。这使得它们比HDD硬盘快100倍。
长时间以来,闪存存储的一个巨大缺点是存储容量有限。然而,随着公司推出更大容量的设备,这一缺点正逐渐消失。例如,东芝最近宣布了一款180TB的闪存存储设备。
第二个重要缺点是成本,但随着研发和生产的进步,成本也在逐步下降。像QLC NAND这样的技术提供了出色的存储密度,同时价格也相当实惠。
那么,为什么我要提到机械存储和电子存储的原理呢?原因很简单:访问延迟。SCSI和iSCSI从未为超低访问延迟设备而设计,因为在它们开发时这类设备并不存在。虽然在这些年来对协议进行了某些调整,但它们的基础设计已经过时,无法因向后兼容而进行更改。
NVMe over Fabrics:网络上的闪存存储
NVMe over Fabrics(也称为 NVMe-oF)是NVMe基础规范的扩展。它允许通过网络传输访问NVMe存储,同时保持本地NVMe设备的低延迟和高性能特性。
NVMe over Fabrics本身是多个子规范的集合,定义了多个传输层协议。
- NVMe over TCP:NVMe/TCP利用常见的互联网标准协议TCP/IP。它可以部署在商品化的以太网网络上,并与现有的网络流量并行运行。这使得NVMe over TCP成为iSCSI的现代继任者,继承了iSCSI未能覆盖的部分。因此,NVMe over TCP是完美的解决方案,适用于通常仅提供TCP/IP网络的公共云存储解决方案。
- NVME over Fibre Channel:NVMe/FC基于现有的光纤通道网络架构。它通过光纤通道数据包传输NVMe命令,并使得现有的光纤通道硬件得以重用。由于光纤通道设备的高初始成本,我不建议用于新的部署。
- NVMe over Infiniband:像NVMe over Fibre Channel一样,NVMe/IB利用现有的Infiniband网络隧道传输NVMe协议。如果你有现有的Infiniband设备,NVMe over Infiniband可能是你的选择。但对于新的部署,初期成本太高。
- NVME over RoCE:NVMe over Converged Ethernet是一种使用以太网架构进行远程直接内存访问(RDMA)的传输层。要使用NVMe over RoCE,你需要支持RDMA的网卡。RoCE有两个版本:RoCEv1是二层协议,不可路由;RoCEv2则使用UDP/IP,并且可以跨复杂的网络进行路由。NVMe over RoCE的扩展性不如NVMe over TCP,但提供了更低的延迟。
NVMe over TCP与iSCSI对比
在比较NVMe over TCP与iSCSI时,我们可以看到在三个主要指标上都有显著的改善:延迟、吞吐量和IOPS。

Blockbridge的团队对这两种技术进行了广泛的对比,结果表明,无论是哪种基准测试,NVMe over TCP的表现都优于iSCSI。
我将在这里提供最关键的基准数据,但我建议你在这里阅读完后,阅读完整的基准测试文章。
好了,让我们深入了解NVMe over TCP与iSCSI基准测试的实际情况。
编辑注:我们的开发者倡导者Chris Engelbert最近在都柏林的SREcon上做了一个关于NVMe over TCP与iSCSI性能的演讲,这也促成了这篇博客文章。你可以在这里找到完整的 演讲内容:NVMe/TCP让iSCSI看起来像Fortran。
网络存储基准测试
评估存储性能涉及比较四个主要的性能指标。
- IOPS:每秒处理的输入/输出操作次数
- 延迟:完成单次输入/输出操作所需的时间
- 吞吐量:单位时间内传输的数据总量
- 协议开销:通信协议所需的额外处理
编辑注:关于延迟、吞吐量和 IOPS,我们有一篇详尽的博客文章深入探讨了这些指标的必要性、它们之间的关系,以及如何计算它们。
全面的性能测试涉及模拟工作负载,这些负载模拟了实际世界中的场景。为了简化这一过程,基准测试使用像FIO(灵活的I/O测试器)这样的工具,生成一致的、可重复的测试数据和结果,适用于不同的存储配置和系统。
NVMe over TCP与iSCSI的IOPS提升
运行IOPS密集型应用时,存储系统中可用的IOPS数量至关重要。IOPS密集型应用指的是数据库、分析平台、资产服务器以及类似的解决方案。
通过交换存储网络协议来提高IOPS是数据库和我们的一项即时收益。
使用NVMe over TCP代替iSCSI显示出IOPS的显著提高,尤其是在较小的块大小下。在512字节块大小下,Blockbridge发现IOPS平均提高了35.4%。在更常见的4KiB块大小下,平均提升为34.8%。
这意味着使用NVMe over TCP而非iSCSI时,相同的硬件可以提供超过三分之一的更多IOPS,且无需额外成本。

NVMe over TCP与iSCSI的延迟提升
虽然IOPS密集型的应用,例如数据库中的压缩事件(如Cassandra),受益于IOPS的大幅提升,但延迟敏感型应用更青睐低访问延迟。延迟是导致人们选择本地NVMe存储而非远程附加存储的主要因素,尽管他们可能知道许多或所有的缺点。
延迟敏感型应用范围广泛,从高频交易系统(毫秒的延迟就是金钱)到电信系统(其中延迟可能导致系统同步问题),再到需要尽快响应的网络安全和威胁检测解决方案。
因此,减少延迟对许多行业和解决方案来说是一项重要的好处。除此之外,较低的访问延迟总是加速数据访问,即使您的系统不一定对延迟敏感,您仍然会感受到差异。
Blockbridge发现,在使用16KiB块大小和128队列深度的情况下(这种情况很容易出现在I/O要求较高的解决方案中),访问延迟的最大收益。iSCSI的平均延迟为5,871μs,而NVMe over TCP为5,089μs,减少了782μs(约25%)的访问延迟—仅通过交换存储协议。

NVMe over TCP与iSCSI的吞吐量提升
作为存储性能的第三个主要指标,吞吐量描述了从磁盘到工作负载实际传输的数据量。
吞吐量是视频编码、流媒体平台、大型分析系统和游戏服务器将巨大的世界流式传输到内存中的关键因素。此外,还有时间序列存储、数据湖和历史数据库。
吞吐量要求较高的系统受益于更高的吞吐量,以便更快地完成“工作”。通常情况下,增加吞吐量并不容易。你要么受到磁盘提供的吞吐量限制,要么在网络附加系统中,受到网络带宽的限制。为了实现高吞吐量和容量,远程网络存储通常利用高带宽网络或专用的网络系统,例如光纤通道(Fibre Channel)或Infiniband。
Blockbridge在一张双端口100Gbit/s的网络卡上进行了测试,受限于PCI Express x16 Gen3总线,最大吞吐量约为126Gbit/s。新的PCIe标准可以实现更高的吞吐量。因此,NVMe设备和网络接口卡(NIC)不再受限于“限制”因素,即PCIe总线的带宽。
在16KiB块大小和32队列深度的情况下,他们的基准测试显示,NVMe over TCP与iSCSI相比,性能提高了惊人的2.3GB/s。吞吐量从iSCSI的10.387GBit/s增加到12.665GBit/s,轻松提高了20%,并且使用相同的硬件。这就是如何节省成本的方式。

支持NVMe over TCP的强有力理由
我们已经看到,NVMe over TCP在所有三个主要存储性能指标上都比iSCSI具有显著的性能优势。然而,NVMe over TCP相对于iSCSI还有更多优势。
- 标准以太网:NVMe over TCP最显著的优势是它能够在标准以太网网络上运行。与专用网络技术(如Infiniband、光纤通道)不同,NVMe/TCP不需要额外的硬件投资或复杂的配置,使得它对各类规模的组织都非常可用。
- 性能特点:NVMe over TCP通过最小化协议开销并利用NVMe设计的效率,提供卓越的性能。它能够实现与本地存储相当的延迟,同时提供网络附加资源的灵活性。现代实现方式能够维持远高于传统存储协议的吞吐量。
- 部署简便:NVMe over TCP与Linux和Windows(2025版及以上)无缝集成,因为所需的驱动程序已经包含在内核中。这使得NVMe/TCP的实现和管理变得非常简单。无缝的兼容性减少了通常与新存储技术相关的学习曲线和集成挑战。
选择NVMe over TCP与iSCSI之间的权衡
在两种技术之间做决定并不总是容易的。对于NVMe over TCP与iSCSI的选择来说,并不算太难。新部署iSCSI的使用案例非常稀少。从我的角度来看,唯一有效的使用案例是集成尚不支持NVMe over TCP的现有遗留系统。
这就是为什么作为一个以NVMe over TCP为首要解决方案的Simplyblock,仍然提供iSCSI,如果你确实需要的话。我们提供iSCSI正是因为迁移不是一朝一夕的事情。然而,你仍然希望在可能的情况下利用新技术(如NVMe over TCP)的优势。在Simplyblock中,逻辑卷可以轻松配置为NVMe over TCP或iSCSI设备。你甚至可以在以后从iSCSI切换到NVMe over TCP。
无论如何,当以下情况发生时,你应该选择NVMe over TCP:
- 你操作高性能计算环境
- 你拥有带宽充足的现代数据中心
- 你部署需要低延迟、高IOPS或吞吐量的存储访问的工作负载
- 你处于需要可扩展、灵活存储解决方案的场景中
- 你处于任何需要远程附加存储的情形
当以下情况发生时,你应该继续使用iSCSI(或逐步迁移离开):
- 你有带宽有限的遗留基础设施,且升级路径受限
如你所见,理由不多。因此,剩下的就是选择你的新存储解决方案。就个人而言,现如今我总是推荐像Simplyblock这样的软件定义存储解决方案,不过我有点偏见。无论如何,SDS提供了两全其美:通用存储硬件(还可以选择全配96盘存储服务器)和卓越性能。
Simplyblock:拥抱多样性
Simplyblock通过同时支持NVMe over TCP和iSCSI,展示了前瞻性的存储设计,能够在可用时为客户提供最佳性能,并在现有遗留客户的情况下提供渐进式迁移的机会。
此外,Simplyblock还提供了传统SAN存储系统或“文件系统”(如ZFS)中的一些功能。这包括完整的写时复制后端,支持即时快照和克隆。还包括存储集群之间的同步和异步复制。最后,Simplyblock是你的现代存储解决方案,为专用主机、虚拟机和容器提供存储。不论客户端如何,Simplyblock都提供与现有和未来环境的最无缝集成。
NVMe over TCP的未来
随着企业和云计算的不断发展,NVMe over TCP成为远程附加存储的首选技术。首先,它结合了简便性、性能和广泛的兼容性。其次,它利用通用网络设备提供了一个具有成本效益和可扩展的解决方案。
该协议的持续发展(最后一次规格更新为2024年5月)和日益增加的采用表明,效率不断提高,延迟减少,扩展性得到增强。
NVMe over TCP代表了存储网络技术的一个重要进步。此外,将NVMe的原始性能与以太网网络的普遍性相结合,为现代计算环境提供了一个引人注目的解决方案。虽然iSCSI在特定用例和迁移阶段仍然相关,但NVMe over TCP代表了未来,应该尽早采纳。
我们Simplyblock很高兴能成为存储历史这一重要步伐的一部分。
问与答
是的,NVMe over TCP 在几乎所有方面都优于 iSCSI。NVMe over TCP 提供了更低的协议开销、更好的吞吐量、更低的延迟以及更高的 IOPS,与 iSCSI 相比。建议不再为新设计的基础设施使用 iSCSI,尽可能将旧基础设施迁移到 NVMe over TCP。
NVMe over TCP 在所有主要存储指标上都优于 iSCSI,包括 IOPS、延迟和吞吐量。NVMe over TCP 相比 iSCSI 在相同网络架构和存储条件下可实现最高 35% 的 IOPS 增长,25% 的延迟减少,以及 20% 的吞吐量提升。
NVMe/TCP 是一种存储网络协议,它利用常见的互联网标准协议 TCP/IP 作为传输层。它通过标准的以太网架构进行部署,可以与现有的网络流量并行运行,建议通过 VLAN 或物理隔离的网络进行分隔。NVMe over TCP 被视为 iSCSI 协议的继任者。
iSCSI 是一种存储网络协议,利用常见的互联网标准协议 TCP/IP 作为传输层。它通过标准的以太网架构将远程存储解决方案(通常是硬件存储设备)连接到存储客户端。iSCSI 最初在 2000 年被标准化。许多公司用更优的 NVMe over TCP 协议取代了 iSCSI。
SCSI(小型计算机系统接口)是一种命令集,用于将计算机与外设连接并在它们之间传输数据。SCSI 最初在 1980 年代开发,它一直是数据存储接口的基础技术,支持硬盘、光盘驱动器、扫描仪等多种设备类型。
NVMe(非易失性内存高速接口)是一种定义存储设备与计算机之间数据连接和传输的规范。初始规范于 2011 年发布。NVMe 专为通过 PCIe 总线连接的固态硬盘(SSD)设计。与旧标准(如 SCSI、SATA 和 SAS)相比,NVMe 设备具有更好的延迟和性能。