用于聚合的网上NVMe装置的聚合存储方法与流程

文档序号:15888417发布日期:2018-11-09 19:47阅读:429来源:国知局
用于聚合的网上NVMe装置的聚合存储方法与流程

本申请要求于分别于2017年3月31日和2017年4月10日在美国专利和商标局提交的临时申请no.62/480,113和no.62/483,913的优先权,所述申请的内容以引用方式并入本文中。

本公开的一些实施例总体涉及一种系统和方法,其用于聚合多个存储器驱动(例如,essd),以被主机感知为单个的大逻辑容量。

背景技术

固态盘(ssd)迅速变为现代it基础设施的优选存储元件,从而替代传统硬盘驱动(hdd)。ssd提供非常低的延迟、高数据读/写吞吐量以及可靠的数据存储。

网上高速非易失性存储器(non-volatilememoryexpressoverfabrics,nvme-of)是一种允许几百个或几千个nvme-of装置(例如,高速非易失性存储器(nvme)ssd)通过诸如ib、fc和以太网的网络结构连接的新兴技术。nvme-of协议允许实现远程直接附加存储(rdas)。这样,允许大量ssd连接至远程主机。nvme-of协议使用远程直接存储器存取(rdma)协议来提供nvme命令、数据和响应的可靠通信。用于提供rdma服务的传输协议包括iwarp、rocev1和rocev2。

nvme-of接口允许大量ssd连接至远程主机。按照常规,针对每个nvme-ofssd,在远程主机上运行驱动器实例。对于一些应用,单个ssd提供的存储容量会是不足的。



技术实现要素:

本公开的一些实施例提供了一种聚合多个ssd的方法,所述多个ssd被主机感知为单个大容量逻辑卷,以及一种用于实现所述方法的网络状结构。

根据一些实施例,一种网上nvme装置的存储聚合方法,包括:将聚合组识别为包括多个nvme-ofssd的聚合的以太网ssd;选择聚合组的nvme-ofssd之一作为主要nvme-ofssd;选择聚合组的其它nvme-ofssd作为辅助nvme-ofssd;以及利用管理nvme-ofssd的处理器初始化主要nvme-ofssd中的映射分配表。

根据一些示例实施例,在连接至聚合组的存储管理员的指导下进行利用处理器初始化映射分配表。

根据一些示例实施例,映射分配表包括针对聚合组的nvme-ofssd中的每一个的nvme-ofssd的容量、nvme-ofssd的地址和nvme-ofssd的容量的剩余量。

根据一些示例实施例,所述方法还包括:将主要nvme-ofssd的地址提供至用户应用,以能够在聚合组与用户应用之间进行数据转移。

根据一些示例实施例,所述方法还包括:在主要nvme-ofssd处从连接至聚合组的主机接收管理命令;确定对应于管理命令的数据是仅存储在主要nvme-ofssd上还是存储在一个或多个辅助nvme-ofssd上;当数据存储在所述一个或多个辅助nvme-ofssd上时,将管理命令分割为分别对应于所述一个或多个辅助nvme-ofssd的一个或多个管理子命令;将数据转移至主机;从所述一个或多个辅助nvme-ofssd接收子命令完成条目;以及生成完成条目并将其从主要nvme-ofssd发送至主机。

根据一些示例实施例,所述方法还包括:在所述一个或多个辅助nvme-ofssd中的对应的辅助nvme-ofssd处接收所述一个或多个管理子命令中的管理子命令;根据该管理子命令确定是否将数据从所述对应的辅助nvme-ofssd转移至主要nvme-ofssd;生成完成条目;以及将完成条目发送至主要nvme-ofssd。

根据一些示例实施例,所述方法还包括:在主要nvme-ofssd处接收生成命名空间的命令或者删除命名空间的命令;利用主要nvme-ofssd参照映射分配表;当命令是生成命名空间时,在主要nvme-ofssd和/或所述一个或多个辅助nvme-ofssd中分配容量,或者当命令是删除命名空间时,检索主要nvme-ofssd和/或所述一个或多个辅助nvme-ofssd中的对应的一个;以及更新映射分配表。

根据一些示例实施例,所述方法还包括:在主要nvme-ofssd处接收读/写命令;利用主要nvme-ofssd查找映射分配表;生成一个或多个读/写子命令;将所述一个或多个读/写子命令分别发送至所述一个或多个辅助nvme-ofssd;根据读/写命令在主机与主要nvme-ofssd和/或所述一个或多个辅助nvme-ofssd之间转移数据;以及在转移数据之后将完成条目发送至主机。

根据一些示例实施例,所述方法还包括:在所述一个或多个辅助nvme-ofssd中的对应的辅助nvme-ofssd处接收所述一个或多个读/写子命令中的读/写子命令;提取对应于该读/写子命令的传输信息;将读/写请求从所述对应的辅助nvme-ofssd发送至主机;以及在完成对应于读/写子命令的数据转移之后将完成条目发送至主要nvme-ofssd。

