用于以太网类型网络上的存储器和I/O的远程访问的NVMExpress控制器的制作方法

文档序号:15742766发布日期:2018-10-23 22:34阅读:563来源:国知局
用于以太网类型网络上的存储器和I/O的远程访问的NVM Express控制器的制作方法

本申请要求于2015年9月02日提交的美国申请号14/843,884;于2015年9月02日提交的美国申请号14/843,891;于2015年9月02日提交的美国申请号14/843,892;以及于2015年9月30日提交的美国申请号14/954,691的权益,其整体内容通过引用全部并入本文。另外,本申请涉及于2013年6月26日提交的美国临时申请号61/839,389以及于2014年2月26日提交的美国申请号14/191,335,其整体内容通过引用全部并入本文。

技术领域

本发明总体上涉及通过在网络上使用非易失性存储器Express(NVMe)协议而以低延时访问远程存储器。



背景技术:

通常,CPU可以通过使用网络协议在网络上访问远程存储器或者I/O设备。访问远程存储器或者I/O设备的一个常规方法是通过iSCSI存储装置。该方法通过CPU使用大量的处理,这增加总访问延时。经由iSCSI存储装置访问远程存储器或者I/O设备通常具有比本地存储器或者I/O设备的直接访问大四到五倍的延时。这导致对于要求网络上的远程存储器或者I/O设备访问的系统的显著的性能和吞吐量降低。

处理本地非易失性存储器访问的相对新的接口标准是NVM Express,有时被称为非易失性存储器主机控制器接口规格。NVMe是允许主机软件与非易失性存储器子系统通信的寄存器级接口。该接口被优化用于企业和客户端固态驱动器(SSD),其通常地被附接到PCI Express(PCIe)接口。NVMe提供对本地非易失性存储器的直接I/O访问。与在传统的I/O接口(诸如SAS(串行SCSI)或者SATA(串行ATA))上的连接相比较,使用NVMe,读和写操作的延时被减少。

然而,NVMe具有关于在以太网交换机或者其他类型的网络上传递数据的限制。通常,NVMe被设计为访问本地SSD并且在通过网络访问远程存储装置方面未被定义。如现今所定义的NVMe未提供用于通过网络由多个主机CPU访问多个远程SSD的方案。因此,需要使得NVMe能够在网络(例如,以太网)上高效工作以用于在网络上访问远程SSD和命名空间。



技术实现要素:

本发明通过提供实现使用NVMe命令在外部网络(诸如以太网)上访问远程非易失性存储器的系统,来克服现有技术的限制。在一个方面中,扩展的NVMe控制器提供该能力。

在一个方面中,扩展的NVMe控制器使得CPU能够使用NVMe协议访问远程非易失性存储器(例如,SSD)。例如,在用于经由以太网交换机与其他服务器或SSD通信的一个服务器上实现扩展的NVMe控制器。NVMe协议可以通过提供以太网上的NVM(NVMoE)帧而在以太网上被使用。在一个实现中,NVMoE帧被定义,其指定由扩展的NVMe控制器在以太网上传输的NVMoE命令。扩展的NVMe控制器包括用于基于NVMoE帧的定义将NVMe命令转换为NVMoE命令的转换机制。特别地,转换机制由映射表支持,映射表用于将NVMe控制器的主机标识符(HSID)和/或NVMe命令的命名空间标识符(NSID)映射到被包括在NVMoE命令中的以太网介质访问控制(MAC)地址。

在另一方面中,扩展的NVMe控制器被装备有用于从在外部网络上传输的NVMe命令的丢失恢复的重试机制。重试机制包括用于检测NVMe命令的丢失的计时器,并且如果NVMe命令根据计时器被确定为被丢失,则重试机制将重新发出NVMe命令。

在又一方面中,扩展的NVMe控制器实现多路径I/O和命名空间共享。多路径I/O指代单个主机与命名空间之间的两个或两个以上完全独立的物理PCIe路径。命名空间共享指代用于两个或两个以上主机使用不同的NVMe控制访问共享命名空间的能力。扩展的NVMe控制器中的一个或多个可以使得主机通过多个PCIe路径访问单个命名空间,并且使得两个或两个以上主机访问共享命名空间。

本发明的另一方面包括:扩展的NVMe存储网络,其包括多个本地NVMe存储节点;以及外部网络,其耦合多个NVMe存储节点。本地NVMe存储节点包括一个或多个主机处理器、如上文所描述的扩展的NVMe控制器以及本地非易失性存储器。

在一个示例性实施例中,外部网络可以包括L3网络。因此,扩展的NVMe控制器可以包括用于将NVMe命令转译为由L3分组头部封装并且因此适于在L3网络上传输的NVMoE命令的命令转译器。

扩展的NVMe存储网络的各种示例应用在此还被描述为适合不同的场景。在一个应用中,扩展的NVMe存储网络被实现为服务器机架,其中本地存储节点包括服务器机架中的服务器,并且外部网络包括架顶式以太网交换机。在另一应用中,扩展的NVMe存储网络被实现为单个服务器(其包括单个主机),其中每个本地NVMe存储节点包括基于专用扩展的NVMe控制器和专用本地非易失性存储器的命名空间。在又一示例应用中,扩展的NVMe存储网络包括至少两个主机处理器并且经由两个扩展的NVMe控制器提供冗余度。

在附加的实施例中,扩展的NVMe控制器支持负载平衡。为了实现负载平衡,扩展的NVMe控制器的本地存储接口经由本地非易失性存储器的存储器信道将扩展的NVMe控制器耦合到用于本地非易失性存储器的本地命名空间,使得存储器信道更均匀分布地被耦合到扩展的NVMe控制器的多个端口。

在另一附加的实施例中,扩展的NVMe目录服务器包括将目录服务器耦合到具有多个扩展的NVMe控制器的外部网络的网络接口。目录服务器还具有存储器,其适于存储分配的NVMe标识符与网络地址之间的映射。目录服务器还具有处理器,其将一个或多个消息发送到扩展的NVMe控制器,以将可用的NVMe标识符分配到扩展的NVMe控制器,扩展的NVMe控制器请求NVMe标识符并且将分配作为映射存储在存储器中。

在另一实施例中,扩展的NVMe控制器通过探测用于远程缓冲器状态的远程扩展的NVMe控制器并且将其缓冲器中的每个缓冲器的缓冲器状态传输到远程扩展的NVMe控制器来支持流控制。

本发明的其他方面包括与上文所描述的那些有关的方法、系统、组件、设备、改进、应用和其他方面。

本发明的附加特征和优点将从下面的说明书中被阐述,并且部分地将从说明书显而易见或者可以通过本发明的实践而被学习。本发明的各种优点可以由在书面的说明书及其权利要求以及附图中特别地指出的结构而被实现并且被达到。将理解到,前述总体描述和以下具体实施方式是示例性并且解释性的,并且旨在提供如要求保护的本发明的进一步的解释。

附图说明

当结合附图理解时,本发明具有将从本发明的以下具体实施方式和所附的权利要求更容易地明显的其他优点和特征,其中:

图1A是图示扩展的NVMe存储网络的系统的块图。

图1B是图示图1A中的系统的扩展的NVMe能力的块图。

图2是NVMoE帧定义的示图。

图3A是如在图2中所描绘的NVMoE帧定义的第一部分的示图。

图3B是HSID/NSID到MAC地址的示例性映射表。

图3C是HSID/NSID到包括注册的HSID的MAC地址的另一示例性映射表。

图3D图示了用于非易失性存储器地址解析(NVMAR)协议的示例性消息格式。

图4是用于使得NVMe命令能够在以太网上被传输的方法的流程图。

图5是扩展的NVMe控制器的块图。

