NVMe Over Fabrics使用RDMA或光纤通道(FC)架构等Fabric技术取代PCIe传输。如图所示,除了基于RDMA架构的传输包括以太网(ROCE),InfiniBand和iWARP,当然,采用基于原生TCP(非RDMA)传输也是可能的(截至2018年7月,TCP技术仍在研发阶段)。
图RDMA和FC Fabric NVMe架构
图中所示的NVM子系统是一个或多个物理结构接口(端口)的集合,每个单独的控制器通常连接到单个端口。多个控制器可以共享一个端口。尽管允许NVM子系统的端口支持不同的NVMe传输,但实际上,单个端口可能仅支持单个传输类型。
注意:NVM子系统包括一个或多个控制器,一个或多个命名空间,一个或多个PCI Express端口,非易失性存储器存储介质,以及控制器和非易失性存储器存储介质之间的接口。
下图是一个存储阵列的示例,该阵列是由通过FC结构连接到3个主机的NVM子系统组成。
图:由通过Fabric连接到3个主机的NVM子系统组成的示例阵列
通常,NVM子系统呈现一个或多个NVMe控制器(最大约64K)的集合,其用于通过一个或多个(最多64K)NVM子系统端口访问与一个或多个主机相关联的命名空间。实际上,子系统控制器的数量或子系统端口的数量往往非常小。
NVMe Over Fabrics(NVMe-oF)也是基于NVMe架构,包括命令集和排队接口。除Admin和I/O命令外,它也支持Fabric命令。NVMe-oF在某些方面与基本NVMe规范有所不同(例如,不允许中断),因为NVMe中的Interrupt的说法,仅仅限于NVMe over PCIe的架构,在NVMe over Fabric的架构下,不存在任何Interrupt的说法。
注意:有关NVMeover Fabrics与NVMe基本规范之间差异的完整列表,请参阅NVMe Over Fabric 1.0规范
控制器一次只与一个主机关联,而端口可以共享。NVMe允许主机通过相同的端口或不同的端口连接到NVM子系统中的多个控制器。
NVMe-oF支持发现服务,使用发现机制,主机可以获得具有主机可访问的名称空间的NVM子系统的列表,包括发现到NVM子系统的多个路径的能力。NVMe Identify Admin命令用于确定控制器的命名空间。
如前所述,NVMe规范支持多路径I/O和命名空间共享。虽然多路径I / O,命名空间共享,多主机连接和预留等概念并不相同,但为了方便将它们一起描述,它们在涉及多主机命名空间访问,尤其是在使用NVMe预订(Reservations)时有些相互关联。以下提供了这些概念的简要说明。
命名空间共享
命名空间共享是指两个或多个主机使用不同的NVMe控制器访问公共命名空间的能力。命名空间共享要求NVM子系统包含两个或更多控制器。
下图显示了两个NVMe控制器通过两个NVM子系统端口连接的示例; 在此示例中,命名空间B(NS B)由两个控制器共享。NVMe操作可用于协调对共享命名空间的访问。与共享命名空间相关联的控制器可以同时在命名空间上操作。可以使用全局唯一标识符或与命名空间本身关联的命名空间ID(NSID)来确定何时存在到同一共享命名空间的多个路径。
NVM子系统不需要将相同的命名空间附加到所有控制器。在图中,只有命名空间B被共享并连接到控制器。
注:当前的NVMe规范未指定跨NVM子系统的命名空间共享,这在NVMe 1.4规范草案中得到了解决。
图:具有对共享命名空间的专用端口访问的示例
多路径
NVMe多路径I/O是指单个主机和命名空间之间的两个或多个完全独立的路径。每个路径使用自己的控制器,尽管多个控制器可以共享子系统端口。命名空间共享等多路径I/O要求NVM子系统包含两个或更多控制器。
在下图所示的示例中,主机A通过控制器1和控制器2具有2个路径。NVMe标准技术委员会目前正在制定关于多路径I/O的规范草案。
多主机连接和预留
NVMe预留功能类似于SCSI-3持久保留,可用于提供两个或多个主机用于协调对共享命名空间的访问的功能。命名空间上的NVMe预留限制了主机对该命名空间的访问。例如,受驱动程序支持的VMware ESXi可以使用NVMe预订来支持使用VM的MicrosoftWindows Server故障转移群集。
NVMe预留需要主机和命名空间之间的关联。多路径I/O和命名空间共享环境中的每个控制器只与一个主机相关联,如下图中的示例所示。主机可以通过向与其关联的每个控制器注册相同的主机ID来与多个控制器相关联。
注意:为了唯一标识主机ID,控制器可以支持以下两种格式之一:
1)64位主机标识符
2)扩展的128位主机标识符; NVMeOver Fabrics需要128位扩展格式
如下图所示的示例中,主机A与2个控制器相关联,而主机B与单个控制器相关联。主机标识符(例如,主机ID A)允许NVM子系统识别与同一主机(例如,主机A)相关联的控制器,并保留跨这些控制器的预留属性。
图:对共享命名空间的多主机访问
提醒一下,NVMe-oF是一种通过可扩展的方式在主流互连上扩展NVMe架构的事实标准。该标准旨在使非易失性存储器快速基于消息的命令能够 通过网络在主计算机和目标固态存储设备或系统之间传输数据。主要的好处包括提高性能,减少网络延迟和瓶颈。
关于NVMe-oF/TCP
一个更有趣的新发展是NVMe和传输控制协议(TCP)的新传输绑定。对开发人员来说,好处是迁移NVMe技术到Internet小型计算机系统接口(iSCSI)。对于希望利用其以太网基础设施并避免远程直接内存访问(RDMA)协议的复杂性的企业而言,NVMe-oF/TCP是一个很好的选择。
NVMe-oF的传输无关性意味着NVMe-oF可以支持所有传输,目前有几种主流传输方式:RoCEv2,iWARP,InfiniBand和FCoE(以太网光纤通道/FC)。这里面有一些传输使用我们的规范中包含的RDMA协议实现绑定,但目前NVMe相关组织在正在添加TCP以满足市场需求。
业界对NVMe-oF /TCP标准持乐观态度, 许多行业领导者都支持它,包括Facebook,谷歌,戴尔EMC,英特尔和其他公司。
外部存储市场已经开始采用NVMe-oF技术,我们希望企业客户能够继续在高性能要求的应用中使用和部署它。目前已经看到顶级供应商,包括Broadcom,思科,英特尔,IBM等,并宣布推出NVMe-oF解决方案。
NVMe-oF的未来在企业存储领域是光明的,新兴的计算密集型市场需要NVMe-oF技术。
人工智能,机器学习和实时分析都需要NVMe-oF提供的更低延迟和更快的吞吐量。NVMe-oF技术具有许多优势,可以满足新的应用需求。在服务器端,NVMe-oF减少了操作系统存储堆栈的长度,从而可以更有效地进行连接。在存储阵列方面,由于通过目标堆栈的路径较短,从而改善阵列性能。
然而,最重要的好处之一是NVMe-oF利用存储阵列的原有技术,通过从SAS/SATA驱动器转移到NVMe SSD,加速解决方案上市。
内容分享到此为止,更多技术细节请参考整理成文的“NVMe技术标准和原理深度解析”电子书,详细内容和目录如下。
一、 NVMe技术和应用概述 6
1.1 NVMe技术独特优势 7
1.2 NVMe-oF技术概述 7
1.2.1 NVMe over FC 8
1.2.2 NVMe over以太网和InfiniBand 8
1.2.3 NVMe over TCP 8
1.3 NVMe数据中心应用现状分析 8
1.3.1戴尔EMC(PowerMax) 8
1.3.2 E8存储公司(E8设备和软件) 9
1.3.3 Excelero Inc (NVMesh) 10
1.3.4 IBM (FlashSystem 9100) 11
1.3.5 NetApp (AFF A800及EF570) 12
1.3.6 Pure Storage(FlashArray和FlashBlade) 16
1.3.7 Vexata公司(VX-100M和VX-100F) 17
二、 NVMe标准术语解释 19
2.1 NVM子系统介绍 19
2.2 端口概念介绍 19
2.2.1 物理端口 19
2.2.2 NVM子系统端口 20
2.2.3 传输端口 23
2.3 NVM控制器 23
2.3.1 动态控制器 23
2.3.2 静态(Persist)控制器 24
2.4 发现过程控制器 25
2.5 发现服务器子系统 26
2.6 发现日志页 26
2.7 名称空间分析 26
2.7.1名称空间ID 27
2.7.2 创建名称空间 27
2.7.3 删除名称空间 28
2.7.4 添加、解除名称空间 28
2.7.5 名称空间标识 28
2.7.6名称空间格式 29
2.8 Association关联回话 30
2.9 Connection机制 31
2.10 NVMe概念架构 31
2.11 Capsule数据交换单元 32
2.13 Properties属性 33
2.14 Fabric Command指令类型 34
2.15 Host ID和Host NQN 34
2.13 Host、Controller和Namespace 35
2.14 NVMe Subsystem预置条件 36
三、 NVMe-oF和NVMe over PCIe差异 37
3.1 NVMe-oF原理和概述 37
3.2 NVMe over PCIe原理和概述 39
3.3 NVMe over FC如何工作 40
3.4 NVMe/TCP(NVMe over TCP)如何工作 43
3.4.1 NVMe/TCP PDU的定义 43
3.4.2 基于NVMe/TCP transport通信 45
四、 NVMe Over Fabric命令解析 46
4.1 Command字段分析 47
4.1.1 Fabric Command 字段 47
4.1.2 Admin/IO Command 47
4.2 Command响应字段分析 48
4.2.1 Fabric Response字段 48
4.2.2 Admin/IO 响应字段 48
五、 Discovery处理流程 50
5.1 Discovery初始化过程 50
5.2 Discovery Log Page 51
5.3 Discovery终止机制 57
六、 Connection处理流程 57
七、 数据传输流程 61
7.1数据传输总体介绍 61
7.2 传输单元Capsule 61
7.2.1 Command Capsule 大小 62
7.2.2 Command Capsule报文结构 62
7.2.3 Response Capsule报文结构 64
7.2.4 In Capsule传输方式 64
7.2.5 In memory 传输方式 65
7.2.6 Out of Order传输方式 66
7.3 传输命令和流程 66
7.3.1 NVM读命令 66
7.3.2 NVM写命令 68
7.4 SGL散列表 69
八、 NVMe元数据 71
8.1 NVMe元数据定义 71
8.2 NOF Metadata传输方式 72
8.2.1数据In capsule传输(数据对齐) 72
8.2.2数据In capsule传输(数据未对齐) 73
8.2.3数据In memory传输(SGL在memory) 74
8.2.3数据In memory传输(SGL在capsule) 74
九、 NVMe/NVMe over Fabric流控处理 75
十、 NVMe安全认证机制 77
10.1 安全认证概述 77
10.2 认证相关命令 78
10.3 认证流程 78
十一、Stream数据流 80
11.1 Stream概述 80
11.2 Stream命令 80
11.3 Stream配置和实现 82
十二、加速后台操作(ABO) 84
12.1 ABO概述 84
12.2 ABO模式 84
12.3 ABO状态查询 84
12.4 启动/停止Host触发的ABO 85
12.5 ABO参数配置 85
十三、NVMe传输层绑定实现 85
十四、Sanitize机制原理 85
14.1 Sanitize概述 85
14.2 Sanitize和Format格式差异 86
14.3 Sanitize作用范围 88
14.4 Sanitize工作模式 89
14.5 Sanitize状态机 89
14.6 Sanitize命令 90
十五、Reservations机制分析 90
15.1 Reservations概述 90
15.2 Reservation角色 91
15.3 Reservation类型 92
15.4 Reservations操作流图 93
15.5 Reservations支持条件 94
15.6 Reservations实现和相关命令 95
十六、Keep Alive机制 103
16.1 Keep Alive背景 103
16.2 功能概述 103
16.3 Keep Alive应用范围 103
16.4 Keep Alive实现 104
十七、Interrupt中断机制 104
17.1 Interrupt具体实现 104
17.2 Interrupt Aggregation中断聚合 105
17.3 NVMe中断映射方式 105
十八、NVMe Virtulization虚拟化机制 108
18.1 虚拟化机制概述 108
18.2 虚拟化应用场景 109
18.3 虚拟化具体实现 109
18.3.1 Primary Controller 109
18.3.2 Secondary Contgroller 109
18.3.3 Privileged Actions 109
18.3.4 Virtualization管理命令 110
18.3.5 Seconary Controller Command 110
18.3.6 Resource资源分配 110
18.3.7 虚拟化队列 (Virtual Queue) 112
18.3.8 虚拟中断(Virtual Interrupt) 112
十九、NVMe/NVMe over Fabric学习资源 113
推荐阅读:
温馨提示:
请识别二维码关注公众号,点击原文链接获取“NVMe技术标准和原理深度解析”电子书资料总结。