存储器系统管理的制作方法

文档序号:13352490阅读:172来源:国知局
存储器系统管理的制作方法



背景技术:

一些计算系统使用包括多个互连的存储器组件的存储器系统。存储器组件可以分布到不同的位置,根据需要,一些存储器组件位于计算系统近处,而一些其它存储器组件位于远程位置处,或者以多种数量位于同处。

附图说明

以下的详细描述参考了附图。然而,应当明确地理解,附图仅为了说明和描述的目的。虽然在该文档中描述了若干的示例,修改、改动和其它实现方式是可能的。因此,下面的详细描述不限制所公开的示例。相反,公开的示例的恰当范围可由随附的权利要求来限定。

图1(a)示意性地表示根据本公开的特定示例的存储器系统,图1(b)示出了图1(a)的存储器系统的结构如何呈现于寻求对存储器系统中的数据进行读/写的处理器组件或应用,图1(c)示出了图1(a)的存储器结构的区域的示例的实现方式;

图2(a)示意性地表示图1(a)的存储器系统的示例的实现方式,图2(b)示意性地表示添加第二覆盖的图2(a)的存储器系统的变体;

图3是根据本公开可以在存储器系统中连接以充当覆盖进入节点的示例的存储器组件设备的示意性表示;

图4是示出根据结构路由协议确定的路由路径和根据覆盖路由协议(经由中间覆盖节点传送)确定的替代路径的示例的图;

图5是在存储器系统内路由地址请求的示例方法的步骤的流程图;以及

图6示意性地示出了包括实现路由地址请求的图5示例方法的示例的计算机程序的计算机。

具体实施方式

开发了存储器系统,其包括多个互连的存储器组件,存储器组件的各自的存储器地址空间通过类似于计算机网络中的网关起作用的进入点被聚合且暴露(例如,到处理器/计算模块,和/或其它存储器组件),就如同存储器组件的整个网络只是具有均匀存储器空间的单个存储器组件。这样的存储器系统在本文档中称为“存储器结构(memoryfabrics)”。

在这样的存储器结构中,将存储器组件彼此连接的光互连件的使用提高了组件之间信号传输的速度并且使得将一组存储器组件作为单个存储器资源来管理是可行的,即使在该组包括大量分布于大的物理空间上的存储器组件的情况下也如此。因此,例如,存储器结构可以扩展于数据中心的多个机架上、多个数据中心上等等。

这些存储器结构就如同存储器是可路由资源一样来处理存储器(以与ip网络处理ip地址的类似的方式来处理存储器地址)。存储器结构处理存储器业务,即在存储器结构上路由的项目,并且这些项目可以包括:存储器地址请求以及促进存储器结构的访问、分配、配置等的其它相关消息/信息,以及从存储器读取/写入存储器的数据。

当对存储器结构中的存储器地址请求读或写访问时,进行存储器访问的请求(此处称为“存储器寻址请求”)沿着不同存储器组件的路由器模块之间的路径传输,并且适当的存储器组件(负责请求中所针对的存储器地址)的路由器模块负责访问正确的存储器地址。

存储器结构的存储器组件中的路由器模块实现路由协议以确定用于通过存储器结构将存储器寻址请求路由到请求的目的地的物理链路;在该路由协议之下的称为结构路由协议(f-rp)。存储器结构中的路由器模块可以执行结构路由协议的步骤以建立并使用指定要使用哪个路径将来自该路由器模块的请求朝向结构中的特定目的地点传输的路由表。例如,路径可以根据路由器模块应当使用来将存储器寻址请求朝向适当的目的地存储器组件的路由器模块转发的输出端口来指定。

在存储器结构中的路由器模块故障或连接两个路由器的物理链路本身由于软件错误、硬件问题或链路断开而故障的情形下,会发生物理链路故障。路径故障由于各种原因而发生,包括导致存储器寻址请求的高度损失或高的可变时延的业务突发。访问存储器结构的软件应用将故障觉察为中断或性能故障。

一些存储器结构可以实现基于以下假设的结构路由协议:即,仅存在将请求从结构中的一个特定点传输到另一点的单个路径。这在小的、静态的和/或精心设计的结构的情况下可能是有效的假设。在该情况下,结构路由协议可以使得路由器模块仅保持到每个可能的目的地的一个路径的详情。然而,如果问题(中断、性能故障)发生于沿着路由表中指定的单个路径的某处,则将存储器寻址请求传输到其预期目的地变得不可能。这种类型的存储器结构在中断和性能故障的情况下没有弹性。

此外,某些存储器结构可以是大型的(即,它们可以包含大量的存储器组件)和/或它们可以具有不是由于有意识的设计得到的拓扑结构(例如,因为存储器组件可以特别的(adhoc)方式加入/退出结构)。结果,特别是随着存储器结构的尺寸增加,存在可供应将请求从一点传输到另一点的多个路线。

在大型存储器结构中,或者那些具有特别拓扑结构的存储器结构中,理论上可能的是,实现允许路由器模块保持路由表的结构路由协议,该路由表存储在影响结构路由协议所指定的主要路径的问题的情形下所使用的多个备用路径的详情。然而,实际上在现实世界上下文中,约束可能使得有必要限制在路由表中详述的替代或备用路径的数量,或者仅在检测到错误/故障情况之后才确定可能的替代路线。在这方面,现实世界约束可能源自于多个替代路径的发现和监视会消耗过多带宽的事实。