图6是如在图5中所描绘的扩展的NVMe控制器的详细结构的块图。

图7是NVMoE帧的一个实施例的示图。

图8是NVMoE帧的另一实施例的示图。

图9是L3网络上的扩展的NVMe存储系统的块图。

图10是适于L3网络上的传输的NVMoE帧的示图。

图11A-B是图示作为服务器机架的扩展的NVMe存储网络的应用模型的示图。

图12A-B是图示作为单个服务器的扩展的NVMe存储网络的应用模型的示图。

图13是图示作为双服务器系统的扩展的NVMe存储网络的应用模型的示图。

图14是图示作为双端口服务器系统的扩展的NVMe存储网络的应用模型的示图。

图15是命名空间控制器的块图。

图16图示了用于扩展的NVMe控制器的示例性负载平衡机制。

图17是用于NVMoE的流控制的示例性状态图。

图18是可以被使用在本发明中的计算机或者服务器的示意性示例的块图。

图19-23是根据各种实施例的图示扩展的NVMe存储网络的系统的块图。

仅出于图示的目的,附图描绘了本发明的实施例。本领域的技术人员将从以下讨论容易认识到,在不脱离在此所描述的本发明的原理的情况下,可以采用本文所图示的结构和方法的备选实施例。

具体实施方式

通常地,NVMe控制器与单个PCI功能相关联。控制器支持的能力在控制器能力(CAP)寄存器中被指示,并且作为由标识命令返回的控制器和命名空间数据结构的一部分。控制数据结构指示应用于整个控制器的能力和设置。命名空间数据结构指示特定于特定命名空间的能力和设置。另外,NVMe控制器基于配对的提交和完成队列机制。命令由主机软件放置到提交队列中。完成由控制器放置到相关联的完成队列中。多个提交队列可以利用相同的完成队列。提交和完成队列被分配在主机存储器中。

本发明涉及用于实现通过使用NVMe协议在网络上对远程非易失性存储器(例如,SSD)命名空间的访问以减少访问延时的方法。因此,扩展的NVMe控制器使得主机CPU能够使用NVMe协议访问远程非易失性存储器。附图和以下描述仅通过图示涉及优选的实施例。应该注意的是,根据以上的讨论,本文所公开的结构和方法的备选实施例将容易地被识别为在不脱离要求保护的原理的情况下可以采用的可行的备选方案。

现在参考图1A,根据一个示例性实施例,描绘了图示扩展的NVMe存储网络的系统100的块图。扩展的NVMe存储网络100可以是以太网架构上的NVMe的一个示例。在所图示的示例性实施例中,扩展的NVMe存储网络100包括两个本地NVMe存储节点111a、111b和外部网络(包括交换机114),其耦合两个本地NVMe存储节点111a、111b。扩展的NVMe存储网络100还包括目录服务器116,其通信地耦合到包括交换机114的外部网络。在一个实施例中,外部网络是以太网。在其他实施例中,外部网络可以是光纤通道(FC)或者无限带宽(IB)类型的网络。

两个本地NVMe存储节点111a、111b各自包括主机处理器(例如,CPU A或者CPU B)、扩展的NVMe控制器112A、112B,以及由NVMe命名空间(例如,NVM NS 1-1和NVM NS 1-2或者NVM NS 2-1和NVM NS 2-2)表示的本地非易失性存储器。在一个实施例中,非易失性存储器是固态驱动器(SSD)。在另一实施例中,非易失性存储器是硬盘驱动器。扩展的NVMe控制器112A、112B相应地经由其自己的主机接口被耦合到CPU(例如,CPU A、CPU B)。例如,被包括在扩展的NVMe控制器112A、112B中的主机接口可以是PCI Express(PCIe)接口。另外,扩展的NVMe控制器112A、112B包括其相应的直接网络接口以将他们耦合到外部网络(包括交换机114)。例如,为了将扩展的NVMe控制器112A、112B耦合到以太网,直接网络接口可以是以太网MAC接口。此外,扩展的NVMe控制器112A、112B各自经由一个或多个本地存储接口被耦合到其用于本地非易失性存储器的本地NVMe命名空间。例如,扩展的NVMe控制器112A经由本地存储接口被耦合到其本地NVMe命名空间(例如,NVMe NS 1-1和NVM NS 1-2)。类似地,扩展的NVMe控制器112B经由被包括在控制器112B中的另一本地存储接口被耦合到其本地NVMe命名空间(例如,NVM NS 2-1和NVM NS 2-2)。

分别在节点111a、111b内,扩展的NVMe控制器112A、11B从其主机CPU(例如,CPU A、CPU B)接收被引导到其本地NVMe命名空间(例如,NVM NS 1-1和NVM NS 1-2、或者NVM NS 2-1和NVM NS 2-2)的NVMe命令,并且向CPU提供对其本地命名空间的I/O访问。例如,扩展的控制器112A可以从CPU A接收NVMe命令以用于访问本地命名空间NVM NS 1-1和NVM NS 1-2。由于NVMe控制器112A、112B具有用于其本地命名空间的地址的清楚定义,因此NVMe控制器112A、112B可以处理命令。

在一个实施例中,扩展的NVMe控制器112A、112B(还单独地或者共同地被称为112)可以从其主机CPU(例如,CPU A或者CPUB)接收被引导到用于被耦合到外部网络的远程非易失性存储器的远程命名空间的NVMe命令。例如,扩展的NVMe控制器112A可以从CPU A接收被引导到被耦合到外部网络的NVM NS 2-1或NVM NS 2-2的NVMe命令。这当例如节点111a中的CPU A期望从节点111b中的远程命名空间NVM NS 2-1或NVM NS 2-2读取数据/将数据写入到节点111b中的远程命名空间NVM NS 2-1或NVM NS 2-2时而发生。根据图1中的所图示的示例性实施例,扩展的NVMe控制器112可以应用以太网上的NVMe(NVMoE)协议以通过外部网络交换机(例如,交融增强型以太网交换机或者甚至传统的以太网交换机)传输NVMe命令。这样的新协议有益地允许CPU使用NVMe协议访问附接到不同的扩展的NVMe控制器的命名空间或者调用远程命名空间。这还使得CPU仅以本地访问延时来访问远程命名空间。

为了实现这一点,扩展的NVMe控制器112将被引导到远程命名空间的NVMe命令转换为适于在外部网络上传输的格式,使得命令可以被传输到本地耦合(诸如经由本地存储接口耦合)到远程命名空间的另一扩展的NVMe控制器112。通常,NVMe控制器具有64位主机标识符(HSID)并且NVMe命名空间具有32位命名空间标识符(NSID)。HSID由主机通过NVMe集特征命令而可配置。为了清晰起见,此处所提到并且贯穿本公开所使用的主机标识符(HSID)通常地由发现服务器分配,并且被用于将扩展的NVMe控制器映射到MAC地址(或者另一网络地址),并且不具有与在NVMe规格中定义的HSID相同的意义。NSID是命名空间1-n的连续序列,其中n是可用命名空间的总数。在一个示例性实施例中,扩展的NVMe控制器112可以通过利用用于将NVMe命令中的HSID和NSID映射到用于在以太网上传输的以太网MAC地址的机制,来将NVMe命令转换为用于在以太网上传输的适合的格式。下面在图2中图示了适于在以太网上传输的NVMe命令的格式的定义。

在图1A的示例中,每个存储节点111a、11b包括:主机处理器(CPU A、CPU B),其可以发出NVMe命令;本地非易失性存储器(NVM NS 1-1、1-2、2-1、2-2),其可以由本地主机处理器和远程主机处理器访问;以及扩展的NVMe控制器(112A、112B),其可以接受NVMe命令、可以访问本地非易失性存储器并且可以将NVMe命令转换为用于访问远程非易失性存储器的NVMoE命令。该功能中的一些功能是常规NVMe功能,例如主机处理器访问本地非易失性存储器。该功能中的一些功能是因为图1A中的系统100是双向的。