根据一些示例实施例,一种在一组nvme-of以太网ssd中的nvme-ofssd容量聚合的方法,包括:识别聚合组的多个nvme-ofssd;将各个nvme-ofssd之一指定为主要nvme-ofssd;以及将其余nvme-ofssd指定为辅助nvme-ofssd,其中,只有主机的主机驱动器可见的nvme-ofssd是主要nvme-ofssd。

根据一些示例实施例,所述方法还包括:利用主要nvme-ofssd根据主要nvme-ofssd从主机接收的命令维护映射分配表,其中,映射分配表指示在聚合组的主要nvme-ofssd和一个或多个辅助nvme-ofssd之间划分的逻辑块地址(lba)空间。

根据一些示例实施例,所述方法还包括:利用处理器初始化映射分配表,以根据将各个nvme-ofssd之一指定为主要nvme-ofssd来构造聚合组。

根据一些示例实施例,所述方法还包括:利用主要nvme-ofssd根据主要nvme-ofssd从主机接收的命令聚合各个辅助nvme-ofssd的容量,以使得聚合组的所述多个nvme-ofssd针对主机呈现为单个聚合的逻辑容量。

根据一些示例实施例,所述方法还包括:利用主要nvme-ofssd将容量分配至一个或多个辅助nvme-ofssd;以及利用主要nvme-ofssd在映射分配表中记录分配的容量和关联的映射逻辑块地址(lba)范围。

根据一些示例实施例,所述方法还包括:利用主要nvme-ofssd为辅助nvme-ofssd和主要nvme-ofssd的聚合的容量设置预留空间(overprovisioning)。

根据一些示例实施例,所述方法还包括:在主要nvme-ofssd处从主机接收命令;将所述命令划分为多个子命令,所述多个子命令各自对应于各个对应的辅助nvme-ofssd中的对应的一个;以及将子命令从主要nvme-ofssd发送至各个对应的辅助nvme-ofssd。

根据一些示例实施例,所述方法还包括:基于各自的子命令,将数据从各个对应的辅助nvme-ofssd直接转移至主机。

根据一些示例实施例,所述方法还包括:在各个对应的辅助nvme-ofssd处从主要nvme-ofssd接收各自的子命令;执行对应于各自的子命令的任务;以及在完成任务时将各自的子命令完成条目从各个对应的辅助nvme-ofssd发送至主要nvme-ofssd。

根据一些示例实施例,所述方法还包括:利用主要nvme-ofssd维护子命令上下文表;在主要nvme-ofssd处从各个辅助nvme-ofssd接收子命令完成条目;以及利用主要nvme-ofssd根据接收到的子命令完成条目跟踪子命令的执行。

根据一些示例实施例,提供了一种聚合的以太网ssd组,包括:以太网ssd机箱;以太网ssd机箱上的以太网交换机,其用于使得能够与主机驱动器通信;耦接至以太网交换机的处理器;耦接至板管理控制器的pcie交换机;以及多个nvme-ofssd,其中包括:主要nvme-ofssd;以及多个辅助nvme-ofssd,其经由包括以太网交换机和pcie交换机的专用通信信道连接至主要nvme-ofssd,其中,仅主要nvme-ofssd对于主机可见,并且其中,板管理控制器被构造为初始确定各个nvme-ofssd中的哪一个包括主要nvme-ofssd。

因此,因为单个主要essd在通过辅助essd跟踪所有相关子命令的完成并保持辅助essd对于主机不可见的同时,执行了所有nvme-of协议处理,所以essd的聚合组对主机呈现为单个大逻辑容量。

附图说明

通过以下结合附图的描述可更加详细地理解一些实施例,其中:

图1示出了根据本公开的实施例的在单个essd机箱中包括多个聚合的essd的nvme-of以太网ssd(essd)存储中使用的系统架构的框图;

图2示出了根据本公开的实施例的图1的实施例所示的多个essd机箱在以太网ssd机架中连接在一起的框图;

图3是根据本公开的实施例的由主要essd维护的“映射分配表”的示例;

图4示出了根据本公开的实施例的描绘映射分配表的初始化的流程图;

图5示出了根据本公开的实施例的nvme-of以太网ssd(essd)存储中使用的系统架构的框图,所述nvme-of以太网ssd(essd)存储包括进出分别位于多个机架中的多个essd机箱中的多个聚合的essd的数据;

图6是描绘示例命令上下文的表;

图7示出了根据本公开的实施例的描绘通过主要essd处理管理命令的流程图;

图8示出了根据本公开的实施例的描绘命名空间生成和删除命令的执行的流程图;

图9示出了根据本公开的实施例的描绘在p-essd的控制下执行读/写命令的流程图;

图10示出了根据本公开的实施例的描绘通过s-essd执行管理子命令的流程图;

图11示出了根据本公开的实施例的描绘通过s-essd执行读/写子命令的流程图;以及

