存储评论网

Windows Server 2025 原生 NVMe:存储堆栈全面升级及基准测试结果

企业版  ◇  软件

2025年12月15日,微软宣布Windows Server 2025将在其存储架构中原生支持NVMe标准。然而,NVMe存储多年来一直是服务器、企业工作站和消费级PC上流行的存储格式,并且自Windows Server 2012 R2和Windows 8.1起就已内置了操作系统兼容性。鉴于此,关于“原生”NVMe支持的公告似乎并不重要,甚至不值得报道,但我们保证,这其中蕴含的意义远不止表面看起来那么简单。

Pi 的 100 万亿位

“原生 NVMe”到底是什么意思?

在早期版本的 Windows 消费者版和服务器版存储堆栈中,用于读写数据的命令,无论底层硬件采用何种协议,都会被转换为 SCSI 命令。小型计算机系统接口 (SCSI) 标准可以追溯到 20 世纪 80 年代初,其设计目的是将外围设备和存储驱动器连接到计算机(存储网络行业协会,无日期)。它是多种现代存储协议的基础,这些协议用于各种工作负载,包括网络连接协议,例如 iSCSI(互联网小型计算机系统接口)和 FCP(光纤通道协议),以及本地存储接口,例如 SAS(串行连接 SCSI)和 UASP(USB 连接 SCSI)。

旧路

通过将不同的协议转换为 SCSI 命令,微软在操作系统更高层统一了存储命令。然而,这也牺牲了现代存储架构在可扩展性和性能方面的诸多优势。旧的 I/O 操作路径如下:

  1. 读写操作在文件系统级别的上层存储堆栈中进行。
  2. 命令会传递给 Disk.sys 驱动程序。
  3. Disk.sys 将通用存储命令转换为 SCSI 命令。
  4. Storport 接收 SCSI 命令并将其发送给相应的 Miniport 驱动程序(例如,SATA 驱动器的 StorAHCI.sys)。
  5. 相应的微型端口驱动程序直接与存储设备通信,并将其再次转换为适当的存储命令格式。

其他 SCSI 约定,例如用于标识存储设备上数据分区的 LUN(逻辑单元号),也被沿用到 Windows 存储堆栈中,尽管像 NVMe 命名空间这样的新概念已经存在了相当长一段时间(Hands、Worley 和 Lakhveer Kaur,未注明日期)。

新标准

微软为 Windows Server 2025 推出的最新存储架构为 Storport 启用了新功能,并将 Disk.sys 替换为 NVMeDisk.sys,从而提供了一个可扩展、面向未来、高性能的框架。

  1. 读写操作在文件系统级别的上层存储堆栈中进行。
  2. 命令直接从 NVMeDisk.sys 传递到 Storport 中的新 StorMQ 代码。
  3. StorMQ 会为每个读取和写入操作生成相应的 NVMe(或其他存储类型)命令,并将它们直接发送到硬件本身。

(图片来自 Scott Lee 于 2025 年 9 月 16 日在 SNIA 开发者大会上的演讲)

Windows Server 2025 上的这一全新驱动器操作标准消除了一层转换,并与 NVMe、RAID 和 HBA 设备上的存储命令队列完全集成。简化 Windows 存储系统还带来了其他优势,例如通过消除不必要的存储命令转换来降低 CPU 资源占用,并提高逻辑处理器的利用率。新架构采用了其他 NVMe 规范,例如 NVMe 命名空间和即插即用支持。它允许创建特定于供应商或设备类型的存储微型端口驱动程序,并将其“插入”到 Windows 中,从而提高与新型存储设备的兼容性和性能(Lee,SNIA SDC 2025 – Windows 上的存储多队列,2025)。

准备好测试了吗?