图1B是图示仅系统100的扩展的NVMe能力并且仅在一个方向上的块图。特别地,CPU A发出被引导到远程非易失性存储器NVM NS 2-1和NVM NS 2-2的NVMe命令。在该示例中,扩展的NVMe控制器112A接收NVMe命令并且应用NVMe协议,以通过外部网络交换机114传输NVMe命令。扩展的NVMe控制器112B接收NVMoE命令、将他们转换回NVMe命令并且因此访问非易失性存储器NVM NS 2-1和NVM NS 2-2。当扮演这些特定角色时,扩展的NVMe控制器112A可以被称为NVMoE启动器,并且扩展的NVMe控制器112B可以被称为NVMoE目标。节点111a和111b可以分别被称为NVMoE启动器节点和NVMoE目标节点。注意,在图1A中,每个扩展的NVMe控制器112扮演启动器和目标二者的角色。因此,图1A中的节点111a和111b可以被称为NVMoE双向节点。

然而,在图1B中,扩展的NVMe控制器112A仅扮演启动器的角色,并且扩展的NVMe控制器112B仅扮演目标的角色。因此,不存在与来自图1A的非易失性存储器NVM NS 1-1和NVM NS 1-2的交互。因此,其未被示出在图1B中。实际上,节点111a可以不具有任何本地存储装置并且可以未用作存储节点。如果这样的话,则扩展的NVMe控制器112A可以具有减少的功能。其不需要用于访问本地非易失性存储器或者用于扮演从其他节点接收到的NVMoE命令的目标的角色的功能。节点111a可以被称为NVMoE启动器节点。类似地,在节点111b处,CPU B未被要求,这是因为没有NVMoE命令起源于节点111b。另外,扩展的NVMe控制器112B还可以具有减少的功能。其未被要求与本地主机处理器进行对接并且还未被要求将NVMe命令转换为用于对远程非易失性存储器的访问的NVMoE。节点111b可以被称为NVMoE目标节点。与图1A中的那些相比较,图1B中的扩展的NVMe控制器112A、112B可以是简化的(并且比较便宜的)版本。备选地,图1B中的扩展的NVMe控制器112A、112B可以具有与图1A中的那些相同的全部功能,例如以减少总体部分计数,但是具有比所实现的全部功能更少的功能。

在一些实现中,NVMoE启动器还管理NVMe命令的队列。在这样的实现中,NVMoE启动器将来自命令队列中的一个元素的NVMe命令封装到NVMoE帧中。NVMoE启动器还可以在标识的NVMoE帧信息中的其他字段中指示命令来自哪个NVMe队列。NVMoE目标随后处理命令并且返回包含指示命令的完成状态的字段的NVMoE帧。NVMoE启动器随后发出适当的NVMe完成队列上的命令的完成状态。在这样的系统中,NVMoE启动器管理NVMe队列的所有方面。此外,NVMoE启动器还可以按照NVMe规格来管理NVMe中断。

注意,除了命令之外,由NVMoE启动器创建的NVMoE帧可以包括数据(例如,待写入到存储位置的数据)。类似地,由NVMoE目标返回的NVMoE帧还可以包含数据(诸如从存储位置读取的数据)。当读取数据被返回时,在将状态发布到完成队列之前,NVMoE启动器将读取数据写入到主机存储器,如在NVMe规格中所定义的。另外,NVMoE启动器可以内部地生成NVMoE帧。这些NVMoE帧可以被发送到其他NVMoE启动器或者目录服务。

图2图示了根据一个示例性实施例的用于以太网上的NVMe(NVMoE)帧结构200的定义。以太网上的NVMe(NVMoE)帧200包括目的地MAC地址(例如,48位目的地MAC地址)。在MAC地址的所有位之间,24最高有效位构成组织唯一标识符(OUI)。NVMoE帧还包括源MAC地址(例如,48位源MAC地址);IEEE 802.1Q标签诸如虚拟局域网(VLAN)/服务质量(QoS)1Q标签;类型代码“ET”;和版本号“VER”(例如,4位版本号)。类型代码“ET”可以被用于指示这是以太网上的NVMe类型的帧。另外,NVMoE帧200包括定义管理和I/O命令的NVMe帧,以及帧校验序列(FCS)(例如,用于整个NVMoE帧的32位帧校验和)。在该示例中,不存在用于NVMe帧的分离的循环冗余校验(CRC)。在一个实施例中,扩展的NVMe控制器112可以使用NVMoE帧(诸如图2中所示的帧200),以指定适于在以太网上的传输的格式中的NVMe命令。

返回参考图1,还图示了根据示例性实施例的HSID和NSID分配机制。在以太网协议上的NVMe中,HSID包括由CPU配置的64位。当使扩展的NVMe控制器112附接的CPU将命令发送到远程NVMe命名空间时,其与目录服务器116通信。在一个示例性实施例中,目录服务器116是软件定义的存储(SDS)控制器。实际上,SDS控制器116可以驻留在管理网络交换机114的相同CPU上。然而,其还可以被实现在与管理交换机114的CPU相分离的CPU上。SDS控制器116具有目录,其管理整个扩展的NVMe存储网络100内的NVMe存储节点111a、111b(还单独地或共同地被称为111)的所有HSID和NSID,使得不存在分配的HSID以及分配的NSID的重复。例如,对于不同的本地NVMe存储节点111而言,SDS控制器116将不同的HSID分配到不同的CPU并且将不同的NSID分配到不同的命名空间。因此,存储节点111中的每个命名空间具有唯一的HSID和NSID。对于不同的CPU(诸如CPU A和CPU B)而言,命名空间的NSID可以是不同的,而在上层应用中,不管其不同的命名空间ID如何,命名空间被理解为相同的逻辑命名空间。

图1还图示了根据示例性实施例的NVMe到以太网映射表。一旦HSID和NSID被分配以便通过以太网交换机114发送并且接收NVMe命令和数据,扩展的NVMe存储网络100就将扩展的NVMe控制器的HSID和NVMe命名空间的NSID映射到MAC地址。图3A图示了用于48位MAC地址的结构。因此,为了将64位HSID映射到48位MAC地址,使用64位到48位映射。扩展的NVMe控制器112使用MAC地址的最高有效24位的OUI,并且使用分配的HSID[23:0]作为起始地址来填写MAC地址的网络接口控制器(NIC)特定较低24位。如果超过HSID的低24位是期望的,则其他映射是可能的。

对于NSID到MAC地址映射而言,使用32位到48位映射。扩展的NVMe控制器112使用以上HSID映射的MAC地址和本地NSID作为命名空间MAC地址。也即,MAC地址的上24位是OUI;较低24位被用于NSID特定值。(此外,如果超过NSID的较低24位是期望的,则其他映射是可能的)。以这种方式,由扩展的NVMe控制器使用的MAC地址可以连续的并且容易管理。一个扩展的NVMe控制器卡使用MAC地址空间中的1+n个地址,其中1个地址被用于NSID,并且n个地址被用于由命名空间控制器中使用的NSID命名空间。其他扩展的NVMe控制器的NSID基于其OUI和起始NIC ID而被映射。在一个实施例中,目录服务器116的SDS控制器可以处理并且管理HSID和NSID到MAC地址的映射。在其他示例性实施例中,扩展的NVMe控制器112可以通过维护用于将HSID和NSID映射到MAC地址的映射表来处理HSID和NSID到MAC地址的映射。