图12示出了根据本公开的实施例的描绘在s-essd中的数据转移和子命令完成同步的流程图。

具体实施方式

通过参照以下对实施例和附图的详细描述可更容易地理解本发明构思的特征及其实现方法。下文中,将参照附图更详细地描述实施例,其中相同的附图标记始终指代相同元件。然而,本发明可按照许多不同形式实施,并且不应理解为仅限于本文示出的实施例。相反,这些实施例作为示例提供,以使得本公开将是彻底和完整的,并且将把本发明的各方面和各特征完全传递给本领域技术人员。因此,本领域普通技术人员对于完全理解本发明的各方面和各特征所不需要的处理、元件和技术可不描述。除非另有说明,否则相同的附图标记在附图和撰写的说明书中始终指代相同元件,因此,将不重复对其的描述。在附图中,为了清楚起见,可夸大元件、层和区的相对尺寸。

在以下描述中,出于解释的目的,阐述了许多特定细节,以提供对各个实施例的彻底理解。然而,应该清楚,可不需要这些特定细节或者通过一个或多个等同布置方式来实施各个实施例。在其它实例中,公知的结构和装置按照框图形式示出,以避免不必要地使各个实施例不清楚。

应该理解,虽然本文中可使用术语“第一”、“第二”、“第三”等来描述各个元件、组件、区、层和/或部分,但是这些元件、组件、区、层和/或部分不应被这些术语限制。这些术语用于将一个元件、组件、区、层或部分与另一元件、组件、区、层或部分区分开。因此,下面描述的第一元件、第一组件、第一区、第一层或第一部分可被称作第二元件、第二组件、第二区、第二层或第二部分,而不脱离本发明的精神和范围。

为了方便描述,本文中可使用诸如“在……下方”、“在……之下”、“下”、“在……下”、“在……之上”、“上”等的空间相对术语,以描述附图中所示的一个元件或特征与另一元件或特征的关系。应该理解,空间相对术语旨在涵盖使用或操作中的装置的除图中所示的取向之外的不同取向。例如,如果图中的装置颠倒,则被描述为“在其它元件或特征之下”或“在其它元件或特征下方”或“在其它元件或特征下”的元件将因此被取向为“在其它元件或特征之上”。因此,示例性术语“在……之下”和“在……下”可涵盖在……之上和在……之下这两个取向。装置可按照其它方式取向(旋转90度或位于其它取向),并且本文所用的空间相对描述语将相应地解释。

应该理解,当将元件、层、区或组件称作“位于”另一元件、层、区或组件“上”、“连接至”或“结合至”另一元件、层、区或组件时,其可直接位于所述另一元件、层、区或组件上、直接连接至或结合至所述另一元件、层、区或组件,或者可存在一个或多个中间元件、层、区或组件。另外,还应该理解,当一个元件或层被称作“位于”两个元件或层“之间”时,其可为所述两个元件或层之间的唯一元件或层,或者也可存在一个或多个中间元件或层。

针对本公开的目的,“x、y和z中的至少一个”以及“选自x、y和z中的至少一个”可理解为仅x、仅y、仅z,或者x、y和z中的两个或更多个的任意组合,诸如,举例来说,xyz、xyy、yz和zz。相同的附图标记始终指代相同元件。如本文所用,术语“和/或”包括一个或多个相关所列项的任意和所有组合。

在下面的示例中,x轴、y轴和z轴不限于直角坐标系的三个轴,而是可由更宽的含义解释。例如,x轴、y轴和z轴可彼此垂直,或者可代表彼此不垂直的不同方向。

本文使用的术语仅是为了描述特定实施例,并且不旨在限制本发明。如本文所用,除非上下文清楚地另有说明,否则单数形式“一种”和“一”也旨在包括复数形式。还应该进一步理解,当术语“包括”、“包含”、“包括……的”和“包含……的”用于本说明书中时,指明存在所列特征、整体、步骤、操作、元件和/或组件,但是不排除存在或添加一个或多个特征、整体、步骤、操作、元件、组件和/或它们的组。如本文所用,术语“和/或”包括一个或多个相关所列项的任何和所有组合。当诸如“中的至少一个”的表达出现于元件的列表之后时,其修饰元件的整个列表而不修饰列表中的单独的元件。

如本文所用,术语“基本上”、“约”和类似术语用作表达接近而不是表达程度,并且旨在说明本领域普通技术人员应该能够认识到的测量或计算的值的固有偏差。此外,当描述本发明的实施例时,使用“可”是指“本发明的一个或多个实施例”。如本文所用,可认为术语“使用”与术语“利用”同义。另外,术语“示例性”旨在指代示例或示出。

当可不同地实施特定实施例时,可与描述的次序不同地执行特定的处理次序。例如,两个连续地描述的处理可同时执行或者按照与描述的次序相反的次序执行。

