一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

非易失性存储器快速节点的管理的制作方法

2022-09-08 06:37:38 来源:中国专利 TAG:

非易失性存储器快速节点的管理
1.相关申请的交叉引用
2.本技术要求2020年12月18日提交的名称为“非易失性存储器快速节点的管理(management of non-volatile memory express nodes)”的第63/127,423号美国临时申请(代理人案号wda-5254p-us)的优先权,该美国临时申请通过引用整体并入本文。本技术还要求2021年2月12日提交的名称为“非易失性存储器快速节点的管理(management of non-volatile memory express nodes)”的第17/175,449号美国申请(代理人案号wda-5254-us)的优先权,该美国申请通过引用整体并入本文。本技术与2019年8月22日提交并于2020年11月5日作为第2020/0349080号美国专利申请公开案公开的名称为“具有网络内预取的分布式高速缓存(distributed cache with in-network prefetch)”的第16/548,116号美国申请(代理人案号wda-4307-us)相关,该美国申请通过引用整体并入本文。本技术还与2019年11月26日提交并于2020年11月5日作为第2020/0351370号美国专利申请公开案公开的名称为“大规模分布式高速缓存系统中的容错数据一致性(fault tolerant data coherence in large-scale distributed cache systems)”的第16/697,019号美国申请(代理人案号wda-4500-us)相关,该美国申请通过引用整体并入本文。本技术还与2020年6月26日提交的名称为“管理分布式高速缓存网络流量的设备和方法(devices and methods for managing network traffic for a distributed cache)”的第16/914,206号美国申请(代理人案号wda-4952-us)相关,该美国申请通过引用整体并入本文。本技术还与2020年6月30日提交的名称为“分布式高速缓存的故障检测和恢复的设备和方法(devices and methods for failure detection and recovery for a distributed cache)”的第16/916,730号美国申请(代理人案号wda-4977-us)相关,该美国申请通过引用整体并入本文。本技术还与2021年2月12日提交的名称为“网络消息排序的设备和方法(devices and methods for network message sequencing)”的第17/174,681号美国申请(代理人案号wda-5072-us)相关,该美国申请通过引用整体并入本文。


背景技术:

3.云计算、大数据和输入/输出(i/o)密集型应用的当前趋势已经导致数据中心在低延迟、高通量和带宽方面对高性能分布式共享存储器系统的需求更大。例如固态驱动器(ssd)的新兴高性能非易失性存储器快速(nvme)存储设备由于其在每秒输入/输出操作(iops)方面的性能提高而变得更加常见。尽管nvme最初被设计成与计算机系统内的外围部件互连快速(pcie)接口一起使用,但是最近的nvme扩展(如基于网络结构的nvme(nvmeof))可以例如通过远程直接存储器访问(rdma)(例如,聚合以太网上的rdma(roce)和iwarp)和光纤通道(fc)传输结构支持对nvme设备的远程访问。
4.与nvme相关的最近趋势使得nvme控制器能够支持在运行时期间本地连接的存储器设备诸如ssd的热插入和热拔出。这意味着可以在运行时期间将nvme设备添加到主机的pcie总线或从主机的pcie总线移除nvme设备,而不中断主机操作或不需要nvme控制器的重启。由于容错是开发基于以太网的分布式系统的重要部分,因此在基于以太网的分布式系
统中,例如在如今使用nvmeof/传输控制协议(tcp)的数据中心中,需要处理nvme设备的热插入和热拔出。
附图说明
5.通过下文所述的具体实施方式并且结合附图,本公开的实施方案的特征和优势将变得更加显而易见。提供附图和相关联描述是为了说明本公开的实施方案,而不是限制所要求保护的范围。
6.图1示出了根据一个或多个实施方案的包括非易失性存储器快速(nvme)节点、可编程交换机和网络控制器的示例性网络。
7.图2是根据一个或多个实施方案的图1的网络中包括的示例性部件的框图。
8.图3示出了根据一个或多个实施方案的示例性nvme映射。
9.图4是根据一个或多个实施方案的nvme命名空间移除过程的流程图。
10.图5是根据一个或多个实施方案的nvme命名空间创建过程的流程图。
11.图6是根据一个或多个实施方案的消息故障处理过程的流程图。
12.图7是根据一个或多个实施方案的全局nvme映射更新过程的流程图。
具体实施方式
13.在以下具体实施方式中阐述了许多具体细节,以便提供对本公开的彻底理解。然而,对于本领域普通技术人员显而易见的是,可在不具有这些具体细节中的一些细节的情况下实践所公开的各种实施方案。在其他情况下,并未详细示出众所周知的结构和技术以避免不必要地模糊各种实施方案。
14.系统示例
15.图1示出了根据一个或多个实施方案的用于实现非易失性存储器快速(nvme)热插入、热拔出和故障检测的示例性网络100。如本文所用,热插入是指在运行时期间连接nvme节点而不中断主机操作或不需要重启nvme控制器,并且热拔出是指在运行时期间断开nvme节点而不中断主机操作或不需要重启nvme控制器。
16.如图1所示,服务器机架101a、101b、101c和101d分别使用架顶(tor)交换机102a、102b、102c和102d与网络100中的其他设备通信。每个服务器机架101包括一个或多个nvme节点,例如图2中的nvme节点108,该一个或多个nvme节点可以使用例如nvme读取和写入命令等nvme消息访问其他nvme节点中的存储器或存储位置。服务器机架101中的nvme节点可以包括例如服务器或处理节点,例如精简指令集计算机(risc)-v核心,以及存储器设备,例如固态驱动器(ssd)或硬盘驱动器(hdd)。在一些实现方式中,图1中的网络100可以用作数据中心的至少一部分和/或用于分布式处理,例如用于分布式机器学习或大数据分析。
17.网络100可以包括例如存储区域网络(san)、局域网(lan)和/或广域网(wan),例如互联网。在这方面,服务器机架101、tor交换机102、聚合交换机104、核心交换机106和/或网络控制器120中的一者或多者可能不会物理上位于同一位置。服务器机架101、tor交换机102、聚合交换机104、核心交换机106和/或网络控制器120可以使用例如以太网等一个或多个标准进行通信。
18.如图1的示例所示,服务器机架101a、101b、101c和101d中的每个服务器机架连接
到tor或边缘交换机102。在其他实现方式中,每个机架101可以与多个tor或边缘交换机102通信以实现冗余。tor交换机102可以包括可编程交换机,例如64端口tor p4可编程交换机,该可编程交换机将消息路由到位于服务器机架101中的nvme节点或从中路由消息。此类可编程交换机可以包括例如具有被配置成提供40千兆以太网(ge)帧速率的端口的barefoot networks tofino专用集成电路(asic)。可以用作tor交换机102的其他类型的可编程交换机可以包括例如cavium xpliant可编程交换机或broadcom trident 3可编程交换机。在一些实现方式中,并且如上文通过引用并入的第17/174,681号、第16/697,019号、第16/914,206号和第16/916,730号申请中所讨论的,每个tor交换机102可以为存储在其相应服务器机架101的终端节点设备中的数据提供集中的数据一致性管理,例如用于分布式高速缓存。
19.对于保留在集群1101中的消息,聚合交换机104a和104b在tor交换机102a与102b之间路由消息。另外,对于在集群1101与1102之间传播的消息,聚合交换机104a和104b将消息从tor交换机102a和102b路由到核心交换机106a和106b。在图1的示例中,机架101a和101b、tor交换机102a和102b以及聚合交换机104a和104b一起被分组为集群1101。机架101c和101d、tor交换机102c和102d以及聚合交换机104c和104d一起被分组为集群1102。
20.聚合交换机104a、104b、104c和104d可以包括可编程交换机,例如64端口tor p4可编程交换机,该可编程交换机将消息路由到其集群110中的tor交换机102或从该tor交换机路由消息。此类可编程交换机可以包括例如具有被配置成提供40千兆以太网(ge)帧速率的端口的barefoot networks tofino专用集成电路(asic)。可以用作聚合交换机104的其他类型的可编程交换机可以包括例如cavium xpliant可编程交换机或broadcom trident 3可编程交换机。
21.核心交换机106a和106b提供集群110之间以及与网络控制器120的通信。在一些实现方式中,网络控制器120可以包括软件定义的网络(sdn)控制器。如下文更详细讨论的,网络控制器120可以存储活动nvme命名空间或逻辑块到位于服务器机架101的nvme节点中的物理块的全局映射(例如,图2中的全局nvme映射20)。nvme命名空间可以包括可供网络100中的其他nvme节点访问的逻辑地址(例如,逻辑块地址(lba))的集合。网络控制器120聚合可用nvme命名空间以创建可用存储器或存储容量的全局或网络范围视图。
22.网络控制器120更新其全局映射,以添加与可能已经被热插入到服务器机架101中的新nvme节点相对应的nvme命名空间,或移除与可能已经从服务器机架101热拔出或由tor交换机102以其他方式确定为不可用的nvme节点相对应的nvme命名空间。在这方面,tor交换机102被配置成确定其机架101中的nvme节点已经变为非活动,并且从存储在tor交换机102处的nvme映射(例如,图2和图3中的nvme映射14)中移除与非活动nvme节点中的物理存储位置相关联的一个或多个命名空间。类似地,tor交换机102被配置成确定新nvme节点已经连接到端口,并且将与新nvme节点中的物理存储位置相关联的一个或多个新nvme命名空间添加到其nvme映射。每个tor交换机可以被配置成响应于确定其机架101内的nvme节点已经添加、移除或以其他方式变得不可用而向网络控制器120发送通知,使得网络控制器120可以更新其全局nvme映射。
23.在一些实现方式中,tor交换机102、聚合交换机104和核心交换机106可以包括例如可编程以处理不同定制协议的可编程交换机。可编程交换机102、104和106可以包括可编程匹配作用管线以提供可配置数据平面和定制的分组处理能力。此类可编程交换机的示例
可以在以上通过引用并入本文的共同待决的第17/174,681号、第16/548,116号、第16/697,019号、第16/914,206号和第16/916,730号美国申请中找到。
24.图1示例中的可编程交换机102、104和106的数据平面可以控制可编程交换机的点对点分组转发行为,例如使用l1/l2以太网分组交换、分组接纳控制以及调度或排队。可编程交换机102、104和106的数据平面是可编程的,并且与确定网络100中的设备之间的分组或消息的端到端路由的高级控制平面分离。
25.在图1的示例中,tor交换机102用作其相应服务器机架101中的nvme节点的nvme控制器。在这方面,nvme管理模块10负责通过识别新附接的、故障的或恢复的nvme节点并更新其nvme映射中的可用命名空间来确定其服务器机架101中的一组活动nvme节点。另外,nvme管理模块10可以通知其他nvme节点和网络控制器120有关nvme映射中的更新。更详细地,tor交换机102监测其端口的状态以便激活或停用端口。端口的激活触发nvme管理模块10经由激活的端口执行nvme发现过程,以确定是否存在一个或多个新可用命名空间。端口的停用触发nvme管理模块10取消使用连接到停用的端口的任何nvme节点以及用于此类nvme节点的所有传出消息。
26.另外,使用可编程交换机作为nvme控制器可以通过定义定制的分组格式和处理行为来提供高性能和可扩展的存储器中心架构的配置。可编程交换机102、104和106支持独立于协议的交换机架构和现成交换机的使用,与专门设计的片上网络(noc)相反。可编程交换机102、104和106的处理资源,例如使用内容可寻址存储器(cam)或ternary cam(tcam)表或其他类型的匹配动作表,通常可以提供比在终端nvme节点处可发生的nvme消息处理更快的nvme消息处理。
27.本领域普通技术人员参考本公开将理解,与图1示例中所示的相比,其他实现方式可以包括不同数目或布置的服务器机架101、tor交换机102、聚合交换机104或核心交换机106。在这方面,图1中所示的网络100用于说明的目的,并且本领域普通技术人员将理解,网络100可以包括比图1示例所示的多得多的服务器机架101以及交换机或路由器。其他实现方式可以包括网络100中的附加级别,所述附加级别可以包括附加服务器和/或可编程交换机。在一些变型中,可以省略聚合交换机104和/或核心交换机106。
28.图2是根据一个或多个实施方案的图1的网络100中包括的示例性部件的框图。如图2所示,nvme节点108包括用于在网络100上通信的处理器116、存储器118、存储设备121和接口122。nvme节点108可以被包括作为例如图1中的服务器机架101a的一部分。尽管在图2的示例中仅示出了nvme节点108,但是网络100中的其他nvme节点可以具有与nvme节点108类似或不同的部件。
29.处理器116可以执行指令,例如来自nvme模块16和应用程序18的指令,该应用程序可以包括操作系统(os)和/或由nvme节点108使用的其他应用程序。处理器116可以包括电路,诸如中央处理单元(cpu)、一个或多个risc-v核心、图形处理单元(gpu)、微控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、硬连线逻辑、模拟电路和/或它们的组合。在一些实现方式中,处理器116可以包括片上系统(soc),该soc可以与存储器118和接口122中的一者或两者组合。
30.存储器118可以包括例如易失性随机存取存储器(ram),诸如静态ram(sram)、动态ram(dram)、非易失性ram或其他固态存储器,其由处理器116用作内部主存储器以存储数
据。存储在存储器118中的数据可以包括从存储设备121读取的数据、要存储在存储设备121中的数据、从nvme模块16或应用程序18加载以供处理器116执行的指令和/或用于执行此类应用程序的数据。除了从存储器118加载数据之外,处理器116还可以加载来自作为外部存储器或分布式高速缓存的其他nvme节点的nvme命名空间的数据。此类数据也可以在修改之后由处理器116刷新,或者在不修改的情况下经由可编程交换机102逐出回存储器118或外部nvme节点。
31.如图2所示,存储器118存储nvme模块16,该nvme模块可以提供用于访问nvme命名空间中的数据的指令。此类指令可以包括用于维护存储在网络100的不同nvme节点上的数据(例如,高速缓存行)的一致性并处理与可编程交换机102的通信的协议,例如用于维护nvme消息的适当序列的协议。在一些实现方式中,nvme模块16可以包括由nvme节点108的os使用的驱动器。
32.存储设备121用作辅助存储装置,其可以包括例如一个或多个旋转磁盘或非易失性固态存储器,例如闪存存储器。尽管本文中的描述通常是指固态存储器,但应理解,固态存储器可包括各种类型的存储器设备中的一种或多种,诸如闪存集成电路、nand存储器(例如,单层单元(slc)存储器、多层单元(mlc)存储器(即,两层或更多层)或它们的任何组合)、nor存储器、eeprom、其他离散的非易失性存储器(nvm)芯片或它们的任何组合。
33.接口122被配置成将nvme节点108与可编程交换机102连接。接口122可以使用例如以太网等标准进行通信。在这方面,nvme节点108、可编程交换机102和网络控制器120可以不物理上位于同一位置,并且可以通过诸如lan或wan的网络进行通信。如本领域普通技术人员将理解的,接口122可以被包括为处理器116的一部分。
34.如上文参考图1所讨论的,可编程交换机102可以是用于包括nvme节点108的服务器机架101的tor交换机。在图2的示例中,可编程交换机102包括端口130、电路132和存储器134。端口130提供连接并且被配置成与例如nvme节点、网络控制器120、聚合交换机104和核心交换机106等设备通信。例如,端口130可以包括以太网端口。如上所述,可以监测端口130以检测端口的激活或停用,从而触发nvme管理模块10执行nvme发现过程或移除停用的端口的nvme命名空间。
35.可编程交换机102的存储器134可以包括例如易失性ram,诸如dram,或非易失性ram或其他固态存储器,例如由电路132使用的寄存器阵列,以执行从nvme管理模块10或可编程交换机102的固件加载的指令和/或用于执行此类指令的数据,例如nvme映射14。电路132可以包括例如asic、微控制器、dsp、fpga、硬连线逻辑、模拟电路和/或它们的组合的电路。在一些实现方式中,电路132可以包括soc,该soc可以与存储器134组合。
36.如下面更详细地讨论的,nvme管理模块10可以包括用于实现如参考图4至图6讨论的过程以实现nvme节点的热插入和热拔出以及改善消息故障处理的指令。另外,nvme映射14的使用使得可编程交换机102能够跟踪在其服务器机架中的nvme节点处可用的活动nvme命名空间。
37.图2的示例中的网络控制器120维护全局nvme映射20,该映射可以包括映射表或其他类型的数据结构。控制器120经由接口128接收来自可编程交换机102的nvme映射更新或通知,该更新或通知指示对由可编程交换机102维护的nvme映射诸如nvme映射14的更新或改变。此类更新可以包括移除与位于被确定为非活动或例如由于热拔出而以其他方式不可
用的nvme节点中的物理存储位置相关联的一个或多个nvme命名空间。类似地,可编程交换机102可以更新其nvme映射以添加例如由于nvme节点的热插入而变为可用的一个或多个新nvme命名空间。
38.另外,网络控制器120可以向网络100中的nvme节点发送一个或多个通知,以向此类节点通知新nvme命名空间可用或者nvme命名空间已经变为不可用。在一些实现方式中,由控制器120维护的全局nvme映射20可以指示哪些nvme节点已经访问特定命名空间。在此类实现方式中,网络控制器120可以识别已经访问移除的nvme命名空间的nvme节点,该节点与发送更新的可编程交换机102不在同一服务器机架中。然后,控制器120可以向此类nvme节点发送通知,以通知此类nvme节点不可用的nvme命名空间。
39.控制器120的处理器124执行网络控制器模块22以维持全局nvme映射20并且根据需要通知nvme节点有关更新。处理器124可以包括电路,例如cpu、gpu、微控制器、dsp、asic、fpga、硬连线逻辑、模拟电路和/或它们的组合。在一些实现方式中,处理器124可以包括soc,该soc可以与存储器126和接口128中的一者或两者组合。例如,存储器126可以包括诸如dram的易失性ram、非易失性ram或处理器124用于存储数据的其他固态存储器。控制器120经由接口128与可编程交换机102通信,该接口被配置成与可编程交换机102的端口连接,并且可以根据例如以太网的标准进行连接。
40.如本领域普通技术人员参考本公开所理解的,与图2示例中所示的相比,其他实现方式可以包括不同布置或数目的部件或模块。例如,在一些实现方式中,nvme节点108可以不包括存储设备121,或者两个可编程交换机102可以用于单个服务器机架以实现冗余。
41.图3示出了根据一个或多个实施方案的示例性nvme映射14。在图3的示例中,nvme映射14可以是映射表或其他类型的数据结构。例如,nvme映射可以包括单个数据结构或者可以由存储在可编程交换机102处的多个数据结构形成,该多个数据结构可以包括直接连接到可编程交换机102并由该可编程交换机使用的存储器(例如,图2中的存储器134)。
42.如图3所示,nvme映射14包括将作为逻辑块映射到位于nvme节点中的物理存储位置(即,图3中的物理块)的nvme命名空间标识符(即,图3中的命名空间id)。物理块可以各自表示包括与存储nvme映射14的可编程交换机102相同的服务器机架中包括的nvme节点中的一系列物理存储位置。在一些实现方式中,服务器机架中的每个nvme节点108可以包括一个或多个nvme命名空间。在其他情况下,服务器机架中的不到所有节点或服务器可以具有可用的nvme命名空间。
43.在图3的示例中,nvme映射14包括可以在同一服务器机架中和/或在已经访问特定nvme命名空间的其他服务器机架中的nvme节点的标识符。如下文参考图4和图5的过程更详细地讨论的,可编程交换机102可以在命名空间例如由于nvme节点被热拔出而变为不可用之后将通知发送到已经访问nvme命名空间的nvme节点。在其他实现方式中,可以省略每个nvme命名空间的访问节点。
44.可编程交换机102可暴露或以其他方式使其服务器机架中的nvme命名空间可用,并且为nvme命名空间提供存储容量。在一些实现方式中,nvme节点可以从可编程交换机102请求可用nvme命名空间的列表。
45.nvme映射14可由可编程交换机102更新,以响应于例如由于热插入而添加到服务器机架中的新nvme节点(例如,图2中的nvme节点108)添加新nvme命名空间。类似地,可以由
可编程交换机102更新nvme映射14,以移除例如由于从服务器机架热拔出nvme节点而不可用的nvme命名空间。在这方面,可编程交换机102可以经由监测连接到nvme节点108的端口130来检测nvme节点108的热插入或热拔出。在一些实现方式中,可编程交换机102还可以响应于确定nvme节点108不可用而移除一个或多个nvme命名空间,例如在将阈值数目的消息重新发送到nvme节点而没有接收到消息的确认之后移除一个或多个nvme命名空间。
46.本领域普通技术人员根据本公开将理解,nvme映射14可以包括与图3所示不同的信息。例如,nvme映射14的一些实现方式可以包括每个命名空间的逻辑地址范围或可以省略访问节点列。
47.示例性过程
48.图4是根据一个或多个实施方案的nvme命名空间移除过程的流程图。图4的过程可以由例如图2中执行nvme管理模块10的可编程交换机102的电路132执行。
49.在框402,可编程交换机确定nvme节点已经变为非活动。此确定可源自检测到停用可编程交换机的端口或移除经由端口到nvme节点的连接。在其他情况下,nvme节点已经变为非活动的确定可源自达到发送到非活动nvme节点的连续未确认消息的预定数目。相比依赖于终端nvme节点确定非活动nvme节点不再可用,使用可编程交换机(例如,可编程tor交换机)确定nvme节点已经变为非活动可以提供nvme节点的热拔出和故障检测的更快检测。
50.在框404,可编程交换机从nvme映射中移除与非活动nvme节点中的物理存储位置相关联的一个或多个nvme命名空间。在这方面,每个nvme节点可以具有一个或多个nvme命名空间,使得当nvme节点变为非活动时,从不可用物理存储位置的nvme映射中移除对应的一个或多个nvme命名空间。在一些实现方式中,可以通过删除nvme命名空间的一个或多个条目从nvme映射中移除一个或多个nvme命名空间。在其他实现方式中,可以通过添加已经移除了一个或多个nvme命名空间的非活动标记或其他指示符来移除一个或多个nvme命名空间。可以响应于达到nvme映射的存储极限而最终删除此类移除的nvme命名空间。使用此类非活动性指示可以有助于响应于nvme命名空间后续变为活动而通知先前访问了非活动nvme命名空间的nvme节点。
51.在框406,可编程交换机向网络控制器120发送指示在框404从nvme映射中移除了一个或多个nvme命名空间的通知。如下面参考图7更详细地讨论的,网络控制器120可以使用在框408发送的通知来更新全局nvme映射(即,图2中的全局nvme映射20),并且可以向其他可编程交换机102和/或nvme节点108通知更新。
52.在框408,可编程交换机向一个或多个nvme节点发送指示移除的nvme命名空间的一个或多个通知。nvme节点可以在同一服务器机架中或者在不同服务器机架中。如上所述,可编程交换机102可以使用先前已经访问移除的nvme命名空间的nvme节点的列表来将通知发送到仅指示移除nvme命名空间的那些nvme节点。这通常可以提供由nvme节点进行的更快地调整,以使用不同的可用nvme命名空间代替已移除的nvme命名空间,而不是依赖终端节点来确定nvme命名空间不再可用。
53.本领域普通技术人员参考本公开将理解,图4的nvme命名空间移除过程的框的顺序在其他实现方式中可以不同。例如,在其他实现方式中,可以切换框406和408的顺序,使得在向网络控制器120通知移除了nvme命名空间之前,向nvme节点通知移除了nvme命名空间。在又其他实现方式中,可以省略框406或408中的一个框,使得仅可由网络控制器120或
由可编程交换机通知先前访问移除的nvme命名空间的nvme节点。
54.图5是根据一个或多个实施方案的nvme命名空间创建过程的流程图。图5的过程可以由例如图2中执行nvme管理模块10的可编程交换机102的电路132执行。
55.在框502,例如响应于在运行时期间nvme节点经由热插入连接到可编程交换机,可编程交换机确定新nvme节点已经连接到端口。框502的确定还可以在可编程交换机的启动过程期间发生,其中可编程交换机经由所有端口执行nvme发现过程,以识别位于经由其端口连接到可编程交换机的nvme节点处的可用nvme命名空间。
56.在框504,可编程交换机添加与新nvme节点中的一个或多个物理存储位置相关联的一个或多个nvme命名空间。在一些实现方式中,可编程交换机可以向在框502检测到的新nvme节点发送针对可用命名空间的nvme请求。
57.在框506,可编程交换机向网络控制器120发送添加的一个或多个nvme命名空间的通知。然后,网络控制器120可以更新其全局nvme映射20,并且可以向其他可编程交换机102和/或nvme节点108通知更新。
58.在框508,可编程交换机向一个或多个nvme节点发送指示添加的nvme命名空间的一个或多个通知。nvme节点可以在同一服务器机架中或者在不同服务器机架中。在一些实现方式中,可编程交换机可以向其服务器机架中的每个nvme节点发送添加的nvme命名空间的通知。在其他实现方式中,可编程交换机还可以向先前已访问服务器机架中的nvme命名空间的其他nvme节点发送通知。
59.本领域普通技术人员参考本公开将理解,图5的nvme命名空间添加过程的框的顺序在其他实现方式中可以不同。例如,在其他实现方式中,可以切换框506和508的顺序,使得在向网络控制器120通知添加了nvme命名空间之前,向nvme节点通知添加了一个或多个nvme命名空间。在又其他实现方式中,可以省略框506或508中的一个,使得仅可编程交换机102或网络控制器120可以通知nvme节点添加了一个或多个nvme命名空间。
60.图6是根据一个或多个实施方案的消息故障处理过程的流程图。图6的过程可以由例如图2中执行nvme管理模块10的可编程交换机102的电路132执行。
61.在框602,可编程交换机从其服务器机架中的nvme节点接收针对消息的数据。该数据可以包括例如用于在同一服务器机架内或在不同服务器机架中的目标nvme节点处执行nvme写入命令的数据。作为另一示例,该数据可以包括响应于从另一nvme节点接收到的读取命令而从服务器机架中的nvme节点读取的数据。
62.在框604,可编程交换机将针对消息接收的数据本地存储在例如图2中的可编程交换机102中的存储器134中。在一些实现方式中,可编程交换机可以解析来自从nvme节点接收的消息的数据,并且缓冲消息中含有的nvme胶囊,或者存储表示本地存储器中的有效负载的数据的副本。存储针对消息的数据可以由例如可编程交换机的一个或多个匹配动作阶段或表产生。
63.在框606,可编程交换机将包括数据的消息发送到目标节点。在这方面,可编程交换机可以解析消息的一个或多个报头以识别目标节点并使用一个或多个匹配动作阶段或表将消息路由到适当的端口以将消息发送到目标nvme节点。
64.在框608,可编程交换机在未接收到确认并且需要重新发送消息的情况下暂时保留在框604存储的数据。通过在可编程交换机处执行此类消息故障处理,通常可以减少响应
故障消息所需的时间并减少终端nvme节点在处理此类故障消息时的工作量。在一些实现方式中,可编程交换机可以保留数据,直到接收到对数据的确认。在其他实现方式中,数据可以临时存储在循环缓冲器中,使得当缓冲器变满时,可编程交换机接收的最旧数据被可编程交换机接收的最新数据替换。
65.在框610,可编程交换机确定从目标节点接收对框606发送的消息的确认(即,ack消息)的超时值是否已经到期。在一些实现方式中,可编程交换机可以响应于发送消息而例如通过可编程交换机的出口管线设置针对接收对应确认的超时寄存器。超时值可以基于例如平均往返分组传输持续时间。在一些实现方式中,可以基于例如采样的往返时间的指数移动平均值在字段中调整超时值。
66.响应于在达到超时值之前在框610接收到确认,图6的消息故障处理过程在框612结束。另一方面,响应于在达到超时值之前在框610未接收到确认,过程进行到框614,以使用在框608由可编程交换机暂时保留的数据重新创建消息并重新发送。通过使用本地存储的数据,可编程交换机可以对达到超时值作出快速响应,而不必通知发出消息的nvme节点并等待来自nvme节点的响应。
67.在一些情况下,可编程交换机可能会收到否定确认(即,nack消息)或其他错误消息,指示出于例如序列号不正确等原因,接收由可编程交换机发送的消息时出错。在这种情况下,可编程交换机可以尝试校正重新创建消息时的错误。在一些实现方式中,可编程交换机还可以向发出消息的nvme节点通知可编程交换机无法解决的错误。
68.在框616,可编程交换机递增消息重试计数器。该计数器可以例如响应于重新发送消息而在可编程交换机的寄存器中设置,例如通过可编程交换机的出口管线设置。
69.在框618,可编程交换机确定重试的次数是否已达到阈值。例如,作为发送与接收nvme节点之间的nvme协商过程的一部分,可以设置阈值重试次数。响应于重试的次数达到阈值,图6的过程进行到框620以开始nvme命名空间移除过程,如上文所讨论的图4的过程,从可编程交换机的nvme映射中移除无响应nvme节点的nvme命名空间。另一方面,响应于在框618未达到阈值重试次数,过程返回到框610以确定是否已经达到接收在框614重新发送的消息的确认的超时值。
70.本领域普通技术人员参考本公开将理解,图6的消息故障处理过程的框的顺序在其他实现方式中可以不同。例如,在一些实现方式中,在框616递增重试计数器可以在框614重新创建消息并重新发送之前发生。
71.图7是根据一个或多个实施方案的全局nvme映射更新过程的流程图。图7的过程可以由例如图2中执行网络控制器模块22的网络控制器120的处理器124执行。
72.在框702,网络控制器从可编程交换机(例如,图1中的tor交换机102a、102b、102c或102d中的一个tor交换机)接收nvme节点已经变为非活动的通知。通知可以作为nvme命名空间移除过程的一部分发送,例如上文所讨论的图5的过程。在其他实现方式中,网络控制器还可以从可编程交换机接收对新添加的nvme命名空间的更新。
73.在框704,网络控制器基于接收到的通知更新全局映射(例如,图2中的全局nvme映射20)。网络控制器可以从其全局映射中移除对应于非活动nvme节点的一个或多个nvme命名空间。在一些实现方式中,可以通过删除nvme命名空间的一个或多个条目来移除一个或多个nvme命名空间。在其他实现方式中,可以通过添加已经移除了一个或多个nvme命名空
间的非活动标记或其他指示符来移除一个或多个nvme命名空间。
74.在框706,网络控制器向至少一个nvme节点发送对全局映射的更新的至少一个通知。全局映射可以包括已经访问从全局映射中移除的一个或多个nvme命名空间的nvme节点的条目或指示。可以由网络中的可编程交换机周期性地或响应于例如新nvme节点访问nvme命名空间来提供此信息。然后,网络控制器可以向先前已经访问数据的nvme节点发送通知,从命名空间读取数据和/或将数据写入命名空间,通知nvme节点从全局映射中移除的一个或多个命名空间不再可用。
75.在一些实现方式中,响应于网络控制器从可编程交换机接收到nvme节点已经再次变为活动的更新,网络控制器可以接着向先前访问过一个或多个nvme命名空间的nvme节点发送有关重新激活的nvme节点的新通知。在这方面,从全局映射中移除nvme命名空间可以仅包括向全局映射中的非活动nvme命名空间的一个或多个条目添加非活动标记或指示符。可以响应于达到全局映射的存储极限而最终删除此类移除的nvme命名空间。使用此类非活动性指示可以有助于响应于nvme命名空间后续变为活动而通知先前访问了移除的nvme命名空间的nvme节点。
76.本领域普通技术人员参考本公开将理解,图7的全局nvme映射更新过程的框的顺序在其他实现方式中可以不同。例如,在一些实现方式中,在框706发送更新的至少一个通知可以在框704对全局映射进行更新之前。
77.如上所述,使用内嵌式可编程交换机来维护nvme映射通常可以实现网络中nvme节点的热插入和热拔出。另外,前述消息处理过程可以提供更快的故障检测并提高容错性,这在内在有损的以太网中尤其有用。使用可编程交换机进行nvme映射可以促进比依赖于nvme终端节点之间的通信更快的映射更新,同时无需从nvme节点进行此类处理。如上所述,更快的nvme映射更新可能是归因于由可编程交换机、可编程匹配动作阶段或表以及在线或网络处理执行的端口监测。
78.其他实施方案
79.本领域的普通技术人员将会知道,结合本文公开的示例所描述的各种例示性逻辑块、模块和过程可以实现为电子硬件、计算机软件或两者的组合。此外,前述过程可体现在计算机可读介质上,该计算机可读介质使处理器或控制器电路执行或实施某些功能。
80.为了清楚地说明硬件和软件的这种可互换性,上面已经在其功能方面对各种例示性部件、块和模块进行了总体描述。将此功能性实现为硬件还是软件取决于特定应用和施加在整个系统的设计约束。本领域的普通技术人员可以针对每个特定应用以不同方式实现所描述的功能,但这种实现决策不应被解释为导致脱离本公开的范围。
81.结合本文公开的示例所描述的各种说明性逻辑块、单元、模块、处理器电路和控制器电路可以用被设计用于执行本文所述功能的通用处理器、gpu、dsp、asic、fpga或其他可编程逻辑器件、离散门或晶体管逻辑、分立硬件部件或它们的任何组合来实现或执行。通用处理器可以是微处理器,但是在替代方案中,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器或控制器电路还可以实现为计算设备的组合,例如dsp和微处理器、多个微处理器、soc、结合dsp内核的一个或多个微处理器,或任何其他此类配置的组合。
82.结合本文公开的示例而描述的方法或过程的活动可直接体现于硬件中、由处理器或控制器电路执行的软件模块中或两者的组合中。该方法或算法的步骤也可以以与示例中
提供的顺序另选的顺序执行。软件模块可驻留在ram存储器、闪存存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动介质、光学介质或本领域中已知的任何其他形式的存储介质中。示例性存储介质联接到处理器或控制器电路,使得处理器或控制器电路可从该存储介质读取信息和向该存储介质写入信息。在替代方案中,存储介质可以是处理器或控制器电路的组成部分。处理器或控制器电路和存储介质可驻留在asic或soc中。
83.提供了本公开的示例性实施方案的上述描述,以使得任何本领域普通技术人员能够制作或使用本公开的实施方案。对这些示例的各种修改对于本领域普通技术人员而言将是显而易见的,并且在不脱离本公开的实质或范围的情况下,本文公开的原理可以应用于其他示例。所述实施方案将在所有方面被认为仅仅是示例性的而非限制性的。此外,在以下权利要求书中以“a和b中的至少一者”的形式使用的语言应理解为意指“仅a、仅b或a和b两者”。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献