在2025年9月16日举行的SNIA开发者大会上,Scott Lee透露,微软已与供应商紧密合作,为RAID卡和HBA等设备开发新的驱动程序。这表明StorMQ的改进即将到来,或者可能已经在许多存储设备上启用。该功能于去年12月宣布正式发布,但新的存储堆栈仅作为可选功能启用,需要添加注册表项。您可以在微软的NVMe原生功能公告文章中查看启用步骤。

警告:错误地修改注册表可能会导致严重问题,因此请务必先在非关键服务器上进行测试。一些启用此功能的用户报告称,启用重复数据删除功能的 NVMe 驱动器存在问题。虽然微软即将发布官方修复程序,但您仍需自行承担风险!

在 Windows Server 2025 上测试原生 NVMe

我们用于评估 Windows Server 2025(操作系统版本 26100.32370)上原生 NVMe 性能的测试平台,采用了一台配备双 SP5 插槽的服务器,该服务器搭载了两颗 128 核 AMD EPYC 9754 CPU。除了多核处理器之外,该服务器还配备了同样令人印象深刻的 768GB DDR5 内存,运行频率为 4800 MT/s。

注:据微软的 Yash Shekar 称,Windows Server 2025 已经发布了一项与原生 NVMe 无关的临时改进,这可能为非原生存储堆栈提供了额外的提升,从而减少了结果之间的潜在差异。

为了评估新型存储堆栈的潜力,我们使用了十五块30.72 TB 的 Solidigm P5316 NVMe SSD,采用 PCIe 4.0 接口,并配置为 JBOD 阵列。需要特别注意的是,Solidigm P5316 的间接单元大小为 64 KB,这意味着对于较小数据块大小(例如 4K 测试),其写入性能通常会低于预期。考虑到较大的间接单元大小,我们运行了 FIO 基准测试,分别测试了随机 4K、随机和顺序 64K 以及顺序 128K 的读写性能,以比较不同数据块大小下的整体速度。此外,我们还在测试过程中监控了 CPU 使用率,以验证微软关于更高效率的说法。

核心亮点

  • 大幅提升了 4K 和 64K 随机读取带宽和 IOPS。
  • 降低 4K 和 64K 随机读取延迟
  • 对于不同块大小的顺序读取和写入操作,CPU 使用率显著降低。

米制 随机 4K 随机 64K 顺序 64K 顺序 128K
非本地人 本地人 非本地人 本地人 非本地人 本地人 非本地人 本地人
了解
带宽(GiB/s) 6.1 10.058 74.291 91.165 35.596 35.623 86.791 92.562
IOPS 1,598,959 2,636,516 1,217,176 1,493,637 583,192 583,638 710,978 758,252
平均延迟(毫秒) 0.169 0.104 0.239 0.207 0.809 0.812 0.613 0.608
CPU 总使用率 (%) 72.67 74.22 68.44 65.11 44.89 37.11 61.56 49.56

 

米制 随机 4K 随机 64K 顺序 64K 顺序 128K
非本地人 本地人 非本地人 本地人 非本地人 本地人 非本地人 本地人
填写
带宽(GiB/s) 1.803 1.756 7.654 7.655 44.67 50.087 50.477 50.079
IOPS 472,725 460,383 125,391 125,406 731,859 820,603 413,495 410,232
平均延迟(毫秒) 0.992 1.028 3.814 3.816 0.399 0.558 1.022 1.149
CPU 总使用率 (%) 26.00 20.67 12.22 9.33 70.44 57.78 58.44 47.33

结果分析

首先进行随机 4K 和 64K 读取基准测试,我们观察到读取速度显著提升。在随机 4K 读取测试中,原生存储栈和非原生存储栈之间的速度差距接近 4 GiB/s;在随机 64K 读取测试中,速度提升更是接近 16.9 GiB/s。此外,我们还发现顺序 128K 读取操作的性能也有显著提升,测试结果显示带宽提升了约 5.8 GiB/s。

 

奇怪的是,我们在随机写入和顺序写入带宽测试中都没有观察到任何显著提升,唯一值得注意的差异是 64K 顺序写入速度提升了约 5.4 GiB/s。大多数测试结果彼此相差不到 100 MiB/s,这表明在性能未提升的情况下,新存储堆栈的性能至少与旧版本保持一致。