另外,本文公开和/或说明的任何数的范围旨在包括说明的范围内的相同数值精度的所有子范围。例如,范围“1.0至10.0”旨在包括在说明的最小值1.0与说明的最大值10.0之间(包括端点)的所有子范围,也就是说,最小值等于或大于1.0,最大值等于或小于10.0,诸如,例如,2.4至7.6。本文说明的数的任何上限旨在包括其中包含的所有较小数限,并且本文说明的数的任何下限旨在包括其中包含的所有较大数限。因此,申请人保留修改本说明(包括权利要求)的权利,以特别说明在本文特别说明的范围内包含的任何子范围。

本文参照作为实施例和/或中间结构的示意图的剖视图描述各个实施例。这样,作为例如制造技术和/或公差的结果,附图中的形状的变化是可以预见的。因此,本文公开的实施例不应被理解为限于区的具体示出的形状,而是包括例如由制造工艺导致的形状的偏差。例如,示为矩形的注入区将通常具有圆形或弯曲特征和/或在其边缘具有注入浓度的梯度,而不是从注入区至非注入区二值变化。同样地,通过注入形成的掩埋区可在掩埋区与通过其发生注入的表面之间的区中导致一些注入。因此,图中示出的区实际上是示意性的,并且它们的形状不旨在示出装置的区的实际形状,并且不旨在限制。

根据本文所述的本发明的实施例的电子装置或电装置和/或任何其它相关装置或组件可利用任何合适的硬件,固件(例如专用集成电路)、软件或者软件、固件和硬件的组合来实施。例如,这些装置的各个组件可形成在一个集成电路(ic)芯片或者分离的ic芯片上。此外,这些装置的各个组件可在柔性印刷电路膜、带载封装(tcp)、印刷电路板(pcb)上实施,或者形成在一个衬底上。此外,这些装置的各个组件可为在一个或多个计算装置中在一个或多个处理器上运行的一个处理或线程,以执行计算机程序指令和与其它系统组件交互,以执行本文所述的各种功能。所述计算机程序指令存储在可利用标准存储器装置在计算装置中实施的存储器中,诸如例如,随机存取存储器(ram)。所述计算机程序指令也可存储在诸如例如cd-rom、闪速驱动器等的其它非易失性计算机可读介质中。另外,本领域技术人员应该理解,本领域技术人员应该理解,各个计算装置的功能可组合或者集成在单个计算装置中,或者特定计算装置的功能可分布在一个或多个其它计算装置上,而不脱离本发明的示例性实施例的精神和范围。

除非另外限定,否则本文中使用的所有术语(包括技术和科学术语)具有与本发明所属领域的普通技术人员之一通常理解的含义相同的含义。还应该理解,除非本文中明确这样定义,否则诸如在通用词典中定义的那些的术语应该被解释为具有与它们在相关技术和/或本说明书的上下文中的含义一致的含义,而不应该理想化地或过于正式地解释它们。

图1示出了根据本公开的实施例的在单个essd机箱120中包括多个聚合的essd110的nvme-of以太网ssd(essd)存储中使用的系统架构100的框图。图2示出了根据本公开的实施例的诸如图1的实施例所示的那些的多个essd机箱120在以太网ssd机架中连接在一起的框图。

如上所述,nvme-of接口允许大量ssd110连接至远程主机190。按照常规,针对各个nvme-ofssd110,在远程主机190上运行驱动器实例。然而,对于一些应用,通过单个ssd110提供的存储容量不足。这种应用可受益于几百太字节(terabyte)的容量的单个逻辑卷。因此,这种应用可受益于提供了在“聚合组”中聚合在一起的大量单独的ssd110的本公开的实施例,并且所述大量单独的ssd110对于所述应用呈现为单个逻辑卷。

例如,24个16太字节(16tb)的essd可呈现为单个逻辑384tb驱动。需要大量聚合ssd110的一些应用示例包括大数据挖掘和分析、石油化工、天然气与能源勘探、实验粒子物理学和药物开发。这些示例会需要高性能计算(hpc),这需要大存储容量和高性能二者。

虽然可存在聚合底层ssd110并且提供单个逻辑、易扩展卷的系统软件层,但是这种系统软件通常是高度复杂和庞杂的。这种软件会需要在主机190上运行的大量nvme-of驱动器实例,从而消耗诸如存储器、cpu周期和功率的系统资源。目标侧的解决方案可潜在地使用x86服务器或者raid-on-chip(roc)系统,以提供大容量作为单个逻辑卷。然而,这种解决方案通常是复杂的、昂贵的,并且具有性能和能量的负面影响。例如,根据本发明的实施例,通过cpu接收和发送数据会消耗比通过dma引擎、asic等消耗的能量大好几倍的能量的量。

因此,本公开的实施例按照有效和成本经济的方式提供了一种用于以太网nvme-ofssd中聚合多个essd110的方法和结构。