而且,某些结构路由协议可以包括这样的机制:即,在影响路径的中断或故障情况被发现或可疑的情形下,趋于抑制对替代路径的搜索或采纳,直至中断/故障已经持续了较长的时间段。这种类型的机制可以实现以便来增强存储器结构内的路由的稳定性,特别是在大型结构的情况下。

实现在前述两段中所描述的类型的结构路由协议的存储器结构在面对中断/性能故障时没有弹性,并且在中断或性能故障发生的情形下,在路由器模块建立用于存储器寻址请求的可行新路径之前会逝去较长的时间段。在存储器结构的上下文中,可以期望或需要在处理存储器寻址请求时避免这种较长的延迟,特别是在所讨论的存储器结构实现执行数据的高速缓存和持久保留的“平坦”(非层级)存储器系统的情况下(即,与关联于较慢速持久存储而使用高速易失性存储器的常规的“层级”存储器系统不同)。在实现非层级存储器系统的大型存储器结构中,可能无法配置结构路由协议以同时满足对路由配置中的稳定性的要求以及避免重新路由延迟的要求。

根据本公开的示例的存储器系统利用了这样的存储器结构:即,为了利用可以存在的通过存储器结构的替代路径,而无需增加底层结构路由协议的路由表的复杂度,该存储器结构与路由覆盖(overlay)相关联。路由覆盖实现了覆盖路由协议的步骤,与结构路由协议指定的路径相比,该覆盖路由协议可以强制替代路由的使用。可以认为,根据本公开的示例的存储器系统实现了多层路由协议,并且覆盖层的路由协议包括相对于结构路由协议占优的更高级路由协议。

路由覆盖包括与一组客户端相关联的“虚拟”拓扑结构并且包括一组覆盖节点。存储器结构的某些存储器组件被选为覆盖节点。通过将与实现相关联的覆盖路由协议的步骤的某些覆盖模块关联至这些存储器组件,所选的存储器组件被配置为覆盖节点。根据各个实现方式,覆盖模块可以以硬件和/或硬件和配置硬件的编程的组合来实现。例如,每个覆盖模块的硬件可以包括处理器和机器可读存储介质中的一者或两者,而编程是存储在机器可读存储介质且可由处理器执行以执行指定功能的指令或代码。

作为示例,给定覆盖的覆盖节点可以包括接收来自相应的相关联客户端程序的存储器寻址请求以及将存储器寻址请求递送到相应的相关联客户端程序的相应的接口。客户端程序还可以包括指令,其与存储器组件的硬件相结合而在存储器组件上实例化配置该存储器组件作为覆盖节点所需的覆盖模块。

与给定覆盖的覆盖节点相关联的一组客户端可以协作以提供分布式服务或应用。当决定如何在组内转发存储器寻址请求时,服务该组客户端的覆盖可以使用服务特定的路由度量和/或策略。本公开不特别限于在由每组客户端程序提供的应用或服务的本质方面:一些非限制性的示例包括通用寻址请求转发服务(其可以改善存储器结构递送的可靠性),以及将应用特定的度量并入其路径选择的多方数据可视化应用。给定的存储器结构上可以实现多于一个的覆盖,每个与相应的应用或服务相关联,或者每个与相应类型的应用/服务相关联。

覆盖的覆盖节点交换关于它们本身之间的路径的质量的信息。该信息交换可以经由标准结构路由协议(例如,类链路状态路由协议)来执行,并且可以基于各种路径度量来构建转发表,例如,包括(但不限于)虚拟的“覆盖节点间”链路上的时延、被访地址丢失率以及可用吞吐量。(在覆盖节点之间的链路在此处被描述为“虚拟的”,这是因为它们与可以各自包括存储器结构的多个物理链路的路径相对应)。每个覆盖节点可以利用主动探索实验和对进行中的数据传送的被动观察的组合来获得路径度量。

构成给定覆盖的覆盖节点的存储器组件的数量可以仅限于存储器结构中的存储器组件的总数的小部分,以便促进经由探索对覆盖节点间路径的积极维护,而不会有过多的带宽开销。考虑到底层存储器结构技术的传输速率(协议开销),覆盖节点的数量与相关联的存储器结构中的存储器组件的总数之间的关系会改变:在协议开销较低的情况下,可以允许减少覆盖节点的数量。例如,鉴于使用高速互连件(例如,光互连件)的高传送速率以及在存储器结构中所能获得的减少的协议开销,在根据本公开的示例的存储器系统中覆盖节点的数量与存储器组件的总数之间的比值可以比因特网路由器的数量与连接到因特网的设备数量之间的比值低。每个覆盖的覆盖率(即,其在上面所扩展的存储器结构拓扑结构的量)可以根据目标效率而变化。

通过使用路由覆盖可以阻止在存储器结构上端到端通信中的破坏,因为覆盖可以在更大程度上利用底层存储器结构路由冗余性和/或比底层结构路由协议更快速地完成,从而对影响存储器结构的路由器模块和物理链路的中断和性能故障做出响应性地反应。

将系统设计为客户端相关联的路由覆盖允许每个覆盖与利用它的一组客户端更密切地相关,并且因此使得能够在覆盖路由协议中集成客户端特定的(或应用/服务特定的)路径度量和路径选择策略。

