CN106462498A - 用于数据存储系统的模块化交换架构 - Google Patents
用于数据存储系统的模块化交换架构 Download PDFInfo
- Publication number
- CN106462498A CN106462498A CN201580031107.5A CN201580031107A CN106462498A CN 106462498 A CN106462498 A CN 106462498A CN 201580031107 A CN201580031107 A CN 201580031107A CN 106462498 A CN106462498 A CN 106462498A
- Authority
- CN
- China
- Prior art keywords
- processor
- pcie
- storage
- data
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2038—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2046—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Transfer Systems (AREA)
- Multi Processors (AREA)
Abstract
本文提供了一种用于数据存储系统的系统、方法、装置和软件。在一个例子中,提供了包括多个存储驱动器(311)的数据存储系统(100),每个存储驱动器包括外围部件互连快速(PCIe)接口,并且数据存储系统(100)被配置为响应于存储操作而在关联的存储介质上存储数据并检索存储在关联的存储介质上的数据。数据存储系统包括一个或多个处理模块(130),所述处理模块包括经由一个或多个PCIe交换机(121)组成的PCIe架构通信耦合到多个存储驱动器的一个或多个处理器(131)。所述处理器被配置为共享与PCIe架构关联的PCIe地址空间,从而将存储操作传送到处理器中管理多个存储驱动器中的一些存储驱动器的一些适当处理器。
Description
相关申请
本申请要求以下申请的权益和优先权:于2014年6月23日提交的标题为“INTER-MODULE REDUNDANCY FOR COMPUTE NODES”的美国临时专利申请62/015,927;于2014年6月23日提交的标题为“INTRA-MODULE REDUNDANCY FOR COMPUTE NODES”的美国临时专利申请62/015,931;于2014年6月23日提交的标题为“IDENTIFICATION OF STORAGE SLEDS”的美国临时专利申请62/015,936;于2014年6月23日提交的标题为“FRONT END ETHERNET LOADBALANCING”的美国临时专利申请62/015,939;于2014年6月23日提交的标题为“SSDINITIALIZATION SPOOFING”的美国临时专利申请62/015,942;于2014年6月23日提交的标题为“CLUSTER-WIDE DEVICE VISIBILITY”的美国临时专利申请62/015,910;于2014年6月23日提交的标题为“TCP FAILOVER MAINTAINING CONNECTION STATE”的美国临时专利申请62/015,947;于2014年6月23日提交的标题为“CLUSTERING OF STORAGE NODES OVER PCIE”的美国临时专利申请62/015,967;于2014年6月23日提交的标题为“LOGICAL STORAGE UNITPRESENTATION OF STORAGE NODE OVER ISCSI”的美国临时专利申请62/015,977;于2014年6月23日提交的标题为“NVME TARGET ABSTRACTION/EMULATION OVER A VIRTUAL LUN”的美国临时专利申请62/015,990;以及于2014年6月27日提交的标题为“VLUN ABSTRACTIONOVER PCIE PHYSICAL INTERFACE AS NVME TARGET”的美国临时专利申请62/018,090;这些申请整体上通过引用被结合于此。
背景技术
计算机系统通常包括大容量存储系统(bulk storage system)(诸如磁盘驱动器、光学存储设备、带式驱动器或固态存储驱动器之类),以及其它存储系统。随着这些计算机系统中存储需求的增加,已经引入了联网存储系统,其在与最终用户计算机设备物理分离的存储环境中存储大量数据。这些联网存储系统通常经一个或多个网络接口为最终用户或其它外部系统提供对大容量数据存储的访问。除了数据的存储以外,远程计算系统还包括可以向最终用户提供远程计算资源的各种处理系统。这些联网存储系统和远程计算系统可以包括在高密度安装中,诸如机架安装环境。
但是,随着联网存储系统和远程计算系统的密度增加,会遇到各种物理限制。这些限制包括基于底层存储技术的密度限制,诸如在旋转磁介质存储系统的大阵列的例子中。这些限制还可以包括基于对网络互连的各种物理空间需求以及对环境气候控制系统的大空间需求的计算密度限制。
除了物理空间限制以外,这些大容量存储系统传统上还受限于每个主机中可以包括的设备的数量,这在期望更高容量、冗余和可靠性的存储环境中会是有问题的。这些缺点会随着联网的、云和企业环境中增长的数据存储和检索需求而特别明显。
发明内容
本文提供了用于数据存储系统的系统、方法、装置和软件。在一个例子中,提供了一种包括多个存储驱动器的数据存储系统,每个存储驱动器包括外围部件互连快速(PCIe)接口,并且所述存储驱动器被配置为响应于存储操作而在关联的存储介质上存储数据并检索存储在关联的存储介质上的数据。数据存储系统包括一个或多个处理模块,所述处理模块包括经由一个或多个PCIe交换机组成的PCIe架构通信耦合到多个存储驱动器的一个或多个处理器。所述处理器被配置为共享与PCIe架构关联的PCIe地址空间,从而将存储操作传送到处理器中管理多个存储驱动器中的一些存储驱动器的一些适当处理器。
在另一个例子中,提供了一种操作数据存储系统的方法。该方法包括,在多个存储驱动器中,响应于经外围部件互连快速(PCIe)接口接收的存储操作而在关联的存储介质上存储数据和检索存储在关联的存储介质上的数据。该方法包括,在包括经由一个或多个PCIe交换机组成的PCIe架构通信耦合到多个存储驱动器的一个或多个处理器的一个或多个处理模块中,共享与PCIe架构关联的PCIe地址空间,从而将存储操作传送到处理器中管理多个存储驱动器中的一些存储驱动器的一些适当处理器。
在另一个例子中,提供了模块化的数据存储系统。模块数据存储系统包括多个存储模块,每个存储模块包括多个固态驱动器并被配置为经交换外围部件互连快速(PCIe)架构进行通信。模块数据存储系统包括多个处理模块,每个处理模块包括被配置为经交换PCIe架构来管理多个存储模块的指定子集的存储操作的一个或多个处理器。模块数据存储系统包括多个网络接口,这些网络接口分别与一些处理模块关联并被配置为经交换PCIe架构与关联的一些处理模块通信。模块数据存储系统包括一个或多个PCIe交换机,所述PCIe交换机被配置为经多条PCIe链路建立交换PCIe架构,以便将存储模块互连到处理模块并将处理模块互连到网络接口。处理器被配置为共享与交换PCIe架构关联的PCIe地址空间,从而将接收的存储操作传送到处理器中管理多个存储驱动器中的一些存储驱动器的一些适当处理器。
附图说明
参考以下附图可以更好地理解本公开内容的许多方面。附图中的部件不一定是按比例的,而是重点在于清楚地示出本公开的原理。而且,在附图中,相同的标号贯穿若干视图表示对应的部分。虽然结合这些附图描述了若干实施例,但本公开不限于本文公开的实施例。相反,其意在覆盖所有替代、修改和等同物。
图1是示出存储系统的系统图。
图2是示出存储系统的框图。
图3是示出存储模块的框图。
图4是示出控制模块的框图。
图5是示出处理模块的框图。
图6是示出存储系统的系统图。
图7是示出存储系统的系统图。
图8是示出存储系统的系统图。
图9A是示出存储系统的系统图。
图9B是示出存储系统的系统图。
图10是示出存储器分配表的图。
图11是示出存储系统的系统图。
图12是示出存储系统的系统图。
图13是示出存储系统的系统图。
图14A是示出存储系统的系统图。
图14B是示出存储系统的系统图。
图15是示出存储系统的操作的流程图。
图16是示出存储系统的系统图。
图17是示出存储系统的系统图。
图18是示出控制处理器的框图。
具体实施方式
图1是示出存储系统100的系统图。存储系统100在图1中包括三种不同的模块类型,即,储存器滑轨(storage sled)110、互连模块120和处理模块130。虽然这个例子示出了许多储存器滑轨、2个互连模块和6个处理模块。但是可以包括任何数量的滑轨或模块,诸如48个储存器滑轨或64个储存器滑轨,连同不同数量的互连或处理模块。一些例子可以在两个或更多个模块之间分布每个互连模块120的功能。此外,还可以包括供电模块和关联的电力和控制分布链路,但为了清楚起见,在图1中被省略了。
模块通常包括物理支撑结构以及包括电路系统、印刷电路板、半导体系统和结构元件的外壳。模块可插入机架安装风格的外壳并可从中移除。在一些例子中,图1的元件被包括在用于在更大机架安装环境中安装的3U机箱中。应当理解,图1的元件可以包括在任何物理安装环境中,并且不需要包括任何关联的外壳或机架安装元件。
保持电路系统(holdup sircuitry)可以包括在每个滑轨110上,以便在针对滑轨的输入电力丢失或移除时向关联的滑轨提供电力。在一些例子中,滑轨从关联的配合连接器被移除并且输入电力由于所述移除而丢失。在其它例子中,到系统100的电力丢失,诸如在设施断电期间或者当关联的供电发生故障时。类似的保持电路系统可以包括在系统100的其它各种模块上。具体而言,保持电路系统可以包括在互连模块120和处理模块130上。
多个储存器滑轨110包括在系统100中。每个储存器滑轨110包括一个或多个存储驱动器,诸如图3中所示的每个滑轨四个存储驱动器。每个储存器滑轨110还包括外围部件互连快速(Peripheral Component Interconnect Express,PCIe)交换机、处理器和控制系统元件。每个储存器滑轨110的PCIe交换机经关联的PCIe链路与一个或多个滑轨上存储驱动器通信。每个储存器滑轨110的PCIe交换机还通信耦合到滑轨上处理器或控制系统,用于流量统计检索和状态监视,以及其它操作。每个储存器滑轨110的PCIe交换机经一个或多个PCIe链路140与互连模块120的关联的PCIe交换机121通信。
互连模块120的每个PCIe交换机121经关联的PCIe链路142与一个或多个处理模块130的关联的PCIe交换机132通信。PCIe交换机132经PCIe链路136以及经一个或多个交叉连接PCIe链路143与一个或多个关联的处理系统131通信。互连模块120还各自包括用于互连处理器模块(诸如处理器模块130之类)的多个PCIe交换机122。包括了PCIe交换机122,用于处理器模块交叉连接,并且经处理器模块交叉连接链路141与关联的处理模块130中的一些PCIe交换机133通信。PCIe交换机133经PCIe链路134与一些处理系统131通信。
每个处理模块130经一个或多个PCIe链路135通过PCIe交换机133与外部扩展卡或外部PCIe端口通信。在一些示例中,外部扩展卡包括用于经TCP/IP(传输控制协议(TCP)/互联网协议)网络进行通信或者用于运送iSCSI(互联网小型计算机系统接口)、非易失性存储器主机控制器接口规范(NVMHCI)流量或NVMe(NVM快速)流量,以及其它网络流量类型的网络接口卡。这些分组链路由分组网络链路144示出,该分组网络链路144包括一条或多条链路144A-144n。对存储系统100的外部访问经一些分组网络链路144来提供,诸如用于让最终用户访问存储在储存器滑轨110上的数据。
每个处理模块130还可以经一个或多个模块间分组网络接口145与诸如在其它存储组件或3U外壳中的处理模块之类的其它处理模块通信,该模块间分组网络接口145包括一条或多条链路145A-145n。在一些例子中,模块间分组网络接口145包括用于经以太网或TCP/IP(传输控制协议(TCP)/互联网协议)网络通信以便在处理模块之间交换存储分组的网络接口卡。经以太网的模块间存储分组交换的进一步操作在本文的例子中讨论。
在一些例子中,包括外部PCIe连接器的外部扩展卡包括用于运送NVMe流量的一个或多个外部PCIe接口。这些PCIe链路由链路146示出。对存储系统100的外部访问经PCIe链路146和147中的一些链路提供,诸如用于让最终用户访问存储在储存器滑轨110上的数据。存储系统100可由外部系统(诸如服务器或计算机系统之类)经一个或多个PCIe接口访问。这些PCIe接口在图1中由PCIe链路146和PCIe链路147表示。可以包括进一步的外部PCIe链路,并且为了清楚起见,图1中示出了两条。PCIe链路147包括由在I/O模块120上的PCIe交换机122提供的PCIe链路。PCIe链路146包括由扩展卡提供的PCIe链路,所述扩展卡经PCIe交换机133与处理模块130交互连接。PCIe链路146和147可以包括外部PCIe连接器和布线,诸如在PCIe直接连接中所采用的。
本文讨论的PCIe交换机可以包括PCIe交叉点交换机,其至少基于由每个PCIe链路运送的流量逻辑地互连各种关联的PCIe链路。在一些例子中,PCIe架构的逻辑隔离是利用PCIe交换机的非透明端口实现的。选定的PCIe交换机端口可被配置为非透明(NT)或透明端口。NT端口可以允许端点之间的一些逻辑隔离,更像是桥,而透明端口不允许逻辑隔离,并且具有在纯交换配置中连接端点的效果。经一个或多个NT端口的访问可以包括PCIe交换机和发起端点之间的附加握手,以选择特定的NT端口或允许通过该NT端口的可见性。
在其它例子中,PCIe架构的逻辑隔离是利用PCIe交换机的基于域的路由来实现的。基于域的PCIe信令分配可以包括在PCIe交换机中,这允许PCIe交换机的PCIe端口根据用户定义的组进行隔离。这些逻辑隔离或组可被用来形成本文讨论的前端和后端数据平面,或者可被用于在各种PCIe交换机之间建立路由和冗余、在系统100中形成PCIe流量的网状架构。
在图1中,PCIe交换机121和132(和关联的PCIe链路)包括在系统100的后端数据平面中,并被用于在储存器滑轨110和处理模块130之间运送存储操作和存储数据。PCIe交换机122和133(和关联的PCIe链路)包括在系统100的前端数据平面中,并被用于运送存储操作和存储数据,以及处理模块之间的用户控制数据和控制信令。在一些例子中,一个或多个以太网接口和关联的链路包括系统100的控制平面,诸如经接口145以及其它以太网接口之类,诸如以下图4中所示出的以太网链路447-448。控制平面可被用于处理模块之间的控制信令,管理消息传送,初始化消息传送,从诸如图4的处理器450之类的控制处理器的统计数据监视和收集,以及其它控制数据和信息。
在可以应用于本文进一步的图中的例子的系统100的替代布置中,采用在物理上不区分前端数据平面与后端数据平面的统一PCIe架构。相反,采用PCIe交换机的公共集合,其可以基于诸如PCIe寻址、所建立的逻辑域、边带PCIe消息传送或其它技术之类的因素在各种目的地之间路由PCIe流量。在逻辑域例子中,PCIe交换机可以由任何处理系统131或控制处理器动态编程。这种编程可以经离散的控制接口或链路,或者经由专用PCIe命令或边带PCIe消息传送来完成,以将PCIe交换机的PCIe链路隔离成各种逻辑组。但是,在本文的许多例子中,采用由分离的PCIe架构形成的分离的前端和后端数据平面。应当理解,任一种配置都是可能的,诸如统一数据平面和统一PCIe架构之类,并且本文的例子不将配置限制到PCIe架构的特定配置。
PCIe可以支持多个总线宽度,诸如x1、x4、x8、x16和x32之类,其中总线宽度的每个倍数包括用于数据传送的附加“通道”。PCIe还支持边带信令的传送(诸如系统管理总线(SMBus)接口和联合测试工作组(JTAG)接口之类),和关联的时钟、电力和引导(bootstrapping)以及其它信令的传送。虽然在图1中使用PCIe,但是应当理解,可以替代地使用不同的通信链路或总线,诸如以太网、串行附接SCSI(Serial Attached SCSI,SAS)、NVWe、光纤信道、雷电(Thunderbolt)、串行附接ATA快速(SATA Express)之类,以及其它互连、网络和链路接口。图1中的任何链路可以各自使用各种通信介质,诸如空气、空间、金属、光纤或某种其它信号传播路径,包括其组合。图1中的任何链路可以包括任何数量的PCIe链路或通道配置。图1中的任何链路可以各自是直接链路或者可以包括各种装备、中间部件、系统和网络。图1中的任何链路可以各自是公共链路、共享链路、聚合链路,或者可以由离散的、单独的链路组成。
在图1中,任何处理模块130上的任何处理系统131对所有储存器滑轨110中的所有存储驱动器具有逻辑可见性。任何处理系统131可以传送数据以便存储在任何存储驱动器上,并检索已经存储在任何存储驱动器上的数据。因此,“m”个存储驱动器可以与“n”个处理器耦合,以允许具有高级别冗余和密度的大型可扩展体系架构。
为了提供每个处理系统131对任何储存器滑轨110的可见性,可以采用各种技术。在第一个例子中,特定的处理系统131管理(实例化/绑定)储存器滑轨的总数的子集个数,诸如跨4个储存器滑轨的16个存储驱动器,并处理针对存储驱动器的那个子集的事务,诸如读和写事务。但是,每个处理系统131对由任何其它处理系统131管理的存储驱动器具有存储器映射可见性。当期望针对存储驱动器的事务不由特定的处理系统管理时,该特定的处理系统对那个事务使用对所有存储驱动器的存储器映射访问。事务可被传送并转移到管理与该事务的数据相关联的那个存储驱动器的适当处理系统。前端数据平面,即PCIe交换机122和133被用来在处理系统之间传送数据,使得特定的处理系统或处理器可以将数据存储在由那个特定处理系统管理的一个或多个储存器滑轨中,即使数据可能经与不同处理系统关联的网络接口被接收。
在例子中,与每个处理系统131关联的PCIe接口具有64比特地址空间,这允许264字节的可寻址空间,从而导致至少16艾字节的字节可寻址存储器。64比特PCIe地址空间可由所有处理系统131共享,用于到储存器滑轨上的存储驱动器的存储器映射。因此,虽然每个特定的处理系统131实际上管理储存器滑轨上的总存储驱动器的子集,但是所有处理器131对储存器滑轨上的任何存储驱动器具有可见性,并且可以发起对储存器滑轨上的任何存储驱动器的读/写事务。管理储存器滑轨上的特定存储驱动器的管理处理系统131通过至少使用存储器映射的PCIe地址空间从发起处理系统131接收写/读事务和任何关联的数据。
在诸如写操作之类的操作中,数据可以由任何处理模块130的任何处理系统131经任何网络接口144接收。例如,写操作可以是经网络链路144从采用iSCSI协议或NVMe协议的最终用户接收的写操作。接收写操作的处理系统确定它是否物理地管理与该写操作关联的一个或多个存储驱动器,并且如果是,则该处理系统经后端数据平面PCIe链路136传送数据,以便存储在关联的存储驱动器上。如果处理系统确定它不物理地管理与该写操作关联的一个或多个存储驱动器,则该处理系统经交叉连接链路134将写操作传送到包括确实管理所述一个或多个存储驱动器的处理系统的另一处理滑轨。数据条带化(data striping)可被任何处理系统采用以将针对特定写事务的数据在任意数量的存储驱动器上(诸如在包括由该特定处理系统管理的存储驱动器的所有储存器滑轨上)分条(stripe)。
NVMe(NVM快速)是用于大容量存储设备,诸如硬盘驱动器和固态存储器设备之类的接口标准。NVMe可以取代串行ATA(SATA)接口,用于与个人计算机和服务器环境中的大容量存储设备接口连接。但是,这些NVMe接口仅限于一对一的主机-驱动器关系,类似于SATA设备。在本文讨论的例子中,采用PCIe接口来运输NVMe流量并且经PCIe接口将多处理器、多驱动器系统作为一个或多个NVMe虚拟逻辑单元号(VLUN)呈现。
在NVMe操作中(诸如NVMe写操作之类),数据可以由任何处理模块130的任何处理系统131经PCIe链路141-143和146-147中的任何链路被接收。例如,写操作可以是经PCIe链路143从采用经PCIe接口运输的NVMe协议的设备接收的NVMe写操作。在另一个例子中,写操作可以是经PCIe链路146或147从采用经PCIe接口运输的NVMe协议的外部设备接收的NVMe写操作。接收写操作的处理系统确定它是否管理与该写操作关联的一个或多个存储驱动器,并且如果是,则该处理系统经PCIe链路142传送数据,用于存储在关联的存储驱动器上。如果该处理系统确定它不物理地管理与该写操作关联的一个或多个存储驱动器,则处理系统经交叉连接链路134将该写操作传送到包括确实管理所述一个或多个存储驱动器的处理系统的另一处理滑轨。数据条带化可被任何处理系统采用以将针对特定写事务的数据在任意数量的存储驱动器上(诸如经包括由特定处理系统管理的存储驱动器的所有储存器滑轨)分条。
任何处理系统131可以将存储系统100的存储资源作为VLUN,诸如NVMe VLUN呈现。在图1的例子中,第一VLUN作为VLUN101呈现,并且第二VLUN作为VLUN 102呈现。虽然这些VLUN被示为与在单个处理模块130上的不同处理系统关联,但在其它例子中,VLUN由在任意处理模块上的任意处理系统表示并且针对VLUN的存储流量可以由在任意处理模块上的任意处理系统处理。系统100的处理模块可以经PCIe接口(诸如PCIe链路146-147中任何一个)向外部系统呈现任意数量的VLUN。这些VLUN可以作为NVMe目标呈现,诸如图1中的NVMe目标A或NVMe目标B。NVMe目标可以经PCIe接口将存储系统100的存储资源作为单个存储目标呈现,诸如模仿单个存储驱动器。以这种方式,包括任何数量的储存器滑轨110的多个存储驱动器可以经PCIe接口作为单个NVMe目标呈现给外部系统。系统100的处理系统中的任意处理系统可以接收NVMe存储流量,诸如NVMe帧,并分发这些存储事务以供系统100内的指派的处理系统处理。
一些诸如iSCSI之类的网络存储协议允许将目的地地址分组成逻辑单元。例如,iSCSI允许可以将多于一个的IP地址与单个目标关联的门户组(portal group)。目标是特定处理器或特定网络接口,即使那个接口或处理器具有与其关联的多于一个的网络地址。但是,图1以及图8和12示出了利用共享散布在多个存储设备上的公共存储空间的多个处理器或处理节点,来形成针对网络存储协议的目的地地址的逻辑组。许多处理器可以包括在门户组中,其中每个处理器被配置为接收针对其它处理器中任何处理器的网络存储流量,并将流量相应地路由到正确的处理器,即使向iSCSI发起方呈现单个iSCSI门户组。在具体的例子中,PCIe架构在许多处理器、网络接口和存储驱动器之间被采用。这些概念可以应用于除iSCSI以外的其它网络存储协议。
在图1中,采用多于一个的网络接口。具体而言,网络接口144或145可以耦合到图1中所示的多个处理模块130。每个网络接口可以具有与其关联的一个或多个IP地址,并且可以是利用关联的IP地址经分组网络可达的。系统100的各种网络接口可以被形成到iSCSI门户组中,这允许iSCSI发起方经分组网络将诸如iSCSI事务之类的网络存储事务传送到网络接口144或145中任何一个。作为具体的例子,图1示出了从外部网络链路144A-144n形成的iSCSI门户组。这个门户组可以经网络链路144A-144n呈现给网络设备,并且门户组可以跨系统100的资源,诸如一个或多个处理系统131、一个或多个处理模块130、和一个或多个储存器滑轨110以及其它元件。关于iSCSI门户组的进一步讨论在图8和12中讨论。
为了示出诸如系统100之类的存储系统的示例物理配置,给出了图2。图2是示出存储系统200的框图。图2的元件被示为被外壳201封住并且物理地配合到中平面240。中平面240包括机箱和用于与任何关联的储存器滑轨210、互连模块220、处理模块230或外部接口235配合的多个物理连接器。中平面240包括一个或多个印刷电路板、连接器、物理支撑构件、机箱元件、结构元件,以及关联的链路,如用于互连图2的各种元件的金属走线(trace)或光学链路。中平面240可以充当背板,但不是像背板例子中那样仅在一侧上具有滑轨或模块配合,中平面240在至少两侧上具有配合的滑轨或模块。图2的元件可以对应于图1的类似元件,诸如储存器滑轨110、互连模块120、处理模块130和扩展/外部连接器144-146,但变型是可能的。
图2示出了包括在3U外壳201中的所有元件。外壳可以替代地是标准化计算机机架高度的任何倍数,诸如1U、2U、3U、4U等,并且可以包括关联的机箱、物理支撑、冷却系统、安装特征、箱体和其它外壳元件。通常,每个滑轨或模块将适合包括在外壳201的机箱部分中的关联的凹槽特征,以滑入预定的槽中并引导与每个滑轨关联的边缘连接器与中平面240上的关联的插座连接器配合。储存器滑轨210各自具有关联的连接器260。互连模块220各自具有关联的连接器261。互连模块220还各自具有一个或多个集群互连链路267,在这个例子中是PCIe链路。集群互连链路267被用来利用PCIe链路在彼此之间互连3U外壳。控制模块225各自具有关联的连接器269。在一些例子中,一些控制模块225和互连模块220包括在相同的模块中。处理模块230各自具有关联的连接器262。处理模块230各自具有用于与外部系统通信的一个或多个关联的外部链路266,外部系统诸如管理系统、最终用户设备或其它计算系统之类,包括类似于外壳201的其它外壳。外部链路266可以包括以太网、SFP+或其它链路和连接器。外部接口模块235各自具有关联的连接器268。外部接口235提供对外壳201的存储内容的外部访问,诸如针对最终用户设备或外部系统。网络链路265可以由外部接口235提供,外部接口235可以包括以太网、TCP/IP、Infiniband、iSCSI、NVMe或其它外部接口。在操作中,外部接口235各自与关联的处理模块通信耦合,如图2中所示。外壳201启用滑轨中任何滑轨的热交换并可以包括其它特征,诸如电源灯、活动指示器、外部管理接口,等等。
在一些例子中,外壳201包括可以容纳滑轨和关联的电路卡的柔性配置和布置的机箱和中平面。虽然图2示出了在中平面240的一侧上配合的储存器滑轨和在中平面240的另一侧上配合的各种模块,但是应当理解,其它配置是可能的。外壳201可以包括机箱,以容纳任何以下配置,以前装式或者后装式配置:
·一个或多个滑轨,每个滑轨包含四个M.2SSD
·包含2x HHHL卡(半高半长PCIe卡)的一个或多个滑轨,2x HHHL卡可以包括PCIe存储卡、PCIe网络适配器或主机总线适配器
·具有2x FHHL卡(全高半长PCIe卡)的一个或多个滑轨,2x FHHL卡可以包括图形卡或图形处理单元(GPU)
·具有1x PCIe卡(全高全长PCIe卡)的一个或多个滑轨,PCIe卡包括处理模块,这可以包括NVIDIA Tesla或IntelPhi处理器卡
·一个或多个滑轨,包含4x 2.5英寸PCIe SSD
·互连模块、插入器模块和控制模块
此外,由一个或多个供电节点250经关联的链路263提供用于外壳201的各种滑轨的电力和关联的电力控制信令。虽然在图2中供电节点250被示为包括在外壳201中,但是应当理解,供电节点250可以替代地包括在分离的外壳中,诸如分离的1U外壳。每个供电节点250还包括用于从诸如AC或DC输入电力之类的电力源接收电力的电力链路264。此外,电力保持电路系统可以包括在保持模块251中,其可以响应于链路264上的电力丢失或者供电节点350的故障而经链路274输送保持电力。
电力保持电路系统可以包括在图1和2的每个滑轨或模块上。这种电力保持电路系统可被用来在电力中断期间,诸如当来自电力源的主输入或系统电力丢失时,向关联的滑轨或模块提供临时电力。此外,在使用保持电力期间,每个滑轨或模块的处理部分可被用来根据使用情况统计以及其它考虑选择性地使每个滑轨的部分断电。该保持电路系统可以在电力中断或电力丢失情况期间提供足够的电力来提交正在处理的写数据。这些电力中断和电力丢失情况可以包括丢失来自电力源的电力,或者可以包括从中平面240上的关联的插座或连接器移除滑轨或模块。保持电路系统可以包括电容器阵列、超级电容器(super-capacitor)、超电容器(ultra-capacitor)、电池、燃料电池、飞轮或其它能量存储部件,连同任何关联的电力控制、转换、调节和监视电路系统。
储存器滑轨210或图2中的任何可插入模块可以各自在电力中断情况期间提供自身电力。而且,储存器滑轨210可以各自将电力再分配给其它储存器滑轨或模块。这种再分配的电力可被传送到其它储存器滑轨210或图2中的其它模块,诸如互连模块220、控制模块225、处理模块230或外部接口235。一旦任何正在处理的写数据被提交到储存器滑轨的非易失性存储器,则过剩或剩余的保持电力就可以再分配给其它模块。在第一个例子中,到3U外壳201的电力丢失,诸如经链路264的输入电力的丢失或者供电250的故障,以及其它故障或丢失。在这个例子中,储存器滑轨210可以自我供电一段时间或者将电力再分配给其它模块或滑轨。在示例操作中,一个储存器滑轨210将保持电力传送到另一个储存器滑轨210,诸如经关联的模块的电力链路。在另一示例操作中,储存器滑轨210将电力传送到处理模块或互连模块以及其它模块。来自储存器滑轨或其它模块的电力的用于供其它储存器滑轨或其它模块使用的这种再分配,可以经包括在中平面240中的共享电力链路或电力总线发生。电力流的定向控制可以由每个模块或滑轨中的电路系统提供,这允许关联的模块经相同的电力链路再分配电力或者接收输入电力。
在另一个示例操作271中,储存器滑轨从中平面240被移除并且因此具有由于物理移除而导致的任何输入电力丢失。被移除的储存器滑轨可以检测移除,诸如通过使用上拉或下拉电阻器、检测引脚、链路电容或阻抗检测、或者输入电力的丢失的检测以及其它检测方法。如果在电力丢失期间正在处理的写数据还没有被提交,则关联的保持电路系统可以给被移除的储存器滑轨供电。在滑轨移除例子中,向其它滑轨或模块的电力再分配由于移除而不可能并且因此剩余的保持电力没有被再分配到其它滑轨或模块。代替地,过剩或剩余的保持电力可以泄放到关联的电力池(sink)。这个电力池可以包括将过剩的保持电力转换为热的泄放电阻器(bleed resisotr)或电阻器阵列。在其它例子中,一个或多个指示灯可以包括在泄放电路系统中,并且在泄放过程期间指示灯可以保持点亮以指示电力保持在滑轨上以及通过给指示灯供电来泄放电力。一旦滑轨被重新插入到中平面240中,输入电力就被恢复并且滑轨可以从中平面240接收电力以及为了下一个电力丢失情况而给任何保持电路系统充电。
图3示出了存储模块310的框图,作为图1的储存器滑轨110或图2的储存器滑轨210当中任一个的例子。图3还示出了存储模块310的示例物理配置,如针对电路卡组件350所示出的。存储模块310包括四个存储驱动器311、PCIe交换机312、处理器320、电力控制模块321和保持电路322。电力控制模块321经关联的电力链路330-332向存储模块310的每个元件分配电力。电力控制模块321可以对每条电力链路选择性地启用/禁用电力。进一步的通信链路可以被包括,用于存储模块310的各个元件之间的滑轨内通信。
PCIe交换机312经链路340与互连模块(未绘出)通信。链路340包括在用于传送用户数据的后端数据平面中,诸如对图1所讨论的。每条链路340包括具有四个通道的PCIe链路,即,“x4”PCIe链路。提供多于一条的PCIe链路340是为了存储模块310的负载平衡、冗余和故障转移保护。在一些例子中,PCIe交换机312具有连接到非透明(NT)接口或端口的链路340,其中一个或多个主机系统(诸如处理模块上的处理器)可以以冗余或故障转移配置与存储驱动器311交互。PCIe交换机312还经关联的x4PCIe链路341与四个存储驱动器111通信。
处理器320经至少边带链路349通信。边带链路349可以包括通用串行总线(USB)、SMBus、JTAG、集成电路间(Inter-Integrated Circuit,I2C)、控制器局域网络总线(CAN)或任何其它通信接口,并且在一些例子中边带链路349是在PCIe链路340的部分上提供的。在这个例子中,处理器320包括I2C接口325和USB接口326,用于经边带链路349通信。I2C接口325和USB接口326可以包括在分离的电路系统中或者包括在类似于处理器320的元件中。处理器320和PCIe交换机312可以经关联的通信链路333通信,该通信链路333可以是I2C或PCIe链路以及其它链路类型。
在这个例子中,每个存储驱动器311包括固态驱动器(SSD),并且经包括在每个存储驱动器311中的关联的PCIe接口与外部系统通信。存储驱动器311的固态存储介质可以包括闪存、静态RAM、NAND闪存、NOR闪存、忆阻器或其它固态介质。代替固态介质或者除了固态介质以外,每个存储驱动器311还可以包括磁储存器,诸如硬盘驱动器、带驱动器、磁阻存储器设备等,或者可以包括光学储存器,诸如相变存储器之类。每个存储驱动器311可以接收由诸如处理滑轨节点的处理器之类的主机系统发出的读事务和写事务。响应于读事务,存储驱动器311可以检索由读事务识别出的数据并传送该数据以便输送到关联的主机。响应于写事务,存储驱动器311可以将伴随写事务的数据写入与存储驱动器311关联的存储介质。
在一些例子中,每个存储驱动器311包括电路卡组件(circuit card assembly,CCA),它与CCA 350分离并且具有与CCA 350上的连接器接口连接的微型PCI快速连接器或其它连接器。CCA 350包括一个或多个耦合到存储模块310的各种元件的印刷电路板351。在其它例子中,每个存储驱动器311包括具有被焊接到CCA 350上的PCIe接口的一个或多个闪存芯片。还在其它例子中,每个存储驱动器311包括一个或多个分离的固态盘驱动器或磁性硬盘驱动器,连同关联的外壳和电路系统。PCIe交换机312包括用于在由PCIe交换机312处理的任何PCIe接口之间建立交换(switched)连接的PCIe交叉连接交换机。在一些例子中,PCIe交换机312包括PLX技术PEX8725 10端口、24通道PCIe交换芯片。
处理器320包括一个或多个微处理器、处理设备、多核处理器、处理电路系统或其它处理系统。处理器320可以包括一个或多个非临时性存储器设备(诸如RAM、固态储存器或其它存储器之类),以存储可由处理器320执行以便如本文所讨论的那样操作的指令。在一些例子中,处理器320包括ARM微控制器、ARM微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用处理器、或其它微处理器或处理元件。处理器320可以包括下面对图5的处理系统510所讨论的任何处理元件。处理器320可以通过链路333监视使用情况统计、流量状态或其它使用情况信息。PCIe交换机312可以在正常操作和与存储驱动器311的数据传送期间跟踪这种使用情况信息,并且处理器320可以按需要经链路333检索这种使用情况信息。
电力控制模块321包括选择性地向存储模块310的元件中的任何元件提供电力的电路系统。电力控制模块321可以从处理器320或经任何PCIe链路340接收控制指令。在一些例子中,电力控制模块321包括上面讨论的用于处理器320的处理元件,或者包括在处理器320的元件中。电力控制模块321可以经电力链路323接收电力,作为用于存储模块310的各种元件的电力源。保持电路322包括能量存储设备,用于存储经电力链路323接收的电力,以便在诸如源电力丢失之类的电力中断情况期间使用。保持电路322可以包括诸如电容器阵列之类的电容存储设备。当输入电力可用时,电力可以由模块310接受,诸如从配合连接器或中平面。当输入电力不可用时,诸如在电力中断情况期间,可以经链路323由模块310将电力再分配给其它模块。当模块310从配合连接器中被移除时,电力可被泄放到关联的电力池电路系统中。虽然示出了一个电力链路323,但是应当理解,可以包括多于一条的链路,诸如分离的输入和输出链路或者用于不同电压电平的分离的链路。
图4是示出输入/输出(I/O)模块420的框图,作为图1的互连模块120或者图2的互连模块220和控制模块235的例子。应当理解,模块420可以组合到单个模块上,诸如图1中所示,或者包括在分离的模块中。
I/O模块420包括至少两个后端数据平面PCIe交换机421、至少两个前端数据平面PCIe交换机424、电力控制模块422和保持电路423。电力控制模块422经关联的电力链路431-433将电力分配给I/O模块420的每个元件。电力控制模块422可以对每条电力链路选择性地启用/禁用电力。为了I/O模块420的各种元件之间的滑轨内通信,可以包括进一步的通信链路。
PCIe交换机421、PCIe链路440和PCIe链路442包括在诸如图1中所示的存储系统的后端数据平面或后端中。每个PCIe交换机421经PCIe链路440与两个或更多个储存器滑轨(未示出)通信,并经PCIe链路442与两个或更多个处理模块(未绘出)通信。每条链路440包括具有四个通道的PCIe链路,即“x4”PCIe链路。链路442中的每条链路包括具有八个通道的PCIe链路,即“x8”PCIe链路。在一些例子中,每个PCIe交换机421与六个处理模块通信,诸如在图1中所示。每条PCIe链路还可以包括边带信令,诸如SMBus、JTAG、I2C、CAN或任何其它通信接口,并且在一些例子中边带信令经分离的链路提供。每个PCIe交换机421包括PCIe交叉连接交换机,用于在由每个PCIe交换机421处理的任何PCIe接口之间建立交换连接。在一些例子中,每个PCIe交换机421包括PLX技术PEX8796 24端口、96通道PCIe交换芯片。
PCIe交换机424和PCIe链路443包括在诸如图1中所示的存储系统的前端数据平面或前端中。每个PCIe交换机424经PCIe链路443与许多处理模块通信,并且彼此经PCIe链路432通信。链路443和432中的每一条包括具有八个通道的PCIe链路,即“x8”PCIe链路。在一些例子中,每个PCIe交换机424与六个处理模块通信,诸如在图1中所示。每条PCIe链路还可以包括边带信令,诸如SMBus、JTAG、I2C、CAN或任何其它通信接口,并且在一些例子中边带信令经分离的链路提供。每个PCIe交换机424包括PCIe交叉连接交换机,用于在由每个PCIe交换机424处理的任意PCIe接口之间建立交换连接。在一些例子中,每个PCIe交换机424包括PLX技术PEX8796 24端口、96通道PCIe交换芯片。
电力控制模块422包括选择性地向I/O模块420的元件中的任何元件提供电力的电路系统。电力控制模块422可以经PCIe链路442中的任何PCIe链路从处理模块接收控制指令。在一些例子中,电力控制模块422包括上面所讨论的用于图3的处理器320的处理元件。电力控制模块422可以经电力链路445接收电力作为用于I/O模块420的各种元件的电力源。保持电路423包括能量存储设备,用于存储经电力链路445接收的电力,以便在诸如源电力丢失之类的电力中断情况期间使用。保持电路423可包括电容存储设备,诸如电容器阵列之类。电力控制电路系统的例子的进一步讨论在下面找到。
当输入电力可用时,模块420可诸如从配合连接器或中平面接受电力。当输入电力不可用时,诸如在电力中断情况期间,可以经链路445由模块420将电力再分配给其它模块。当模块420从配合连接器被移除时,则电力可以泄放到关联的电力池电路系统中。虽然示出了一条电力链路445,但是应当理解,可以包括多于一条的链路,诸如分离的输入和输出链路或者用于不同电压电平的分离的链路。而且,虽然在图4中模块420仅示出了电力控制电路系统和保持电路系统,但是,当模块420由分离的模块组成时,类似的电路系统和电力链路可以包括在其它控制或插入器模块中。
I/O模块420包括处理器450、网络交换机451、USB集线器452、I2C接口453和通用异步接收器/发送器(UART)接口454。网络交换机451可以包括一个或多个以太网交换机,包括收发器、变压器、隔离电路系统、缓冲器等。USB集线器452包括用于将单个主机USB连接成扇形散开(fan out)到多条设备USB链路的USB集线器电路系统,并且可以包括收发器、处理器、变压器、隔离电路系统、缓冲器等。
处理器450包括一个或多个微处理器或微控制器,连同任何关联的存储存储器(storage memory)。处理器450经以太网控制平面链路447和448与处理模块通信。处理器450经边带链路441、444和449与数据储存器滑轨通信,所述边带链路441、444和449可以包括USB链路、I2C链路或串行链路以及其它链路。交互工作或插入式模块可以促进由处理器450(诸如由FPGA 455)经边带链路中的任何边带链路进行通信。FPGA 455在处理器405的接口(诸如串行外围接口(SPI)之类)与各种串行边带接口之间提供协议转换。例如,FPGA 455可以将经SPI接口从处理器450接收的通信转换为I2C接口453的通信或UART接口454的通信。同样,FPGA 455可以转换经边带接口接收的通信并经接口传送到处理器450。FPGA 455可以处理用于通信的各种接口的复制和成扇形散开,以便经关联的边带接口与多于一个的储存器滑轨接口连接。
处理器450初始化数据储存器滑轨,诸如上面对图1所讨论的。处理器450在存储系统中累积针对每个储存器滑轨的统计数据和使用情况信息。处理模块可以经由网络交换机451经以太网链路447从处理模块或者经边带链路从数据储存器滑轨检索这种统计数据或使用情况信息。以太网链路447包括控制平面,其可被用于在处理模块之间传送控制信息和状态信息。I/O模块420还提供控制平面到其它3U外壳的扩展,用于经以太网链路448的集群控制平面互连。处理器450的另一个例子可以在图18中的控制处理器1800中看到。
PCIe交换机424各自包括被用于在更多外壳中(诸如在图2中看到的其它3U外壳中)互连其它存储系统的更多I/O模块的集群互连接口446。接口446包括具有16个通道的PCIe链路,即“x16”PCIe链路。集群互连经关联的外部连接器和外部布线在外部系统(诸如其它存储系统)之间提供PCIe互连。这些连接可以是由所包括的PCIe交换机中的任何PCIe交换机以及未示出的其它PCIe交换机提供的PCIe链路,用于经由PCIe链路互连其它存储系统的其它I/O模块。用于集群互连的PCIe链路可以在外部连接器处终止。这些连接可以替代地是由所包括的PCIe交换机中的任何PCIe交换机以及未示出的其它PCIe交换机提供的PCIe链路,用于经由PCIe链路互连其它存储系统的其它互连模块。用于集群互连的PCIe链路可以在外部连接器处终止,诸如用于经微型SAS布线运送PCIe信令的微型串行附接SCSI(SAS)连接器。
用于集群互连的PCIe链路可以在外部连接器(诸如被用来经微型SAS布线运送PCIe信令的微型串行附接SCSI(SAS)连接器)处终止。在进一步的例子中,相对于标准SAS电缆的6Gb/s,采用驱动12Gb/s的MiniSAS HD电缆。12Gb/s可以支持PCIe第3代。为了进一步说明集群互连,下面给出图16。
图5是示出处理模块530的框图,作为图1的处理模块130的例子。处理模块530包括两个或更多个处理系统510、至少一个PCIe交换机532、PCIe交换机540、网络接口534、电力控制模块535以及保持电路536。电力控制模块535经关联的电力链路537-539向处理模块530的每个元件分配电力。电力控制模块535可以对每条电力链路选择性地启用/禁用电力。为了处理模块530的各个元件之间的滑轨内通信,可以包括进一步的通信链路。
每个处理系统510还包括处理器511和存储系统512。在一些例子中,网络接口534-535包括在处理系统510中,但是网络接口534-535或其部分可以由分离的电路系统和元件(诸如分离的PCIe扩展卡之类)提供。每个处理系统510可以经网络接口534-535中的任何网络接口,诸如从外部系统、最终用户设备或者从集群的其它处理系统发送和接收存储操作,诸如存储分组。
每个处理器可以经关联的以太网边带信令链路556进行通信,诸如与其它滑轨上的各种微处理器/控制器或电力控制节点通信,或者与互连、插入器或控制模块通信,以检索统计数据或使用情况信息。链路556可以包括以太网接口,或者可以包括SMBus、JTAG、I2C、CAN或任何其它通信接口,并且在一些例子中经分离的链路提供。链路556可以利用外部网络接口提供,诸如经一些PCIe链路543通信耦合的适配器或网络接口卡。每个处理器511还包括至少一个PCIe接口,诸如PCIe收发器和用于经关联的PCIe链路533和541通信的通信电路系统。每个处理器511的PCIe接口可以包括在较窄的PCIe链路之间被细分的大量PCIe通道,诸如在两条x8链路之间被细分的x16接口。在一些例子中,PCIe接口被集成到处理器511的单芯片管芯中。在其它例子中,PCIe接口在分离的微芯片收发器上提供,该分离的微芯片收发器可以经另一通信接口(诸如处理器511的前侧总线或外围集线器芯片接口之类)与关联的处理器511通信。
处理器511可以包括从存储系统512检索和执行软件513的一个或多个微处理器和其它处理电路系统。处理器511可以在单个处理设备内实现,但也可以跨执行程序指令时合作的多个处理设备或子系统分布。处理器511的例子包括通用中央处理单元、专用处理器和逻辑设备,以及任何其它类型的处理设备、组合或其变体。在一些例子中,处理器511包括Intel或AMD微处理器、ARM微处理器、FPGA、ASIC、专用处理器,或者其它微处理器或处理元件。
存储系统512可以包括能够存储可由处理器511执行的软件513的任何非临时性计算机可读存储介质。存储系统512可以包括以用于信息存储的任何方法或技术实现的易失性和非易失性、可拆卸和不可拆卸介质,其中所述信息诸如计算机可读指令、数据结构、程序模块或其它数据。存储系统512可被实现为单个存储设备,但也可以跨协同定位或相对于彼此分布的多个存储设备或子系统实现。存储系统512可以包括能够与处理器511通信的附加元件,诸如控制器之类。存储介质的例子包括随机存取存储器、只读存储器、磁盘、光盘、闪存、虚拟存储器和非虚拟存储器、磁带盒、磁带、磁盘储存器或其它磁性存储设备,或者可被用来存储期望信息并可被指令执行系统访问的任何其它介质,以及其任意组合或变体。
软件513可以在程序指令中实现并且,当一般而言由处理系统510或具体而言由处理器511执行时,软件513以及其它功能可以指示处理器511如软件513命令的那样操作。软件513可以包括过程、程序或部件,诸如操作系统软件、数据库软件或应用软件。软件513还可以包括可由处理系统501的元件(诸如处理器511)执行的固件或某种其它形式的机器可读处理指令。存储系统512上的编码软件513可以变换存储系统512的物理结构。在本描述的不同实现中,物理结构的具体变换可以依赖于各种因素。这种因素的例子可以包括,但不限于,用来实现存储系统512的存储介质的技术以及计算机存储介质被表征为主还是次储存器。例如,如果计算机存储介质被实现为基于半导体的存储器,则当程序在其中被编码时,软件513可以变换半导体存储器的物理状态。例如,软件513可以变换构成半导体存储器的晶体管、电容器或其它离散电路元件的状态。关于磁或光介质,类似的变换可以发生。在不背离本描述的范围的情况下,物理介质的其它变换是可能的,前面提供的例子仅仅是为了便于讨论。
处理模块530还与一个或多个网络接口534-535接口连接,以便经一条或多条关联的网络链路554-555通信。一个或多个网络接口534-535经由图5中的关联的PCIe链路543通信耦合到关联的处理系统510或处理器511。对处理模块530以及由其管理的储存器滑轨的外部访问可以经一些分组网络链路554提供。处理模块或处理器之间的通信可以经一些分组网络链路555提供。在这个例子中,分组网络链路554-555各自包括用于运送各种分组通信的以太网链路,所述分组通信诸如传输控制协议/互联网协议(TCP/IP)通信、NVMe通信或iSCSI通信之类,但是可以采用其它分组类型。网络接口可以包括以太网接口、IP接口、T1接口,或者可以经通信链路通信的其它局域网或广域网通信接口。通信收发器的例子包括网络接口卡装备、接收器、发送器、调制解调器和其它通信电路系统。在一些例子中,网络链路554包括与网络链路555不同的带宽或传送速度。
PCIe交换机532处理针对处理模块530的后端数据平面或“背侧”流量,用于数据的存储和检索。PCIe交换机532通过一个或多个互连模块(未绘出)经PCIe链路552与储存器滑轨通信,并且经PCIe链路533与一些处理器531通信。链路552和533中的每一个包括具有八个通道的PCIe链路,即“x8”PCIe链路。PCIe交换机532还包括处理模块交叉连接链路533,在这个例子中处理模块交叉连接链路533是四个x8PCIe链路。为了负载平衡和瓶颈预防,该处理模块交叉连接533允许另一处理模块上的PCIe交换机532处理针对任何处理模块的后端数据平面流量。PCIe交换机532还可以包括用于进一步的处理模块交叉连接的PCIe链路552。PCIe交换机532包括PCIe交叉连接交换机,用于在由PCIe交换机532处理的任意PCIe接口之间建立交换连接。在一些例子中,PCIe交换机532包括PLX技术PEX8796 24端口、96通道PCIe交换芯片。
为了不同处理模块的处理器之间的通信,PCIe交换机540处理针对处理模块530的前端数据平面或“前侧”流量。PCIe交换机540通过一个或多个互连模块(未绘出)经PCIe链路542与其它处理模块通信,并且经PCIe链路541与一些处理器531通信。链路542和541中的每一个包括具有八个通道的PCIe链路,即“x8”PCIe链路。PCIe交换机540还包括外部模块链路543,在这个例子中是四条x8PCIe链路。PCIe交换机540包括PCIe交叉连接交换机,用于在由PCIe交换机540处理的任何PCIe接口之间建立交换连接。在一些例子中,PCIe交换机540各自包括PLX技术PEX8796 24端口、96通道PCIe交换芯片。
电力控制模块535包括选择性地向处理模块530的元件中的任何元件提供电力的电路系统。电力控制模块535可以经关联的链路537-539或附加的通信链路从处理器511接收控制指令。在一些例子中,电力控制模块535包括上面所讨论的用于图3的处理器320的处理元件。电力控制模块535可以经电力链路557接收电力,作为用于处理模块530的各种元件的电力源。保持电路536包括能量存储设备,用于存储经电力链路557接收的电力,以便在诸如源电力丧失之类的电力中断情况期间使用。保持电路536可以包括电容存储设备,诸如电容器阵列。
图6是示出存储系统600的系统图,存储系统600可以是图1中系统100的一些元件的例子。存储系统600包括储存器滑轨610和615、I/O模块620和625、处理模块630,以及接口模块640-641。储存器滑轨610包括SSD驱动器611和PCIe交换机612。储存器滑轨615包括SSD驱动器616和PCIe交换机617。虽然在图6中包括了两个储存器滑轨,但是应当理解,可以包括任何数量的储存器滑轨。而且,虽然在每个储存器滑轨中包括了四个SSD驱动器,但是应当理解,可以包括任何数量的SSD驱动器。I/O模块620包括PCIe交换机621,并且I/O模块625包括PCIe交换机626。虽然在图6中针对每个I/O模块示出了一个PCIe交换机,但是应当理解,可以包括任何数量。处理模块630包括处理器631-632和PCIe交换机633-634,并且可以包括如上面所讨论的另外的元件。
接口模块640经各种接口,即经针对TCP/IP、iSCSI或NVMe流量的网络接口642以及处理模块PCIe接口656进行通信。接口模块641经至少三个接口,即用于TCP/IP、iSCSI或NVMe流量的网络接口645以及处理模块PCIe接口657进行通信。处理模块630经PCIe链路654和655与储存器滑轨610和615通信,所述PCIe链路654和655通过在关联的I/O模块上的关联的PCIe交换机切换。储存器滑轨610经相应的PCIe链路650-651与不同的I/O模块通信。储存器滑轨615经相应的PCIe链路652-653与不同的I/O模块通信。图6的元件通过诸如本文所讨论的那些I/O模块之类的I/O模块,形成在处理模块和储存器滑轨之间具有多条冗余PCIe链路的存储系统。
在操作中,处理模块的特定处理器将被配置为管理或“拥有”各种储存器滑轨上的特定SSD驱动器。例如,处理器631可被配置为管理储存器滑轨610的SSD驱动器611,而处理器632可被配置为管理储存器滑轨615的SSD驱动器616。其它组合可以被使用,包括由处理器管理特定储存器滑轨的SSD驱动器的子集,以及由另一处理器管理该特定储存器滑轨的剩余SSD驱动器。管理SSD驱动器包括处理器初始化SSD驱动器并处理针对SSD驱动器的读、写或者其它文件或对象事务。每个处理器可以参考存储在非临时性计算机可读介质上的数据结构来确定哪些SSD驱动器将被管理。
但是,一旦特定的处理器已被配置为管理特定的SSD驱动器或SSD驱动器集合,则那个处理器就可能在正常操作中经历故障或中断。响应于诸如处理器631的处理器故障,另一个处理器632可被配置为接管先前由发生故障的处理器631管理的SSD驱动器的管理。为了接管先前由发生故障的处理器631管理的SSD驱动器的管理,处理器632可以初始化先前由发生故障的处理器631管理的SSD驱动器并开始管理针对那些SSD驱动器的文件操作,诸如读和写操作之类。处理器632可以包括故障转移表680,该表指示在另一处理器发生故障的情况中处理器632对其进行管理的SSD驱动器。故障转移表680还可以指示处理器632对其进行监视以确定是否发生了任何故障的一个或多个处理器。
在图6中,示出了用于数据和其它文件事务的不同路径。在第一路径,即正常路径690中,接口模块640接收对应于文件事务(诸如数据存储或检索事务之类)的数据分组并经PCIe交换机634传送所述数据分组以输送到处理器631。处理器631确定它“拥有”对应于该文件事务的SSD驱动器并且继续处理针对该特定SSD驱动器,诸如SSD驱动器611的文件事务。如果处理器631发生故障,则针对与SSD驱动器611关联的文件事务的进一步的数据分组可以由处理器632管理。这些数据分组可以经接口模块641接收或者可以替代地经接口模块640接收,因为接口模块640经至少一个PCIe交换机634通信耦合到处理器632。为了处理最初意在针对发生故障的处理器631的传入的数据分组,处理器632可以从处理器631继承诸如TCP/IP连接之类的网络连接状态,并且随后处理最初由发生故障的处理器631处理的网络流量。故障转移路径691指示当处理器631已经发生故障时针对SSD驱动器611的数据和文件事务的一个示例流。
处理器632可以利用不同的方法监视诸如处理器631的另一个处理器。在第一个例子中,处理器632向处理器631发送定期的消息并等待来自处理器631的响应消息。如果响应消息未能在预定量的时间内进入,则处理器632可以确定处理器631已经发生故障。定期的消息可以包括通过处理器之间的一个或多个网络堆栈发送的探测分组,诸如经处理器631和632可以通信的网络接口。在另一个例子中,在处理器632中针对处理器631维护寄存器或位的集合,所述寄存器或位由处理器631设置或重置。如果与处理器631关联的寄存器或位没有在预定量的时间内被正确设置或重置,则处理器632可以确定处理器631已经发生故障。虽然在图6中两个处理器被示为彼此监视,但是在其它例子中,可以包括更大量的处理器。这种更大量的处理器可以各自被配置为由所有其它处理器、由仅一个其它处理器(双模式)或者由两个其它处理器(三模式)针对故障进行监视。被监视和监视处理器的任意组合都可以被采用。
一旦处理器已经被确定发生故障,监视处理器,诸如处理器632,就可被配置为发起发生故障的处理器的重新启动、重启或电力循环。如果发生故障的处理器在重新启动、重启或电力循环之后恢复在线(online)并运行,则被过渡到监视处理器的那些SSD驱动器可以由先前发生故障的处理器重新管理。
图7是示出存储系统700的系统图,存储系统700可以是图1中系统100的一些元件的例子。图7包括图6中指示的元件以及附加元件。这些附加元件包括储存器滑轨710和715、处理模块730和接口模块740-741。储存器滑轨710包括SSD驱动器711和PCIe交换机712。储存器滑轨715包括SSD驱动器716和PCIe交换机717。虽然在图7中包括四个储存器滑轨,但是应当理解,可以包括任何数量的储存器滑轨。而且,虽然在每个储存器滑轨中包括四个SSD驱动器,但是应当理解,可以包括任何数量的SSD驱动器。I/O模块620包括PCIe交换机621-622,并且I/O模块625包括PCIe交换机626-627。虽然在图7中为每个I/O模块示出了两个PCIe交换机,但是应当理解,可以包括任何数量的PCIe交换机。处理模块730包括处理器731-732和PCIe交换机733-734,并且可以如上面所讨论的包括进一步的元件。
接口模块740经至少三个接口(即用于TCP/IP、iSCSI或NVMe流量的网络接口742、用于诸如图2中所讨论的不同3U模块之间的互连的集群PCIe互连743以及处理模块PCIe接口756)进行通信。接口模块741经至少三个接口(即用于TCP/IP、iSCSI或NVMe流量的网络接口745、用于诸如图2中所讨论的不同3U模块之间的互连的集群PCIe互连744以及处理模块PCIe接口757)进行通信。处理模块630经PCIe链路654和655与储存器滑轨610、615、710和715中的任何一个通信,所述PCIe链路654和655通过在关联的I/O模块上的关联的PCIe交换机切换。处理模块730经PCIe链路754和755与储存器滑轨610、615、710和715中的任何一个通信,所述PCIe链路754和755通过在关联的I/O模块上的关联的PCIe交换机切换。储存器滑轨710经相应的PCIe链路750-751与不同的I/O模块通信。储存器滑轨715经相应的PCIe链路752-753与不同的I/O模块通信。图7的元件通过诸如本文所讨论的那些I/O模块之类的I/O模块,形成在处理模块和储存器滑轨之间具有多条冗余PCIe链路的存储系统。
在操作中,处理模块的特定处理器将被配置为管理各种储存器滑轨上的特定SSD驱动器。例如,处理器731可被配置为管理储存器滑轨710的SSD驱动器711,而处理器732可被配置为管理储存器滑轨715的SSD驱动器716。其它组合可以被使用,包括由处理器管理的特定储存器滑轨的SSD驱动器的子集,以及由另一处理器管理的那个特定储存器滑轨的剩余SSD驱动器。管理SSD驱动器包括处理器初始化SSD驱动器并处理针对该SSD驱动器的读、写或者其它文件或对象事务。每个处理器可以参考存储在非临时性计算机可读介质上的数据结构来确定哪些SSD驱动器将被管理。
但是,一旦特定处理器已被配置为管理特定SSD驱动器,则该处理器就可能在正常操作中经历故障或中断。虽然图6专注于共享处理模块630上的处理器,但是图7的例子讨论可以驻留在分离的处理模块,即处理模块630和处理模块730上的处理器。
响应于诸如处理器631的处理器的故障,另一个处理器732可被配置为接管先前由发生故障的处理器631管理的SSD驱动器的管理。处理器732可以初始化先前由发生故障的处理器631管理的SSD驱动器并开始管理针对那些SSD驱动器的文件操作,诸如读和写操作之类。处理器732可以包括故障转移表780,该表指示在另一处理器发生故障的情况中处理器732对其进行管理的SSD驱动器。故障转移表780还可以指示处理器732对其进行监视以确定是否发生了任何故障的一个或多个处理器。
表780可以包括系统700的处理器中的每个处理器处理针对其的存储操作的共享PCIe地址空间的各个部分的列表,诸如关联的地址范围。这个地址范围对应于储存器滑轨上的SSD中的一个或多个并指示哪些SSD由特定处理器管理。每个处理器可以包括表780,该表指示哪些SSD由该处理器管理以及哪些SSD由该处理器监视故障的处理器管理。此外,在负载平衡例子中,表780可以包括针对所有处理器的所有各种PCIe地址范围,使得当特定处理器接收存储操作时,该特定处理器可以对照表780检查关联的PCIe地址,以确定该特定处理器是否应当管理存储操作或者存储操作是否应当被传送到处理器中的另一个处理器以做进一步处理。图10示出了在可以管理存储系统中各种SSD的各种处理器之间细分的示例PCIe地址空间。
在图7中,示出了用于数据和其它文件事务的不同路径。在第一途径即正常路径790中,接口模块640接收对应于文件事务(诸如数据存储或检索事务)的数据分组并经PCIe交换机634传送数据分组以输送到处理器631。处理器631确定它“拥有”对应于该文件事务的SSD驱动器并继续处理针对特定SSD驱动器(诸如SSD驱动器611)的文件事务。如果处理器631发生故障,则与SSD驱动器611关联的针对文件事务的进一步的数据分组可以由处理器732管理。当处理器732开始接受最初由处理器631接受的分组时,这些数据分组可以经接口模块741接收。作为替代,这些数据分组可以经接口模块640接收,并且经PCIe交换机传送以便输送到处理器732,所述PCIe交换机诸如PCIe交换机634以及其它PCIe交换机。为了处理最初意在针对发生故障的处理器631的传入数据分组,处理器732可以从处理器631继承诸如TCP/IP连接之类的网络连接状态,并且随后处理最初由发生故障的处理器631处理的网络流量。故障转移路径791指示当处理器631发生故障时针对SSD驱动器611的数据和文件事务的一个示例流。
处理器732可以利用不同的方法监视另一个处理器,诸如处理器631。在第一个例子中,处理器732向处理器631发送定期的消息并等待来自处理器631的响应消息。如果响应消息未能在预定量的时间内进入,则处理器732可以确定处理器631已经发生故障。定期的消息可以包括通过处理器之间的一个或多个网络堆栈发送的探测分组,诸如经处理器631和732可以通信的网络接口。在另一个例子中,在处理器732中针对处理器631维护寄存器或位的集合,所述寄存器或位由处理器631设置或重置。如果与处理器631关联的寄存器或位未在预定量的时间内正确设置或重置,则处理器732可以确定处理器631已经发生故障。虽然图7中两个处理器被示为彼此监视,但在其它例子中,可以包括更大量的处理器。这种更大量的处理器可以各自被配置为由所有其它处理器、仅一个其它处理器(双模式)或两个其它处理器(三模式)针对故障进行监视。被监视和监视处理器的任何组合都可以被采用。
一旦处理器已被确定为已发生故障,则诸如处理器732的监视处理器就可被配置为发起发生故障的处理器的重新启动、重启或电力循环。如果发生故障的处理器在重新启动、重启或电力循环之后恢复在线并运行,则被过渡到监视处理器的那些SSD驱动器可以由先前发生故障的处理器重新管理。
本文描述的存储系统包括由多个PCIe交换机元件连同关联的PCIe链路组成的交换机架构。这种交换机架构可以包括本文讨论的PCIe交换机中的任何PCIe交换机,并且可被划分为前端数据平面和后端数据平面。前端数据平面被用来在处理器、处理模块和网络接口之间传送文件操作、对象操作、处理器间通信以及其它控制信息。后端数据平面被用来向储存器滑轨和从储存器滑轨传送数据。当采用多个处理器时,交换机架构被配置为具有故障转移路径。如果针对特定处理器的通信失败(go down),则硬件可以自动将PCIe连接切换到另一个处理器。此外,在每个I/O模块上存在管理处理器,其可被处理模块中的任何处理模块指示从而根据需要动态地改变PCIe路径。与故障转移所采用的相同类型的机制被用来为架构的部件中的每个部件形成冗余路径。
除了硬件提供的路径之外,还存在经由前端和后端路由的基于软件的附加冗余层。存储系统中的所有处理器都知道硬件的当前状态并且可以根据需要确定到储存器滑轨的附加路由。这部分地是通过在系统内本地地全面地路由请求从而由反向ARP在外部重新路由流量来实现的。硬件为故障转移和冗余提供了最小延时(latency)的重新路由。而软件增加了也可被改变的冗余路径的级别。(即,当硬件路径发生故障时,软件可以为另一故障情况设置下一冗余路径)。在每个处理器中包括一个表,该表告诉该处理器正常情况下其拥有哪个SSD以及在存在故障转移情况时其支持哪个SSD。在故障转移的情况中,随着切换在PCIe总线上生成中断。被指派给发生故障的处理器的(一个或多个)驱动器的发现过程被发起。这之后是处理器将发现的与故障转移表匹配的(一个或多个)SSD填入其活动表中。
冗余和故障转移由一些机制控制。在启动时,每个处理节点(运行操作系统的单独实例)获得指定对等节点监视算法的配置(所有节点监视所有其它节点、其中每个节点具有一个对等体的双节点监视,以及其中每个节点具有监视它的两个对等体的三节点监视)。对等算法使用每个节点以可配置的间隔(秒)例如交替地设置/清除的硬件寄存器心跳机制。这让处理器知道对等体何时发生事故(crash)和/或失去电力。此外,存在在每侧上运行的SW算法,所述算法以可配置的间隔(秒)经网络堆栈发送“探测”分组。在丢失某个最大数目的未达(missed)的探测响应之后,对等体可以确定对等内核、驱动程序或操作系统软件是挂断还是发生事故。因此,存在用于增强的对等状态确定的硬件和软件检查。
一旦节点被确定为发生事故和/或无响应,故障转移情况就由被配置为监视该发生事故的节点的对等体之一发起。这需要两个动作:1)接管对节点的SSD的所有权,2)通过重新循环节点的电力或将其重置以便重启,从而在节点上发起故障恢复操作。SSD所有权的改变是通过其中一个监视对等体搜索由发生故障的节点所拥有的设备的表/阵列而发生的。应当指出,每个对等体知道对等体所拥有的所有设备。周期性地(即,大约每60秒)并且最初当对等体启动并加入集群时交换这个信息。然后对等体执行重新配置PCIe交换机架构芯片的用户空间脚本/命令,以使得设备通过该架构对想获得所有权的节点“可见”。然后对等体检查SSD的设备驱动程序的状态寄存器、确定SSD/驱动程序的状态,然后发出驱动程序/设备重置,使得设备再次(由想要获得所有权的监视对等体)重新循环和重新发现。驱动器现在对新拥有者对等体“可见”、被配置并且现在经由对等体的IP地址在线可访问。
与上述内容并行地,操作系统后端软件使指向发生事故节点的层2(以太网)路由表条目无效,并生成指向新拥有者对等体的新的层2(以太网)路由表条目,该新拥有者对等体作为访问所传送的SSD上包含的SSD/LBA的存储事务的目的地。这些表被传播到集群中的所有节点。现在传入的存储事务在层2被正确地路由到新拥有者节点。然后发生事故的节点由监视对等体重启。监视对等体将继续尝试重置发生故障的节点,直到它回来并重新加入集群。
图8是示出存储系统的系统图,存储系统可以是图1中系统100的一些元件的例子。图8包括在图6和7中指示的元件以及附加元件。这些附加元件包括PCIe交换机830-833。I/O模块620包括PCIe交换机621-622和832,并且I/O模块625包括PCIe交换机626-627和833。处理器632经PCIe链路840与PCIe交换机830通信。处理器631也可以与PCIe交换机830通信。处理器732经链路841与PCIe交换机831通信。处理器731也可以与PCIe交换机831通信。PCIe交换机830经关联的PCIe链路842和843与PCIe交换机832和833二者通信。PCIe交换机831经关联的PCIe链路844和845与PCIe交换机832和833二者通信。
图8示出了处理模块630和730之间经I/O模块620和625当中任何一个的前端数据平面交叉连接。如上面对图6和图7所讨论的,特定处理器可以管理特定的I/O滑轨或SSD驱动器的集合。但是,与针对特定SSD驱动器的数据事务相关的数据分组可以经接口模块640、641、740和741当中任何一个接收。各自经各种TCP/IP链路通信的多个接口模块的这种配置允许负载平衡、事务从外部系统的高度并行化接收、以及用于任何SSD驱动器的流量经包括在系统800中的任何网络接口的接收。特定处理器通常管理后端数据平面侧上针对特定SSD的流量,诸如对于到特定储存器滑轨的读和写事务,但是文件事务可以由任何处理器经网络接口接收。图8示出了将在一个处理器处接收的文件事务传送到管理与该文件事务关联的存储元件的另一个处理器的一个示例过程。图8中所描述的操作在图9A和9B中进一步详细描述,这将在下面讨论。
在图8中,文件事务由接口模块641经链路645接收,如图8中的“事务接收892”所指示的。这个文件事务可以包括文件或对象操作或事务,诸如对数据的读、写、删除、修改或其它文件系统操作。在这个例子中,受影响的数据被存储在储存器滑轨715上的SSD驱动器716上。但是,形式为一个或多个分组的文件事务由接口模块641接收并通过PCIe交换机634被内部地传送到处理器632。事务892可以指示与事务892关联的数据要被写入其中或从其读取的存储地址以及其它操作。
处理器632包括路由表880,路由表880包括一个或多个数据结构,这些数据结构指示系统800的哪个特定处理器管理包含在系统800的储存器滑轨内的存储地址空间的数据。如上面所讨论的,特定处理器管理SSD驱动器或储存器滑轨的特定集合。但是,文件事务可以由任何处理器经任何网络接口接收。每个处理器包括指示哪个处理器管理特定地址空间的路由表或其它数据结构。
表880可以包括系统800的处理器中的每个处理器处理针对其的存储操作的共享PCIe地址空间的各种部分的列表,诸如关联的地址范围。这种地址范围对应于储存器滑轨上的一个或多个SSD并指示哪些SSD由特定处理器管理。每个处理器可以包括表880,该表指示哪些SSD由那个处理器管理以及哪些SSD由那个处理器监视故障的处理器管理。此外,在负载平衡例子中,表880可以包括用于所有处理器的所有各种PCIe地址范围,使得当特定处理器接收到存储操作时,那个特定处理器可以对照表880检查关联的PCIe地址,以确定那个特定处理器是否应当管理该存储操作或者存储操作是否应当被传送到处理器中的另一个处理器做进一步处理。图10示出了在可以管理存储系统中各种SSD的各种处理器之间细分的示例PCIe地址空间。
在这个例子中,路由表880指示处理器732管理与事务892关联的存储设备。处理器632经至少PCIe交换机830、PCIe交换机833和PCIe交换机831传送事务892,用于输送到处理器732,如由图8中的“事务传送893”所指示的。然后处理器732处理事务892。如果事务892是写事务,则处理器732将与事务892关联的数据写入关联的SSD驱动器,诸如储存器滑轨715的SSD驱动器716,如由图8中的“事务提交894”所指示的。对于读事务,处理器732从SSD驱动器读取关联的数据并传送所读取的数据以输送到发起该事务的外部系统。这种被读取的数据可以经诸如接口模块741之类的与处理器732关联的网络接口被传送。
在iSCSI例中,图8可以结合用于iSCSI门户组的特征。例如,将在第一处理系统接收的iSCSI事务传送到同一门户组中的另一处理系统可以由图8中所描述的操作来实现。图8示出了处理模块630和730之间经I/O模块620和625中任何一个的PCIe前端数据平面交叉连接。如上面对图1所讨论的,特定处理器可以管理特定的I/O滑轨或SSD驱动器集合。但是,与针对特定SSD驱动器的存储事务相关的数据分组可以经接口模块640、641、740和741中任何一个被接收。各自经各种TCP/IP链路通信的多个接口模块的这种配置允许负载平衡、事务从外部系统的高度并行化接收、以及用于任何SSD驱动器的流量经包括在系统800中的任何网络接口的接收。特定处理器通常管理后端数据平面侧上针对特定SSD的流量,诸如对于到特定储存器滑轨的读和写事务,但是存储事务可以由任何处理器经网络接口接收。
在图8所示的例子中,iSCSI门户组被讨论为关于经与第一处理器关联的第一网络接口接收iSCSI存储事务并且那个处理器传送存储事务以便由第二处理器处理。在图8中,iSCSI门户组与至少链路642、645、742和745关联,这些链路转而与相关的一些处理器631、632、731和732关联。接口模块中的每个包括网络接口卡的至少一条网络接口链路,并具有与其关联的不同的关联TCP/IP地址。这些各种TCP/IP地址被分组为iSCSI目标门户组,如图8中所示。
但是,在图8中,每个处理器631、632、731、732仅处理系统800中的SSD驱动器的总数的特定子集。例如,处理器632可以仅管理储存器滑轨615上的SSD驱动器,并且处理器732可以仅管理储存器滑轨715上的SSD驱动器。其它存储驱动器和滑轨配置是可能的。因此,当处理器632接收到针对系统800的门户组的存储事务时,该存储事务首先被传送到管理处理器,即在这个例子中是处理器732。处理器632参考路由表880来确定处理器732管理与该存储事务关联的SSD驱动器。存储事务可以为存储事务识别地址或地址范围,并且这个地址或地址范围可以被处理器632用来确定处理器732应当进一步处理该事务。作为响应,处理器632传送存储事务以便经前端数据平面PCIe架构输送到处理器732。这在图8中被示为操作893。前端数据平面PCIe架构由多个PCIe交叉点交换机,即PCIe交换机634、734和830-833,连同任何关联的PCIe链路组成。其它路径可以被采用。iSCSI门户组的进一步讨论在图9A和12中找到。
作为传送由一个处理器或处理系统接收的事务以便由另一个处理器或处理系统处理的一个例子,给出图9A。图9A示出了经iSCSI协议通信的存储系统900。存储系统900包括处理系统910、处理系统920和PCIe交换机930。诸如在前面附图中找到的进一步的存储系统元件可以包括在系统900中,但是为了清晰起见在图9A中省略这些元件。在替代例子中,在下面的图9B中讨论NVMe协议处理。
在图9A中,处理系统910和处理系统920通过至少PCIe交换机930通信耦合。进一步的冗余PCIe交换机可以被采用。PCIe交换机930包括在存储系统的前端数据平面中,并且允许处理器之间文件事务的传送。
在操作中,分组901由处理系统910接收。这些分组可以由与处理系统910关联的网络接口卡接收,诸如经处理系统910的以太网接口。分组901与诸如写事务或读事务之类的存储事务关联,用于在关联的诸如本文所讨论的储存器滑轨或SSD之类的存储驱动器上的数据存储。为了冗余、负载平衡、故障转移保护以及其它特征,处理系统910和920中每一个包括可以接收针对彼此的存储事务的网络接口。此外,如上面所讨论的,每个处理系统管理或拥有每个处理系统特有的存储驱动器。具体而言,处理系统910将管理存储驱动器的第一集合,而处理系统920将管理存储驱动器的不同的第二集合。但是,如果针对存储驱动器的第二集合的iSCSI存储操作经与管理存储驱动器的第一集合的处理系统关联的网络接口接收,则遵循图9A中详细描述的操作。
在图9A中,分组901与针对由处理系统920管理的存储驱动器的存储操作关联。但是,分组901可以由可以管理不与分组901关联的存储驱动器的不同集合的处理系统910接收。这些分组将被接收到处理系统910的网络接口的各种网络堆栈层中,诸如PHY层1 911和ETH层2 912。如果分组901针对由处理系统910管理的存储驱动器,则这些分组可以进一步前进到IP层3 913或进一步的层914-916,以作为数据981存储。但是,如果分组901针对由另一处理系统(诸如处理系统920)管理的存储驱动器,则下面详细描述的过程可以允许处理系统920处理分组901,以作为数据982存储。
具体而言,一旦分组901被存储在缓冲器912B中,处理系统910就执行过程912P以确定分组901是否与由处理系统910或另一处理系统管理的存储驱动器的存储事务相关。过程912P包括检查分组901的各种报头和字段值,以确定分组901是否与处理系统910管理的或另一处理系统管理的存储驱动器关联。图9A示出了一个示例过程912P。
首先,检查分组901的以太网报头902,以确定以太网类型(Etherytype)字段的值。如果以太网类型字段指示IP分组,则检查IP报头903。如果IP报头903中的协议字段指示TCP并且目的地端口标识符指示iSCSI端口,则检查iSCSI报头904。iSCSI报头904指示包括iSCSI目标标识符和与iSCSI目标标识符相关联的逻辑块地址(LBA)的各种属性。这个目标标识符和逻辑块地址可被用来确定包括分组901的存储事务是针对本地处理器/处理系统910还是针对远程处理器/处理系统920以及其它处理器/处理系统。
表990指示示例路由配置,以确定哪个处理系统要处理传入的iSCSI分组。应当理解,为表990指示的值仅仅是示例性的,并且在实践中可以使用其它值。表990指示三列,其中前两列对应于在iSCSI报头904中找到的目标ID和LBA。第三列对应于处理节点标识符。处理节点ID与PCIe地址范围相关,并且共享前端PCIe架构的存储系统中的每个处理系统或处理器具有对应的地址范围。如果地址范围针对其本身(本地处理系统910),则处理系统910确定它应当处理通过层913-916的分组901以及相对应的数据981的存储。如果地址范围是针对远程处理系统(诸如处理系统920),则处理系统910确定它应当将分组901传送到远程处理系统。
图9A还示出分组901到另一处理系统的传送。如果分组901要由另一处理系统处理,诸如利用上面讨论的路由表990确定,则处理系统910将分组901从缓冲器912B传送到由表990指示为处理节点ID的PCIe存储器地址位置。图9A示出处理系统910经由至少PCIe交换机930组成的PCIe架构将分组901传送到处理系统920的缓冲器,即缓冲器922B中。处理系统910还可以向处理系统920发出指示分组901在缓冲器922B中等待以由处理系统920处理的中断或其它信号。
处理系统920响应于由处理系统910发出的中断或者由于缓冲器922B的定期轮询而检查缓冲器922B。这个缓冲器922B可以是由处理系统920的ETH层2 922维护的缓冲器。ETH层2 922可以具有与其关联的多于一个的缓冲器。第一缓冲器可以是用于经PHY层1921接收分组的循环缓冲器。第二缓冲器可以是经PCIe架构从其它处理系统接受分组的PCIe缓冲器,诸如缓冲器922B。
在这个例子中,缓冲器922B与处理系统920的网络堆栈的ETH层2 922关联。于是,处理系统920就好像处理系统920本身已经其自己的网络接口接收到分组901那样处理分组901,诸如通过将分组901传递到网络堆栈中的更高层,包括IP层3 923。然后,这些分组可以由处理系统920处理,用于由分组901指示的特定存储事务。例如,如果分组901描述针对由处理系统920管理的SSD的写操作,则数据982被传送,用于由处理系统920存储在关联的存储驱动器中。
由于分组901最初被寻址到处理系统910,因此分组901的部分可以被处理系统920变换以便由处理系统920的网络堆栈处理。接收对等体/远程节点,即处理系统920,接收分组901并变换诸如TCP帧的分组901的部分,并且重建以太网报头、IP报头,以使得看起来就像它是被直接发送到服务节点的那样,以防处理系统920的网络堆栈拒绝分组901。这种变换可以包括修改分组901的关联的MAC地址、以太网CRC值、目的地IP地址和其它报头属性。在其它例子中,处理系统920不变换分组901的部分,而是阻止由于MAC地址、以太网CRC值或目的地IP地址不匹配导致的分组901的拒绝。
以这种方式,处理系统910可以接收针对由另一处理系统920处理的存储驱动器的存储事务的分组。处理系统910检查分组901并参考表990以确定是否经PCIe架构将分组901传送到正确的处理系统。而且,分组被传送到正确处理系统的层2缓冲器中并且正确的处理系统处理分组,就像是它原本接收到分组而不是处理系统代替地经不同的网络接口接收到分组那样。
在具体的例子中,第二处理系统的网络驱动程序软件被修改为摄入在第一处理系统处接收的分组,就像它在那个第二处理系统处被接收一样。同样,第一处理系统的驱动程序软件也被修改为传送由第一处理系统接收的分组,以便输送到第二处理系统的网络堆栈中。第二处理系统的层2驱动程序软件可以接收由第一处理系统生成的中断,以指示新分组在第二处理系统的关联的层2缓冲器中等待。
作为传送由一个处理器或处理系统接收的存储事务以便由另一个处理器或处理系统处理的另一个例子,给出图9B。图9B示出存储系统900利用NVMe协议进行通信。存储系统900包括处理系统910、处理系统920和PCIe交换机930。诸如在之前的附图中找到的进一步的存储系统元件可以包括在系统900中,但是为了清晰起见在图9B中省略了这些元件。
在图9B中,处理系统910和处理系统920通过至少PCIe交换机930通信耦合。进一步的冗余PCIe交换机可以被采用。PCIe交换机930包括在存储系统的前端数据平面中,并且允许文件事务在处理器之间的传送。
在操作中,帧940由处理系统910接收。这些帧可以由与处理系统910关联的NVMe接口接收,诸如经耦合到处理系统910的NVMe接口卡。帧940与诸如写事务或读事务之类的存储器事务关联,用于在关联的诸如本文所讨论的储存器滑轨或SSD之类的存储驱动器上的数据存储。帧940可以包括一个或多个NVMe帧,并且可以捆绑到一个或多个分组中。为了冗余、负载平衡、故障转移保护以及其它特征,处理系统910和920中的每一个包括可以接收针对彼此的存储事务的网络接口。此外,如上面所讨论的,每个处理系统管理或拥有每个处理系统特有的存储驱动器。具体而言,处理系统910将管理存储驱动器的第一集合,而处理系统920将管理存储驱动器的不同的第二集合。但是,如果针对存储驱动器的第二集合的NVMe存储操作经与管理存储驱动器的第一集合的处理系统关联的网络接口接收,则遵循图9B中详细描述的操作。
在图9B中,帧940与针对由处理系统920管理的存储驱动器的NVMe存储操作关联。但是,帧940可以由可以管理不与帧940关联的存储驱动器的不同集合的处理系统910接收。这些帧将被接收到处理系统910的NVMe接口的各种协议栈层中,诸如PHY层1 917和NVMe层2918。如果帧940针对由处理系统910管理的存储驱动器,则这些帧可以进一步前进,以作为数据983存储。但是,如果帧940针对由诸如处理系统920的另一处理系统管理的存储驱动器,则下面详细描述的过程可以允许处理系统920处理帧940,以作为数据984存储。
具体而言,一旦帧940被存储在缓冲器918B中,处理系统910就执行过程918P以确定帧940是否与针对由处理系统910或另一处理系统管理的存储驱动器的存储事务相关。过程918P包括检查帧940的各种报头和字段值以确定帧940是否与处理系统910管理的或另一处理系统管理的存储驱动器关联。图9B示出了一个示例过程918P。
首先,检查帧940的NVMe报头942。NVMe报头942指示包括NVMe逻辑单元号(VLUN)和与VLUN关联的可能的逻辑块地址(LBA)的各种属性。这种VLUN和LBA信息可被用来确定包括帧940的存储事务是用于本地处理器/处理系统910还是用于远程处理器/处理系统920以及其它处理器/处理系统。
表991指示示例路由配置,以确定哪个处理系统将处理传入的NVMe帧。应当理解,为表991指示的值仅仅是示例性的,并且在实践中可以使用其它值。表991指示三列,其中前两列对应于在NVMe报头942中找到的VLUN和LBA。第三列对应于处理节点标识符。处理节点ID与PCIe地址范围相关,并且在共享前端PCIe架构的存储系统中的每个处理系统或处理器具有对应的地址范围。如果地址范围针对其自身(本地处理系统910),则处理系统910确定它应当处理帧940和相对应的数据983的存储。如果地址范围针对远程处理系统,诸如处理系统920,则处理系统910确定它应当将帧940传送到远程处理系统。
图9B还示出了帧940到另一处理系统的传送。如果帧940将由另一处理系统处理,诸如利用上面讨论的路由表991确定的,则处理系统910将帧940从缓冲器918B传送到由表991指示为处理节点ID的PCIe存储器地址位置。图9B示出处理系统910经由至少PCIe交换机930组成的PCIe架构将帧940传送到处理系统920的缓冲器,即缓冲器928B中。处理系统910还可以向处理系统920发出指示帧940在缓冲器928B中等待以便由处理系统920处理的中断或其它信号。
处理系统920响应于由处理系统910发出的中断或者由于缓冲器928B的定期轮询而检查缓冲器928B。这个缓冲器928B可以是由处理系统920的NVMe层2 928维护的缓冲器。NVM层2 928可以具有与其关联的多于一个的缓冲器。第一缓冲器可以是用于经PHY层1 927接收NVMe帧的缓冲器。第二缓冲器可以是经PCIe架构接受来自其它处理系统的帧的PCIe缓冲器,诸如缓冲器928B。
在这个例子中,缓冲器928B与处理系统920的NVMe层2 928关联。于是,处理系统920就好像处理系统920本身经其自己的NVMe接口已接收到帧940那样处理帧940。然后,这些分组可以由处理系统920处理,用于由帧940指示的特定存储事务。例如,如果帧940描述针对由处理系统920管理的SSD的写操作,则数据984被传送,用于由处理系统920存储在关联的存储驱动器中。
由于帧940原本由处理系统910接收,因此帧940的部分可以被处理系统920变换,以便由处理系统920的协议栈处理。接收对等体/远程节点,即处理系统920,接收帧940并变换诸如NVMe帧的帧940的部分,并且重建NVMe报头,以使得看起来就像它是被直接发送到服务节点一样,以防处理系统920的NVMe堆栈拒绝帧940。这种变换可以包括修改帧940的关联的MAC地址、CRC值、目的地网络地址以及其它报头属性。在其它例子中,处理系统920不变换帧940的部分,而是阻止由于MAC地址、CRC值或目的地网络地址不匹配导致的帧940的拒绝。
以这种方式,处理系统910可以接收针对由另一处理系统920处理的存储驱动器的NVMe帧。处理系统910检查分组940并参考表991,以确定是否经PCIe架构将帧940传送到正确的处理系统。而且,帧被传送到正确处理系统的NVMe层2缓冲器中并且正确的处理系统处理帧,就像是它原本接收到帧而不是处理系统代替地经不同的网络接口接收到帧那样。
在具体的例子中,第二处理系统的网络驱动程序软件被修改为摄入在第一处理系统处接收的帧,就像它在那个第二处理系统处被接收一样。同样,第一处理系统的驱动程序软件也被修改为传送由第一处理系统接收的帧,以便输送到第二处理系统的网络堆栈中。第二处理系统的层2驱动程序软件可以接收由第一处理系统生成的中断,以指示新帧在第二处理系统的关联的层2缓冲器中等待。
图10是示出可用于如本文讨论的PCIe架构的PCIe地址空间1000的图。PCIe地址空间1000是与存储系统的PCIe交换机架构的PCIe地址空间关联的264比特地址空间。PCIe地址空间1000将各种范围映射到特定处理器或处理系统的缓冲器。具体而言,地址范围与诸如处理系统1至N之类的处理系统以及其它处理系统关联。在诸如图1所描述的存储系统中,特定处理器将管理并实例化存储驱动器的总数的特定子集,但是存储事务可以经关联的网络接口被接收到任何处理器中。为了启用负载平衡和冗余,每个处理器或处理系统可以包括可以接收针对包括读和写事务的存储事务的分组的关联网络接口。如果在第一处理器处接收的分组针对不由第一处理器管理的存储驱动器,则这些分组被传送以便由另一处理器处理。
为了便于将分组和关联的数据从一个处理器传送到另一个处理器,PCIe地址空间1000在各种处理系统之间被细分。存储系统中的每个处理系统被指派特定数量的存储驱动器,并且因此被配置为摄入寻址到特定PCIe地址范围的分组和数据。传送分组以便输送到另一处理器的第一处理器不需要知道哪个确切的处理器被配置为处理针对这些分组的存储驱动器。相反,整个存储系统的存储空间在存储系统中的各种处理器之间划分,并且每个单独的处理器被配置为仅对指向PCIe地址空间的特定地址范围的事务作出响应。因此,诸如图1中的存储系统100之类的存储系统,可以具有264字节的总存储空间,或者16艾字节的字节可寻址存储器。
当第一处理器接收到针对诸如读或写操作之类的存储操作的数据分组时,第一处理器确定包括在数据分组中的存储地址是否用于由第一处理器管理的地址范围。如果数据分组指示由第一处理器管理的存储地址,则第一处理器处理存储操作,诸如通过传送写数据以便存储在由第一处理器管理的存储驱动器中或者通过发起针对由第一处理器管理的存储驱动器的读操作。如果数据分组指示由第二处理器管理的存储地址,则第一处理器仅通过到PCIe地址空间1000的映射来将数据分组传送到地址。被配置为处理针对在数据分组中指示的那些存储地址的存储操作的特定处理器将被配置为接收传送到关联的PCIe地址范围的任何数据,并且作为响应处理针对由那个特定处理器管理的存储驱动器的存储操作。第一处理器不需要知道哪个特定处理器管理特定存储驱动器,而是仅将针对存储事务的数据分组传送到特定PCIe地址,其被自动路由到正确的处理器作进一步处理。从接收分组的处理器的角度看,PCIe地址空间包括它管理的地址范围和它不管理的地址范围。
而且,每个处理器可以将其地址空间细分为用于系统的其它处理器的缓冲区空间。例如,处理器1可以具有第一地址范围,但是当处理器2向处理器1传送数据时,处理器2使用其自己的身份作为到处理器1的地址空间中的散列(hash)。以这种方式,每个处理器的地址空间被隔离成子空间,其中每个子空间与存储系统中的另一个处理器关联。
在图10中,PCIe地址空间1000在诸如在图1的存储系统100之类的存储系统中的处理器的总数之间被细分。例如,如果存储系统具有12个处理器,则PCIe地址空间1000可以在12个处理器中被细分。其它配置是可能的。PCIe地址空间1000可以被平均地细分、不平均地细分,或者PCIe地址空间1000的部分可以被细分,以及其它配置。由存储系统使用的PCIe地址空间的总量可以对应于由一系列所采用的存储驱动器提供的总可寻址存储空间。例如,如果采用2兆兆字节的存储空间,则PCIe地址空间1000可以具有对应于2兆兆字节存储空间的最大范围并且每个处理器可以具有被分配给它的2兆兆字节存储空间的对应子部分。在还有其它例子中,PCIe地址空间的总量可以不对应于存储系统的总存储空间,并且可以是更小的量并且仅用于为了负载平衡和故障转移故障处理而在各种处理器之间往复移动(shuttling)存储分组。当然,负载平衡和故障转移特征可以在其中PCIe地址空间1000与存储系统的总可寻址存储空间相关的例子中被采用。
对于PCIe地址空间1000中的每个处理器地址空间,执行进一步的细分。具体而言,处理器0和处理器1地址空间1010-1011在图10中示出。处理器0地址空间1010包括被指派给存储系统中每个其它处理器,即处理器1-N的部分。此外,处理器0地址空间1010包括杂项区域,该杂项区域包括用于锁指示符、标记和中断的空间。这些中断可被用来向接收处理器发信号通知数据或分组为处理做好准备。锁和标记空间可被用于处理器之间数据或分组传送期间的握手、发信号(semaphoring)或其它用途。
在操作中,如果处理器0期望将分组传送到处理器1,则处理器0将把分组传送到在处理器1的地址空间1011内为处理器0分配的空间中。这些分组可以经关联的PCIe架构被传送。任何适当的中断或标记都可由处理器0在处理器1地址空间1011的中断/标记/锁空间中设置。处理器1可以检测分组或其它数据在针对处理器0的地址空间中等待并相应地动作,诸如通过发起由处理器0传送到处理器1的地址空间中的分组所指示的存储事务。
如本文所讨论的,存储系统的每个处理器被配置为对特定存储系统的所有存储驱动器具有可见性,诸如通过使用图10中的存储器映射地址空间。但是,每个处理器不管理特定存储系统的所有存储驱动器,而是仅管理总存储驱动器的子集。PCIe前端数据平面被用来在处理器之间交换数据和分组并维持每个处理器对每个存储驱动器的可见性。PCIe后端数据平面被用来向实际存储驱动器和各种管理处理器传送数据并从实际存储驱动器和各种管理处理器传送数据。一个或多个PCIe交换机构成PCIe后端数据平面。针对存储系统的每个处理器执行初始化过程,以允许每个处理器管理存储驱动器的特定子集。通常,对于管理存储驱动器的处理器,处理器执行PCIe发现过程,以找到经PCIe接口连接到处理器的存储驱动器,以初始化或枚举那些存储驱动器。在一些例子中,对于不由处理器管理的存储驱动器,初始化软件欺骗用于那个处理器的枚举过程,使得那个处理器认为PCIe发现过程已经找到了存储系统中的所有存储驱动器。
例如,在启动时或响应于重新配置过程,第一处理器执行对第一处理器要管理和枚举的设备的任何关联的PCIe接口的扫描。但是,在诸如图1所包括的存储系统中,包括许多存储驱动器,并且只有特定的处理器管理总存储驱动器的子集。第一处理器被允许枚举和初始化它要管理的存储驱动器的子集。类似地,其它处理器将枚举和初始化存储驱动器的不同子集。以这种方式,每个处理器可以经由PCIe前端数据平面访问所有的存储驱动器,但是仅物理地管理PCIe后端数据平面上的存储驱动器的子集。因此,可以利用许多不同的处理器来提供大的共享存储空间,其中每个处理器仅管理总存储空间的小的关联部分。
通常,每个处理器将想要枚举和初始化每个处理器经PCIe总线“看到”的所有存储驱动器,这将包括存储系统的所有存储驱动器,因为所有存储驱动器都经由共享的后端PCIe交换机架构连接到所有处理器,诸如在图1中找到的。通过隔离针对每个处理器的后端数据平面初始化过程,即使跨所有处理器采用了共享的前端数据平面PCIe地址空间,存储驱动器也可以在各种处理器之间分配。
当特定处理器发生故障时,由那个特定处理器管理的存储驱动器可被重新指派给另一个处理器用于管理存储事务。初始化过程可以在与发生故障的处理器关联的存储驱动器和替换处理器之间执行,以便用替换处理器枚举那些存储驱动器。除了替换处理器先前可能已经管理的任何地址空间之外,替换处理器还被配置为处理寻址到发生故障的处理器的地址空间的事务。
作为经PCIe接口呈现一个或多个NVMe目标的另一个例子,给出图11。图11是示出存储系统1100的系统图。存储系统1100包括存储空间1101,存储空间1101包括包含在储存器滑轨上的多个存储驱动器,诸如图1的储存器滑轨上的存储驱动器。存储空间1101可以是经图1的一个或多个储存器滑轨110定义的存储空间的例子,但其它配置是可能的。例如,存储空间1101可以在多于一个的储存器滑轨110上被分条、跨越、镜像或并行化。图1的储存器滑轨110可以包括多于一个的存储空间。但是,在这个例子中,讨论存储空间1101。存储空间1101包括三个逻辑存储单元,诸如逻辑存储单元1102-1104。这些逻辑单元可以定义诸如VLUN、逻辑盘之类的存储单元以及其它逻辑存储布置。但是,在这个例子中,逻辑存储单元1102-1104各自表示NVMe VLUN。
现在转到图11的元件,存储系统1100还包括至少一个处理系统,即处理系统1110。可以包括多于一个的处理系统,诸如在图1中所找到的处理系统。处理系统1110包括至少一个耦合到关联的PCIe接口1112的处理器1111。PCIe接口1112可以经关联的PCIe连接器1114或PCIe交换机1113耦合到诸如服务器1130、1140和1150之类的外部系统。处理系统1110还可以经PCIe交换机1114与包括存储空间1101的存储驱动器通信。PCIe交换机1113可以包括前端数据平面PCIe架构,并且PCIe交换机1114可以包括后端数据平面PCIe架构,尽管可以采用统一的PCIe架构。PCIe交换机1113-1114各自包括允许图11的各种元件之间的通信的PCIe交叉点交换机。
在操作中,处理系统1114可以经外部PCIe接口从外部系统接收存储事务。处理系统1114将存储系统1100的存储资源作为一个或多个NVMe VLUN呈现。在图11的例子中,第一VLUN作为VLUN 1121呈现,第二VLUN作为VLUN 1122呈现,并且第三VLUN作为VLUN 1123给出。
NVMe仿真软件1120被示为经图11的PCIe接口执行NVMe VLUN的呈现和仿真。NVMe仿真软件1120可以包括具有高级虚拟化特征的NVMe抽象层,以便经一个或多个PCIe物理接口呈现一个或多个NVMe目标。NVMe仿真软件1120包括生成和维护。NVMe仿真软件1120包括高级事务队列、用于PCI(MSI-X)中断生成的消息信令中断(Message SignaledInterrupts,MSI)、错误报告、单根虚拟化和共享(SR-IOV)、命名空间、提示、电源管理特征,和安全特征以及其它特征。
这些VLUN可以作为NVMe目标给出,诸如图1中的NVMe目标A或NVMe目标B。NVMe目标可以将存储系统1100的存储资源经PCIe接口作为存储目标呈现,诸如仿真单个存储驱动器。以这种方式,包括存储空间1101的多个存储驱动器可以作为单个NVMe目标经PCIe接口向外部系统呈现。处理系统1110可以接收诸如NVMe帧之类的NVMe存储事务,并且处理这些存储事务,以用于数据在存储空间1101内的存储和检索。
在具体的例子中,服务器1130利用PCIe信令经PCIe链路1161与处理系统1110通过PCIe连接器1115耦合。运送PCIe信令的诸如PCIe直接连接电缆之类的电缆可以被采用。逻辑存储单元1102经PCIe链路1161作为NVMe VLUN 1121向服务器1130给出。服务器1130可以将这个NVMe VLUN 1121作为逻辑存储单元安装并使用这个存储空间作为用于存储和检索数据的大容量存储设备。服务器1130可以经PCIe链路1161发出存储事务,诸如读和写事务。这些存储事务可以包括指示用于要被读或写的数据的地址的一个或多个NVMe帧1131(并且可以包括用于写事务的数据1132)。地址可以包括逻辑块地址或对象标识符以及其它地址或数据标识符。处理系统1110经PCIe链路1161接收这些NVMe帧并处理关联的存储事务。在写例子中,数据1132被存储在存储空间1101中,具体而言是在逻辑存储单元1102中。数据1132可以跨多个存储驱动器被分条或并行化,以便在包括存储空间1101的多个存储驱动器之间存储。
在第二个例子中,服务器1140利用PCIe信令经PCIe链路1162与处理系统1110通过PCIe连接器1115耦合。运送PCIe信令的诸如PCIe直接连接电缆之类的电缆可以被采用。逻辑存储单元1103经PCIe链路1162作为NVMe VLUN 1122向服务器1140呈现。服务器1140可以将这个NVMe VLUN 1122作为逻辑存储单元安装并使用这个存储空间作为用于存储和检索数据的大容量存储设备。在一些例子中,服务器1140向VLUN 1122指派驱动器字母(letter)。服务器1140可以经PCIe链路1162发出诸如读和写事务之类的存储事务。这些存储事务可以包括指示用于要被读或写的数据的地址的一个或多个NVMe帧1141(并且可以包括用于写事务的数据1142)。地址可以包括逻辑块地址或对象标识符以及其它地址或数据标识符。处理系统1110经PCIe链路1162接收这些NVMe帧并处理关联的存储事务。在写例子中,数据1142被存储在存储空间1101中,具体而言是在逻辑存储单元1103中。数据1142可以跨多个存储驱动器被分条或并行化,以便在包括存储空间1101的多个存储驱动器之间存储。
在第三个例子中,服务器1150利用PCIe信令经PCIe链路1163与处理系统1110通过PCIe交换机1113耦合。外部连接器和运送PCIe信令的电缆(诸如PCIe直接连接电缆之类)可以被采用。逻辑存储单元1104经PCIe链路1163作为NVMe VLUN 1123向服务器1150呈现。服务器1150可以将这个NVMe VLUN 1123作为逻辑存储单元安装并使用这个存储空间作为用于存储和检索数据的大容量存储设备。在一些例子中,服务器1150向VLUN 1123指派驱动器字母。服务器1150可以经PCIe链路1163发出诸如读和写事务之类的存储事务。这些存储事务可以包括指示用于要被读或写的数据的地址的一个或多个NVMe帧1151(并且可以包括用于写事务的数据1152)。地址可以包括逻辑块地址或对象标识符以及其它地址或数据标识符。处理系统1110经PCIe链路1163接收这些NVMe帧并处理关联的存储事务。在写例子中,数据1152被存储在存储空间1101中,具体而言是在逻辑存储单元1104中。数据1152可以跨多个存储驱动器被分条或并行化,以便在包括存储空间1101的多个存储驱动器之间存储。
图12是示出存储系统1200的系统图。存储系统1200包括存储空间1201,存储空间1201包括储存器滑轨上包含的多个存储驱动器。存储空间1201可以是在图1的一个或多个储存器滑轨110上定义的存储空间的例子,但其它配置是可能的。图1的储存器滑轨110可以包括多于一个的存储空间。但是,在这个例子中,讨论存储空间1201。存储空间1201包括一个或多个逻辑存储单元,诸如逻辑存储单元1202。这些逻辑单元可以定义诸如逻辑单元号(LUN)、VLUN、逻辑盘以及其它逻辑存储布置之类的存储单元。但是,在这个例子中,逻辑存储单元1202表示iSCSI LUN。
一些网络存储协议,诸如iSCSI,允许将目的地地址分组成逻辑单元。例如,iSCSI允许可以将多于一个的IP地址与单个目标关联的门户组。目标是特定的处理器或特定的网络接口,即使那个接口或处理器具有与其关联的多于一个的网络地址。但是,图12示出了利用多个处理器或处理节点形成针对网络存储协议的目的地地址的逻辑分组,所述多个处理器或处理节点共享经多个存储设备散布的公共存储空间。在图12中,许多处理器可以包括在门户组中,其中每个处理器被配置为接收针对任何其它处理器的网络存储流量并且相应地将流量路由到正确的处理器,即使单个iSCSI门户组被呈现给iSCSI启动器。在具体的例子中,PCIe架构在多个处理器、网络接口和存储驱动器之间采用。这些概念可以应用于除iSCSI以外的网络存储协议。
现在转到图12的元件,存储系统1200还包括多个处理系统,即,处理系统1210、1220、1230、1240和1250。每个处理系统耦合到关联的网络接口,即网络接口1212、1222、1232、1242和1252。每个网络接口可以经关联的PCIe总线或PCIe交换机与处理系统耦合,处理系统可以包括经PCIe交换机1260-1263进行通信。PCIe交换机1260-1263包括允许在各种处理系统之间通信的PCIe交叉点交换机。PCIe交换机1260-1263包括前端数据平面PCIe架构。每个处理系统还可以经PCIe交换机1265-1269其中一些与包括存储空间1201的存储驱动器通信。PCIe交换机1265-1269包括后端数据平面PCIe架构。如本文所提到的,在替代例中,可以采用在前端和后端数据平面当中共享相同PCIe交换机的统一PCIe架构。
存储空间1201由一个或多个存储驱动器组成,并且每个处理系统管理针对多个存储驱动器的子集的存储事务。但是,存储系统1200中的任何处理系统可以从外部系统经其关联的网络接口接收存储事务。虽然每个不同的网络接口1212、1222、1232、1242和1252具有与其关联的不同IP地址,但是所有这些不同的网络接口都被一起分组到iSCSI门户组中。这个iSCSI门户组在每个处理系统中由IQN_7指示。IQN_7仅仅是示例门户组指派,并且可以采用其它门户组指派。iSCSI门户组可被用来利用iSCSI协议将多于一个的IP地址与单个目标-启动器关系关联。这单个目标可被用来经任何网络接口1212、1222、1232、1242和1252接收针对存储事务的分组。但是,在这个例子中,每个网络接口与不同的处理系统关联。
为了允许不同的处理系统接收用于iSCSI存储事务的分组但仍然具有共享的存储空间(即LUN 1202),可以采用以下过程。首先,多个处理系统,即处理系统1210、1220、1230、1240和1250,被分组到iSCSI门户组IQN_7中,门户组IQN_7将LUN 1202识别为经IP地址1270-1274中的任何IP地址可达。IP地址1270-1274中每一个与系统1200中的不同网络接口关联。iSCSI启动器1205可以利用门户组IQN_7经IP地址1270-1274中的任何IP地址到达LUN1202。每个处理系统包括一个或多个中央处理单元(CPU),并经包括PCIe交换机1260-1263和任何关联的PCIe链路的前端数据平面PCIe架构耦合。如果iSCSI存储事务经任何网络接口被接收,则关联的处理系统可以路由存储事务,以便由另一处理系统利用前端数据平面PCIe架构适当地处理。然后,最终接收该存储事务的适当的处理系统经关联的后端数据平面PCIe交换机用关联的包括存储空间1201的存储驱动器发起(一个或多个)存储操作。
有利地,可以在iSCSI门户组中采用多个独立的处理系统(或处理节点)。这些独立处理系统中的任何处理系统可以接收如果被指向由接收处理系统管理的存储驱动器的话则接收处理系统可以处理的iSCSI存储事务。此外,如果接收处理系统不管理与存储事务关联的存储驱动器,则这些独立的处理系统中的任何处理系统可以进一步将iSCSI存储事务传送到另一处理系统。存储事务通常指示诸如写或读地址之类的存储地址,并且这个地址可以由接收处理系统使用来确定它是否应当处理存储事务或者它是否应当经前端数据平面PCIe架构将存储事务传送到另一个处理系统。采用PCIe地址空间来在LUN1202内隔离每个处理系统之间的存储,并且这个PCIe地址空间还被用来在各种处理系统之间传送存储事务。每个处理系统将具有PCIe地址空间的关联的地址范围,在处理系统之间的存储事务的传送期间,处理系统对这个地址范围作出响应。因此,单个共享PCIe地址空间在包括PCIe交换机1260-1263和关联的PCIe链路的PCIe架构上被采用。
在具体的例子中,包括写数据1204的分组1203由iSCSI启动器1205传送,以存储在LUN 1202中。这些分组1203被寻址到IP地址1270-1274中的任何IP地址并被指向由IQN_7指示的门户组。然后,无论存储系统1200中的哪个处理系统接收分组1203,都确定哪个处理系统应当实际管理写数据1204到LUN 1202中的存储。接收分组1203的处理系统识别用于写数据1204的对应写地址。这个写地址可被用来选择哪个处理系统应当处理存储事务。包括存储空间1201和LUN 1202的各个存储驱动器各自由特定的处理系统枚举和管理。PCIe地址空间可以与可以指示哪个处理系统应处理存储事务的LUN 1202的地址空间关联。在第一个例子中,接收分组1203的处理系统处理写事务,因为它识别出它管理与写数据1204关联的存储驱动器。在这第一个例子中,然后接收处理系统发起由分组1203指示的一个或多个写,以便将数据1204写入LUN 1202。这一个或多个写经包括在系统1200的后端数据平面中的PCIe交换机和关联的PCIe链路被执行。在第二个例子中,接收分组1203的处理系统不处理写事务,因为它识别出它不管理与写数据1204关联的存储驱动器。然后,接收处理系统识别应当处理写事务的处理系统,并利用前端数据平面的关联的PCIe交换机和PCIe链路经前端数据平面传送分组1203。一旦适当的处理系统接收到分组1203,该处理系统就发起由分组1203指示的一个或多个写,以便将数据1204写入LUN 1202中。这一个或多个写经包括在系统1200的后端数据平面中的PCIe交换机和关联的PCIe链路被执行。
图13是示出存储系统1300的系统图。图13包括图6、7和8中所指示的元件以及附加元件。图13示出了处理模块630和730之间经I/O模块620和625中任一个的控制平面交叉连接。如上面所讨论的,特定的处理器可以管理特定的I/O滑轨或SSD驱动器集合。但是,与针对特定SSD驱动器的存储事务相关的数据分组可以经接口模块640、641、740和741中任何接口模块来接收。各自经各种TCP/IP链路进行通信的多个接口模块的这种配置允许负载平衡、从外部系统接收事务的高度并行化,以及经包括在系统1300中的任何网络接口接收针对任何SSD驱动器的流量。特定的处理器通常管理PCIe后端数据平面上针对特定SSD的流量,诸如针对向特定储存器滑轨的读和写事务之类,但是存储事务可以由任何处理器经网络接口接收。图13中描述的操作在图14A和14B中进一步详细描述,这将在下面讨论。
存储系统1300包括储存器滑轨610和615、I/O模块620和625、处理模块630、接口模块640-641、储存器滑轨710和715、处理模块730,及接口模块740-741。储存器滑轨610包括SSD驱动器611和PCIe交换机612。储存器滑轨615包括SSD驱动器616和PCIe交换机617。储存器滑轨710包括SSD驱动器711和PCIe交换机712。储存器滑轨715包括SSD驱动器716和PCIe交换机717。虽然四个储存器滑轨包括在图13中,但是应当理解,可以包括任何数量的储存器滑轨。而且,虽然在每个储存器滑轨中包括四个SSD驱动器,但是应当理解,可以包括任何数量的SSD驱动器。
I/O模块620包括PCIe交换机621-622,并且I/O模块625包括PCIe交换机626-627。虽然在图13中为每个I/O模块示出了两个PCIe交换机,但是应当理解,可以包括任何数量的PCIe交换机。处理模块630包括处理器631-632和PCIe交换机633-634,并且可以如上面所讨论的包括进一步的元件。处理模块730包括处理器731-732和PCIe交换机733-734,并且如上面所讨论的可以包括进一步的元件。处理器632经以太网链路840与以太网交换机833通信,并且经以太网链路842与以太网交换机832通信。处理器732经以太网链路841与以太网交换机833通信并且经以太网链路844与以太网交换机832通信。处理器631和处理器731还经以太网交换机832-833通信,但是为了清晰,关联的链路在图13中被省略了。
接口模块640经至少两个接口,即针对TCP/IP或iSCSI流量的网络接口642和处理模块PCIe接口656进行通信。接口模块641经至少两个接口,即针对TCP/IP或iSCSI流量的网络接口645和处理模块PCIe接口657进行通信。接口模块740经至少两个接口,即针对TCP/IP或iSCSI流量的网络接口742和处理模块PCIe接口756进行通信。接口模块741经至少两个接口,即针对TCP/IP或iSCSI流量的网络接口745和处理模块PCIe接口757进行通信。
处理模块630经PCIe链路654和655与储存器滑轨610、615、710和715中的任何储存器滑轨进行通信,这些PCIe链路通过关联的I/O模块上的关联的PCIe交换机切换。处理模块730经PCIe链路754和755与储存器滑轨610、615、710和715中的任何储存器滑轨进行通信,这些PCIe链路通过关联的I/O模块上关联的PCIe交换机切换。储存器滑轨610经相应的PCIe链路650-651与不同的I/O模块通信。储存器滑轨615经相应的PCIe链路652-653与不同的I/O模块通信。储存器滑轨710经相应的PCIe链路750-751与不同的I/O模块通信。存储滑块715经相应的PCIe链路752-753与不同的I/O模块通信。图13的元件通过诸如本文所讨论的那些I/O模块,构成在处理模块和储存器滑轨之间具有多条冗余PCIe链路的存储系统。
本文描述的存储系统包括由多个PCIe交换机元件连同关联的PCIe链路组成的交换机架构。这个交换机架构可以包括本文讨论的PCIe交换机中的任何PCIe交换机,并且可被划分到后端数据平面、前端数据平面和控制平面中。控制平面被用来传送管理信息、处理器间控制通信以及其它控制信息。后端数据平面被用来向储存器滑轨和从储存器滑轨传送数据。前端数据平面被用来向外部接口和从外部接口传送数据,并用于在处理模块之间传送用户数据。当采用多个处理器时,交换机架构被预先配置为具有故障转移路径。如果针对特定处理器的通信失败,则硬件自动切换到另一个处理器。此外,在每个IO模块上存在管理处理器,其可被指示根据需要动态地改变PCIe路径。与故障转移所采用的相同类型的机制被用来为架构的部件中的每个部件形成冗余路径。
除了硬件提供的路径之外,还存在经由前端和后端路由的基于软件的附加冗余层。存储系统中的处理器知道被监视的处理器的当前状态并且可以随着需要确定到储存器滑轨的附加路线。硬件为故障转移和冗余提供最小延时的重新路由。而软件增加了也可被改变的冗余路径的级别。(即,当硬件路径发生故障时,软件可以为另一故障情况设置下一冗余路径)。在每个处理器中包括一个表,该表告诉该处理器正常情况下拥有哪个SSD以及在存在故障转移情况时它支持哪个SSD。在故障转移的情况中,随着切换在PCIe总线上生成中断。被指派给发生故障的处理器的(一个或多个)驱动器的发现过程被发起。这之后是处理器将发现的与故障转移表匹配的(一个或多个)SSD填入其活动表中。
在操作中,处理模块的特定处理器将被配置为管理或“拥有”各种储存器滑轨上的特定SSD驱动器。例如,处理器631可被配置为管理储存器滑轨610的SSD驱动器611,而处理器632可被配置为管理储存器滑轨615的SSD驱动器616。在另一个例子中,处理器731可被配置为管理储存器滑轨710的SSD驱动器711,而处理器732可被配置为管理储存器滑轨715的SSD驱动器716。其它组合可以被使用,包括由处理器管理特定储存器滑轨的SSD驱动器的子集和由另一个处理器管理该特定储存器滑轨的剩余SSD驱动器。管理SSD驱动器包括处理器初始化SSD驱动器并处理针对SSD驱动器的读、写或者其它文件或对象事务。每个处理器可以参考存储在非临时性计算机可读介质上的数据结构,以确定哪些SSD驱动器将被管理。
但是,一旦特定处理器已被配置为管理特定SSD驱动器,那个处理器就可能在正常操作中经历故障或中断。响应于诸如处理器631的处理器故障,另一个处理器可被配置为接管先前由发生故障的处理器631管理的SSD驱动器的管理。为了接管先前由发生故障的处理器631管理的SSD驱动器的管理,另一个处理器可以初始化先前由发生故障的处理器631管理的SSD驱动器并开始管理针对那些SSD驱动器的诸如读和写操作之类的文件操作。在另一个例子中,响应于诸如处理器631的处理器故障,另一个处理模块上的另一个处理器732可被配置为接管先前由发生故障的处理器631管理的SSD驱动器的管理。处理器732可以初始化先前由发生故障的处理器631管理的SSD驱动器并开始管理针对那些SSD驱动器的诸如读和写操作之类的文件操作。处理器可以包括故障转移表,该表指示在另一处理器发生故障的情况中处理器对其进行管理的SSD驱动器。故障转移表还可以指示处理器对其进行监视以确定是否发生了任何故障的一个或多个处理器。
例如,处理器632可以利用不同的方法监视另一个处理器,诸如处理器631。在第一个例子中,处理器632向处理器631发送定期的消息并等待来自处理器631的响应消息。如果响应消息未能在预定量的时间内进入,则处理器632可以确定处理器631已经发生故障。定期的消息可以包括通过处理器之间的一个或多个网络堆栈发送的探测分组,诸如经处理器631和632可以通信的网络接口。在另一个例子中,在处理器632中针对处理器631维护寄存器或位的集合,所述寄存器或位由处理器631设置或重置。如果与处理器631关联的寄存器或位没有在预定量的时间内被正确设置或重置,则处理器632可以确定处理器631已经发生故障。虽然在图13中示出了两个处理器彼此监视,但在其它例子中,可以包括更大量的处理器。这种更大量的处理器可被配置为由所有其它处理器、仅一个其它处理器(双模式)或两个其它处理器(三模式)针对故障进行监视。被监视和监视处理器的任意组合可以被采用。
一旦处理器已经被确定为发生故障,诸如处理器632的监视处理器就可被配置为发起发生故障的处理器的重新启动、重启或电力循环。如果发生故障的处理器在重新启动、重启或电力循环之后恢复在线并运行,则被过渡到监视处理器的那些SSD驱动器可以由先前发生故障的处理器重新管理。
为了处理原本意在针对发生故障的处理器的传入的数据分组,另一个处理器可以从发生故障的处理器继承诸如TCP/IP连接之类的网络连接状态,并且随后处理原本由发生故障的处理器处理的网络流量。在前端(每个操作系统(OS)上的TCP/IP堆栈)上,所连接的外部iSCSI客户端无缝地迁移到新的拥有者节点。这种迁移不需要断开连接和重新连接。从前端的角度来看,当客户端发起TCP连接(3次握手)时的每个iSCSI连接,对TCP堆栈的OS增强包括将连接状态(即,源/目的地IP地址和源/目的地端口ID)传播到集群中的所有处理模块。然后,集群中的处理模块通过在其本地堆栈上也创建连接的套接字来欺骗其本地TCP/IP堆栈。这些套接字被创建并准备就绪,但在故障转移之前始终不会使用。当除了先前描述的所有步骤之外还发起了节点故障转移情况时,假设有TCP连接所有权的节点启用先前连接到发生事故的节点的预连接的客户端连接。关于这个过程的进一步细节在下面的图3-5中描述。
在其它例子中,操作系统后端软件使指向发生事故的节点的层2(以太网)路由表条目失效,并生成指向新拥有者对等体的新层2(以太网)路由表条目,作为用于访问所传送的SSD上包含的SSD/LBA的IO的目的地。这些表被传播到集群中的所有节点。现在,传入的iSCSI IO在层2被正确地路由到新拥有者节点。
作为具体的例子,图13示出了一个示例故障转移过程。在图13中,在处理器632和外部iSCSI节点(诸如最终用户设备或其它计算机系统)之间建立网络连接。网络连接通常由针对每个端点的至少网络地址和网络端口定义,诸如接口模块641以及外部iSCSI节点的网络接口卡的IP地址和端口。在一些例子中,网络连接可以被称为“套接字”。一旦建立了这种网络连接,处理器632就将关于网络连接的信息放在诸如连接表1380的数据结构中。连接表1380可以列出处理器632正在处理的若干网络连接。网络连接可被用来处理外部iSCSI节点和诸如在储存器滑轨616上找到的存储驱动器之间的存储事务,诸如存储事务1394。
响应于建立网络连接,处理器632还将关于网络连接的信息传播到系统1300中的更多处理模块或处理器。例如,连接状态传送1393指示连接信息经图13中的以太网控制平面链路840-844从连接表1380到处理器732的传送。除了从其它处理器或处理模块接收的其它连接信息之外,处理器732还可以将这种连接信息存储在连接表1381中。
如果处理器632正常操作,则针对关联的网络连接的存储事务由处理器632处理。但是,如果处理器632由于诸如故障、挂起或其它问题变得无响应,则另一处理器可以继承原本由处理器632建立的网络连接。例如,如上所述,处理器732可被配置为监视处理器632,并确定处理器632何时发生故障。响应于处理器632的故障,处理器732可以继承与外部iSCSI节点的任何TCP/IP连接并且随后处理由那些外部iSCSI节点发起的任何存储事务。这些存储事务可以是针对最初由处理器632管理的存储驱动器(诸如在储存器滑轨615上找到)的存储事务。因此,除了处理器732可能已经在管理的任何存储驱动器之外,处理器732还可以承担(assume)储存器滑轨615上的关联的存储驱动器的管理并处理针对那些存储驱动器的后续存储事务。
作为从一个处理器到另一个处理器的TCP/IP连接状态故障转移的进一步的例子,给出图14A、14B和15。图14A和14B是示出系统1400的系统图,该系统可以包括如图13中找到的公共元件,但变型是可能的。图15是示出操作系统1400的方法的流程图。图15的操作在下面在括号中引用。
系统1400包括处理系统1410、外部系统1490、处理系统1420和以太网交换机1430。处理系统1410包括网络接口1411和连接状态信息1412。处理系统1420包括网络接口1421和连接状态信息1422。处理系统1410和1420可以包括更多元件,诸如处理器、存储系统、软件和本文针对处理器和处理模块描述的其它元件。网络接口1411和1421包括网络接口装备和收发器,连同任何关联的软件驱动器和协议栈,诸如TCP/IP栈之类。
在操作中,处理系统1410经分组网络链路与外部系统1490建立网络连接1470(1501)。该网络连接可以包括TCP/IP连接,其可以运输存储事务和与诸如iSCSI之类的更多协议相关的信息。处理系统1410利用至少网络接口1411建立网络连接,网络接口1411在这个例子中具有用于网络连接的至少一个关联的IP地址和端口,即IP地址1460和端口1461。外部系统1490具有用于网络连接的至少一个关联的IP地址和端口,即IP地址1450和端口1451。处理系统1410记录关于在处理系统1410和外部系统1490之间建立的网络连接的网络连接信息,其指示IP地址和端口的组合。处理系统1410可以将网络连接信息存储在诸如连接状态信息1412之类的数据结构中。在连接状态信息表1480中指示该网络连接信息。表1480将网络连接1470列出为包括源IP地址和端口1450、145以及目的地IP地址和端口1460、1461。这种信息的不同组合可被用来表示网络连接,连同附加的或不同的信息。
处理系统1410还将描述网络连接1470的信息(诸如在表1480中找到的信息)传播或分发到系统300中的其它处理系统(1502)。这些其它处理系统被称为监视对等体,并且可以包括一个或多个处理器。通常,2-3个处理器被用作对于任何其它处理器的对等体,但变型是可能的,包括直到“n”个处理器。处理系统1410经控制平面传播这个网络连接信息,控制平面包括至少以太网交换机1430连同任何关联的以太网链路。虽然仅处理系统1420被示为附加的处理系统,但是应当理解,可以包括许多处理模块或处理系统,诸如在图13中所找到的。连接状态信息1480由处理系统1420接收并存储在诸如连接状态信息1422之类的数据结构中。更多处理系统可以接收并存储这个连接状态信息。在这个例子中,处理系统1420或网络接口1421与至少网络地址1465和端口1466关联。
对等处理系统1420建立不活动(inactive)网络连接,该不活动网络连接与由处理系统1410建立的连接1470(即处理系统1410和外部系统1490之间的连接或套接字)相同(1511)。但是,处理系统1420将这个网络连接维持为“空闲”或“不活动”连接并且不经这个连接引导任何网络流量。更多的处理系统也可以建立这些相同的套接字或连接。仅处理系统1410经这个连接引导网络流量,至少直到处理系统1410发生故障。
外部系统1490可以对存储在关联的存储驱动器中的数据发起诸如读和写之类的存储事务。分组1401表示这些存储事务,并且可以指示存储地址、写数据和其它信息。处理系统1410管理一个或多个存储驱动器并且向这些存储驱动器传送或从这些存储驱动器接收数据1402,诸如经PCIe接口向如图13中找到的储存器滑轨传送/从如图13中找到的储存器滑轨接收数据1402。
在图14A和14B中,处理系统1420监视处理系统1410(1503)。在这个例子中,处理系统1420是处理系统1410的监视对等体。处理系统1420可以检测何时处理系统1410已挂起或发生故障(1504),并且处理系统1420可以继承原本由处理系统1410建立并管理的网络连接1470。首先,处理系统1420禁用针对由处理系统1410建立的连接1470的分组的任何接收(1505)。具体而言,处理系统1420不将针对连接1470的任何分组传递到网络堆栈。这些分组可以被丢弃并且不对其作出响应,并且由处理系统1420的关联的IP栈接收到的针对连接1470的任何分组都被丢弃。
与处理系统1420关联的MAC地址被建立为与继承的连接关联(1506)。ARP消息经处理系统1420的子网被广播,以便将发生事故的节点(处理系统1410)的IP地址1460与处理系统1420的MAC地址关联。在采用IP协议的网络系统中,地址解析协议(ARP)消息可被用来将IP地址解析成关联的介质访问控制(MAC)地址。网络路由器和其它网络节点可以采用列出IP地址和MAC地址之间的关系的ARP表。IP地址通常表示层3地址,而MAC地址通常表示诸如以太网之类的层2地址。
探测分组由处理系统1420发送,以输送到外部系统1490,来建立针对与继承的连接关联的分组的正确的确认和次序(ack/seq)计数(1507),并且这个探测分组过程在下面更详细地描述。探测分组可以包括在TCP报头的确认和次序部分中被清零的计数。TCP操作包括“有状态”(stateful)操作,其中当前分组状态由TCP网络连接的端点维护。TCP状态包括针对每个端点的地址和端口信息以及针对在端点之间交换的流量的分组计数器,以保证丢失的分组被考虑并重发。在本文讨论的例子中,即使当端点之一发生故障时TCP状态也被维持,即处理连接的处理器或网络接口。在有状态TCP网络连接发起时,各种分组计数器被设置为诸如“0”的初始值,并且交换的每个后续分组使计数器递增一。这些计数器嵌入在关联的TCP分组的报头中,并且针对“分组”数和“接收到的确认”数可以包括单独的计数器。如果端点注意到分组计数器与确认序列次序不一致,诸如当分组丢弃或丢失时,则发起分组重发过程,这确保丢失的分组在端点之间被正确地输送。
有利地,代替对等处理系统保持对在通信会话期间可快速改变的连接1470的状态ack/seq计数的跟踪,探测分组允许在从处理系统1410到处理系统1420的故障转移时从外部系统1490得出ack/seq状态信息。在当连接1470在处理系统1410上活动(active)时期间,ack/seq状态信息不需要由对等处理系统存储或维持。
当新处理系统(诸如处理系统1420)尝试从发生故障的处理系统(诸如处理系统1410)接管或继承网络连接时,处理系统1420可能不具有恢复通信所需的所有信息。例如,虽然处理系统1420可能已经记录了包括针对连接1470的IP地址和端口号的网络连接状态信息1480,但是处理系统1420不知道针对处理系统1410和外部系统1490之间的网络连接的当前分组计数或分组计数器信息。响应于处理系统1410发生故障,处理系统1420可以发送具有诸如“0”之类的无意义计数器值的确认(ACK)分组,以输送到外部系统1490。这个ACK分组可被称为“探测”分组。
处理系统1420,即监视对等体,启用针对连接1470接收的分组的接收和处理(1508)。外部系统1490接收探测分组并检测到关联的分组计数器失序或具有不正确的编号,并且作为响应在响应分组中传送包括分组和确认计数器的当前值的连接状态。外部系统1490用正确的确认和次序计数来响应探测分组(1509)。作为响应,处理系统1420将接收到的ack/seq计数拼接成针对连接1470的状态信息,并用于经连接1470与外部系统1490的后续通信。
一旦处理系统1420已经继承了原本在处理系统1410和外部系统1490之间建立的网络连接,则处理系统1420就可以开始处理针对那个网络连接的存储事务,而无需中断、断开、结束或重新启动那个网络连接(1510)。具体而言,处理系统1420可以继续接收针对原本由处理系统1410处理的存储事务的分组1401,诸如针对与数据1402相关的存储事务和原本由处理系统1410管理的存储驱动器。处理系统1420可以承担(assume)来自发生故障的处理系统1410的IP地址1460和端口1461。处理系统1420可以恢复与外部系统1490的分组1401的传送,就好像处理系统1420是处理系统1410那样,并且无缝地继承发生故障的处理系统1410的网络连接。现在针对连接1470的所有后续iSCSI流量都流向处理节点1420。
在处理系统1410故障期间,对等处理系统1420可以尝试处理系统1410的重启(1512),以尝试恢复处理系统1410的操作。如果处理系统1410恢复,则处理系统1420可以保持从处理系统1410故障转移到处理系统1420的当前连接,或者处理系统1420可以将那个连接转移回处理系统1410。
图16是示出存储系统1600的系统图。存储系统1600示出了垂直堆叠的几个存储外壳,诸如在机架安装外壳系统中。在一些例子中,存储外壳包括3U尺寸的机架安装外壳,但其它尺寸可以被采用。任何数量的存储外壳都可以被包括,并且进一步的存储外壳可以被包括在其它非垂直堆叠配置中或多个机架安装外壳中。
系统1600包括四个示例存储外壳,即,1610、1620、1630和1640。每个存储机柜包括存储系统,诸如在上面图1和图2中所描述的。每个存储外壳示出两个I/O模块,其可以包括如图1-3中找到的I/O模块。每个I/O模块包括至少四个可被用来互连其它存储外壳的I/O模块的外部连接器。例如,存储外壳1610包括两个I/O模块1611。这些I/O模块可以是用户可插入相应的存储外壳,诸如通过滑入和滑出关联的中平面连接器和安装系统。
用于PCIe前端数据平面通信的外部集群互连由多个微型串行连接SCSI(SAS)连接器1612提供,诸如每个I/O模块示出四个微型SAS连接器1612。这些微型SAS连接器可以包括微型SAS插座。布线包括SAS布线1613,其可以包括关联的屏蔽、配线、护套和端接连接器。用于以太网控制平面通信的外部集群互连由多个以太网连接器1614和关联的以太网布线1615提供。这些以太网电缆1615可以直接连接在存储外壳之间,或者可以被路由到图16中未示出的中央以太网交换机。
在这个例子中,每个前端数据平面集群互连连接器和电缆不运送SAS信令。相反,这些部件在每个关联的I/O模块的交叉点交换机之间运送PCIe信令。因此,每个存储外壳通过在微型SAS连接器和微型SAS布线上运送的PCIe信令进行互连。在这个例子中,采用x16PCIe信令,但是可以采用其它PCIe宽度。由于每个存储外壳采用八个x16PCIe信令途径,因此为每个存储外壳提供128个PCIe信令通道。这可以产生具有每秒32兆兆字节的吞吐量的至少32拍字节(petabyte)的可寻址存储空间。此外,在这个前端数据平面PCIe集群互连中不需要诸如以太网交换机之类的集中式交换元件,并且针对每个存储外壳的流量构成系统范围的“架构”,集群的各种元件可以在该架构上通信。
集群中的任何处理器可以经关联的外部接口(诸如TCP/IP之类)接收针对涉及任何存储外壳中的任何存储驱动器的存储事务的分组。接收处理器可以经PCIe架构将这些分组路由到管理存储驱动器的特定集合的管理处理器。包括系统1600的整个集群可以作为诸如逻辑存储单元之类的单个存储实体呈现,并且通过使用集群范围的PCIe架构,任何处理器都对整个集群中的任何存储驱动器具有存储器映射可见性。为了将存储事务路由到任何其它处理器,接收处理器可以执行到与管理处理器关联的存储器位置的PCIe事务,即使管理处理器在接收处理器的存储外壳外部并且与那个另一存储外壳的不同I/O模块关联。流量经PCIe架构由关联的I/O模块的关联的交叉点交换机和要由适当处理器处理的任意外部PCIe链路自动路由。集群的每个处理器包括指示哪个地址与集群的整个逻辑存储单元的具体存储位置关联的路由表。
例如,存储外壳1610的第一处理器经关联的网络接口从最终用户设备接收写事务。这个第一处理器检查与第一处理器关联的路由表,以识别与写事务关联的PCIe地址。写事务可以指示用于写事务的存储地址,其可以包括由系统1600向最终用户呈现的逻辑存储单元(诸如经一个或多个网络接口呈现的iSCSI存储设备)的存储地址。然后,第一处理器可以将存储事务传送到与写事务关联的PCIe地址。在这个例子中,PCIe架构包括多个存储外壳,并且因此PCIe地址可以与系统1600中的任何处理器关联,诸如包括在存储外壳1620中的第二处理器。外壳1610和外壳1620的I/O模块处理PCIe事务,以确保第二处理器接收存储事务。一旦第二处理器接收到存储事务,第二处理器就确定它处理针对由存该储事务指示的特定存储驱动器的存储事务,并将关联的数据写到存储驱动器以完成存储事务。以这种方式,任何存储事务可以被由系统1600构成的集群中的任何处理器接收,并且接收处理器可以将那个存储事务跨管理与存储事务关联的存储驱动器的集群输送到另一个处理器。微型SAS连接器和布线被用来在各种存储外壳的I/O模块之间运送PCIe信令。
为了进一步示出本文所讨论的存储系统的后端数据平面,给出图17。图17是示出存储系统1700的系统图。存储系统1700包括在本文的许多例子中描述的存储系统的许多元件。但是,存储系统1700集中于处理系统中各种储存器滑轨的管理和识别,诸如储存器滑轨1710和1715以及其它储存器滑轨。管理处理器1725包括在I/O模块1720中。管理处理器1725经关联的USB接口,即USB接口1751和1752与储存器滑轨通信。管理处理器1725经以太网总线1750与存储系统的各种处理系统或处理节点通信,其可以包括网络交换机1726。这种USB/以太网通信系统允许各种储存器滑轨对存储系统的任何处理器或处理节点的初始化、控制和状态报告。图17中描述的USB/I2C/以太网接口可以包括本文讨论的用于由存储系统的主处理器或处理节点对存储系统中各种储存器滑轨进行管理和监视的各种“边带”接口。
例如,图17的处理器或处理节点中任何一个可以经这种以太网总线1750接收关于储存器滑轨中的任何储存器滑轨的状态信息。管理处理器1725经USB接口监视和收集针对每个储存器滑轨的状态信息、操作统计以及其它信息。每个储存器滑轨包括可以由管理处理器1725经关联的USB接口访问的至少一个处理器(1713、1718)。
储存器滑轨上的每个处理器可以与关联的PCIe交换机接口连接,以便接收操作统计、状态信息或操作条件以及其它信息。在每个储存器滑轨上收集的这种信息可以由I/O模块上关联的处理器(诸如管理处理器1725)进一步在一个或多个I/O模块中累积。这种信息可以存储在与管理处理器1725关联的计算机可读存储元件中。为了存储系统中的冗余、故障转移保护和负载平衡,关于每个储存器滑轨的信息可以由一个或多个I/O模块累积。储存器滑轨上的处理器可以经由I2C接口以及其它基于寄存器的接口与储存器滑轨的关联的PCIe交换机接口连接。每个PCIe交换机可以包括可以经关联的接口(诸如图17中的接口1714和1719之类)被访问和修改的外部可访问的信息和寄存器。接口1714和1719可以包括I2C接口以及其它接口。
当存储系统操作时,使用统计以及其它信息由储存器滑轨处理器监视,并由任意I/O模块上的进一步的处理器传送或请求。这种使用情况信息可以由主处理模块或处理器经以太网总线1750进一步传送或请求,这可被用来更改或修改存储系统的操作或者用于对其它外部系统的使用情况统计进行监视和报告。
除了存储系统的状态信息和操作统计的监视之外,图17中描述的边带接口还可被用于存储系统的各种储存器滑轨的初始化以及其它初始化特征。具体而言,在诸如存储系统1700的存储系统上电时,管理处理器1725可以经关联的USB接口向每个储存器滑轨指派唯一标识符。这些唯一标识符可被用来识别每个储存器滑轨,用于由主处理器检索状态信息和操作统计。这些标识符可以经以太网总线1750报告给主处理器。标识符可以包括16位标识符,其与任何64位PCIe标识符结合或作为替代使用用于储存器滑轨。这些标识符可以对应于储存器滑轨的物理位置,诸如背板或中平面上的物理槽,以及在存储单元内的其它物理位置。
现在,将讨论针对后端数据平面的初始化过程。每个处理器,诸如本文讨论的各种处理模块,仅管理一定数量的存储驱动器,诸如在储存器滑轨上找到的。本文采用的PCIe交换机可以在特定处理器和储存器滑轨之间建立隔离的连接。例如,图17的处理模块1701可以最初由PCIe交换机1721配置为经PCIe链路1740和1742与储存器滑轨1710通信。同样,图17的处理模块1702可以最初由PCIe交换机1721配置为经PCIe链路1741和1743与储存器滑轨1715通信。如果处理模块1702发生故障或变得不响应,则PCIe交换机1721可被配置为将用于储存器滑轨1715的连接故障转移到处理模块1701或另一个处理模块。这在图17中可以被看作用于处理模块1701的初始配置1760和故障转移配置1761。
PCIe交换机1721可以由管理处理器1725管理,诸如经可以包括I2C、EEPROM接口、串行接口、并联总线或其它接口的管理接口。在诸如系统1700的存储系统上电时,管理处理器1725可以确保PCIe交换机1721不在任何处理模块和任何储存器滑轨之间提供连接。管理处理器1725可以选择性地使单独PCIe交换机上电(诸如当如图1中所示采用许多PCIe交换机时)并扫描附接的储存器滑轨。作为替代,管理处理器1725可以通过使每个储存器滑轨上的选择性识别电路上电来扫描附接的储存器滑轨。还在其它例子中,每个储存器滑轨包含上拉引脚,其指示关联的储存器滑轨何时已插入中平面连接器。管理处理器1725可以检测哪些储存器滑轨存在并且利用PCIe交换机1721在各种处理模块和各种储存器滑轨之间建立连接。
在一些例子中,故障转移情况伴随着PCIe交换机1721内寄存器或配置参数的重新编程,并且管理处理器1725可被配置为执行这种重新编程。管理处理器1725还可以经以太网接口1750由任何处理模块(诸如处理模块1701或1702之类)指示,以改变或更改处理模块和储存器滑轨之间的PCIe连接。
在另一个例子中,PCIe交换机1721中的一些可以最初被编程为用于在由每个PCIe交换机1721处理的各种PCIe接口之间建立连接的上电或“缺省”配置。故障转移配置还可以由管理处理器1725预先建立。在检测到处理模块发生故障的情况中,管理处理器1725可以建立故障转移配置。故障转移和缺省配置可以在与管理处理器1725关联的存储元件中的诸如表之类的数据结构中被维护。可以通过经I2C接口改变关联的PCIe交换机的寄存器或配置信息来在PCIe交换机中建立故障转移配置。在一些例子中,可能需要关联的PCIe交换机的重启。一旦建立了故障转移连接,则新近连接到储存器滑轨的处理模块就可以执行与储存器滑轨上的存储驱动器的初始化过程,诸如通过执行PCIe枚举过程。
在针对整个存储系统的启动过程期间,管理处理器1725可被配置为检测存储系统中的所有存储驱动器和储存器滑轨并且经以太网接口1750将这个信息报告给系统的每个处理模块。每个处理模块单独地或一致地可被配置为确定哪些储存器滑轨将被分配给哪个处理模块。管理处理器1725可以从一个或多个处理模块接收指令,以利用上面讨论的可配置的PCIe接口在储存器滑轨中的一些和处理模块中的一些之间建立期望的连接。
每个储存器滑轨,或者储存器滑轨上的每个存储驱动器,可以由管理处理器1725通过唯一标识符来识别,用于由每个处理模块对特定储存器滑轨的识别。例如,如果存储系统具有0-47个储存器滑轨,则每个储存器滑轨可以具有在上电期间由管理处理器1725指派的唯一标识符。管理处理器1725和需要识别储存器滑轨的各种处理模块之间的任何通信(诸如经以太网接口1750的控制平面通信之类的通信)都可以采用这些唯一标识符。
图18是示出处理系统1800的框图。处理系统1800示出了本文所讨论的控制处理器、电力控制元件或滑轨处理器中任何一个的例子,诸如图1的处理系统131、图3的处理器320或电力控制器321、图4的处理器450和电力控制器422、图5的处理器511或电力控制器531,或者图17的处理器1713、1718和1725。此外,处理系统1800可以说明处理模块上的任何处理系统、处理器或CPU,诸如图1的处理系统131等。
控制处理器1800包括通信接口1801和处理系统1810。处理系统1810包括处理电路系统1811、随机存取存储器(RAM)1812和存储器1813,但是可以包括进一步的元件。RAM1812的示例内容在RAM空间1820中进一步详细描述,并且存储器1813的示例内容在存储系统1860中进一步详细描述。
处理电路系统1811可以在单个处理设备中实现,但也可以跨在执行程序指令时合作的多个处理设备或子系统分布。处理电路系统1811的例子包括通用中央处理单元、微处理器、专用处理器和逻辑设备,以及任何其它类型的处理设备。在一些例子中,处理电路系统1811包括物理分布的处理设备,诸如云计算系统之类。
通信接口1801包括一个或多个通信和网络接口用于经通信链路、诸如分组网络、互联网等的网络进行通信。通信接口可以包括可以串行链路(诸如SPI链路、I2C链路、USB链路、UART链路之类),或者可以经以太网或互联网协议(IP)链路进行通信的一个或多个局域网或广域网通信接口。通信接口1801可以包括被配置为利用可以与不同网络链路关联的一个或多个网络地址进行通信的网络接口。通信接口1801的例子包括网络接口卡装备、收发器、调制解调器和其它通信电路系统。
RAM 1812和储存器1813一起可以包括非临时性数据存储系统,但变型是可能的。RAM 1812和储存器1813可以各自包括处理电路系统1811可读并且能够存储软件的任何存储介质。RAM 1812可以包括以用于信息存储的以任何方法或技术实现的易失性和非易失性、可拆卸和不可拆卸介质,其中信息诸如计算机可读指令、数据结构、程序模块或其它数据。储存器1813可以包括非易失性存储介质,诸如固态存储介质、闪存、相变存储器或磁存储器之类并包括其组合。RAM 1812和储存器1813可以各自被实现为单个存储设备,但也可以跨多个存储设备或子系统被实现。RAM 1812和储存器1813可以各自包括能够与处理电路系统1811通信的附加元件,诸如控制器之类。
存储在RAM 1812或储存器1813上或其中的软件可以包括具有过程的计算机程序指令、固件或某种其它形式的机器可读处理指令,当过程被处理系统执行时,指示控制处理器1800如本文所描述的那样操作。例如,软件可以驱动处理器1800监视针对各种储存器滑轨和其它模块的操作统计和状态、监视针对滑轨和模块的电力状态,及指示电力电路系统控制保持电力或操作电力的流,以及其它操作。软件还可以包括用户软件应用。软件可被实现为单个应用或多个应用。一般而言,在被加载到处理系统中并被执行时,软件可以将处理系统从通用设备变换成如本文描述的那样定制的专用设备。
RAM空间1820示出了RAM 1812的示例配置的详细视图。应当理解,不同的配置是可能的。RAM空间1820包括应用1821和操作系统(OS)1822。软件应用1823-1825各自包括可以由处理器1800执行的可执行指令,用于根据本文讨论的操作来操作处理器、CPU、控制器或其它电路系统。
故障监视器1823监视处理系统,诸如处理模块130上的处理器131、PCIe交换机、储存器滑轨、存储驱动器和其它部件,以检测和识别这些部件中的任何部件何时经历故障或性能降级。故障可以基于保活消息传送、定期轮询、离散信号指示符或其它定期的或基于中断的指示符来检测。在一些例子中,故障是利用统计监视来检测的,其中监视诸如吞吐量、带宽利用率、处理器利用率、存储器利用率或其它统计之类的性能统计,以识别部件何时正在经历故障或降级。故障监视器1823可以向故障转移模块1824报告故障或降级的性能。
在定期轮询例子中,第一处理器可被配置为定期地传送轮询消息,以输送到由第一处理器监视的第二处理器。这个轮询消息可以由第一处理器接收,并且响应可以被传送到第二处理器,然后第二处理器可以确定第一处理器还没有发生故障。轮询消息可以与诸如监视由特定处理器处理的流量水平之类的其它过程组合,以确定何时处理器不响应的鲁棒性确定。轮询消息可以经多于一条通信路径被传送,这会导致特定通信路径何时正在经历故障或问题的确定。第一处理器可以同样以类似的方式传送轮询消息,以输送到第二处理器,从而监视第二处理器的故障。多于一个的处理器可被配置为轮询多于一个的其它处理器。例如,PCIe消息可以在图1的各种处理器和处理模块之间交换,以允许识别何时处理器不响应并且可能发生故障。
故障转移模块1824可以发起针对处理存储事务的各种处理器(诸如处理模块130上的处理器131以及其它部件)的故障转移过程。如果处理器发生故障,诸如在图6-7中所讨论的,则故障转移模块1824可以作为响应将存储驱动器或存储模块的管理切换到另一个未发生故障的处理器,以处理针对原本与发生故障的处理器关联的存储驱动器的进一步的数据事务。同样,如果PCIe交换机发生故障,则那个PCIe交换机的流量可以被重新路由到冗余的PCIe交换机,以使得能够进行持续的操作和存储操作处理。
初始化模块1825初始化储存器滑轨和其中的存储驱动器,诸如通过实例化各种存储驱动器并向各种存储驱动器和储存器滑轨指派各种地址和标识号。初始化模块1825还可以初始化本文所讨论的各种模块上的各种部分,诸如PCIe交换机、网络接口、电力控制电路系统、电力控制处理器、边带接口以及其它元件。初始化模块1825可以经控制平面和边带接口通信以执行初始化。
PCIe交换机模块1826处理本文所讨论的各种PCIe交换机和链路的初始化、配置和管理。PCIe交换机模块1826可以建立不透明的端口配置、用于逻辑PCIe隔离的域以及其它操作。PCIe交换机模块1826还可以检索和监视针对PCIe交换机和链路的统计信息,以便将这些统计信息提供给其它处理器,用于监视并经用户接口呈现给用户或操作者。
电力模块1827监视针对滑轨和模块的元件的使用情况状态或使用情况统计。使用情况统计包括链路的数据传输速率、链路的错误率、链路的错误的累积数量以及其它统计。使用情况统计可以由处理器1800收集并以诸如数据库或表之类的数据结构的形式存储,并存储在储存器1813、RAM 1812或其它存储元件中。电力模块1827监视在上电过程期间的电力涌入统计、电力状态统计、电力活动状态、电压电平、相位测量结果、电流消耗、保持电路状态或电平、滑轨/模块插入状态、热水平以及其它统计。电力模块1827指示电力电路系统利用诸如关联的电力电路系统的离散信号之类的信号将关联的滑轨或模块上电或断电。电力模块1827可以响应于关联的存储驱动器或其它电路系统的数据提交状态、响应于插入状态或其它因素而使滑轨或模块上电或断电。
应用1821和OS 1822可以在控制处理器1800的执行和操作期间驻留在RAM空间1820中,并且可以在断电状态以及其它位置和状态中驻留在存储系统1860中。应用1821和OS 1822可以在开启或启动过程期间被加载到RAM空间1820中,如对计算机操作系统和应用所描述的。
存储系统1860示出了储存器1813的示例配置的详细视图。存储系统1860可以包括诸如NAND闪存或NOR闪存之类的闪存、相变存储器、磁存储器以及其它固态存储技术。如图18中所示,存储系统1860包括系统软件1861。如上所述,在控制处理器1800的断电状态期间,系统软件1861以及其它操作软件可以在用于应用和OS的非易失性存储空间中。
控制处理器1800一般意在代表计算系统,至少软件1861和1821-1822利用控制处理器被部署和执行,以便呈现或以其它方式实现本文所描述的操作。但是,控制处理器1800还可以代表任何计算系统,至少软件1861和1821-1822可以在其上展示并且软件1861和1821-1822可以从其被分发、运输、下载或以其它方式还提供给另一计算系统进行部署和执行或者以及附加的分发。
所包括的描述和附图描绘了教导本领域技术人员如何制造和使用最佳模式的具体实施例。出于教导发明性原理的目的,一些常规方面已被简化或省略。本领域技术人员将明白属于本发明范围内的这些实施例的变化。本领域技术人员还将明白,上述特征可以以各种方式组合,以形成多个实施例。因此,本发明不限于上述具体实施例,而是仅由权利要求及其等同物限定。
Claims (20)
1.一种数据存储系统,包括:
多个存储驱动器,每个存储驱动器包括外围部件互连快速PCIe接口,并且被配置为响应于存储操作而在关联的存储介质上存储数据并检索存储在关联的存储介质上的数据;
一个或多个处理模块,包括经由一个或多个PCIe交换机组成的PCIe架构通信耦合到多个存储驱动器的一个或多个处理器;
处理器被配置为共享与PCIe架构关联的PCIe地址空间,从而将存储操作传送到处理器中管理多个存储驱动器中的一些存储驱动器的一些适当处理器。
2.如权利要求1所述的数据存储系统,包括:
第一处理器,被配置为接收第一存储操作并识别与第一存储操作关联的PCIe地址空间的部分;
当PCIe地址空间的该部分与第二处理器关联时,第一处理器被配置为经PCIe架构传送第一存储操作以输送到第二处理器,从而利用指派给第二处理器的多个存储驱动器中的一些存储驱动器处理该存储操作。
3.如权利要求1所述的数据存储系统,包括:
前端数据平面,该前端数据平面在将处理器彼此通信耦合的至少第一PCIe交换机之间形成;及
后端数据平面,该后端数据平面在将处理器通信耦合到多个存储驱动器的至少第二PCIe交换机之间形成。
4.如权利要求1所述的数据存储系统,包括:
统一数据平面,该统一数据平面在将处理器彼此通信耦合并将处理器通信耦合到多个存储驱动器的一个或多个PCIe交换机之间形成。
5.如权利要求1所述的数据存储系统,包括:
一个或多个处理器,经PCIe架构通信耦合到网络接口,所述网络接口被配置为经关联的网络链路接收存储操作并经PCIe架构将存储操作传送到所述一个或多个处理器。
6.如权利要求5所述的数据存储系统,包括:
网络接口中的每一个被配置为与不同的互联网协议IP地址关联,并且网络接口中的至少两个被配置为与第一互联网小型计算机系统接口iSCSI门户组关联;
与第一网络接口关联并与第一iSCSI门户组关联的第一处理器被配置为,将经第一网络接口接收的数据分组识别为包括与由第二处理器管理的多个存储驱动器中的至少一个关联的存储操作,并且作为响应传送第一数据分组,以供具有与第一iSCSI门户组关联的第二网络接口的处理器处理;及
第二处理器被配置为处理与所述数据分组关联的存储操作,就像第二网络接口已经接收到所述数据分组那样。
7.如权利要求1所述的数据存储系统,包括:
PCIe交换机中的至少一个被配置为经至少一条外部PCIe链路将数据存储系统的处理模块与另一个数据存储系统互连。
8.如权利要求7所述的数据存储系统,包括:
所述至少一条外部PCIe链路包括经串行附接小型计算机串行互连SAS连接器和布线运送的PCIe信令,以便将数据存储系统互连到另一数据存储系统。
9.如权利要求1所述的数据存储系统,包括:
处理器中的至少一个处理器被配置为经PCIe接口将关联的一个或多个存储驱动器作为至少一个NVM快速即NVMe虚拟逻辑单元号VLUN呈现,所述PCIe接口通信耦合所述至少一个处理器和在数据存储系统外部的计算系统;
处理器中的至少一个处理器被配置为接收由计算系统经所述PCIe接口传送的NVMe存储事务并处理NVMe存储事务,从而在关联的一个或多个存储驱动器上存储数据。
10.一种操作数据存储系统的方法,该方法包括:
在多个存储驱动器中,响应于经外围部件互连快速PCIe接口接收的存储操作而在关联的存储介质上存储数据和检索存储在关联的存储介质上的数据;
在包括经由一个或多个PCIe交换机组成的PCIe架构通信耦合到多个存储驱动器的一个或多个处理器的一个或多个处理模块中,共享与PCIe架构关联的PCIe地址空间,从而将存储操作传送到处理器中管理多个存储驱动器中的一些存储驱动器的一些适当处理器。
11.如权利要求10所述的方法,还包括:
在第一处理器中,接收第一存储操作并识别与第一存储操作关联的PCIe地址空间的部分;
当PCIe地址空间的该部分与第二处理器关联时,在第一处理器中,传送第一存储操作,以便经PCIe架构输送到第二处理器,从而利用指派给第二处理器的多个存储驱动器中的一些存储驱动器处理该存储操作。
12.如权利要求10所述的方法,其中前端数据平面在将处理器彼此通信耦合的至少第一PCIe交换机之间形成;并且其中后端数据平面在将处理器通信耦合到多个存储驱动器的至少第二PCIe交换机之间形成。
13.如权利要求10所述的方法,其中统一数据平面在将处理器彼此通信耦合并且将处理器通信耦合到多个存储驱动器的一个或多个PCIe交换机之间形成。
14.如权利要求10所述的方法,还包括:
经PCIe架构将一个或多个处理器通信耦合到网络接口;
在网络接口中,经关联的网络链路接收存储操作并且经PCIe架构将存储操作传送到所述一个或多个处理器。
15.如权利要求14所述的方法,还包括:
将网络接口中的每一个与不同的互联网协议IP地址关联,并且将网络接口中的至少两个与第一互联网小型计算机系统接口iSCSI门户组关联;
在与第一网络接口关联并与第一iSCSI门户组关联的第一处理器中,将经第一网络接口接收的数据分组识别为包括与由第二处理器管理的多个存储驱动器中的至少一个关联的存储操作,并且作为响应传送第一数据分组,以供具有与第一iSCSI门户组关联的第二网络接口的处理器处理;及
在第二处理器中,处理与所述数据分组关联的存储操作,就像第二网络接口已经接收到所述数据分组那样。
16.如权利要求10所述的方法,还包括:
在PCIe交换机中的至少一个中,经至少一条外部PCIe链路将数据存储系统的处理模块与另一个数据存储系统的处理模块互连,其中所述至少一条外部PCIe链路包括经串行附接小型计算机串行互连SAS连接器和布线运送的PCIe信令,以便将所述数据存储系统互连到另一数据存储系统。
17.如权利要求10所述的方法,还包括:
在处理器中的至少一个处理器中,经PCIe接口将关联的一个或多个存储驱动器作为至少一个NVM快速即NVMe虚拟逻辑单元号VLUN呈现,所述PCIe接口通信耦合所述至少一个处理器和在数据存储系统外部的计算系统;
在所述至少一个处理器中,接收由计算系统经PCIe接口传送的NVMe存储事务并处理NVMe存储事务,从而在关联的一个或多个存储驱动器上存储数据。
18.一种模块化数据存储系统,包括:
多个存储模块,每个存储模块包括多个固态驱动器并且被配置为经交换外围部件互连快速(PCIe)架构进行通信;
多个处理模块,每个处理模块包括被配置为经交换PCIe架构来管理针对多个存储模块的指定子集的存储操作的一个或多个处理器;
多个网络接口,分别与一些处理模块关联并被配置为经交换PCIe架构与关联的一些处理模块通信;
一个或多个PCIe交换机,被配置为经多条PCIe链路建立交换PCIe架构,以便将存储模块互连到处理模块并将处理模块互连到网络接口;
处理器被配置为共享与交换PCIe架构关联的PCIe地址空间,从而将接收的存储操作传送到处理器中管理多个存储驱动器中的一些存储驱动器的一些适当处理器。
19.如权利要求18所述的模块化数据存储系统,包括:
网络接口中的每一个被配置为与不同的互联网协议IP地址关联,并且网络接口中的至少两个被配置为与第一互联网小型计算机系统接口iSCSI门户组关联;
与第一网络接口关联并与第一iSCSI门户组关联的第一处理器被配置为,将经第一网络接口接收的数据分组识别为包括与由第二处理器管理的多个存储驱动器中的至少一个存储驱动器关联的存储操作,并且作为响应传送第一数据分组,以供具有与第一iSCSI门户组关联的第二网络接口的处理器处理;及
第二处理器被配置为处理与所述数据分组关联的存储操作,就像第二网络接口已经接收到所述数据分组那样。
20.如权利要求18所述的模块化数据存储系统,包括:
处理器中的至少一个处理器被配置经PCIe接口将关联的一个或多个存储驱动器作为至少一个NVM快速即NVMe虚拟逻辑单元号VLUN呈现,所述PCIe接口通信耦合处理器中的所述至少一个处理器和在数据存储系统外部的计算系统;
处理器中的所述至少一个处理器被配置为接收由计算系统经PCIe接口传送的NVMe存储事务并处理NVMe存储事务,从而在关联的一个或多个存储驱动器上存储数据。
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462015967P | 2014-06-23 | 2014-06-23 | |
US201462015947P | 2014-06-23 | 2014-06-23 | |
US201462015977P | 2014-06-23 | 2014-06-23 | |
US201462015942P | 2014-06-23 | 2014-06-23 | |
US62/015,977 | 2014-06-23 | ||
US62/015,967 | 2014-06-23 | ||
US62/015,942 | 2014-06-23 | ||
US62/015,947 | 2014-06-23 | ||
US201462018090P | 2014-06-27 | 2014-06-27 | |
US62/018,090 | 2014-06-27 | ||
PCT/US2015/037163 WO2015200313A1 (en) | 2014-06-23 | 2015-06-23 | Modular switched fabric for data storage systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106462498A true CN106462498A (zh) | 2017-02-22 |
CN106462498B CN106462498B (zh) | 2019-08-02 |
Family
ID=54938733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580031107.5A Expired - Fee Related CN106462498B (zh) | 2014-06-23 | 2015-06-23 | 用于数据存储系统的模块化交换架构 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP3158455B1 (zh) |
CN (1) | CN106462498B (zh) |
HK (1) | HK1231581A1 (zh) |
WO (1) | WO2015200313A1 (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423111A (zh) * | 2017-06-23 | 2017-12-01 | 郑州云海信息技术有限公司 | 一种Openstack环境计算节点后端存储管理方法 |
CN107766148A (zh) * | 2017-08-31 | 2018-03-06 | 北京百度网讯科技有限公司 | 一种异构集群及任务处理方法和装置 |
CN108959135A (zh) * | 2017-05-24 | 2018-12-07 | 三星电子株式会社 | 数据存储及处理系统及其操作方法 |
CN109032959A (zh) * | 2017-06-09 | 2018-12-18 | 三星电子株式会社 | 网络架构的非易失性存储器快速标准装置、机箱及方法 |
CN109101189A (zh) * | 2017-06-20 | 2018-12-28 | 慧荣科技股份有限公司 | 数据储存装置与数据储存方法 |
CN109656843A (zh) * | 2017-10-11 | 2019-04-19 | 三星电子株式会社 | 数据存储装置及桥接装置 |
CN110245105A (zh) * | 2018-03-09 | 2019-09-17 | 三星电子株式会社 | 网络附接方法、设备和系统 |
CN110312999A (zh) * | 2017-02-28 | 2019-10-08 | 思科技术公司 | 基于软件配置/策略分发的PCIe盘阵列的动态划分 |
CN110377539A (zh) * | 2019-06-25 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种基于高速信号切换芯片的数据传输方法、装置及介质 |
CN110392001A (zh) * | 2018-04-18 | 2019-10-29 | 施耐德电气It公司 | 机架级网络交换机 |
CN110389928A (zh) * | 2019-06-25 | 2019-10-29 | 苏州浪潮智能科技有限公司 | 一种基于高速信号切换芯片的数据传输方法、装置及介质 |
CN110583104A (zh) * | 2017-03-07 | 2019-12-17 | 利奇得公司 | 用于高速外设部件互连(PCIe)系统的机架式交换机设备 |
CN110869875A (zh) * | 2017-05-08 | 2020-03-06 | 利奇得公司 | 存储外壳内的结构交换图形模块 |
WO2020087954A1 (zh) * | 2018-11-01 | 2020-05-07 | 郑州云海信息技术有限公司 | 抓取NVME硬盘trace的方法、装置、设备及系统 |
CN111684421A (zh) * | 2018-02-05 | 2020-09-18 | 微软技术许可有限责任公司 | 服务器系统 |
CN112069751A (zh) * | 2020-08-20 | 2020-12-11 | 苏州浪潮智能科技有限公司 | 一种pcie链路设计用等概率doe极限仿真方法、程序及介质 |
CN112764667A (zh) * | 2019-10-21 | 2021-05-07 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、设备、存储系统和计算机程序产品 |
CN113169908A (zh) * | 2018-12-05 | 2021-07-23 | 株式会社电装 | 线路监视装置和网络交换机 |
WO2022068503A1 (zh) * | 2020-09-30 | 2022-04-07 | 华为技术有限公司 | 电路、芯片和电子设备 |
US11997163B2 (en) | 2021-08-17 | 2024-05-28 | Samsung Electronics Co., Ltd. | System and method for supporting energy and time efficient content distribution and delivery |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10019402B2 (en) * | 2016-05-12 | 2018-07-10 | Quanta Computer Inc. | Flexible NVME drive management solution via multiple processor and registers without multiple input/output expander chips |
US11194746B2 (en) | 2017-12-22 | 2021-12-07 | Seagate Technology Llc | Exchanging drive information |
US10831694B1 (en) * | 2019-05-06 | 2020-11-10 | Mellanox Technologies, Ltd. | Multi-host network interface controller (NIC) with external peripheral component bus cable including plug termination management |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120166699A1 (en) * | 2010-12-22 | 2012-06-28 | Panakaj Kumar | Method and apparatus to provide a high availability solid state drive |
US20130254453A1 (en) * | 2010-11-29 | 2013-09-26 | Kazuki Sato | Computer system, and switch and packet transfer control method used therein |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008119221A1 (fr) * | 2007-03-30 | 2008-10-09 | Hangzhou H3C Technologies Co., Ltd. | Procédé d'échange de paquets de données, dispositif et carte de circuits imprimés |
CN101178697B (zh) * | 2007-12-12 | 2011-08-03 | 杭州华三通信技术有限公司 | 一种pcie设备通信方法及系统 |
EP2399198A4 (en) * | 2009-02-17 | 2012-07-25 | Rambus Inc | COALESCENCE TECHNIQUE OF ATOMIC OPERATIONS IN MULTIPLE CHIP SYSTEMS |
US8688926B2 (en) * | 2010-10-10 | 2014-04-01 | Liqid Inc. | Systems and methods for optimizing data storage among a plurality of solid state memory subsystems |
US10037272B2 (en) * | 2012-08-08 | 2018-07-31 | Avalanche Technology, Inc. | Storage system employing MRAM and array of solid state disks with integrated switch |
US9767058B2 (en) * | 2011-11-17 | 2017-09-19 | Futurewei Technologies, Inc. | Method and apparatus for scalable low latency solid state drive interface |
CN103078747B (zh) * | 2012-12-28 | 2015-08-19 | 华为技术有限公司 | PCIe交换机及其工作方法 |
-
2015
- 2015-06-23 WO PCT/US2015/037163 patent/WO2015200313A1/en active Application Filing
- 2015-06-23 CN CN201580031107.5A patent/CN106462498B/zh not_active Expired - Fee Related
- 2015-06-23 EP EP15812033.7A patent/EP3158455B1/en active Active
-
2017
- 2017-05-17 HK HK17104935.1A patent/HK1231581A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130254453A1 (en) * | 2010-11-29 | 2013-09-26 | Kazuki Sato | Computer system, and switch and packet transfer control method used therein |
US20120166699A1 (en) * | 2010-12-22 | 2012-06-28 | Panakaj Kumar | Method and apparatus to provide a high availability solid state drive |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110312999B (zh) * | 2017-02-28 | 2023-04-18 | 思科技术公司 | 基于软件配置/策略分发的PCIe盘阵列的动态划分 |
CN110312999A (zh) * | 2017-02-28 | 2019-10-08 | 思科技术公司 | 基于软件配置/策略分发的PCIe盘阵列的动态划分 |
CN110583104A (zh) * | 2017-03-07 | 2019-12-17 | 利奇得公司 | 用于高速外设部件互连(PCIe)系统的机架式交换机设备 |
CN110869875A (zh) * | 2017-05-08 | 2020-03-06 | 利奇得公司 | 存储外壳内的结构交换图形模块 |
CN108959135B (zh) * | 2017-05-24 | 2023-08-08 | 三星电子株式会社 | 数据存储及处理系统及其操作方法 |
CN108959135A (zh) * | 2017-05-24 | 2018-12-07 | 三星电子株式会社 | 数据存储及处理系统及其操作方法 |
TWI737904B (zh) * | 2017-05-24 | 2021-09-01 | 南韓商三星電子股份有限公司 | 資料儲存及處理系統及其操作方法 |
CN109032959B (zh) * | 2017-06-09 | 2024-04-02 | 三星电子株式会社 | 网络架构的非易失性存储器快速标准装置、机箱及方法 |
CN109032959A (zh) * | 2017-06-09 | 2018-12-18 | 三星电子株式会社 | 网络架构的非易失性存储器快速标准装置、机箱及方法 |
CN109101189A (zh) * | 2017-06-20 | 2018-12-28 | 慧荣科技股份有限公司 | 数据储存装置与数据储存方法 |
CN109101189B (zh) * | 2017-06-20 | 2021-12-24 | 慧荣科技股份有限公司 | 数据储存装置与数据储存方法 |
US11099775B2 (en) | 2017-06-20 | 2021-08-24 | Silicon Motion, Inc. | Data storage device and data storage method |
CN107423111A (zh) * | 2017-06-23 | 2017-12-01 | 郑州云海信息技术有限公司 | 一种Openstack环境计算节点后端存储管理方法 |
CN107423111B (zh) * | 2017-06-23 | 2020-06-26 | 浪潮云信息技术有限公司 | 一种Openstack环境计算节点后端存储管理方法 |
CN107766148A (zh) * | 2017-08-31 | 2018-03-06 | 北京百度网讯科技有限公司 | 一种异构集群及任务处理方法和装置 |
CN109656843A (zh) * | 2017-10-11 | 2019-04-19 | 三星电子株式会社 | 数据存储装置及桥接装置 |
CN111684421A (zh) * | 2018-02-05 | 2020-09-18 | 微软技术许可有限责任公司 | 服务器系统 |
CN111684421B (zh) * | 2018-02-05 | 2023-10-31 | 微软技术许可有限责任公司 | 服务器系统 |
CN110245105A (zh) * | 2018-03-09 | 2019-09-17 | 三星电子株式会社 | 网络附接方法、设备和系统 |
US11520714B2 (en) | 2018-03-09 | 2022-12-06 | Samsung Electronics Co., Ltd. | Method and apparatus for supporting a field programmable gate array (FPGA) based add-in-card (AIC) solid state drive (SSD) |
CN110392001A (zh) * | 2018-04-18 | 2019-10-29 | 施耐德电气It公司 | 机架级网络交换机 |
CN110392001B (zh) * | 2018-04-18 | 2023-07-18 | 施耐德电气It公司 | 机架级网络交换机 |
WO2020087954A1 (zh) * | 2018-11-01 | 2020-05-07 | 郑州云海信息技术有限公司 | 抓取NVME硬盘trace的方法、装置、设备及系统 |
CN113169908A (zh) * | 2018-12-05 | 2021-07-23 | 株式会社电装 | 线路监视装置和网络交换机 |
CN113169908B (zh) * | 2018-12-05 | 2022-07-22 | 株式会社电装 | 线路监视装置和网络交换机 |
CN110377539A (zh) * | 2019-06-25 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种基于高速信号切换芯片的数据传输方法、装置及介质 |
CN110389928A (zh) * | 2019-06-25 | 2019-10-29 | 苏州浪潮智能科技有限公司 | 一种基于高速信号切换芯片的数据传输方法、装置及介质 |
CN112764667A (zh) * | 2019-10-21 | 2021-05-07 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、设备、存储系统和计算机程序产品 |
CN112069751B (zh) * | 2020-08-20 | 2022-07-08 | 苏州浪潮智能科技有限公司 | 一种pcie链路设计用等概率doe极限仿真方法、程序及介质 |
CN112069751A (zh) * | 2020-08-20 | 2020-12-11 | 苏州浪潮智能科技有限公司 | 一种pcie链路设计用等概率doe极限仿真方法、程序及介质 |
WO2022068503A1 (zh) * | 2020-09-30 | 2022-04-07 | 华为技术有限公司 | 电路、芯片和电子设备 |
US11997163B2 (en) | 2021-08-17 | 2024-05-28 | Samsung Electronics Co., Ltd. | System and method for supporting energy and time efficient content distribution and delivery |
Also Published As
Publication number | Publication date |
---|---|
WO2015200313A1 (en) | 2015-12-30 |
HK1231581A1 (zh) | 2017-12-22 |
EP3158455B1 (en) | 2020-03-18 |
EP3158455A4 (en) | 2018-03-07 |
CN106462498B (zh) | 2019-08-02 |
EP3158455A1 (en) | 2017-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462498B (zh) | 用于数据存储系统的模块化交换架构 | |
US10754742B2 (en) | Network failover handling in computing systems | |
CN103107960B (zh) | 通过开关卡减少交换结构中交换故障的影响的方法和系统 | |
CN103201721B (zh) | 虚拟机热迁移的系统和方法 | |
CN103117866B (zh) | 交换结构管理方法和系统 | |
EP3469486B1 (en) | Multi-port interposer architectures in data storage systems | |
US20210240538A1 (en) | Communication Fabric Coupled Compute Units | |
US10423547B2 (en) | Initialization of modular data storage assemblies | |
US11294839B2 (en) | Emulated telemetry interfaces for fabric-coupled computing units | |
CN104135514B (zh) | 融合式虚拟化存储系统 | |
CN101889263B (zh) | 控制路径i/o虚拟化 | |
US20230169017A1 (en) | Dynamic server rebalancing | |
WO2023177982A1 (en) | Dynamic server rebalancing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190802 Termination date: 20200623 |