由于吞吐量通常与延迟相关,我们也观察到 4K 和 64K 测试中平均随机读取延迟均大幅下降。非原生 4K 随机读取延迟下降了 38.46%,从 0.169 毫秒降至 0.104 毫秒。64K 随机读取测试的下降幅度较小,约为 13.39%。顺序读取操作的延迟变化不大,但随机写入和顺序写入操作的延迟均有所增加,尽管吞吐量相近或更高。

除了随机读取速度的提升,我们的 FIO 测试还揭示了一个有趣的趋势:64K 和 128K 顺序读写操作的总 CPU 使用率显著下降。顺序写入测试的降幅最为显著,64K 顺序写入的 CPU 使用率平均下降了 12.66%,128K 顺序写入的 CPU 使用率也下降了近 11.11%。我们进行的 128K 顺序读取测试也观察到了 12% 的使用率下降,但 64K 顺序读取的 CPU 使用率仅下降了 7.78%。需要考虑的一个因素是,如果 CPU 速度足够快,某些情况下两个堆栈都可能达到存储设备的全部性能;因此,吞吐量可能不会增加,但 CPU 资源使用率会降低。

投资讯息

启用新的存储堆栈后,我们的许多测试结果都存在一定的运行间差异,但我们证实了微软的诸多说法,包括更高的读取带宽、更低的延迟以及全面降低的 CPU 使用率。由于这对沿用数十年的 Windows Server 存储堆栈来说是一次彻底的变革,微软将在 Windows Server vNext 中率先默认启用原生 NVMe。幸运的是,用户可以通过简单的注册表编辑或组策略在 Windows Server 2025 上启用此功能,这使得勇于尝试的服务器管理员能够尽早(在充分了解部署风险的前提下)利用新堆栈的优势。

我们期待在 Windows Server 平台上默认启用原生 NVMe,并希望 NVMe SSD、RAID 卡和 HBA 制造商能够积极参与,将微软的改进提升到一个新的水平!

案例

Hands, J.、Worley, D. 和 Lakhveer Kaur.(无日期)。NVMe 命名空间。检索日期:2025 年 12 月 30 日,来自 NVM Express:https://nvmexpress.org/resource/nvme-namespaces/

Lee, S. (2025年9月15日)。SNIA SDC 2025 – Windows 上的存储多队列。美国加利福尼亚州圣托马斯:存储网络行业协会。2025年12月29日检索自https://www.youtube.com/watch?v=dR-DWrmCba0&t

Lee, S. (2025年9月16日)。Windows上的存储多队列:高性能存储硬件的新堆栈。检索日期:2025年12月29日,来源:SNIA开发者大会:https://www.snia.org/sites/default/files/2025-10/SNIA-SDC25-Lee-Storage-Multi-Queue-On-Windows.pdf

Shekar, Y. (2025年12月15日)。宣布在 Windows Server 2025 中引入原生 NVMe:开启存储性能新时代。(微软) 2025年12月29日检索自 Windows Server 新闻和最佳实践:https://techcommunity.microsoft.com/blog/windowsservernewsandbestpractices/announcing-native-nvme-in-windows-server-2025-ushering-in-a-new-era-of-storage-p/4477353

存储网络行业协会。(无日期)。什么是 SCSI?检索日期:2025 年 12 月 30 日,来源:存储网络行业协会:https://www.snia.org/education/what-is-scsi

参与 StorageReview

电子报| YouTube | 播客iTunes / Spotify | Instagram | Twitter | TikTok | RSS订阅

安德鲁·瓦格

Andrew Waag 是 Linde plc 的分布式系统管理员,他的兴趣包括服务器硬件、企业存储系统和网络设备。他总是在寻找新事物来利用他的家庭实验室,并尝试虚拟化和存储技术。