相对于结构的大尺寸的覆盖的相对较小的尺寸(在每个中所涉及到的存储器组件的数量方面)允许覆盖维护关于多个替代路径的信息并且根据客户端指定的路由度量选择最适合客户端的路径。在根据本公开的一些示例的存储器系统中,默认情况下,覆盖维护关于每个虚拟链路的一些特定预选度量的信息:(i)时延,(ii)寻址丢失率,以及(iii)吞吐量。客户端可以利用它们自己的度量超驰(override)这些默认设置,并且覆盖路由器构建选择良好路径的适合的路由表(见下文)。

图1(a)示意性地示出了根据本公开的简化的示例性存储器系统10。图1的示例性存储器系统10包括存储器结构12a,其包括多个存储器组件11a-11g),以及路由覆盖13。存储器结构12的存储器组件11实现了结构路由协议(b-rp)的步骤。覆盖的元素实现了覆盖路由协议(ov-rp)的步骤。

图1(c)示意性地示出了图1(a)的存储器结构12的一部分,其给出了可以在存储器组件(此处为存储器组件11a、11c和11f)中提供的可能的模块集合的非限制示例。每个存储器组件11包括可以是提供数据的持久保留的存储器路由器模块(rmm)16、存储器交换机(smm)17、或普通存储器模块(pmm)18的模块(例如,非易失性存储器、电池供电的易失性存储器)。

根据本公开的存储器系统不特别限于实现模块16-18的方式方面。根据各个实现方式,模块16-18可以以硬件和/或硬件和配置硬件的编程的组合来实现。例如,每个模块的硬件可以包括处理器和机器可读存储介质中的一者或两者,而编程是存储在机器可读存储介质上且由处理器可执行以执行指定功能的指令或代码。此外,可以使用不同的技术(例如,asic、忆阻器、片上系统soc等)。

应当理解,在相同的存储器组件内的相同类型的模块可以具有异构特性,并且在相同的存储器结构的不同存储器组件内提供的相同类型的模块可以具有异构特性。因此,作为示例,普通存储器模块可根据不同的技术来构建,并且可以具有不同的用于保存数据的容量。此外,存储器组件可以包括附加模块(例如,处理器模块),并且实际上,存储器结构可以实现为互连的处理器和存储器元件的网格的部分,例如如申请人的共同未决的专利申请wo2014/178854中所说明的。

存储器组件11通过物理链路19xy耦合(其中x和y指示哪个存储器组件由相关的物理链路耦合,省略了共同的附图标记11)。

每个存储器组件11可以与单个物理设备或物理设备的部分或与多个物理设备对应。存储器结构12可以包括由不同制造商制成的不同类型的设备等。可用作存储器结构12的存储器组件的物理设备的非限制示例包括数据中心的服务器、pc、平板计算机、移动电话、具有嵌入式处理器的装置等。

每个存储器组件11具有存储器空间15,其中可以进行数据写/读。该存储器空间15包括由相关存储器组件中的模块提供的存储器空间。例如,根据图1(c)所示的示例,存储器组件11a的存储器空间可以包括图示的四个普通存储器模块(pmm)18的存储器空间的全部或部分以及由图示的两个交换机模块(smm)17和存储器路由器模块(rmm)16提供的任何存储器空间的全部或部分。存储器地址空间msa-msg被分配给每个存储器组件的存储器空间15。分配给存储器组件11i的存储器空间15的存储器地址空间msi可以包括连续的地址范围,但这不是强制性的;分配给给定存储器组件的存储器地址空间可以包括不连续的多个存储器地址范围。

存储器地址空间ms可以以不同的方式分配给存储器组件。作为一个示例,可以采取集中式方法,其中存储器中介模块协调存储器地址到存储器结构12中的不同存储器组件的分配。作为另一示例,可以采取分散式方法,其中存储器组件可以具有彼此通信以组织存储器地址的分配的相关联的对等节点。作为再另外的示例,可以采取混合式方法,其组合了集中式方法和分散式方法的元素,例如,涉及到彼此通信的多个管理器设备。

根据本公开的存储器系统不特别限于被实现以将存储器地址分配给存储器组件的特定方法方面。然而,存储器结构中的元素实现结构配置协议,其聚合存储器结构中的不同存储器组件的存储器空间且将聚合的存储器空间暴露给寻求在存储器结构中读写数据的组件,如同存储器结构是其存储器空间包括结构中的存储器组件的各个存储器空间的单个存储器15一样。图1(b)示意性地示出了存储器结构对于寻求读/写数据的处理器或应用20如何呈现。

除了结构配置协议之外,根据本公开的示例的存储器系统中的元素还可以实现其它协议(例如,物理链路自动配置),这些协议未在此描述,因为它们对于理解本公开所描述的覆盖的本质、功能和使用无关。简而言之,管理存储器结构内的存储器地址分配的相同的元件也可以管理希望访问存储器结构中的存储器空间的组件(处理组件、其它存储器组件等)如何确定待访问的适当的存储器地址;可替代地,不同的单元可以管理这两个功能。

每个存储器组件11至少包括存储器路由器模块(rmm)16,使得访问结构12中的存储器地址的存储器寻址请求可以路由到该存储器组件或经由该存储器组件路由。为了执行从一个存储器组件到另一个存储器组件的路由,例如为了发送例如存储器寻址请求ar,路由器存储器模块16一般将请求ar沿着预定的“最佳”路径朝向其目的地转发,该路径可以是直接的(沿着所涉及的存储器组件之间的物理链路)或是间接的(经由其它的存储器组件和链路)。

