买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】针对远程存储器访问的NVM EXPRESS控制器_科内克斯实验室公司_201811212442.7 

申请/专利权人:科内克斯实验室公司

申请日:2014-06-19

公开(公告)日:2022-09-06

公开(公告)号:CN109582614B

主分类号:G06F13/16

分类号:G06F13/16;G06F13/40;G06F13/42;H04L67/1097

优先权:["20130626 US 61/839,389","20140226 US 14/191,335"]

专利状态码:有效-授权

法律状态:2022.09.06#授权;2019.04.30#实质审查的生效;2019.04.05#公开

摘要:一种用于使能非易失性存储器ExpressNVMe的方法和系统以及针对远程存储器访问的NVMEXPRESS控制器,该NVMe用于在以太网或者其他网络上访问远程固态驱动器SSD或者其他类型的远程非易失性存储器。提供了用于使得CPU能够使用NVMe协议访问远程非易失性存储器的扩展的NVMe控制器。扩展的NVMe控制器被实现在一个服务器上,该服务器用于经由以太网交换机与其他服务器或者非易失性存储器通信。通过对其进行修改以提供特殊的以太网上的NVM帧,NVMe协议用于以太网或者类似网络上。

主权项:1.一种扩展的NVMe控制器,包括:主机接口,其适于将所述扩展的NVMe控制器耦合到主机处理器;直接网络接口,其适于将所述扩展的NVMe控制器耦合到外部以太网网络;以及其中所述扩展的NVMe控制器被配置为:将NVMe命令转换为以太网上的NVMe命令,所述以太网上的NVMe命令适合在所述外部以太网网络上传输到用于远程命名空间的远程命名空间控制器,所述NVMe命令经由所述主机接口从所述主机处理器被接收。