在一个实施例中,该映射使得使用L2学习机制变得可能,这是因为实施例使用以太网MAC地址来标识HSID和NSID。因此,可以应用L2网络交换机的行为。在一个实施例中,一个目录服务器116还管理到物理端口映射的交融增强型以太网(CEE)MAC地址。在一个实施例中,单根I/O虚拟化(SR-IOV)支持可以根据扩展的NVMe控制器的虚拟函数(VF)而使用不同的MAC地址。

一旦HSID和NSID被映射到以太网MAC地址,如在图3A中所图示的,扩展的NVMe控制器112就使用MAC地址生成NVMoE帧,如在图2中所图示的。因此,图3A还图示了在图2中所描绘的NVMoE帧的第一部分(例如,MAC地址)。

在一个实施例中,HSID和NSID到MAC地址的映射被存储在表330中,如在图3B中所图示的。该映射表可以被存储在目录服务器116中。如在图3B中所图示的,映射表(取决于设备是主机还是存储设备)将HSID或NSID映射到MAC地址。映射表还指示映射的设备是主机还是存储设备(即,存储节点)、其是有效还是无效的(即,不可到达的),以及映射是静态地填充的还是动态地填充的(即,使用网络发现学习)。在一个实施例中,主机和存储设备共享扩展的NVMe控制器上的相同MAC地址和相同物理端口。例如,主机和存储设备二者可以被耦合到相同的NVMe控制器,其具有单个以太网MAC地址。在这样的情况下,主机和存储设备共享相同的MAC地址。

在一个实施例中,在存储设备被关闭之前,其向目录服务器116通知关闭,于是目录服务器116通知附接的主机停止与该特定存储设备(例如,非易失性存储器)进一步通信。为了这样做,目录服务器116优选地知道哪些主机向存储设备注册(例如,通过有效会话)。这可以被存储在映射表中,如在图3C中的示例性表360中所图示的。在示例性表360中,具有“0.0.0.0.1.0.0.1”和“0.0.0.0.1.0.0.2”的HSID的两个主机向具有NSID“0.0.128.0”的存储设备注册。目录服务器116可能已经从主机接收到用于注册的该请求。注册指示这两个主机可以与存储设备通信(例如,经由有效会话)。当目录服务器116从具有NSID“0.0.128.0”的存储设备接收到关闭通知时,其由于关闭而通知“0.0.0.0.1.0.0.1”和“0.0.0.0.1.0.0.2”的HSID的主机停止与存储设备通信。在一个实施例中,目录服务器116等待指示通信已经停止的、来自主机的确认(或者等待超时),并且作为响应目录服务器116通知存储设备其可以继续进行关闭。在一个实施例中,示例性表360还存储用于每个NSID的控制器ID。这是具有NSID的对应的命名空间被物理地耦合到的扩展的NVMe控制器的标识符。

在一个实施例中,目录服务器116和NVMoE网络上的设备支持专用地址分配和管理协议,其可以被称为非易失性存储器地址解析(NVMAR)协议。NVMAR允许将HSID和NSID分配到设备。与图3B-C中所示的映射表类似,NVMAR可以包括具有以下各项的映射表:MAC地址、HSID/NSID、命名空间(NS)预留状态、NS错误状态以及NS全局唯一标识符(GUID)。在请求时,可以在网络中的各种设备中间共享该映射信息。在一个实施例中,映射表持续重新启动和其他关闭或者错误事件。

图3D图示了用于NVMAR的示例性消息格式390。在消息中,目的地和源MAC地址是针对消息的目的地和源。VLAN标签标识用于以太网上的NVMe的VLAN。可以针对NVMAR消息指示新以太类型。客户端MAC是与目录服务器116通信的设备。NGUID是用于设备的全局唯一标识符。客户端类型指示设备是主机还是存储设备。客户端ID是用于设备的HSID/NSID。服务器NGUID是用于目录服务器116的全局唯一标识符。选项的结束指示消息的结束。

在一些实施例中,定义多个NVMAR消息类型。这些可以包括但不限于ID发现消息、ID提供消息、ID请求消息、ID确认消息、ID否定确认消息、ID释放消息、ID标识消息、ID通知消息、ID应答消息、ID预留消息以及ID标签消息。取决于消息的类型,附加的帧数据可以被包括在消息中。

为了获得HSID/NSID,设备(例如,主机或者存储节点)在初始状态期间广播ID发现消息,以发现支持NVMAR的目录服务器116。在一些实施例中,支持服务器的超过一个NVMAR可以存在。ID发现消息的消息类型可以是“IDDISCOVER”。客户端ID字段针对这样的消息被设定到零。目的地MAC可以是广播MAC地址。随后,目录服务器116利用消息类型“IDOFFER”应答ID提供消息。客户端ID字段被设定到可用于设备采取的提供的HSID/NSID。设备可以然后将具有消息类型“IDREQUEST”的ID请求消息发送到目录服务器116以请求提供的HSID/NSID。目录服务器116利用指示请求的确认的消息类型“IDACK”应答ID确认消息。备选地,目录服务器116可以利用指示分配特定HSID/NSID的失败的消息类型“IDNACK”应答ID否定确认消息。

在某一时刻,设备可以希望取消其HSID/NSID分配(例如,当关闭或者变为无效时)。设备可以然后将ID释放消息发送到目录服务器116。ID释放消息可以包括指示释放状态(例如,舒缓关闭)的附加帧数据。

在另一方面中,主机设备可以将ID标识消息发送到目录服务器116以请求分配的HSID/NSID的状态。对于该消息的帧数据可以包括用于标识请求的标识符。目录服务器116可以将ID应答消息发送到具有包括HSID/NSID和MAC地址映射表中的条目的帧数据的ID标识消息。

在又一方面中,目录服务器116可以将ID通知消息发送到存储设备的任何注册主机,其指示任何问题(诸如未命中心跳、错误、ID释放消息、存储设备的不活动等)。对于这样的消息的帧数据可以附加地包括讨论中的问题的标识符。

主机设备可以将ID预留消息发送到目录服务器116,其指示其希望与存储设备通信。对于该消息的帧数据可以附加地包括预留或者未预留存储设备的指示。目录服务器116可以然后更新用于存储设备的注册HSID以包括主机设备的HSID。

设备还可以发送指示当前状态(例如,心跳)的ID标签消息。该消息可以包括具有关于状态(例如,有效的或无效的)的信息的帧数据。这可以响应于目录服务器116的轮询请求。

现在参考图4-5,图4图示了根据一个示例性实施例的用于使得NVMe命令能够在以太网上被传输的方法的流程图。图5图示了对应于在图4中所描绘的方法的一个实施例的示例性扩展的NVMe控制器。在所图示的实施例中,扩展的NVMe控制器112包括PCIe接口和用于通过PCI接口从主机处理器(CPU)接收NVMe命令和/或数据的DMA逻辑模块。接收到的NVMe命令和/或数据可以被引导到用于本地存储器/存储装置的本地命名空间或者用于远程存储器/存储装置的远程命名空间。PCIe接口和DMA逻辑模块负责处理来自和去往主机CPU的PCIe读取和写入命令,以及用于调度去往和来自CPU主机存储器的DMA写入和读取。

扩展的NVMe控制器112还可以包括调度和仲裁逻辑模块(或者调度器和仲裁器),其将调度410管理(Admin)和输入/输出(I/O)提交队列,以用于处理和传输接收到的命令和/或数据。进一步地,扩展的NVMe控制器112可以将接收到的NVMe命令转换为适于在外部网络上传输到被耦合到远程命名空间的另一NVMe控制器112的格式。例如,扩展的NVMe控制器112包括NVMe到NVMoE命令转译器,其用于将HSID和NSID映射420到MAC地址并且基于映射将NVMe命令转译430到NVMoE命令。特别地,在一个示例性实施例中,命令转译器包括NVMe到NVMoE映射器,其可以查询用于将HSID和NSID映射到以太网MAC地址的映射表。基于映射,命令转译器可以将NVMe命令转译为NVMoE命令。