存储器路由器模块16实现第一路由协议即结构路由协议的步骤,从而实现对存储器寻址请求ar的路由。根据本公开的示例存储器系统不特别限于结构路由协议方面。作为示例,可以采用链路状态型结构路由协议,通过该协议,存储器路由器模块建立和维护指定用于将请求转发到特定目的地的相应的“最佳”路径的路由表。存储器路由器模块16可以至少部分地基于存储器组件11之间的物理链路19的特性(即,“链路状态”)来确定“最佳”路径,通过取得测量值并且基于测量值来计算度量来评估这些特性。

“最佳”路径的确定可以至少部分地取决于诸如物理链路的时延、带宽、传输可靠性等特性。为了评价物理链路,每个存储器组件的路由器模块16可以将“ping”(“因特网包探索器”)沿着与其连接的链路发送。当ping到达目的地时,发回带有目的地的标识符的响应,使得在原始路由器接收到响应时,路由器可以提取标识符并且计算到/自目的地的时延。所测得的时延(或从其得到的参数值)可以被处理为与在特定链路上路由相关联的“成本”,并且低成本路径可以是优选的。下表1给出了可以根据示例的结构路由协议对于图1(a)的存储器结构中的不同的物理链路19xy在特定时间确定的成本值cxy的示例。

表1

不将与物理链路相关联的“成本”量化,适当的是将正“值”分配给链路,例如在所评估的度量对应于链路的一些正属性(例如,可用带宽、传输可靠性)并且高值路径可以是优选的情况下。

路由表mrti可以与每个路由器模块16i相关联(或者包含在路由器模块16内或包含在存储器组件11内并且耦合至路由器模块16,或共用于多个路由器模块),并且包括与潜在目的地和相关联的路径有关的条目。

为了构建路由表,一旦链路特性已知,则路由器16i可以将其目的地和成本转发到其邻域,并且接收来自通知它们的目的地和相关联的成本的相邻路由器模块的更新,如上文说明的ping程序所确定的。例如,存储器组件11a的路由器模块16a可以向存储器组件11d的路由器模块16d通知,其可以以成本14到达存储器组件11c的路由器模块16c,并且进而被存储器组件11d的路由器16d告知其目的地和成本。通知协议可能要求路由器模块仅将其信息通知给其直接的邻域,或者在整个覆盖和结构中广播信息,每个路由器模块将从邻域接收的集合信息发送到其它邻域。

此外,路由器可能不需要传送它可以通过哪个链路到达给定目的地,仅传送它可以到达目的地以及相关联的成本。例如,存储器组件11a的路由器模块16a可以简单地通知它可以以给定成本到达路由器16c,并且不一定指定它是经由另一路由器模块还是直接地。在其它的示例中,路由器模块16还可以传送其路由器信息。

作为示例,可以考虑结构路由协议,其指定了寻址请求应当利用“最快路线”在存储器组件之间路由。

如果所有的物理链路19xy具有相同的特性,则两个路由器模块16之间的最快路线是具有最少数量的“跳”(路线中的组件和链路)的路线。然而,如果链路具有不同的特性,则这些特性可以被考虑在内,这取决于结构的实现和配置。

从另一路由器模块16到同一目的地的链路可以使得路由器模块利用基于先前所描述的“时延”度量的路由算法来确定间接路径(包括两个或更多个物理链路)优选于直接路径(仅包括一个链路)。例如,仅给出一个构思,如果链路19be具有30ms(毫秒)的“成本”,链路19bd具有10ms的成本且链路19de具有10ms的成本,则路径11b-11d-11e具有20ms的总成本,而路径11b-11e具有更高的30ms的成本。因此,路线11b-11d-11e可以在路由表中被指定为用于将存储器寻址请求从存储器组件11b的路由器模块16b路由到存储器组件11e的路由器模块16e的“最佳”路线。如果结构路由协议允许,则路线11b-11e可以被指定为路线表中的备用路线。

路由器模块16可以重复监视物理链路和计算成本/质量参数的步骤,直至没有新的更新出现为止。例如,如果度量由于异常、组件离线等而变化,则会发生更新。为了说明,关于上文给出的示例,链路19be的成本可以从30ms变成19ms,使得间接路径11b-11d-11e的总成本(20ms)现在大于直接路径11b-11e的成本(19ms)。是否更新路线表可以取决于各种因素,诸如预定义的可配置更新阈值,例如,5ms,在该阈值知识,路由表将“指定的”路径更新到存储器组件11e中的目的地路由器16e,使得其变成11b-11e,并且在该阈值以下,路由表保存先前“指定的”路径11b-11d-11e。

一般地,与路线相关联的度量不基于单个测量值来更新,而是基于平滑来自一个组件的请求中的峰值的移动平均来更新。对关于一个元件的成本的修改会影响存储器寻址路由远离许多“跳”,并且在整个结构12中传播。

下表2提供了从在路由协议将具有最低“成本”的路径指定为待用于朝向目的地存储器组件路由的指定路径的情况下基于从其自身的测量值和从其它存储器组件的路由器模块接收到的信息可以由存储器组件11a的路由器模块16a建立的路由表mrta的简化提取。

表2

一旦结构12已经实现了完全收敛,即,达到了已经(根据结构路由协议)确定的存储器组件之间的全部“最佳”路径且没有从相邻的路由器模块接收到进一步的更新的状态,或者变化数量在可配置阈值以下,则每个路由器模块16将已经建立了具有与同一目的地相关联的一个或多个路径的路由表。该冗余性可用于计算该目的地的其它替代路径。替代路径可以本地地存储以及存储在结构12中的公知位置,诸如在连接至全部路由器模块16的中心表,使得在一个路由器模块/交换机故障的情况下,其替代物可以从该已知位置获得正确的配置。然而,如上文所解释的,结构路由协议可被设计成限制预先确定其详情的替代路径的数量。此外,结构路由协议可以设计成使得当中断或故障首先被检测到时,在对替代路径做出改变之前有延迟,例如,给予中断/故障自我纠正的时间以及避免由于暂态情况的发生而导致频繁路径变化。