参照图1,(例如,奉存储管理员的命令)为essd110分配两个角色之一,从而各个essd110用作主要essd(p-essd)110p或者辅助essd(s-essd)110s。单个机箱120(或者给定机架中的多个机箱120,或者分布在宽范围的多个机架230中的多个机箱120)中的单个p-essd110p和一组多个s-essd110s作为单个逻辑驱动整体提供由远程主机190使用的必要的闪速存储器容量。essd机箱120包括essd110以及诸如板管理控制器(bmc)装置150的处理器和用于外部连接的以太网交换机160。虽然essd机箱120用于在以下实施例的描述中指代一组nvme-of装置,但是本发明的其它实施例可简单地应用于任何其它多个nvme-of装置,而不管其物理外壳如何(例如,机箱、机架或者基于容器的外壳)。此外,虽然essd110用于描述下面描述的实施例的nvme-of装置,但是其它nvme-of装置可等同地应用于本发明的其它实施例。

因此,经由对应的以太网交换机160,可跨越机架230中的多个机箱120并且跨越各自包括多个机箱120的多个机架230来聚合essd110。

p-essd110p是远程主机nvme-of驱动器170可见的唯一essd110,因此终止了nvme-of协议。p-essd110p代表其本身和同一聚合组中的所有其余s-essd110s为远程主机190呈现单个、大的聚合的逻辑容量。p-essd110p从远程主机nvme-of驱动器170接收所有输入/输出(i/o)命令180,并且将命令响应(例如,完成条目)182提供至远程主机190。

p-essd110p还维护映射分配表(mat),其指示了在essd110的相同的聚合组的p-essd110p以及一些或全部s-essd110s之间划分的逻辑块地址(lba)空间。当通过p-essd110p接收到i/o命令180时,p-essd110p首先查找mat(例如,图3的mat300,下面进一步描述)以确定哪一个essd110(例如,p-essd110p、一个或多个s-essd110s或者这两者的集合)可满足i/o命令180。根据mat,p-essd110p随后将适当修改的nvme-ofi/o子命令132发送至适当的s-essd110s的集合。

为了发送子命令132,p-essd110p在通电后还在pcie总线140和中平面135上与s-essd110s中的每一个建立专用以太网rdma连接(或专有通信信道)130。该专用队列偶(queue-pair,qp)通信信道130被p-essd110p使用来将i/o命令(例如,子命令132)发送至s-essd110s,并且从s-essd110s接收完成条目134。专用通信信道130可为以太网,并且可允许经以太网交换机160发送数据。然而,专用通信信道130也可为基于pcie的信道,并且可允许经pcie交换机发送数据。也就是说,所有essd110可使用两种或更多种通信模式彼此通信是可能的。例如,以太网信道可通常用于数据的传输,并且pcie信道可用于管理,同时任一个信道可用作专用通信信道130。

s-essd110s是利用nvme-of协议仅执行相对于远程主机190进出的数据转移的正常nvme-ofssd110。利用rdmaread和write服务相对于远程主机190直接进行这些数据转移。s-essd110s从p-essd110p接收命令(例如,子命令132),但是不直接从远程主机nvme-of驱动器170接收命令。s-essd110s将子命令完成条目134发送至p-essd110p而不是远程主机190,以指示子命令132的完成。

p-essd110p处理所有nvme-of协议终止,处理所有主机命令和完成列队(例如,提交队列/完成队列(sq/cq)),并且对于在远程主机启动器上运行的远程主机nvme-of驱动器170是可见的。当远程主机驱动器170发出nvme管理命令180或i/o命令180时,命令180被发送至p-essd110p,并且所有管理命令180被p-essd110p执行。然而,i/o命令180可分布在多个essd110之间。

p-essd110p也可根据i/o命令180执行其自身的数据转移共享。在将对应于原始命令180的命令完成条目182发送至远程主机190之前,p-essd110p则等待(例如,来自s-essd110s的集合的)所有子命令完成条目134到达专用通信信道130。

p-essd110p还针对在命令上下文表(例如,见图6)中执行的各个命令维护“命令上下文”。该命令上下文被p-essd110p使用,以跟踪子命令132的执行、数据转移和任何错误状态。当所有子命令132完成后,将命令响应/完成条目182提供至远程主机190,并且将命令上下文表解除分配。

参照图2,多个essd机箱120可在以太网ssd机架230中连接在一起,其中机架顶(tor)交换机240用于提供共同机架230中的多个机箱120之间的连接。相似地,位于不同的对应的地理位置的多个机架230可通过对应的tor交换机240彼此连接(直接彼此连接或者通过外部交换机彼此连接)。以太网机架230可位于单个数据中心建筑物中,或者可分布在宽地理区域上。