NVMe命令包括确定NVMe控制器获取用于执行的命令的优先级的优先级级别。较高的优先级队列中的命令在较低的优先级队列中的那些命令之前被获取。管理命令被设定到最高的优先级,其中一个或多个优先级低于该最高优先级级别。在一个实施例中,当将命令从NVMe转译为NVMoE时,管理命令的最高优先级和任何其他较低的NVMe优先级级别被转译为具有适当的IEEE802.1Q优先级代码点(PCP)字段的以太网帧,使得优先级级别被反映在以太网帧中。NVMe优先级级别到PCP字段值的映射可以基于映射表。

扩展的NVMe控制器112还包括传输器,其将NVMoE命令传输440到耦合到网络的另一扩展的NVMe控制器112,以用于交换被耦合到另一控制器112的远程命名空间中的数据。传输器将基于映射的以太网MAC地址经由以太网MAC接口在以太网上传输NVMoE命令。

本领域的技术人员将理解到,提出的扩展的NVMe控制器112是可扩展的。扩展的NVMe控制器112以减少的延时在以太网上提供对SSD的远程访问。

图6图示了根据一个示例性实施例的扩展的NVMe控制器的详细结构。在所图示的实施例中,扩展的NVMe控制器112包括PCIe接口和用于处理与PCIe接口通信的命令和/或数据的消息信号中断(MSI)/MSI-X处理模块。扩展的NVMe控制器112还包括提交Q管理器以及管理提交队列的队列仲裁器。队列仲裁器还可以从PCIe接口和MSI/MSI-X处理模块读取物理区域页面(PRP)或分散集中列表(SGL)数据。扩展的NVMe控制器112包括用于将HSID和NSID映射到MAC地址的MAC地址映射器。进一步地,扩展的NVMe控制器112包括:NVMe命令解析器,其解析从PCIe接口接收到的NVMe命令;以及NVMe至NVMoE格式化器,其对NVMe命令格式化以基于映射的MAC地址生成NVMoE命令。扩展的NVMe控制器112还可以包括用于缓冲NVMoE命令的共享缓冲池。从共享缓冲池,NVMoE命令可以然后通过内部SSD接口和以太网介质访问控制器(例如,10GE MAC或40GE MAC)被发送出。如使用虚线602a、602b、602c所描绘的,共享缓冲池可以提供从NVMe至NVMoE格式化器到内部SSD接口和以太网MAC的命令和/或数据流上的流控制。扩展的NVMe控制器112还包括NVMe完成队列处理器和NVMe控制器命令处理器,其与NVMe命令解析器以及共享缓冲池协作,以缓冲并且处理从内部SSD接口和以太网MAC接口接收到的NVMe命令返回队列。

图7图示了根据一个示例性实施例的由扩展的NVMe控制器112用于指定NVMoE命令的NVMoE帧700的结构。通常,所图示的NVMoE帧700具有与在图2中定义的结构相同的结构。然而,图7中所图示的NVMoE帧700包括NVMe帧的详细结构,作为NVMoE帧的一个部分。NVMe帧包括:7位类值,其定义NVMoE帧数据的帧数据的类型;管理/IO位,其中0指示这是管理命令并且1指示这是I/O命令;如在NVMe规格中定义的命令代码;SEQ_ID[15:0],定义NVMe I/O命令中的发出的命令的次序并且被用于标识整个I/O命令中的子命令的序列的序列标签的16位;Q_ID[15:0],标识来自启动器的提交队列的队列ID的16位;CMD_ID[15:0],标识提交队列中的命令的命令ID的16位;LENGTH[15:0],定义命令的大小的长度信息的16位;地址上和地址低[47:0],指向DWORD中的NVMe存储设备中的逻辑块地址或物理存储器地址的地址的48位;NVMe数据,其描述NVMe命令;以及Status[31:0],指示数据是否包括任何错误或可报告的警告消息的状态字段的32位。

注意,当扇区大小是4096字节或更大时,NVMe开销数据总计达传输数据的至少1%。

图8是NVMoE帧800的另一实施例的示图。与图7中所示的NVMoE帧700相比较,NVMoE帧800附加地包括:时间戳,其描述用来测量延时的时间戳信息的16位;NVME命令DW[10:15],其可以穿过NVMoE命令帧;头部FCS,其描述通过NVMoE头部而生成的CRC值;元数据;以及完成双字(CMPL DWord,或CMPL DW),如在NVMe规格中定义的完成的两个DW。

在一个实施例中,802.11Q标签包括标签协议标识符、标签控制信息(优先级代码点、丢弃合法指示符和VLAN标识符)。以太类型(ET)可以是针对以太网上的NVMe的新的类型。类区段中的位可以指示是主机还是存储设备是消息的源、外围部件互连Express(PCIe)端口号以及PCIe单根I/O虚拟化(SR-IOV)虚拟函数(VF)号。

管理位可以指示命令是管理命令还是I/O命令。代码位可以指示操作码。“最后”位指示当前帧中的当前命令是否是一系列命令中的最后命令作为原子访问的一部分,并且“第一”位指示相同但是用于系列中的第一命令。命令标签位可以标识其中帧由于帧大小限制(例如,4KB每帧)被分成多个帧的情况中的帧。

保留位可以指示帧的指数值。存储器地址位可以指示被用于数据传送过程的控制器存储器空间中的地址。队列ID(Q_ID)标识主机设备CPU将命令所发到的提交队列。命令ID(CMD_ID)由主机设备CPU设定并且可以标识提交队列中的命令。

命令DW区段可以被用于将命令DWORD传递到目的地设备。当帧包括管理命令时,最后命令DWORD(DW15)是命令的NSID。头部_FCS位是帧校验序列(即,头部的前六十位上的32位循环冗余校验(CRC))。

完成队列条目DWORD(CMPL_DW)指示物理页面地址(PPA)命令或者写入PPA原始数据命令的通过或者失败状态。状态位指示各种状态信息。状态位的高16位是NVMe规格的状态位(例如,DNR、M、SCT和SC)。低16位是特定于以太网上的NVMe的状态位。这些低位可以具有用于管理命令、用于读取/擦除命令和用于写入/冲刷命令的流控制的指示。这些低位可以指示各种错误或者警报代码(例如,高错误率、不可恢复的错误、超时、地址溢出、无效命令、分组CRC错误、帧失配、一般故障等)。帧可以以帧校验和(FCS)(即,整个以太网帧的CRC)结束。

图9图示了根据一个示例性实施例的L3网络上的扩展的NVMe存储系统。在所图示的示例性实施例中,系统900包括与图1中所示的系统100的那些类似的组件。例如,系统900包括NVMe存储节点911a、911b、911c(还单独地或共同地被称为911),其各自包括扩展的NVMe控制器912A、912B、912C(还单独地或共同地被称为912)。在一个实施例中,扩展的NVMe控制器912具有与图1中所示的扩展的NVMe控制器112类似的功能。例如,扩展的NVMe控制器912可以将NVMe命令转译为NVMoE格式。