全文数据:针对远程存储器访问的NVMEXPRESS控制器相关申请引用本申请是国际申请号为PCTUS2014043279、国际申请日为2014年6月19日、优先权日为2013年6月26日和2014年2月26日、进入中国国家阶段日期为2016年1月29日、中国国家申请号为201480042920.8的发明专利申请的分案申请。技术领域本发明总体上涉及在网络上使用非易失性存储器ExpressNVMe协议并利用低延时来访问远程存储器。背景技术通常,CPU可以在网络上通过使用网络协议来访问远程存储器或者IO设备。用于访问远程存储器或者IO设备的一个常规方法是通过iSCSI存储。该方法通过CPU使用大量的处理,其增加总访问延时。经由iSCSI存储访问远程存储器或者IO设备通常具有比对本地存储器或者IO设备的直接访问大四到五倍的延时。这导致针对在网络上要求远程存储器或者IO设备访问的系统的显著的性能和吞吐量退化。处理本地非易失性存储器访问的相对新的接口标准是NVMExpressNVMe,有时被称为非易失性存储器主机控制器接口规范。NVMe是寄存器级接口,其允许主机软件与非易失性存储器子系统通信。该接口针对企业和客户端固态驱动器SSD而被优化,其通常附接到PCIExpressPCIe接口。NVMe提供对本地非易失性存储器的直接IO访问。使用NVMe,与诸如SAS串行SCSI或者SATA串行ATA的传统IO接口上的连接相比较,减少了读取和写入操作的延时。然而,NVMe具有关于以太网交换机或者其他类型的网络上的数据传递的限制。通常,NVMe被设计为访问本地SSD并且未在通过网络访问远程存储方面被定义。如现今所定义的NVMe不提供用于通过网络通过多个主机CPU访问多个远程SSD的方案。因此,存在使得NVMe能够在网络例如,以太网上高效地工作以用于在网络上访问远程SSD和命名空间的需要。发明内容本发明通过提供一种系统来克服现有技术的限制,该系统使能使用NVMe命令在外部网络诸如以太网上对远程非易失性存储器的访问。在一个方面中,扩展的NVMe控制器提供该能力。在一种方法中,扩展的NVMe控制器使得CPU能够使用NVMe协议来访问远程非易失性存储器例如,SSD。例如,扩展的NVMe控制器被实现在用于经由以太网交换机与其他服务器或者SSD通信的一个服务器上。可以通过提供以太网上的NVMNVMoE帧在以太网上使用NVMe协议。在一个实施方式中,定义NVMoE帧,其指定通过以太网由扩展的NVMe控制器所传输的NVMoE命令。扩展的NVMe控制器包括用于基于NVMoE帧的定义来将NVMe命令转换为NVMoE命令的转换机制。特别地,通过映射表支持转换机制,映射表用于将NVMe控制器的主机标识符HSID和或NVMe命令的命名空间标识符NSID映射到NVMoE命令中所包括的以太网介质访问控制MAC地址。在另一方面中,扩展的NVMe控制器配备有用于从通过外部网络所传输的NVMe命令的损耗恢复的重试机制。重试机制包括用于检测NVMe命令的损耗的定时器,并且如果NVMe命令被确定为根据定时器的丢失,则重试机制将重新发出NVMe命令。在又一方面中,扩展的NVMe控制器使能多路径IO和命名空间共享。多路径IO是指单个主机与命名空间之间的两个或两个以上完全独立的物理PCIe路径。命名空间共享是指两个或两个以上主机使用不同的NVMe控制器来访问共同共享命名空间的能力。扩展的NVMe控制器中的一个或多个扩展的NVMe控制器可以使得主机能够通过多个PCIe路径访问单个命名空间和两个或两个以上主机访问共享命名空间。本发明的另一方面包括扩展的NVMe存储网络和外部网络,该扩展的NVMe存储网络包括多个本地NVMe存储节点,并且该外部网络耦合多个NVMe存储节点。本地NVMe存储节点包括一个或多个主机处理器,如上文所描述的扩展的NVMe控制器和本地非易失性存储器。在一个示例性实施例中,外部网络可以包括L3网络。因此,扩展的NVMe控制器可以包括用于将NVMe命令转译为由L3分组头部封装并且因此适于在L3网络上的传输的NVMoE命令。扩展的NVMe存储网络的各种示例应用在本文中还被描述以适于不同的场景。在一个应用中,扩展的NVMe存储网络实现为服务器机架,其中本地存储节点包括服务器机架中的服务器,并且外部网络包括架顶以太网交换机。在另一应用中,扩展的NVMe存储网络实现为包括单个主机的单个服务器,其中每个本地NVMe存储节点包括专用扩展的NVMe控制器和基于专用本地非易失性存储器的命名空间。在又一示例应用中,扩展的NVMe存储网络包括至少两个主机处理器并且经由两个扩展的NVMe控制器提供冗余度。本发明的其他方面包括与上文所描述的那些有关的方法、系统、部件、设备、改进、应用和其他方面。本发明的附加特征和优点将在以下描述中被阐述并且部分将从描述变得明显或者可以通过本发明的实践被学习。可以通过在书面描述和其权利要求以及附图中特别指出的结构实现和达到本发明的各种优点。应当理解,前述一般描述和以下详细描述是示例性和解释性的,并且旨在提供如所要求保护的本发明的进一步的解释。附图说明当结合附图时,本发明具有从本发明的以下详细描述和随附的权利要求更容易明显的其他优点和特征,其中:图1是图示扩展的NVMe存储网络的系统的框图。图2是NVMoE帧定义的示图。图3是如图2中所描绘的NVMoE帧定义的第一部分的示图。图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控制器与单个PCI功能相关联。控制器所支持的能力在控制器能力CAP寄存器中被指示并且作为如标识命令所返回的控制器和命名空间数据结构的一部分。控制器数据结构指示适于整个控制器的能力和设置。命名空间数据结构指示特定于具体命名空间的能力和设置。另外,NVMe控制器基于配对的提交和完成队列机制。通过主机软件将命令放置到提交队列中。通过控制器将完成放置到相关联的完成队列中。多个提交队列可以利用相同的完成队列。将提交和完成队列分配在主机存储器中。本发明涉及用于使能在网络上使用NVMe协议对远程非易失性存储器例如,SSD命名空间的访问以减少访问延时的方法。因此,扩展的NVMe控制器使得主机CPU能够使用NVMe协议来访问远程非易失性存储器。附图和以下描述仅以图示的方式涉及优选的实施例。应当注意,根据以下讨论,在不脱离权利要求书的原理的情况下,本文所公开的结构和方法的备选实施例将容易地被识别为可以采用的可行的备选方案。现在参考图1,根据一个示例性实施例,描绘了图示扩展的NVMe存储网络的系统100的框图。扩展的NVMe存储网络100可以是以太网架构上的NVMe的一个示例。在所图示的示例性实施例中,扩展的NVMe存储网络100包括两个本地NVMe存储节点111a、111b和耦合两个本地NVMe存储节点111a、111b的外部网络包括交换机114。扩展的NVMe存储网络100还包括目录服务器116,其通信地耦合到包括交换机114的外部网络。在一个实施例中,外部网络是以太网。在其他实施例中,外部网络可以是光纤信道FC或者无线带宽IB类型的网络。两个本地NVMe存储节点111a、111b各自包括主机处理器例如,CPUA或者CPUB、扩展的NVMe控制器112A、112B和由NVMe命名空间例如,NVMNS1-1和NVMNS1-2,或者NVMNS2-1和NVMNS2-2所表示的本地非易失性存储器。在一个实施例中,非易失性存储器是固态驱动器SSD。在另一实施例中,非易失性存储器是硬盘驱动器。扩展的NVMe控制器112A、112B分别地经由其自身的主机接口耦合到CPU,例如CPUA、CPUB。例如,扩展的NVMe控制器112A、112B中所包括的主机接口可以是PCIExpressPCIe接口。另外,扩展的NVMe控制器112A、112B包括将其耦合到外部网络包括交换机114的其相应的直接网络接口。例如,为了将扩展的NVMe控制器112a、112B耦合到以太网,直接网络接口可以是以太网MAC接口。此外,扩展的NVMe控制器112A、112B各自经由一个或多个本地存储接口耦合到其本地非易失性存储器的本地NVMe命名空间。例如,扩展的NVMe控制器112a经由本地存储接口耦合到其本地NVMe命名空间例如,NVMNS1-1和NVMNS1-2。类似地,扩展的NVMe控制器112B经由控制器112B中所包括的另一本地存储接口耦合到其本地NVMe命名空间例如,NVMNS2-1和NVMNS2-2。在节点111a、111b内,扩展的NVMe控制器112A、112B分别地从其主机例如,CPUA、CPUB接收指向其本地NVMe命名空间例如,NVMNS1-1和NVMNS1-2或者NVMNS2-1和NVMNS2-2的NVMe命令并且向CPU提供对其本地命名空间的IO访问。例如,扩展的控制器112A可以从用于访问本地命名空间NVMNS1-1和NVMNS1-2的CPUA接收NVMe命令。由于NVMe控制器112A、112B具有针对其本地命名空间的地址的明确定义,因此NVMe控制器112A、112B可以处理命令。在一个实施例中,扩展的NVMe控制器112A、112B还单独地或者共同地被称为112可以从其主机CPU例如,CPUA或者CPUB接收指向用于耦合到外部网络的远程非易失性存储器的远程命名空间的NVMe命令。例如,扩展的NVMe控制器112A可以从CPUA接收指向耦合到外部网络的NVMNS2-1或者NVMNS2-2的NVMe命令。这在例如节点111a中的CPUA期望从节点111b中的远程命名空间NVMNS2-1或者NVMNS2-2读取数据将数据写入到节点111b中的远程命名空间NVMNS2-1或者NVMNS2-2时发生。根据图1中所图示的示例性实施例,扩展的NVMe控制器112可以应用以太网上的NVMeNVMoE协议来在外部网络交换机上传输NVMe命令例如,融合增强型以太网交换机或者甚至传统以太网交换机传输NVMe命令。这样的新协议有益地允许CPU使用NVMe协议访问附接到不同的扩展的NVMe控制器的命名空间或者调用远程命名空间。这还使得CPU能够仅利用本地访问延时来访问远程命名空间。为了实现这一点,扩展的NVMe控制器112将指向远程命名空间的NVMe命令转换到适于在外部网络上传输的格式,使得可以将命令传输到本地耦合诸如经由本地存储接口耦合到远程命名空间的另一外部扩展的NVMe控制器112。通常,NVMe控制器具有64位主机标识符HSID,并且NVMe命名空间具有32位命名空间标识符NSID。HSID是通过NVMe控制器寄存器可配置的。NSID是命名空间1-n的连续的序列,其中n是可用的命名空间的总数。在一个示例性实施例中,扩展的NVMe控制器112可以通过利用用于将NVMe命令中的HSID和HSID映射到用于以太网上的传输的以太网MAC地址的机制,将NVMe命令转换到针对在以太网上传输的适合的格式。在图2中图示了适于在以太网上传输的NVMe命令的格式的定义。因此,图2图示了根据一个示例性实施例的以太网上的NVMeNVMoE帧结构200的定义。以太网上的NVMeNVMoE帧200包括目的地MAC地址例如,48位目的地MAC地址。在MAC地址的所有位之间,24个最高有效位构建组织唯一标识符OUI。NVMoE帧还包括源MAC地址例如,48位源MAC地址;IEEE802.1Q标签,诸如虚拟局域网VLAN服务质量QoS1Q标签;类型代码“ET”;以及版本号“VER”例如,4位版本号。类型代码“ET”可以用于指示这是以太网上的NVMe类型的帧。另外,NVMoE帧200包括定义Admin和IO命令的NVMe帧和帧校验序列FCS例如,针对整个NVMoE帧的32位帧校验和。在该示例中,不存在针对NVMe帧的分离的循环冗余校验CRC。在一个实施例中,扩展的NVMe控制器112可以使用诸如图2中所示的帧200的NVMoE帧,以指定适于在以太网上传输的格式的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。对于诸如CPUA和CPUB的不同的CPU而言,相同命名空间的NSID可以是不同的,而在上层应用中,尽管不同的命名空间ID,命名空间仍被理解为相同的逻辑命名空间。图1还图示了根据示例性实施例的NVMe到以太网映射表。一旦分配HSID和NSID以便通过以太网交换机114发送和接收NVMe命令和数据,扩展的NVMe存储网络110就将扩展的NVMe控制器的HSID和NVMe命名空间的NSID映射到MAC地址。图3图示了针对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个地址用于HSID,并且n个地址用于由命名空间控制器所使用的NSID命名空间。基于其OUI和起始NICID,对针对其他扩展的NVMe控制器的NSID进行映射。在一个实施例中,目录服务器116的SDS控制器可以处理和管理HSID和NSID到MAC地址的映射。扩展的NVMe控制器112可以通过维持用于将HSID和NSID映射到MAC地址的映射表,处理HSID和NSID到MAC地址的映射。在一个实施例中,由于实施例使用以太网MAC地址来标识HSID和NSID,因此该映射使使用L2学习机制成为可能。因此,可以应用L2网络交换机的行为。在一个实施例中,一个目录服务器116还管理融合增强型以太网CEEMAC地址到物理端口映射。在一个实施例中,单根IO虚拟化SR-IOV支持可以根据扩展的NVMe控制器的虚拟功能VF来使用不同的MAC地址。一旦将HSID和NSID映射到以太网MAC地址,如图3中所图示的,扩展的NVMe控制器112就使用MAC地址生成如图2中所图示的NVMoE帧。因此,图3还图示了图2中所描绘的NVMoE帧的第一部分例如,MAC地址。现在参考图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和输入输出IO提交队列。此外,扩展的NVMe控制器112可以将所接收的NVMe命令转换为适于在外部网络上传输到耦合到远程命名空间的另一NVMe控制器112的格式。例如,扩展的NVMe控制器112包括NVMe到NVMoE命令转译器,其用于将HSID和NSID映射420到MAC地址并且基于映射而将NVMe命令转译430到NVMoE命令。特别地,在一个示例性实施例中,命令转译器包括NVMe到NVMoE映射器,其可以查询用于将HSID和NSID映射到以太网MAC地址的映射表。命令转译器可以基于映射将NVMe命令转译为NVMoE命令。扩展的NVMe控制器112还包括传输器,其将NVMoE命令传输440到耦合到用于交换耦合到另一控制器112的远程命名空间中的数据的网络的另一扩展的NVMe控制器112。传输器将基于所映射的以太网MAC地址,来经由以太网MAC接口在以太网上传输NVMoE命令。本领域技术人员应当理解,所提出的扩展的NVMe控制器112是可扩展的。扩展的NVMe控制器112利用减少的延时在以太网上提供对SSD的远程访问。图6图示了根据一个示例性实施例的扩展的NVMe控制器的详细结构。在图示的实施例中,扩展的NVMe控制器112包括用于处理与PCIe接口的命令和或数据通信的PCIE接口和消息信号中断MSIMSI-X处理模块。扩展的NVMe控制器112还包括管理提交队列的提交Q管理器和队列仲裁器。队列仲裁器还可以从PCIe接口和MSIMSI-X处理模块读取物理区域页面PRP或者散集列表SGL数据。扩展的NVMe控制器112包括用于将HSID和NSID映射到MAC地址的MAC地址映射器。此外,扩展的NVMe控制器112包括NVMe命令解析器和NVEe到NVMoE格式化器,该NVMe命令解析器解析从PCIe接口所接收的NVMe命令,并且所述NVMe到NVMoE格式化器将NVMe命令格式化为基于所映射的MAC地址而生成NVMoE命令。扩展的NVMe控制器112还可以包括用于缓冲NVMoE命令的共享缓冲池。从共享缓冲池,NVMoE命令可以然后通过内部SSD接口和以太网介质访问控制器例如,10GEMAC或者40GEMAC发出。共享缓冲池可以提供如使用从NVMe到NVMoE格式化器到内部SSD接口和10GEMAC的命令和或数据流的虚线602a、602b、602c所描绘的流控制。扩展的NVMe控制器112还包括NVMe完成队列处理器和NVMe控制器命令处理器,其与NVMe命令解析器和共享缓冲池以缓冲和处理从内部SSD接口和以太网MAC接口所接收的NVMe命令返回队列。图7图示了根据一个示例性实施例的由扩展的NVMe控制器112用于指定NVMoE命令的NVMoE帧700的结构。通常,所图示的NVMoE帧700具有与如2中所定义的那个结构相同的结构。然而,图7中所图示的NVMoE帧700包括作为NVMoE帧的一个部分的NVMo帧的详细结构。NVMe帧包括7位类值,其定义NVMoE帧数据的帧数据的类型;AdminIO位,其中0指示这是Admin命令并且1指示这是IO命令;如NVMe规范中所定义的命令代码;SEQ_ID[15:0],定义NVMeIO中的所发出的命令的顺序并且被用于识别条目IO命令中的子命令的顺序的序列标签的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值;元数据;和完成DoubleWordCMPLDword,或者CMPLDW,如NVMe规范中的所定义的针对完成的两个DW。图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格式能够使用通用路由封装NVGRE通过网关隧道918A、918B还单独地或者共同地被称为918诸如无状态交通隧道STT、虚拟可扩展LANVXLAN或者网络虚拟化通过L3网络。例如,扩展的NVMe控制器912可以将STT或者VXLAN或者NVGRE封装为L3分组报头并且将L3分组报头添加到NVMoE帧。在一个实施例中,为了支持诸如1.5K字节的较小的MTU大小,网关隧道功能918可以在发送之前将原始NVMoE帧分段并且在接收到原始帧的分段时将分段重新装配到原始NVMoE帧中。图9还示出了IO命令的可靠传输的重试机制。尽管融合增强型以太网帧是无损的,但是可能一些分组丢弃由于以太网交换机914A、914B中的数据损坏或者其他错误而发生。类似地,分组数据的损失还可以诸如由于L3网络的交通拥堵而在L3以太网网络中发生。为了从所传送的NVMe命令数据的损失进行恢复,扩展的NVMe存储系统900可以包含不同类型的重试机制。例如,扩展的NVMe存储系统900可以实现基于硬件的重试机制,使得如果特定IO命令将不回来,则系统900可以由于超时而重新发送IO命令。扩展的NVMe控制器912分配针对每个NVMoE命令的定时器,并且当扩展的NVMe控制器912将NVMoE命令发出到用于传输的以太网接口,则定时器开始运行。因此,如果定时器超时并且对应的NVMoE命令尚未回来,则指示所发出的NVMoE命令尚未丢失在网络中,并且扩展的NVMe控制器912因此重新发出用于传输的NVMoE命令。通过这种方式,扩展的NVMe存储系统90可以从NVMoE命令损耗进行恢复。另外,系统900可以支持NVMe水平处的基于软件的重试机制。软件NVMe驱动程序包括针对每个所发出的命令的定时器。一旦特定NVMe命令在定时器超时时尚未返回,则软件NVMe驱动程序将停止原始NVMe命令并且重新发送新NVMe命令。现在参考图10,图示了根据一个示例性实施例的由NVMe存储系统900所使用的NVMoE帧1000。NVMoE帧1000可以通过诸如STT、VXLAN或者NVGRE的网关隧道918L3网络而经过L3网络。如上文所提到的,为了使得NVMoE帧能够经过L3网络,扩展的NVMe控制器912将STT或者VXLAN或者NVGRE的封装添加到NVMoE帧1000。例如,在所图示的实施例中,NVMoE帧1000使L3分组报头插入帧中。图11A-B将扩展的NVMe存储网络的应用模型图示为服务器机架,其中,扩展的NVMe控制器经由以太网交换机通信。所图示的应用模型是服务器机架和架顶交换机系统,其中NVMe存储节点可以包括服务器机架中的服务器,并且外部网络可以包括架顶交换机。在所图示的实施例中,服务器A的CPUA可以经由扩展的NVMe控制器访问服务器B中的命名空间NS_B1和NS_B2,所述扩展的NVMe控制器可以通过交换机发送和接收数据。所提出的扩展的NVMe控制器可以提供在减少的访问延时的优点。扩展的NVMe控制器连同SSD命名空间安装在服务器的PCIe槽中,以太网连接器通过以太网电缆连接到架顶交换机。在这种情况下,服务器可以通过如由示例性实施例所描述的NVMoE协议来共享SSD命名空间。图12A-B图示了根据一个示例性实施例的作为单个服务器系统的扩展的NVMe存储网络的应用模型。在示例性实施例中,单个服务器系统包括单个主机CPU和多个NVMe存储节点,其各自包括专用扩展的NVMe控制器和专用本地非易失性存储器。扩展的NVMe控制器可以充当主机总线适配器HBA。存在从扩展的NVMe控制器出来的多个接口。扩展的NVMe控制器可以然后将每个接口连接到SSD命名空间。这样,主机CPU能够利用比传统SASSATA接口更低延时的延时来访问SSD命名空间。图12A-B还示出了HBA启动器和设备。图13图示了根据一个示例性实施例的作为高可用性双服务器系统1300的扩展的NVMe存储网络的应用模型。在所图示的双服务器系统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是逻辑驱动器即,非易失性存储器块的集合。其相应地表现为CPUA和CPUB的本地驱动器。图14是根据一个示例性实施例的将扩展的NVMe存储网络的应用模型图示为双端口服务器系统1400的示图。系统1400可以是双CPU单服务器系统,其包括具有其本地命名空间控制器的两个扩展的NVMe控制器。两个扩展的NVMe控制器通过以太网接口彼此连接。在所图示的实施例中,系统1400包括连接到两个CPU的两个PCIe端口以及每个CPU的一个PCIe接口。每个PCIe端口将CPU连接到扩展的NVMe控制器。通过这种方式,系统1400可以支持双端口PCIeSSD控制器应用。图15图示了根据一个示例性实施例的命名空间控制器。如示例性实施例中所示,命名空间控制器包括以太网MAC接口、命令处理器、数据缓冲管理器、ECC编码器解码器、闪速存储器定序器、FTL管理逻辑模块、闪速块管理器和垃圾回收管理器。以太网MAC接口接收或者发送NVMoE帧。命令处理器解译NVMoE命令帧数据。在命令由命令处理器处理或者从ECC解码器接收之后,数据缓冲模块存储NVMoE命令。FTL管理逻辑模块可选地将逻辑块地址转换为物理页面地址。闪速块管理器管理块的状态,无论其是某些PE周期期间或者需要刷新。垃圾回收管理器管理定时以重新循环非易失性存储器块数据以得到擦除和写入的自由块。ECC编码器解码器可以可选地添加纠错编码ErrorCorrectionCoding能力以改正非易失性存储器位错误。闪速存储器接口定序器控制命令和数据接口,使得基于NVMoE命令和垃圾回收管理器的需要,来存储和读取数据。参考图16,图示了用于实现本发明的示例性计算系统1600。计算系统1600包括以个人计算机或者节点20或者服务器等等的形式的通用计算设备即,主机节点,其包括处理单元21、系统存储器22和系统总线23,其将包括系统存储器的各种系统部件耦合到处理单元21。系统总线23可以是若多种类型的总线结构中的任一种,包括存储器总线或者存储器控制器、外围设备总线和使用各种总线架构中的任一种总线架构的本地总线。系统存储器包括只读存储器ROM24和随机存取存储器RAM25。包含基本例程其帮助在诸如启动期间传送计算机20内的元件之间的信息的基本收入输出系统26BIOS被存储在ROM24中。个人计算机节点20还可以包括用于从硬盘读取和写入到硬盘未示出的硬盘驱动器、用于从可移动磁盘29读取或者写入到可移动磁盘29的磁盘驱动器28和用于从可移动光盘31读取或者写入到可移动光盘31的光盘驱动器30,所述可移动光盘31,诸如CD-ROM、DVD-ROM或者其他光学介质。硬盘驱动器、磁盘驱动器28和光盘驱动器30相应地通过硬盘驱动器接口32、磁盘驱动器接口33和光学驱动器接口34连接到系统总线23。驱动器和其相关联的计算机可读介质提供针对个人计算机20的计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。尽管在本文中所描述的示例性环境利用硬盘、可移动磁盘29和可移动光盘31,但是本领域技术人员应当理解,可以存储由计算机可访问的数据的其他类型的计算机可读介质诸如磁带盒、闪速存储器卡、数字视频光盘、伯努利墨盒、随机存取存储器RAM、只读存储器ROM、固态驱动器等等也可以用于示例性操作环境中。若干程序模块可以被存储在硬盘、固态驱动器、磁盘29、光盘31、ROM24或者RAM25上,器包括操作系统35优选的WINDOWSTM。计算机20包括与操作系统35相关联或者被包括在操作系统35内的文件系统36,诸如WINDOWSNTTM文件系统NTFS、一个或多个应用程序37、其他程序模块38和程序数据39。用户可以通过诸如键盘40和指点设备42的输入设备来将命令和信息输入个人计算机20中。其他输入设备未示出可以包括麦克风、操纵杆、游戏板、卫星盘、扫描器等。这些和其他输入设备常常通过耦合到系统总线的串行端口接口46来连接到处理单元21,但是可以通过诸如并行端口、游戏端口或者通用串行总线USB的其他接口而连接。监视器47或者其他类型的显示设备还经由诸如视频适配器48的接口连接到系统总线23。除监视器47外,个人计算机通常包括其他外围输出设备未示出,诸如扬声器和打印机。数据存储设备诸如硬盘驱动器、固态驱动器、磁带或者其他类型的存储设备还经由接口连接到系统总线23,诸如经由连接接口连接到主机适配器,诸如集成驱动电子设备IDE、高级技术附件ATA、UltraATA、小型计算机系统接口SCSI、SATA、串行SCSI、PCIe等等。计算机20可以使用到一个或多个远程计算机49的逻辑连接来在联网环境中进行操作。一个或多个远程计算机49可以是另一个人计算机、服务器、路由器、网络PC、对等设备或者其他公知的网络节点,并且通常包括关于计算机20上文所描述的许多或者全部元件。计算机20还可以包括存储器存储设备50。逻辑连接包括局域网LAN51和广域网WAN52。这样的联网环境在办公室、企业计算机网络、内联网和因特网中是常见的。当使用在LAN联网环境中,个人计算机20通过网络接口或者适配器53连接到局域网51。当使用在WAN网络环境中,个人计算机20通常包括调制解调器54或者用于通过诸如因特网的广域网52建立通信的其他装置。可以是内部或者外部的调制解调器54经由串行端口接口46连接到系统总线23。在网络化的环境中,关于个人计算机20所描绘的程序模块或者其部分可以被存储在远程存储器存储设备中。应当理解,所示出的网络连接是示例性的,并且可以使用建立计算机之间的通信链路的其他装置。因此,已经描述了系统和方法的不同实施例,对于本领域技术人员而言应当明显的是,已经实现了所描述的方法和装置的一些优点。还应当理解,可以在本发明的范围和精神内做出各种修改、变型和其备选实施例。本发明进一步由所附的权利要求书所限定。尽管详细描述包含许多特性,但是这些不应当被解释为对本发明的范围的限制,而是仅图示本发明的不同示例和方面。应当理解,本发明的范围包括上文未详细讨论的其他实施例。在不脱离如所附的权利要求书中所限定的本发明的精神和范围的情况下,可以在本文所公开的本发明的方法和装置的布置、操作和细节中做出将对本领域技术人员明显的各种其他修改、改变和变型。因此,应当通过所附的权利要求书和其法律等同物来确定本发明的范围。取决于模块的形式,模块之间的“耦合”还可以采取不同的形式。专用电路可以例如通过硬连线或者通过访问共同寄存器或者存储器位置而彼此耦合。软件“耦合”可以通过在软件组件之间或者在软件和硬件之间,如果那种情况的话传递信息的任何数目的方式发生。术语“耦合”旨在包括所有这些并且不旨在限制为两个组件之间的硬连线永久连接。另外,可以存在中介元件。例如,当两个元件描述为彼此耦合时,这既不隐含元件彼此直接耦合也不排除两者之间的其他元件的使用。