如图1(a)所示,在作为本公开的示例的某些存储器系统中,覆盖13与存储器结构12相关联且实现了覆盖路由协议ov-rp,在存在通过利用替代路线获得的优点的情形下,与那些由底层结构路由协议指定的相比,其可以优选于替代路径路由存储器寻址请求。替代路径涉及经由覆盖节点以明显间接的方式转发存储器寻址请求,而不是使用由结构路由协议指定的貌似更直接的路径。

覆盖中的覆盖节点的拓扑结构可以认为是“虚拟拓扑结构”,而不是设定的物理拓扑结构,因为新的覆盖节点可以实例化,和/或现有的覆盖节点可以随着客户端及其需要变化而停止作为覆盖节点运行。而且,覆盖节点实际上由存储器结构的物理链路19xy形成的路径互连。此外,覆盖的数量可以与客户端所需要的一样多。

图1(a)中所示的示例存储器系统10包括实现指定的ov-rp的覆盖路由协议的单个覆盖13。图2(a)示意性地表示图1(a)的存储器系统的示例的实现方式10a,其中覆盖13包括在存储器结构的某些存储器组件(此处为存储器组件11a,11b和11f)上实例化的覆盖节点模块22,使得这些存储器组件用作覆盖节点(图2(a)中指示为30-1、30-2和30-3)。覆盖13可以包括与覆盖节点协作以实现覆盖路由协议ov-rp的额外元件(在图2(a)中指示为33)。例如,额外元件33可以包括保存由多个覆盖进入节点共用的覆盖路由表的元件(见下文)。作为另一示例,在某些存储器系统中,某些覆盖节点可以在不是贡献于存储器结构12的可寻址存储器空间的存储器组件的模块/组件/设备上实例化。

覆盖节点是应用层,即与一个或多个物理实体(存储器组件11)相关的虚拟实体,并且提供到结构12的进入点和退出点以用于由与覆盖13相关联的客户端产生的存储器寻址请求,以及对应于也作为覆盖节点的存储器组件11的结构12的目标存储器地址。

在图2(a)所示的示例中,覆盖节点30-1、30-2和30-3中的每一个具有客户端接口34,经由该客户端接口34,相关联的客户端程序(35-1,35-2,35-3)与覆盖交互。经由其客户端接口34接收来自其相关联的客户端程序35的存储器寻址请求ar的覆盖节点30可以称为“进入节点”(或者更具体地,“覆盖进入节点”)。将存储器寻址请求ar经由其客户端接口34递送到其相关联的客户端程序35的覆盖节点30可以称为“退出节点”(或更具体地,“覆盖退出节点”)。给定的覆盖节点30可以设置成用作进入覆盖节点和退出覆盖节点两者(即,能够接收来自相关联的客户端程序的存储器寻址请求,并且将存储器寻址请求递送到相关联的客户端程序),但是这不是强制性的:可构造存储器系统,其利用仅执行进入功能和退出功能中之一的某些覆盖节点。虽然在图中没有示出,覆盖13可以包括既不是覆盖进入节点也不是覆盖退出节点的覆盖节点,而是简单地转发存储器寻址亲戚到同一覆盖13的其它覆盖节点。该覆盖节点无需具有与客户端程序的接口。

同一存储器结构12可以具有与根据与存储器结构中的存储器组件进行通信的客户端程序的需要相关联的多个覆盖(例如,取决于客户端程序期望存储器结构展现的弹性程度)。图2(b)示出了图2(a)中所示的存储器系统的变体10b。在根据图2(b)的变体中,存在两个覆盖:第一覆盖被指示为13a且包括覆盖节点30-1、30-2和30-3,并且第二覆盖被标记为14并且包括覆盖节点40-1、40-2和40-3。为了简化,在图2(b)中没有示出第二覆盖14的客户端、覆盖节点模块和接口。将理解的是,不同的覆盖无需具有相同数量的覆盖节点。

可以认为,在给定覆盖中的覆盖节点通过逻辑链路llxy连接在它们本身之间。一般地,这些逻辑链路ll的数量将比存储器结构中(或者甚至在仅在存储器结构的特定区或区域上延伸的覆盖的情况下在存储器结构的同一区域中)的物理链路19的数量少很多。因此,甚至在通过相对频繁的主动探索来积极地(密集地)监视逻辑链路的情况下,也可以在不使用过多带宽的情况下执行逻辑链路的发现及其属性/状态的监视。在根据本公开的示例的存储器系统中,覆盖节点包括覆盖路由器orj,该覆盖路由器建立了用于控制存储器寻址请求到覆盖中的目的地覆盖节点(退出覆盖节点)的路由的覆盖节点路由表ortj。

在一些示例实现方式中,每个覆盖路由器具有其自身的覆盖路由表,但是这不是强制性的;可由多个覆盖路由器使用共享的覆盖路由表。

