随着全新一代PCIe 5.0 SSD的发布,新的NVMe 2.0规范协议也是如期而至。作为PCIe SSD最为重要的底层协议,NVMe 2.0都有哪些重要调整?又有哪些值得我们关注的新功能?本文简单解答。
NVMe 演化史
NVMe自诞生以来,其关注的焦点几经变化。一开始,NVMe的目标是定义NVMe架构和NVMe命令集,用一个共同的接口来统一PCIe SSD,让PCIe SSD可以很方便的在当时系统环境下布署使用起来。而在NVMe正式落地之前,客户只能安装由PCIe SSD厂商提供的专用驱动程序,使用场景存在一定。值得一提的是,忆恒创源(Memblaze)不仅仅是全球最早一批做PCIe SSD的厂商,同时也是国内首家实现NVMe协议规范支持的厂商。
之后,NVMe架构和命令集继续扩展,以支持更多的应用场景,更多的Transport 协议,如Ethernet,Fiber Channel等,而不仅仅局限在机箱内部。完成上述目标之后,NVMe又开发出了一些新的命令集,同时也将NVMe扩展到了新的应用场景,如自动驾驶,仓库规模存储,计算存储等。
新的Spec架构更加趋于模块化,将Command Set和Transport Spec从原有三大合集中出来,与Base Spec、NVMe-MI一同,构成了新的NVMe 2.0协议族,也方便未来有更多新的功能添加进来。如下图所示,当有新的功能出现,只需要对Command Set Spec进行扩充即可。
NVMe 2.0
2021年6月3日,NVMe 2.0协议族发布,它由8个具体的协议规范组成,其中,NVM Command Set、Zoned Namespace Command Set、Key Value Command Set共同组成了新的Command Set协议族,Transport Spec也被细分为PCIe、RDMA和TCP三种。
NVM Commend Set Spec、PCIe Transport Spec是NVMe最开始想要实现的目标,在此基础上又有6个Spec被开发出来,可见NVMe的技术发展确实是非常快的。
NVMe Transport是基于物理连接属性抽象的协议层,分为Memory-Based和Message-Based两种,其中,Message-Based Transport又可以分为Message-Only型和Message/Memory混合型。
- Memory-Based Transport指Host和NVM Subsystem之间的命令、应答和数据是由显性的内存读写命令来完成的,代表协议是NVMe over PCIe Transport Spec。
- Message-Based指Host和NVM Subsystem之间通过发送Message封装命令和响应数据,代表协议有Fiber Channel、TCP Transport Spec。
- Message/Memory混合型则会组合使用Message和显性的内存读写命令,代表协议是RDMA Transport Spec。
NVMe 2.0的新功能
Simple Copy Command
而在没有这个命令之前,要完成这样的拷贝工作,需要先将数据读到Host的内存里,然后再写入到SSD上。
Domains and Partitioning
NVMe 2.0将NVM的存储结构分为5个层级:NVM Subsystem、Domain、Endurance Group、NVM Set和Namespace,它们的层级关系如下:
下图则展示了这些层级在一个相对复杂的NVM Subsystem中的关系,它包含了多个Domain、Endurance Group、NVM Set和Namespace。
NVM Subsystem可以由1个或多个Domain(域)组成,每个Domain都存在,具备各自的状态信息,如电源状态、容量信息,Domain之间存在通信边界,如故障边界、管理边界。如果一个NVM Subsystem中存在多个Domain,它们将以协作的方式运行。通过将NVM Subsystem划分为不同的Domain,有利于提供更加灵活、安全和高性能的数据管理和隔离能力,使NVMe设备可以适用于更加复杂的存储场景。
NVM Set和Endurance Group
NVM Set和Endurance Group是NVM存储架构中两个可选的层级,NVM Set由单个或多个Namespace构成,单个或多个NVM Set又共同构成了一个Endurance Group。在同一个Endurance Group中,这些NVM Sets使用相同的耐用性属性和管理策略,受到相似的写入和擦除次数的约束,也有利于平衡NVMe设备的使用并最大化写入寿命。
Command and Feature Lockdown
NVMe 2.0 新增了Lockdown Command,其功能是阻止某些命令执行。该命令属于Admin Command命令集,作用范围包括:
• 带内Admin命令集中的命令和Set Feature命令下的各种feature;
• NVMe-MI中的Management Interface命令集中的命令和PCIe命令集中的命令。
当然,对于已经上锁的命令也可以使用该命令进行解锁。此外,NVM Subsystem在重新上电时,这些命令也将恢复到解锁状态。
NVMe KV、Zoned Namespaces和Namespace Types
如前文所述,NVMe 2.0在I/O命令集中加入了NVMe KV和Zoned Namespaces 这两个命令集,因此相应地也需要不同类型的Namespace Types。
IO Command Set Independent Data Structure
这是NVMe 2.0新增的一个Identify数据结构,它所提供的信息是跟IO命令集无关的。这个数据结构的特殊之处在于,它可以在Namespace attach到Controller之前提供一些信息。
Rotational Media
增加对HDD的支持。
此外,全新NVMe 2.0规范协议还对一些原有Feature做出优化或调整,如Telemetry统一接口日志收集、Persistent Event Log持久化日志等,内容比较多,在此就不一一介绍了。而在后面的文章中,我们也将对NVMe 2.0以及全新一代PCIe 5.0 SSD的一些新功能做更加详细的介绍,欢迎大家持续关注。
忆恒创源作为国内老牌的企业级PCIe SSD厂商,高度重视企业客户需求,以精心打磨的技术、持续优化的产品功能,不断为客户业务应用带来更好支撑。最新发布的PBlaze7 7940不仅实现了两倍于上一代产品的性能,更升级到NVMe 2.0规范协议,提供如Simple Copy Command、Feature Lockdown等重要NVMe 2.0企业级功能的支持。另外,Get LBA Status、128K原子写,SR-IOV等新的功能特性,也将为用户的数据完整性、虚拟化环境下的业务性能带来巨大改善。