权利要求:1.一种扩展的NVMe控制器,包括:主机接口,其适于将所述扩展的NVMe控制器耦合到主机处理器;直接网络接口,其适于将所述扩展的NVMe控制器耦合到外部以太网网络;以及其中所述扩展的NVMe控制器被配置为:将NVMe命令转换为以太网上的NVMeNVMoE命令,所述NVMe命令适合在所述外部以太网网络上传输到用于远程命名空间的远程命名空间控制器,所述NVMe命令经由所述主机接口从所述主机处理器被接收。2.根据权利要求1所述的扩展的NVMe控制器,其中所述扩展的NVMe控制器还被配置为:通过将所述NVMe命令的命名空间标识符NSID映射到以太网介质访问控制MAC地址来转换所述NVMe命令。3.根据权利要求2所述的扩展的NVMe控制器,还包括:将一个或多个NSID映射到一个或多个以太网MAC地址的映射表;以及其中所述扩展的NVMe控制器使用所述映射表来将所述NVMe命令的所述NSID映射到所述以太网MAC地址。4.根据权利要求1所述的扩展的NVMe控制器,还包括用于调度用于处理所述NVMe命令的队列的调度器和仲裁器。5.根据权利要求1所述的扩展的NVMe控制器,还包括本地存储器接口,所述本地存储器接口适于将所述扩展的NVMe控制器耦合到用于本地非易失性存储器的本地命名空间,其中所述扩展的NVMe控制器从所述主机处理器接收指向所述本地命名空间的NVMe命令,并且向所述本地命名空间提供用于所述主机处理器的IO访问。6.根据权利要求5所述的扩展的NVMe控制器,其中所述NVMe命令通过HSID和NSID对所述本地命名空间进行寻址,并且所述扩展的NVMe控制器访问目录服务器,所述目录服务器管理HSID和NSID以获得针对所述本地命名空间的HSID和或NSID。7.根据权利要求6所述的扩展的NVMe控制器,其中所述扩展的NVMe控制器从所述目录服务器请求一个或多个HSID和一个或多个NSID,并且接收在所述外部以太网网络中没有被重复的HSID和NSID。8.根据权利要求1所述的扩展的NVMe控制器,还包括用于从所述直接网络接口提供对命令和数据流的流控制的共享缓冲池。9.根据权利要求1所述的扩展的NVMe控制器,其中所述外部以太网网络包括层3网络,并且其中所述扩展的NVMe控制器还被配置为将所述NVMoE命令封装在层3分组报头内以用于在所述层3网络上的传输。10.根据权利要求5所述的扩展的NVMe控制器,其中所述扩展的NVMe控制器被耦合到第二扩展的NVMe控制器,其中所述第二扩展的NVMe控制器被耦合到第二主机处理器,其中所述第二扩展的NVMe控制器经由第二直接网络接口被连接到所述扩展的NVMe控制器,并且其中所述第二扩展的NVMe控制器被配置为对所述扩展的NVMe控制器的所述本地命名空间进行镜像,并且在所述扩展的NVMe控制器发生故障的情况下充当备用。11.一种用于访问远程命名空间的方法,所述方法包括:在扩展的NVMe控制器处,从主机处理器接收指向用于耦合到外部网络的远程非易失性存储器的远程命名空间的NVMe命令,所述扩展的NVMe控制器还被耦合到所述外部网络,所述扩展的NVMe控制器还经由主机接口被耦合到所述主机处理器;在所述扩展的NVMe控制器处,将接收到的所述NVMe命令转换为以太网上的NVMeNVMoE命令,所述NVMoE命令适合在所述外部以太网网络上传输到用于远程命名空间的远程命名空间控制器;以及在所述扩展的NVMe控制器处,在所述外部以太网网络上向所述远程命名空间控制器直接传输转换的所述NVMe命令。12.根据权利要求11所述的方法,其中转换接收到的所述NVMe命令还包括:通过将所述NVMe命令的命名空间标识符NSID映射到以太网介质访问控制MAC地址来转换接收到的所述NVMe命令。13.根据权利要求12所述的方法,其中所述扩展的NVMe控制器还包括:将一个或多个NSID映射到一个或多个以太网MAC地址的映射表;以及其中所述扩展的NVMe控制器使用所述映射表来将所述NVMe命令的所述NSID映射到所述以太网MAC地址。14.根据权利要求11所述的方法,还包括:使用命令调度器和命令仲裁器来处理接收到的所述NVMe命令。15.根据权利要求11所述的方法,还包括:由所述扩展的NVMe控制器从所述主机处理器接收指向本地命名空间的NVMe命令;由所述扩展的NVMe控制器向所述本地命名空间提供用于所述主机处理器的IO访问,其中所述扩展的NVMe控制器包括本地存储器接口,所述本地存储器接口适于将所述扩展的NVMe控制器耦合到用于本地非易失性存储器的所述本地命名空间。16.根据权利要求15所述的方法,其中所述NVMe命令通过HSID和NSID对所述本地命名空间进行寻址,所述方法还包括:访问目录服务器,所述目录服务器管理HSID和NSID以获得针对所述本地命名空间的HSID和或NSID。17.根据权利要求16所述的方法,还包括:由所述扩展的NVMe控制器从所述目录服务器请求一个或多个HSID以及一个或多个NSID;以及接收在所述外部以太网网络中没有被重复的HSID和NSID。18.根据权利要求11所述的方法,还包括:使用共享缓冲池从所述直接网络接口提供对命令和数据流的流控制。19.根据权利要求11所述的方法,其中所述外部以太网网络包括层3网络,所述方法还包括:由所述扩展的NVMe控制器将所述NVMoE命令封装在层3分组报头内以用于在所述层3网络上的传输。20.根据权利要求15所述的方法,其中所述扩展的NVMe控制器被耦合到第二扩展的NVMe控制器,其中所述第二扩展的NVMe控制器被耦合到第二主机处理器,其中所述第二扩展的NVMe控制器经由第二直接网络接口被连接到所述扩展的NVMe控制器,并且其中所述第二扩展的NVMe控制器被配置为对所述扩展的NVMe控制器的所述本地命名空间进行镜像,并且在所述扩展的NVMe控制器发生故障的情况下充当备用。

百度查询: 科内克斯实验室公司 针对远程存储器访问的NVM EXPRESS控制器

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

相关技术
相关技术
相关技术
相关技术