覆盖节点onj的覆盖路由器监视它们自身之间的逻辑链路llxy的质量。每个覆盖路由器可以向其它覆盖路由器散播关于覆盖节点之间的覆盖节点链路ll的拓扑结构的拓扑结构信息以及关于虚拟链路质量的信息(例如,指示与虚拟链路相关联的成本或值的度量),并且该信息可以进而用于构建覆盖路由表。该拓扑结构和虚拟链路质量信息可以在转发网格自身的覆盖上路由以确保在底层存储器结构中有路径中断和故障(例如,严重丢失期间)的情形下传播覆盖路由信息。可利用链路状态路由协议来路由拓扑结构和虚拟链路质量信息。

覆盖路由器可使用一组算法,利用该组算法来评估潜在的覆盖节点间路径以便提供根据策略或度量来量化路径有多“好”的数字。后者算法可以基于取决于规定的参数(即,“度量”,例如链路ll的时延、吞吐量等)的客户端或应用定义的策略来评估路径的质量。路径评估可取决于两个或更多个链路的数据如何组合以形成路线以及用于评估路径的公式。

覆盖路由器可以使用算法来确定覆盖节点之间的链路是否仍存活。为了确定覆盖节点之间的链路ll路径是否仍存活,每个覆盖路由器可以使用主动探索机制,类似于ping,例如处于低频率,以确定其与相关的其它覆盖节点的覆盖路由器之间的链路ll是否仍在工作中。然而,可以使用任何链路状态确定方法。如果检测到探头的丢失,则覆盖路由器可以用在预定义时间间隔的相对快速的连续性发送的较高频率的探测序列(也就是说,更频繁地发送探头)来取代正常探测序列。

如果在预定义时间之后没有响应,则覆盖路由器可以认为该链路是死的(即,存在中断)。然而,如果一个探头接收到响应,则覆盖路由器可以取消较高频率探头并且返回以便以正常的较低频率发送探头。在一个示例中,经历中断的链路据其寻址请求丢失率历史来评定;并且经历中断的链路将总是被评定为低于未经历中断的链路。(此处,“评定”的概念涉及覆盖路由策略可以比较使用一个链路与使用另一链路进行比较的可取性的方式)。

n节点覆盖中的每个覆盖节点具有n-1个虚拟链路。每个覆盖节点的路由器可以对周期性地从其本地性能数据库请求n-1个其它节点的不同性能度量的概述信息并且将其视图散播到其它节点。

根据覆盖路由协议,使用覆盖路由表来确定与覆盖节点间路径的使用相关联的成本或值,例如,根据可以是应用特定的策略,并且该成本/值与由用于将给定存储器寻址请求路由到其预期目的地的底层结构路由协议规定的指定路径的成本/值进行比较。基于存储器结构的状态,覆盖决定是否允许存储器寻址请求直接行进到其它存储器组件还是它们应当经由其它覆盖节点间接地传输。下文进一步描述路由程序。

客户端程序35经由其与其相关联的覆盖节点30交互的客户端接口34可以以硬件和/或硬件和配置硬件的编程的组合来实现。例如,客户端接口的硬件可以包括处理器和机器可读存储介质中的一者或两者,而编程是存储在机器可读存储介质上且由处理器可执行以实施指定功能的指令或代码。客户端接口34可以包括实现“导管”cn的“应用编程接口”(缩写词api),客户端使用它来发送和接收寻址请求ar。对于api常见的是,应用编程接口可以规定由客户端程序使用来与相关联的覆盖节点交互(和/或实现)相关联的覆盖节点的命令、函数、句法、库等。api功能可以由处理器运行包含在客户端程序中的指令、在客户端程序之外的指令、两者的组合等等来实现。

导管cn可以通过以下两个函数来访问结构12:

1、发送(寻址请求、目的地,经由覆盖节点)——引导相关联的覆盖节点30到覆盖路由协议以将存储器寻址请求转发到目的地覆盖节点的函数。如下文所述,ar在存储器结构的物理链路上转发,但是ar在链路上所遵循的路径可以是由结构路由协议指定的路径或替代的路径(经由一组一个或多个覆盖节点);并且

2、接收(寻址请求,经由覆盖节点)是响应于到达其相关联的覆盖节点的针对客户端程序的寻址请求ar而调用的回调函数。该回调可以在导管cnj将寻址请求ar的“类型”(例如,在与接收到的寻址请求相关联的报头中规定的)与例如在其加入存储器结构时可以由客户端clj预注册的一组路径类型进行匹配之后被调用。该路径类型可以涉及应当用于传达ar的路径的优选类型,例如,具有低时延、高吞吐量等的路径。

寻求访问存储器结构中的存储器位置的客户端程序35k可以(例如,根据如上提及的存储器中介)确定指定适当的存储器位置的目标存储器地址。客户端程序被配置成使用相关联的覆盖以用于对存储器结构进行存储器访问并且因此经由导管cnk将对覆盖的地址请求ar发送到其相关联的覆盖节点30k。接收该请求的该第一覆盖节点30k在该实例中是覆盖进入节点en。

图3示意性地示出了在根据本公开的存储器系统中可以连接以充当覆盖进入节点的存储器组件设备50。存储器组件设备50可以是已经被配置(例如,通过编程)以作为覆盖进入节点操作的存储器组件。

充当覆盖进入节点的存储器组件50具有用于接收来自相关联的客户端程序的存储器寻址请求的接口52。存储器组件设备50还包括根据适当的覆盖路由协议来控制对存储器寻址请求的路由的寻址请求转发器54。