在一个实施例中,与扩展的NVMe控制器112不同,扩展的NVMe控制器912还使得帧的NVMoE格式能够通过网关/隧道918A、918B(还单独地或共同地被称为918)(诸如无状态传输隧道(STT)、虚拟可扩展LAN(VXLAN)或者使用通用路由封装的网络虚拟化(NVGRE))在L3网络上行进。例如,扩展的NVMe控制器912可以封装STT或VXLAN或NVGRE作为L3分组头部并且将L3分组头部添加到NVMoE帧。在一个实施例中,为了支持较小的MTU大小(诸如1.5K字节),在当接收到原始帧的分段时,在将分段发送并且重新装配到原始NVMoE帧中之前,网关/隧道(功能)918可以对原始NVMoE帧进行分段。

图9还示出了用于I/O命令的可靠传输的重试机制。虽然交融增强型以太网帧是无状态的,但是可能一些分组丢失由于以太网交换机914A、914B中的数据损坏或者其他错误而发生。类似地,分组数据的丢失还可能在L3以太网中发生(诸如由于L3网络的流量拥塞)。为了从所传输的NVMe命令数据的丢失进行恢复,扩展的NVMe存储系统900可以包含不同类型的重试机制。例如,扩展的NVMe存储系统900可以实现基于硬件的重试机制,使得如果特定I/O命令未回来,则系统900可以由于超时而重新发送I/O命令。扩展的NVMe控制器912分配用于每个NVMoE命令的计时器,并且当扩展的NVMe控制器912将NVMoE命令发出到用于传输的以太网接口时,计时器开始运行。因此,如果计时器超时并且对应的NVMoE命令尚未回来,则指示发出的NVMoE命令已经在网络中丢失,并且扩展的NVMoE控制器912因此重新发出用于传输的NVMoE命令。以这种方式,扩展的NVMe存储系统900可以从NVMoE命令丢失进行恢复。

另外,系统900可以支持NVMe水平处的基于软件的重试机制。软件NVMe驱动程序包括用于每个发出命令的计时器。一旦特定NVMe命令在计时器超时时尚未返回,软件NVMe驱动程序就将中止原始NVMe命令并且重新的发送新NVMe命令。

现在参考图10,图示了根据一个示例性实施例的由NVMe存储系统900使用的NVMoE帧1000。NVMoE帧1000可以通过网关/隧道918(诸如STT、VXLAN或NVGRE)在L3网络上行进。如上文所提到的,为了使得NVMoE帧能够在L3网络上行进,扩展的NVMe控制器912添加STT或者VXLAN或者NVGRE到NVMoE帧1000的封装。例如,在所图示的实施例中,NVMoE帧1000具有被插入帧中的L3分组头部。

图11A-B图示了扩展的NVMe存储网络作为服务器机架的应用模型,其中扩展的NVMe控制器经由以太网交换机进行通信。所图示的应用模型是服务器机架和架顶式交换机系统,其中NVMe存储节点可以包括服务器机架中的服务器,并且外部网络可以包括架顶式交换机。在所图示的实施例中,服务器A的CPU A可以经由可以通过交换机发送并且接收数据的扩展的NVMe控制器来访问服务器B中的命名空间NS_B1和NS_B2。所提出的扩展的NVMe控制器提供在减少的访问延时方面的优点。

扩展的NVMe控制器连同SSD命名空间一起被安装在服务器的PCIe槽中,以太网连接器通过以太网电缆被连接到架顶式交换机。在这种情况下,服务器可以通过如由示例性实施例所描述的NVMoE协议共享SSD命名空间。

图12A-B图示了根据一个示例性实施例的扩展的NVMe存储网络作为单个服务器系统的应用模型。在示例性实施例中,单个服务器系统包括单个主机(CPU)和多个存储节点,其各自包括专用扩展的NVMe控制器和专用本地非易失性存储器。扩展的NVMe控制器可以充当主机总线适配器(HBA)。存在从扩展的NVMe控制器出来的多个接口。扩展的NVMe控制器可以然后将每个接口连接到SSD命名空间。这样,主机(CPU)能够(与传统的SAS/SATA接口相比)以低延时访问SSD命名空间。图12A-B还示出了HBA启动器和设备。

图13图示了根据一个示例性实施例的扩展的NVMe存储网络作为高可用性双服务器系统1300的应用模型。在所图示的双服务器系统1300中,扩展的NVMe控制器连同SSD命名空间一起被安装在服务器(例如,服务器A、服务器B)的PCIe槽中。每个服务器包括主机处理器(CPU)。以太网连接器被用于将两个服务器中的NVMe控制器连接在一起。在这种情况下,服务器A和服务器B可以在共享驻留在服务器A和服务器B中的所有命名空间的有效-有效或有效-待机模式中工作。在一个服务器的CPU发生故障的情况下,另一服务器的CPU可以接管。另外,可能的是,驻留在服务器B上的命名空间可以是驻留在服务器A上的命名空间的镜像副本,并且当服务器A上的命名空间被写入时被保持同步。因此,如果服务器A发生故障,则服务器B可以在没有数据丢失的情况下接管。

注意,命名空间NS_A1、NS_A2、NS_B1和NS_B2是逻辑驱动器(即,非易失性存储器的块的集合)。其相应地表现为CPU A和CPUB的本地驱动器。

图14是根据一个示例性实施例的图示扩展的NVMe存储网络作为双端口服务器系统1400的应用模型的示图。系统1400可以是双CPU单服务器系统,其包括具有其本地命名空间控制器的两个扩展的NVMe控制器。两个扩展的NVMe控制器通过以太网接口连接到彼此。在所图示的实施例中,系统1400包括连接到两个CPU的两个PCIe端口,其中一个PCIe接口连接到每个CPU。每个PCIe端口将CPU连接到扩展的NVMe控制器。以这种方式,系统1400可以支持双端口PCIe SSD控制器应用。

图15图示了根据一个示例性实施例的命名空间控制器。如在示例性实施例中所示,命名空间控制器包括以太网MAC接口、命令处理器、数据缓冲器管理器、ECC编码器/解码器、闪速存储器序列器、FTL管理逻辑模块、闪速块管理器以及垃圾回收管理器。以太网MAC接口接收或者发送NVMoE帧。命令处理器中断NVMoE命令帧数据。在命令由命令处理器处理或者从ECC解码器被接收之后,数据缓冲器模块存储NVMoE命令。FTL管理逻辑模块可选地将逻辑块地址转换为物理页面地址。闪存块管理器管理块的状态,无论其是否在某些P/E周期上或者是否需要重新刷新。垃圾回收管理器管理定时以使非易失性存储器块数据再循环以得到更多自由块来擦除和写入。ECC编码器/解码器可以可选地添加纠错编码能力以校正非易失性存储器位错误。闪速存储器接口序列器控制命令和数据接口,使得数据基于NVMoE命令和垃圾回收管理器的需要而被存储并且被读取。

图16图示了用于扩展的NVMe控制器112的示例性负载平衡机制1600。虽然在图16中所图示的示例性扩展的NVMe控制器112A包括四个源端口,并且扩展的NVMe控制器112B包括三个目的地端口,但是在其他实施例中扩展的NVMe控制器112A和112B包括不同数目的源端口和/或目的地端口。这些端口可以是例如10GE端口。

本地命名空间的每个存储设备可以具有多个闪速存储器信道(例如,NAND物理信道)。在一些场景中,通过扩展的NVMe控制器112的单个端口发送所有信道可以引起性能瓶颈。相反,基于数据的物理页面地址(PPA)的低位(例如,较低的4位)或者逻辑块地址(LBA)的低位(例如,较低的4位)连同4位的源端口号掩码一起被读取或写入来确定用于每个信道的端口,扩展的NVMe控制器112将每个存储器信道分配并且可以重新分配到源端口中的一个或多个源端口。在其他实施例中,扩展的NVMe控制器跨不同的端口分配并且可以重新分配存储器信道,使得穿过每个端口的数据与在其他端口中的每个端口的特定范围(例如,5%)相等,或者处于其他端口中的每个端口的特定范围(例如,5%)之内。在图16A的负载平衡示例中,基于扩展的NVMe控制器112A的源端口掩码,信道0、4、8和C去往源端口0,信道1、5、9和D去往端口1,信道2、6、A和E去往端口2,以及信道3、7、B和F去往端口3。类似方案被用于扩展的NVMe控制器112的目的地端口,并且示例性信道分布被示出用于图16中的扩展的NVMe控制器112B的三个目的地端口。使用这样的方法,闪速存储器跨源/目的地端口尽可能均匀地分布(条带化)。