总而言之,本发明的实施例提供了用于聚合多个以太网nvme-ofssd(essd)110以使其呈现为单个大容量nvme-ofssd的机制。essd110可位于单个机箱120中,可位于单个机架230中的多个机箱120中,或者甚至可散布于各自具有多个机箱120的大量以太网机架230上。为essd110之一指定主要essd(p-essd)110p的角色。为其它essd110指定为辅助essd(s-essd)110s。s-essd110s从p-essd110p接收子命令132,完成子命令132,并且将用于这些子命令132的完成条目134发回p-essd110p,尽管s-essd110s执行与远程主机启动器的直接数据转移。因此,当前实施例允许容量聚合有效地用作单个以太网ssd,而不牺牲任何存储带宽。

图3是根据本公开的实施例的由p-essd110p维护的“映射分配表”300的示例。图4示出了根据本公开的实施例的描绘映射分配表300的初始化的流程400。

参照图3和图4,如上所述,当前实施例利用两种essd110(例如,p-essd110p和s-essd110s)。p-essd110p和s-essd110s二者使用网上nvme(nvme-of)协议,以为主机190提供存储服务。p-essd110p维护包含被主机190感知为单个逻辑卷的essd110的聚合组中的s-essd110s的细节的表(例如,映射分配表(mat)300)。

mat300可由与p-essd110p在相同机箱120中的bmc150初始化。bmc150可管理以太网机箱120和类似以太网交换机160和essd110的组件。bmc150具有用于系统管理目的的pcie和smbus接口。另外,bmc将(例如,在存储管理员的指导下)确定将聚合哪些essd110(s410),并且当确定essd110时,bmc150可配置以太网交换机160。

mat300的左侧的三列在存储管理员的指导下被bmc150初始化。bmc150和存储管理员对于聚合组/存储系统中具有的所有essd110可见并且知晓所有essd110。这种知晓包括essd110中的每一个的容量311和地址位置312。存储管理员可决定需要哪些s-essd110s来形成“聚合的以太网ssd”(例如,聚合组)。bmc150和存储管理员可向用户宣告或提供p-essd110p的网络地址,以使得对应于远程主机nvme-of驱动器170的用户应用知道在哪里找到聚合的以太网ssd。bmc150和存储管理员还可选择或任命essd110之一作为p-essd110p(s420),并且还可在初始指派之后针对多种原因中的一个或多个来改变被指明为p-essd110p的essd110。然后,bmc150可为聚合组的主要模式和辅助模式编程(s430)。

p-essd110p也可在bmc150上保持mat300的副本,并且可定期更新与bmc150一起存储的mat300的副本。在一些实施例中,仅p-essd110p包含官方mat300,并且essd索引313“0”指示p-essd110p,而其余的essd索引值对应于各个s-essd110s中的对应的一个。

p-essd110p终止对于主机驱动器170的nvme-of协议,并且执行主机驱动器170发出的所有命令180。当主机190命令180完成时,p-essd110p将完成条目182按照“完成条目”182的形式发回主机驱动器170。相对于主机命令180,远程主机nvme-of驱动器170完全不知道s-essd110s的存在。p-essd110p还维护提交队列(sq),并且将命令完成条目提交至完成队列(cq)。

mat300右边的三列通过p-essd110p更新和维护。当远程主机nvme-of驱动器170生成“命名空间”时,将特定闪存容量分配至命名空间。命名空间lba范围314映射至一组essd110,并且记录在通过p-essd110p维护的mat300中。下面将参照图8描述该处理的细节。

p-essd110p还可执行特定的初始化。一旦mat300在p-essd110p中初始化(s440),p-essd110p就知道哪个essd110是对应的s-essd110s。p-essd110p随后与聚合组中的s-essd110s中的每一个设置通信信道130。通信信道130可遍及经过机箱120中的以太网交换机160的以太网接口,或者替代性地可遍及经过机箱120中的pcie交换机的pcie接口。如果s-essd110s之一位于在相同机架230中的不同机箱120中,则通过tor交换机240建立通信信道130。给定机箱120中的通信信道130也可遍及pcie总线140。

图5示出了根据本公开的实施例的nvme-of以太网ssd(essd)存储中使用的系统架构500的框图,所述nvme-of以太网ssd(essd)存储包括进出分别位于多个机架230中的多个essd机箱120中的多个聚合的essd110的数据。

参照图5,p-essd110p可通过外部网络交换机和路由器建立与位于广域网(wan)中的s-essd110s的以太网通信信道530。这种专用以太网通信信道530可为rdma队列偶(qp),或者可为专用方法。以太网通信信道530用于交换子命令132和关联的完成条目。

图6是示出示例命令上下文的表600。

参照图6,子命令132中的每一个具有命令id640,并且携带“命令标签”610,从而当p-essd110p接收完成条目134时,完成条目134可被追溯回原始命令180。一旦追溯到子命令132的完成条目134,“子命令编号”字段620递减,并且为当前状态锁存接收到的错误状态。当子命令编号字段620达到零时,对应的命令180(子命令132的父)完成,并且p-essd110p可将完成条目182发回远程主机190。此时的p-essd110p产生具有积累的错误状态630的完成条目,并且将其放入关联的cq。