寻址请求转发器54可以访问覆盖路由表以根据某组一个或多个标准(例如,基于一组一个或多个度量)确定与覆盖节点间路径相关联的值/成本。考虑在覆盖路由表中指示的成本/值,寻址请求转发器54可以应用策略以确定是否经由一组一个或多个覆盖节点来在底层结构路由协议中指定的路径上路由给定寻址请求或者是否使用替代路径。

每个覆盖进入节点具有(集成或外部)成员关系管理器模块53,其可由寻址请求转发器54访问,维护该覆盖的“成员”列表(即,在该覆盖中的覆盖节点和/或使用该覆盖的组的客户端程序)。覆盖路由器和成员关系管理器可以通过覆盖转发网格本身而不是通过直接的存储器内路径来交换寻址请求,由此即使某底层结构路径故障,这些消息仍能够被转发。

寻址请求转发器54可以提供定时器注册和回调机制以执行周期性操作,以及用于纤维连通性数据可用性的类似服务。定时器注册和回调机制可以处理存储器系统中使得能够在其约定时间实现周期性功能所需的任何管理。

充当覆盖进入节点的存储器组件50可以包括分类器模块56,其将“类型”分配给接收到的存储器寻址请求,例如,使得通过该具有特定特性的链路路由该请求是优选的“类型”。因此,例如,“类型”可以指示该请求需要在具有特定属性(例如,低拥堵、高吞吐量等)的路径上路由,或者“类型”可以指示应用或服务的某些特性,使得覆盖中的请求和决策元素可以从该“类型”推导出优选的是通过具有特定技术特性的链路路由。

存储器组件50可以包括加标签模块58。加标签模块58可以设计成(例如,通过编程、通过其构造的特征等)在寻址请求转发器54决定经由一组一个或多个覆盖节点在“替代路径”上路由存储器寻址请求的情形下将一组一个或多个标签与存储器寻址请求相关联。标签可以包括一个或多个数据项(例如,代码、标识符、请求的特定变化等),其意义可由该覆盖中的覆盖节点理解。例如,加标签模块可以封装存储器寻址请求并且将指示请求要在替代路径上路由的标识标签应用于它。例如,标识标签可以标识替代路径上的第一覆盖节点,以及最终目的地(即,用于该请求的退出覆盖节点),以及第一覆盖节点。在接收加标签的请求的存储器组件中,路由器模块应用结构路由协议以确定如何将请求朝向第一覆盖节点(即,在“替代路径”上)引导,而不是寻求直接将请求路由到最终目的地。

在覆盖节点包含分类器模块56的情形下,加标签模块58可以被设计成将“类型”标签与寻址请求转发器54意图经由一组一个或多个覆盖节点在“替代路径”上路由的存储器寻址请求相关联。“类型”标签可以基于由供应请求的客户端提供的明确指示,或者可由进入覆盖节点生成。

“类型”标签可由下游覆盖节点使用来帮助识别相关(相同类型)的存储器寻址请求。覆盖可以设计成使得即使链路状态变化的情况下下游覆盖节点也将具有相同类型标签的存储器寻址请求保持在同一路径上,假设使用所选路径(与另一路径不同)的相对益处不劣化超过规定的阈值量。在类型标签应用于覆盖进入节点的情形下,由相关联的客户端运行的应用对存储器结构将其视为相关存储器寻址请求的“流”而施加最大控制变得可能。

根据示例的实现方式,接收来自客户端的请求(经由其导管)的覆盖进入节点可以以指示应当优选地使用来路由该请求的路径的类型(例如,低时延、高吞吐量等)的方式对存储器寻址请求进行分类。覆盖进入节点可以从其拓扑结构表和覆盖路由表来确定所选路径用于路由请求,并且如果该路径相比于由底层结构路由协议规定的指定路径“更佳”(根据所应用的策略),则覆盖进入节点可以将寻址请求封装到覆盖报头中,用简化下游覆盖节点的转发的一些标识信息(例如,标签)对其加标签,并且继续将其转发。每个后续的覆盖节点基于目的地地址和标识标签来简单地确定下一转发跳。在该情况下,将寻址请求递送到应用的最终覆盖节点是覆盖退出节点。

根据该示例,在覆盖进入节点的每个覆盖节点下游,寻址请求转发器确定到来的封装的寻址请求的最佳路径,并且将其发送到下一覆盖节点。路径选择在覆盖进入节点处完成,覆盖进入节点也可以对请求加标签,这简化了在其它覆盖节点处的转发。当请求到达覆盖退出节点时,转发器在那将其交给适当的输出导管,输出导管将数据传递给客户端应用。

根据该方法,与其传统数据报网络相比,覆盖进入节点对后续路径选择具有更多的控制。该节点可以利用类型标签(或“流id”)对存储器寻址请求报头加标签,类型标签标识寻址请求所属于的流;后续的覆盖路由器尝试将流id保持在其首次使用的相同的路径上,不包括大的链路变化。

覆盖节点可以被设计(被编程、构造)以执行适应以下行为的覆盖路由协议的步骤:基于存储器寻址请求形成其部分的事务的本质将不同的优先级分配给不同的存储器寻址请求。因此,例如,如果特定存储器寻址请求被生成作为被评定为重要的事务的执行的部分(例如,金融交易、在应急服务提供期间执行的事务等),则覆盖路由协议可以将高优先级分配给该请求。覆盖路由协议可以使得根据要路由的存储器寻址请求的优先级(低或高)来调节覆盖进入节点所应用的可应用路由策略。例如,路由策略可被调节以改变给予某些度量的权重(例如,增加高可靠性的重要性,快速的吞吐量等)。