在一些实施例中,对于源(即,启动器)的扩展的NVMe控制器112还确定端口和目的地(即,目标)处的扩展的NVMe控制器的其对应的网络地址。这可以经由被发送到与目的地处的扩展的NVMe控制器112相关联的已知网络地址的发现消息或者通过请求来自目录服务器的信息(例如,使用通知类型消息)。源处的扩展的NVMe控制器112然后将本地命名空间的存储设备的存储器信道分布在各种源端口中间。源处的扩展的NVMe控制器112还基于用于目的地处的端口的目的地端口掩码的低位来将通过源端口中的每个源端口被传输到目的地端口的个体消息引导到目的地端口,使得这些消息跨目的地端口均匀地分布。源处的扩展的NVMe控制器112能够通过改变用于每个消息的目的地网络地址将个体消息传送到不同的目的地端口。

在一个实施例中,当扩展的NVMe控制器112的端口之一发生故障、被移除或被添加时,扩展的NVMe控制器112可以基于PPA/LBA地址的较低的4位和基于改变的端口集的新端口号掩码,将用于故障端口的信道动态地重新分配到其他端口。

图17是用于NVMoE的流控制的示例性状态图1700。虽然在图17中示出了一些示例性状态,但是在其他实施例中,这些状态之间的状态和转换可以是不同的。在一个实施例中,用于NVMoE的源和对应的目标二者支持流控制。源和目标可以各自是存储节点、主机设备或者存储设备。源正将命令发送到目标。目标具有读缓冲器、写缓冲器和控制缓冲器(例如,用于管理命令)。读缓冲器对从其他设备(诸如源)接收到的读请求进行缓冲。写缓冲器对从其他设备接收到的写命令进行缓冲,并且其他控制数据对从其他设备接收到的其他控制数据进行缓冲。当然,源设备还可以当其从其他设备接收命令时扮演目标的角色,并且将具有其用于流控制的缓冲器集。

图17的状态图用于控制从源到目标的流动并且可以分离地应用到目标的三个缓冲器中的每个缓冲器。当缓冲器状态到达特定水平时,目标将流控制消息发送到源以指示缓冲器的状态水平。在图17中,这些缓冲器水平以从最空到最满的次序是“缺乏的”、“不足的”、“满意的”和“完全的”,其中缺乏的指示缓冲器是空或接近空,并且完全的指示缓冲器在最高程度处或附近。根据图17的状态图,源接收流控制消息并且可以然后减少流动或增加数据或控制数据到目标的流动。

除了目标缓冲器的状态水平之外,图17还示出了用于源的状态:“X开”、“X慢”、“X关”和“探测”。源可以最初地在探测状态中开始。在探测状态中,源可以首先确定目标的缓冲器状态。如果缓冲器的状态水平是完全的,那么远转换1710到针对该目标的发送状态X关,在该情况下没有数据或者控制数据被发送。相反,源可以延迟一段时间,将另一探测请求发送到目标,并且当对该探测请求的响应指示不同的缓冲器状态时发送数据。如果状态水平是满意的,那么源转换1712到发送状态“X慢”,在该情况下数据或者控制数据以慢或减小的速度(例如,全速的一半)被发送。如果状态水平是不足的或缺乏的,那么源转换1714到发送状态“X开”,在该情况下数据或者控制数据以全速被发送。

周期性地,源可以关于目标的缓冲器的状态水平轮询目标,或者目标可以以其他方式更新其状态水平。源根据图17的状态图改变状态,这取决于目标的流控制消息。注意,状态图具有迟滞现象。例如,如果源处于状态X开,则不足的状态水平将把状态保持为X开并且满意的状态水平将把状态移动到X慢。然而,一旦源处于状态X慢时,不足的状态水平将不把状态移动回到X开。相反,状态将由于迟滞现象而保持在X慢处,并且缺乏的较低的状态水平被要求将状态移动到X开。

在一个实施例中,当源将数据或控制数据发送到目标时,源还发送其用于目标的相应缓冲器的缓冲器状态水平的当前指示符。如果目标确定该缓冲器状态水平是不正确的,则目标将正确缓冲器状态水平发送到源,其然后更新缓冲器状态水平的其当前指示符并且改变发送状态(如果必要的话)。

在一个实施例中,针对预定义时间间隔(例如,每一秒),源将其缓冲器状态水平的当前指示符周期性地发送到目标。

在一个实施例中,如果源无法确定目标的缓冲器状态水平,那么可能在指定时段之后发生超时,并且源可以返回图17的探测状态。

参考图18,图示了用于实现本发明的示例性计算系统1800。计算系统1800包括以个人计算机(或者节点)20或者服务器等的形式的通用计算设备(即,主机接口),其包括处理单元21、系统存储器22以及系统总线23,其将包括系统存储器的各种系统组件耦合到处理单元21。系统总线23可以是多种类型的总线结构中的任一种类型,多种类型的总线结构包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任一种的本地总线。系统存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。

基本输入/输出系统26(BIOS)(其包含帮助在计算机20内的元件之间传递信息(诸如在启动期间)的基本例程)被存储在ROM 24中。个人计算机/节点20还可以包括用于从硬盘(未示出)读取并且写入到硬盘的硬盘驱动器、用于从可移除的磁盘29读取或者写入到可移除的磁盘29的磁盘驱动器28,以及用于从可移除的光盘31(诸如CD-ROM、DVD-ROM或其他光学介质)读取或者写入到可移除的光盘31的光盘驱动器30。

硬盘驱动器、磁盘驱动器28和光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口32和光学驱动器接口34被连接到系统总线23。驱动器及其相关联的计算机可读介质提供计算机可读指令、数据结构、程序模块和用于个人计算机20的其他数据的非易失性存储。

虽然在此所描述的示例性实施例采用硬盘、可移除的磁盘29以及可移除的光盘31,但是本领域的技术人员应当理解,可以存储由计算机可访问的数据的其他类型的计算机可读介质(诸如磁带盒、闪存卡、数字视频盘、伯努利墨盒、随机存取存储器(RAM)、只读存储器(ROM)、固态驱动器等)也可以被使用在示例性操作环境中。

若干程序模块可以被存储在硬盘、固态驱动器、磁盘29、光盘31、ROM 24或RAM 25上,包括操作系统35(优选地WINDOWSTM)。计算机20包括与操作系统35相关联或被包括在操作系统35内的文件系统36,诸如WINDOWS NTTM文件系统(NTFS)、一个或多个应用程序37、其他程序模块38和程序数据39。用户可以通过输入设备(诸如键盘40和指点设备42)将命令和信息输入个人计算机20中。

其他输入设备(未示出)可以包括麦克风、操纵杆、游戏板、卫星盘、扫描器等。这些和其他输入设备常常通过被耦合到系统总线的串行端口接口46被连接到处理单元21,但是可以通过其他接口(诸如并行端口、游戏端口或通用串行总线(USB))进行连接。监视器47或者其他类型的显示设备还经由接口(诸如音频适配器48)被连接到系统总线23。