图7示出了根据本公开的实施例的示出通过p-ssd110p处理管理命令180的流程700。

参照图1和图7,并且如上所述,各个p-essd110p维护命令sq。当存在被p-essd110p接收(s710)并能够被执行的命令180时,p-essd110p仲裁sq,并且随后选择执行命令180。p-essd110p执行所有nvme命令(例如,管理命令和i/o命令)180。也就是说,虽然s-essd110s可将数据直接发送至主机190,但是s-essd110s不直接从主机190接收命令,并且不直接将完成条目发送至主机190。通过p-essd110p执行管理命令可不需要与任何s-essd110s的任何通信。

在接收命令180之后,p-essd110p确定数据在哪儿,以及是否具有所有数据(s720)。如果p-essd110p具有所有数据,则p-essd110p将数据转移至主机190(s770)。

如果p-essd110p确定其不具有所有数据(s720),则p-essd110p随后咨询mat300以确定请求的数据位于何处(s730)。一旦识别一组相关的essd110,p-essd110p就推进命令180的执行。当所有的相关请求的数据在p-essd110p本身中可用时,p-essd110p执行数据转移185。然而,当请求的数据散布在p-essd110p和/或s-essd110s的集合上时,p-essd110p将原始命令180划分为合适数量的子命令132(s740)。子命令132的数量对应于散布有请求的数据的essd110的数量。各个子命令132对应于请求的数据由各个essd110占据的那部分。

p-essd110p将合适的开始lba(slba)、块数(nlb)和远程散布/收集列表(sgl)放在子命令132中。sgl包含远程主机190上的地址、密钥和转移缓存器的大小。p-essd110p随后在命令分割处理中将这些子命令132在专用qp通信信道130上发送至对应的s-essd110s(s750),并且等待从对应的s-essd110s中的每一个接收完成条目134(s760)。因此,将原始命令180分割为子命令132,以使得合适的各个essd110可并行地执行数据转移,从而使得数据能够转移至主机190(s770)。

p-essd110p针对参照图6描述的执行的命令180生成命令上下文。命令上下文用于保持对子命令132的执行以及子命令132的任何中间错误状态(s780)的跟踪。一旦p-essd110p确认管理命令完成,则p-essd110p将完成条目发送至主机190(s790)。

因此,远程主机nvme-of驱动器170发送的所有管理命令180由p-essd110p接收(s710)并执行。p-essd110p可单独地完成一些或全部管理命令180(例如,当p-essd110p在(s720)中确定其已单独具有完成管理命令所需的所有信息时)。在一些情况下,p-essd110p可在完成管理命令180之前从s-essd110s取回特定多条信息。如果p-essd110p从s-essd110s中寻找特定非用户数据信息,则p-essd110p可生成管理子命令132并将其发送至对应的s-essd110s。s-essd110s可利用它们之间的专用通信信道130将任何必要的数据和子命令完成条目134发回p-essd110p。

图8示出了根据本公开的实施例的描绘命名空间生成和删除命令的执行的流程图800。

参照图8,p-essd110p可接收并执行命名空间生成命令(s810)和/或删除命令(s811)。当p-essd110p接收命名空间生成命令时(s810),p-essd110p可查找mat300(s820),并且可从总可用池分配合适量的容量(s830)。新生成的命名空间可具有单独来自p-essd110p或者单独来自特定的s-essd的闪存容量,或者新生成的命名空间可具有来自p-essd110p和s-essd110s的任何组合的闪存容量。p-essd110p随后可在mat300中记录分配的容量和关联映射的lba范围(s840)。

当p-essd110p接收用于删除命名空间的命名空间删除命令时(s811),p-essd110p查找mat300(s821),检索对应的essd(s831),并且解除分配关联的容量(s841),然后对应地更新mat300。

相对于通过s-essd110s的命名空间生成/删除命令执行,s-essd110s不直接接收命名空间生成/删除命令。通常,s-essd110s应该包含代表整个容量的单个命名空间。当合适时,p-essd110p可将命名空间生成命令或删除命令发送至s-essd110s,作为子命令132。s-essd110s随后分别执行这些命令,并且将对应的完成条目134发回p-essd110p。这个流程可以与从p-essd110p接收的任何这种管理子命令的流程是相同的。

图9示出了根据本公开的实施例的描绘在p-essd110p的控制下执行读/写命令的流程图900。

参照图9,p-essd110p可接收并执行包括读和写命令180的所有i/o命令180。当p-essd110p接收读/写命令180时(s910),p-essd110p首先查找mat300(s920)。从mat300中,p-essd110p识别出关联的用户数据所在的一组essd。

如参照图6的描述,p-essd110p随后针对原始命令生成命令上下文(s930),从而p-essd110p可跟踪子命令132的执行。p-essd110p随后生成对应的读/写子命令132(s940),并且将合适的子命令132发送至合适的s-essd110s(s950)。p-essd110p还将所有必要的传输网络相关信息(例如,地址)提供至s-essd110s。作为子命令132的一部分,s-essd110s接收包含远程缓存器命令、大小和安全密钥的远程主机190sgl。