图4示出了根据结构路由协议确定的路由路径和经由中间覆盖节点通过(并且可以根据覆盖路由协议来规定,取决于请求的客户端的需要)的替代路径的示例。图4所示的示例显示出十五个存储器组件71a至71o,其中五个被配置为覆盖节点60-1至60-5(并且相应的客户端65-1至65-5与覆盖节点60-1至60-5相关联)。物理链路69xy将存储器组件71互连。

关于图4,考虑与覆盖节点60-1相关联的客户端65-1规定要求存储器寻址请求沿着可能最不拥堵(也即,在链路上具有最少量的业务)的路径发送(可以为链路设定最大拥堵度)的策略的情况。客户端程序65-1可以经由在api/导管中提供的功能将该策略通知相关联的覆盖进入节点60-1,并且覆盖进入节点60-1然后根据对于从该客户端接收到的请求的通知的策略来执行路由。

覆盖节点60-1是客户端65-1的进入节点,并且(在该示例中)接收访问存储器组件71f中的存储器地址(其也是覆盖节点60-3)的地址请求ar。此时,根据结构路由协议,从这里到存储器组件71f的指定路径(例如,最短路径73,在图4中标记为path)是通过71b和71c,沿着链路69ab,然后是链路69bc,然后是链路69cf,但是由于结构的状态(或表达为60-1实现的策略的客户端要求),节点60-1的地址请求转发器可以确定地址请求反而应当通过替代路径75(在图4中标记为“altpath”)发送到存储器组件mm6,该替代路径经过覆盖节点60-2并且在物理链路69ae-69ei-69hi69gh-69fg上传递。

因此,在该示例中,60-1的加标签模块可以利用60-2的指示符对存储器寻址请求ar加标签,并且在链路69ae上将请求传输到存储器组件71e的存储器路由器模块以便继续沿着链路69ei路由到覆盖节点60-2。60-2的寻址请求转发器基于目的地地址和存储器寻址请求ar的标签来确定下一转发跳并且经由存储器组件71h和71g将ar转发到60-3。60-3是从请求ar移除标签且将请求递送到客户端计算机程序65-3的覆盖退出节点。

图5是示出在图2(a)的存储器系统内路由地址请求ar的方法p1的步骤的流程图。在步骤s01中,覆盖节点30-1经由其接口34接收来自客户端35-1的地址请求ar。在步骤s02中,覆盖节点30-1访问覆盖路由表ort1以选择到由地址请求指示的目的地的路线,该选择可以根据如通知给覆盖节点30-1的策略中所规定的客户端要求来执行。覆盖路由表ort1可以保持在覆盖节点30-1中,或其它地方(例如,在形成覆盖13的部分的相关联的元件33中)。在步骤s03中,确定所选路线是否是如底层结构路由协议f-rp所确定的路由表中的指定路线。如果在步骤s03处的响应是肯定(yes),则在步骤s04处覆盖节点30-1将地址请求沿由结构路由协议指定的路径发送到目的地。如果在步骤s03中的响应是否定(no),则在步骤s05处,覆盖节点30-1对请求加标签而使得其将经由覆盖节点30-1由替代路径发送。在步骤s06处,请求发送给覆盖节点30-2。

覆盖节点30-2确定将地址请求ar转发到目的地的最佳路线。当请求到达目的地覆盖节点,即在该情况下的退出覆盖节点时,退出覆盖节点移除标签并且将请求递送到其相关联的客户端。

图6示意性地示出了包括在计算机可读的介质120上供应的计算机程序110的计算机100。计算机100还包括机器可读接口101以及配置成执行程序110的处理器105。程序110包括用于实施关于图5所描述的方法p1的步骤s01至s06的指令112。程序112可以非暂时方式存储在介质120上。

准备充当进入覆盖节点或退出覆盖节点的覆盖节点需要具有与客户端程序连接的导管。然而,可以设计其它覆盖节点,使得它们永不充当进入覆盖节点或退出覆盖节点,而仅仅是帮助沿覆盖转发请求。

可以通过多种不同的方式来确定覆盖节点在存储器结构上的数量和分布。作为非限制示例:可以通过设计者来规划覆盖节点的数量和分布。作为非限制的示例,设计者可以实现基于分区的方法,其定义存储器结构拓扑结构中的区域或区并且旨在提供一组一个或多个覆盖节点在跨越每个区域或区。设计者可以考虑到实现某期望的弹性度来设定覆盖节点的数量和/或分布,例如,将更多覆盖节点放置在被判断为易于发生问题(中断、性能故障等)的存储器结构的区域中。在“动态”存储器结构中(其中存储器组件可以加入和/或退出结构),随着存储器结构的拓扑结构变得更大和/或更复杂,附加的存储器组件可配置为覆盖节点。

在图中所示的存储器模块和组件不限制用于实现数据的物理保存的存储器技术/硬件。此外,在图中表示的每个实体的功能可以利用硬件和编程的组合来实现。每个实体的硬件可以包括处理器可保存处理器可执行以实施指定功能的指令/代码的相关联的机器可读存储介质。此外,与图中所描绘的不同数量的组件或实体可用于实现所描述的功能。

虽然已经描述了存储器系统的某些示例,应当理解,可以在所附权利要求的范围内对所描述的示例进行改动和添加。

特别地,对于“一个”或“一”模块、组件等的引用不应视为仅引用一个项目。

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