除了监视器47之外,个人计算机通常地包括其他外围输出设备(未示出)(诸如扬声器和打印机)。数据存储设备(诸如硬盘驱动器、固态驱动器、磁带或者其他类型的存储设备)还经由接口被连接到系统总线23,诸如经由连接接口的主机适配器,诸如集成驱动电子设备(IDE)、高级技术附件(ATA)、超ATA、小型计算机系统接口(SCSI)、SATA、串行SCSI、PCIe等。

计算机20可以使用一个或多个远程计算机49的逻辑连接在联网环境中操作。远程计算机(或计算机)49可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其他共同网络节点,并且通常包括以上关于计算机20所描述的元件中的许多元件或全部元件。

计算机20还可以包括存储器存储设备50。逻辑连接包括局域网(LAN)51和广域网(WAN)52。这样的网络环境在办公室、企业范围的计算机网络、内联网和因特网中很常见。当被使用在LAN联网环境中时,个人计算机20通过网络接口或者适配器53被连接到局域网51。

当被使用在WAN联网环境中时,个人计算机20通常包括调制器54或者用于在广域网52(诸如因特网)上建立通信的其他装置。可以在内部或者外部的调制解调器54经由串行端口接口46被连接到系统总线23。在联网环境中,关于个人计算机20或其部分所描绘的程序模块可以被存储在远程存储器存储设备中。将理解到,所示的网络连接是示例性的,并且可以使用建立计算机之间的通信链路的其他装置。

应当理解,在本公开中给定的示例旨在是示例。其他变型将是明显的,如在图19至图23中所示。例如,存储网络配置不限于附图中所示的节点的数目,并且不同的类型的节点可以被组合在存储网络中。图19是图示使用图1A中所示的全部功能扩展的NVMe控制器的扩展的NVMe存储网络的系统的块图。如在图1A中,图19中的NVMoE双向节点1911a-e中的每一个包括主机处理器CPU、扩展的NVMe控制器(标记为NVMoE-B,其中“B”代表双向的)和以及本地非易失性存储器NVM。来自任何节点1911的主机处理器可以访问任何节点1911中的远程非易失性存储器。在备选实施例中,访问可以被隔离。例如,任何主机处理器可以被许可仅访问某些远程非易失性存储器。

图20是图示使用图1B中所示的启动器和目标扩展的NVMe控制器的扩展的NVMe存储网络的系统的块图。节点2011a-c仅包含启动器,其由NVMoE-I指示。存在主机处理器,而没有本地非易失性存储器。节点2011d-g仅包含目标,其由NVMoE-T指示。不需要主机处理器。在所示的示例中,存在三个NVMoE启动器节点2011a-c和四个NVMoE目标节点2011d-g。来自启动器节点2011a-c中的任一个的主机处理器可以访问任何目标节点2011d-g中的远程非易失性存储器,但是也可以实现更有限的访问。在特殊情况下,可以存在仅一个NVMoE启动器节点2011和许多NVMoE目标节点2012。例如,对于主机处理器而言,访问比将通过直接NVMe连接可用的更多的数据存储装置可以是可期望的。

作为另一示例,图21示出了双向节点2111b、e、启动器节点2111a、c以及目标节点2111d、f、g的混合。

图22是根据另一实施例的实现扩展的NVMe存储网络的机架式系统2200的示图。机架式系统包括单元2210,其通常可以是2U高或3U高的支架。单元2210包括24个刀片槽,其在图22中被标记为00至23。刀片槽04-23中的每个刀片槽包含具有NVMoE目标的NVM刀片,其由“T”表示。在该示例中,NVM刀片是SSD刀片。刀片槽00-01和02-03包含用于运行附加功能(诸如发现服务或者其他NVMoE管理功能)的冗余服务器。刀片中的每个刀片被连接到内部L2以太网交换机2215。SSD刀片经由其NVMoE目标控制器“T”被连接。刀片服务器通过由“N”表示的网络接口控制器(NIC)而被连接到交换机2215。备选地,刀片服务器可以通过包含启动器功能的NVMoE控制器而被连接到交换机2215。机架系统2200还包括架顶式或者列末以太网结构2205以允许超过单元2210的进一步连接。

图22还示出各种客户端,其具有(由“I”表示的)NVMoE启动器以在以太网上访问SSD刀片。这些客户端未被要求作为机架系统的一部分。在该示例中,客户端2222和2226在机架系统外部。客户端2222经由以太网结构2205和以太网交换机2215访问SSD刀片。客户端2226具有单元2210内的以太网交换机2215的直接访问权。客户端2224和2228在机架系统内部。其可以被安置在机架系统内的不同的单元中或者甚至在单元2210内。客户端2224经由以太网结构2205和以太网交换机2215访问SSD刀片,而客户端2228具有对单元2210内的以太网交换机2215的直接访问。以这种方式,客户端上的NVMoE启动器“I”中的任一个可以经由其NVMoE目标“T”访问SSD刀片中的任一个。

NVMoE启动器和NVMoE目标可以被实现为专用NVMoE设备或多用途设备。例如,NVMoE启动器可以被实现为包含启动器功能和目标功能二者的集成电路,但是其中仅启动器功能被使用。备选地,其可以是仅包含启动器功能的设备。作为另一示例,其可以是启动器功能被添加到其或者其被重新配置为用作启动器的标准NIC。

图23示出了备选架构。在该示例中,客户端2322-2328使用某种其他协议与槽00-03中的刀片服务器通信,其他协议诸如RDMA(远程直接存储器访问)、iSCSI(因特网小型计算机系统接口)、NFS(网络文件系统)、NVMf或NVMoF(均用于结构上的NVMe的缩写)。通过由“N”表示的NIC做出网络连接。刀片服务器用作该协议与槽04-23中的SSD刀片的NVMoE之间的桥接器。在NVMoE协议内,刀片服务器用作NVMoE启动器,并且SSD刀片用作NVMoE目标。在图23中,由虚线标识另一协议,并且由实线标识NVMoE。

在一些实现中,被用于NVMoE协议的L2以太网交换机2315中的端口通过使用用于每个协议的分离的VLAN(虚拟局域网)与被用于其他协议的端口相隔离。这提供NVMoE网络流量与其他网络流量的隔离。将流量隔离为分离的VLAN防止客户端2322-2328直接地访问SSD刀片。该隔离防止可以由病毒或者安全漏洞损害的客户端直接地访问SSD刀片。

因此已描述了系统和方法的不同的实施例,对于本领域的技术人员而言应当明显的是,已经实现所描述的方法和装置的某些优点。

还应当理解,可以在本发明的范围和精神内做出其各种修改、适配和备选实施例。本发明进一步由所附权利要求来定义。

虽然具体实施方式包含许多细节,但是这些不应当被解释为限制本发明的范围,而是仅图示本发明的不同的示例和方面。应当理解,本发明的范围包括上文未详细讨论的其他实施例。在不脱离如在所附的权利要求中限定的精神和范围的情况下,可以在在此所公开的本发明的方法和装置的布置、操作和细节中做出对于本领域的技术人员而言将明显的各种其他修改、改变和变型。因此,本发明的范围应当由所附的权利要求和其法律等同物来确定。

取决于模块的形式,模块之间的“耦合”还可以采取不同的形式。专用电路可以通过硬连线或通过访问例如公用寄存器或存储器位置而被彼此耦合。软件“耦合”可以通过在软件组件之间(或者在软件与硬件之间,如果这样的情况的话)传递信息的任何数目的方式而发生。术语“耦合”旨在包括所有这些并且不旨在限于两个组件之间的硬连线的永久连接。另外,可以存在中间元件。例如,当两个元件被描述为被彼此耦合时,这既不隐含这些元件直接地被彼此耦合,也不排除二者之间的其他元件的使用。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1