将子命令132中的数据转移字段合适地修改至右偏移。s-essd110s向远程主机190缓存器执行直接数据转移(s960),并且当完成时,s-essd110s将完成条目发送至p-essd110p(不同于直接发送至主机190)。如有必要,p-essd110p针对远程主机190执行其自身的数据转移共享(s960)。

此外,s-essd110s中的每一个从p-essd110p接收足够的信息以执行针对远程主机190的任何直接数据转移(s960)。在nvme-of协议中,rdma传输服务(rdma读和rdma写)用于从s-essd110s至远程主机190的数据转移。远程主机190可需要支持rdma协议的共享接收队列(srq)特征,以允许多个s-essd110s将数据转移至远程主机190(s960)。rdma协议可在以太网/ip/tcp(iwarp)、以太网/infiniband(rocev1)或者以太网/ip/udp(rocev2)上运行。相对于s-essd110s与远程主机190之间的通信,s-essd110s仅严格执行与远程主机190的数据转移(s960)。也就是说,仅通过s-essd110s与远程主机190执行rdma读和rdma写操作(s960)。通过p-essd110p利用rdma发送操作或一些其它专用协议执行子命令完成条目134和任何非用户数据转移。

当完成所有子命令(由通过p-essd110p接收到所有子命令完成条目所指示)时(s970),p-essd110p针对原始命令180生成完成条目182,并且将完成条目182发送至主机190上的合适cq(s980)。p-essd110p随后解除分配命令上下文(s990)。

图10示出了根据本公开的实施例的描绘通过s-essd110s执行管理子命令的流程图1000。

参照图10,在当前实施例中,没有s-essd110s直接从主机190nvme-of驱动器170接收到管理命令180或者任何命令。作为替代,p-essd110p仅当必要时将管理子命令132发送至s-essd110s(s1010)。s-essd110s随后确定是否需要任何数据转移(s1020),并且随后在专用通信信道130上与p-essd110p执行任何需要的数据转移(s1020)。s-essd110s随后生成完成条目134(s1040)并且将其发送至p-essd110p(s1050)。在其它实施例中,s-essd110s可使用rdma发送操作来将数据以及完成条目134发送至p-essd110p。

图11示出了根据本公开的实施例的描绘通过s-essd110s执行读/写子命令的流程图1100。

参照图11,s-essd110s主要处理读或写子命令132(例如,相对于管理子命令132)。也就是说,s-essd110s主要执行相对于远程主机190进出的数据运动,而不用参与协议处理的其它方面。当s-essd110s接收读/写子命令时(s1110),s-essd110s使用接收到的传输网络信息(s1120)以向远程主机190发出rdma读或rdma写请求(s1130)。作为子命令132的一部分,s-essd110s接收远程缓存器地址/偏移、大小和安全密钥的细节。当完成必要数据转移时(s1140),s-essd110s将具有合适错误状态的完成条目134发送至p-essd110p(s1150)。

图12示出了根据本公开的实施例的描绘在s-essd110s中的数据转移和子命令完成同步的流程图。

参照图12,对于给定的主机命令180,尽管p-essd110p将完成条目182发送至主机190,一组s-essd110s也可执行针对主机190的数据转移。在关联的数据可导致未定义行为/错误之前,随着针对命令180的完成条目182到达主机190,在针对该给定的命令180的完成条目182被提供至主机190之前,所有数据应该被转移至远程主机190。

如上所述,p-essd110p从主机190接收读/写命令180(s1210),并且将命令180分割为多个子命令132(s1220)。然后,从p-essd110p接收对应的子命令132的每一个s-essd110s向主机190发出数据转移(s1250),并且一旦确定数据转移完成(s1260),s-essd110s就将完成条目134发送至p-essd110p(s1270)。然后,一旦从每个相关的s-essd110s接收所有子命令完成条目134(s1230),p-essd110p就将完成条目182发送至主机190(s1240)。

因为聚合的以太网ssd数据转移和完成条目公告(posting)分布在一组essd110上,所以应该实现数据和完成同步。通常,当单个essd执行命令执行的这些阶段(数据转移+完成公告)二者时,不会出现这种问题。然而,聚合的以太网ssd并不这样。因此,在公告针对命令180的完成条目182之前,p-essd110p必须等待来自对应的s-essd110s的所有子命令完成条目134。此外,在将子命令132的完成条目134发送至p-essd110p之前,s-essd110s必须确保所有它们的数据转移均完全并可靠地完成。这种两个步骤同步处理确保了在聚合的以太网ssd系统中始终实现nvme-of协议完整度。

根据以上内容,因为仅单个主要essd对于主机可见,并且在通过辅助essd跟踪所有相关子命令的完成的同时执行所有nvme-of协议处理,所以essd的聚合组对主机呈现为单个大逻辑容量。

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