CN106933504B - 用于提供存储系统的访问的方法和系统 - Google Patents
用于提供存储系统的访问的方法和系统 Download PDFInfo
- Publication number
- CN106933504B CN106933504B CN201610228110.2A CN201610228110A CN106933504B CN 106933504 B CN106933504 B CN 106933504B CN 201610228110 A CN201610228110 A CN 201610228110A CN 106933504 B CN106933504 B CN 106933504B
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- storage
- location
- client
- 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.)
- Active
Links
Images
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/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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
根据一个实施方式,存储系统的第一控制模块(CM)从客户端设备接收用于读取存储在存储模块的第二存储位置中的第一数据的第一请求,其中第二存储位置与第二CM相关联。第一CM包括第一处理器且第二CM包括第二处理器。第一CM经由处理器间链路传送第一控制信号给第二CM以请求第二CM将第一数据从第二存储位置复制到与第一CM相关联的第一存储器位置。第一CM发起第一数据事务以通过通信架构将第一数据从第一存储器位置传送到客户端设备,而不必经过第二CM。
Description
技术领域
本发明的实施方式一般涉及数据存储系统。更特别地,本发明的实施方式涉及使用作为控制模块之间的传输层的共享存储模块提供对存储系统的访问。
背景技术
系统能够将数据写入到持久存储和从持久存储读取数据的速度通常是该系统总体性能的关键因素。向和从持久存储系统传输数据的传统方式需要在客户端系统和持久存储系统上的软件、固件和硬件的多个层的处理。此外,典型地数据在其在这些层之间移动时被复制。结果是,在读取或写入该下面的物理存储介质所需的等待时间之外导致额外的等待时间,且该等待时间降低系统的总体性能。
在一些情形中,多个处理器或系统被提供给客户端用于访问存储在存储系统中的数据,可能地用于性能增强或冗余的目的。为了两个这样的系统进行通信,系统的每一个需要包括足够的硬件和/或软件来使得这两个系统对接。用于这两个系统或处理器彼此通信的常规方法包括相对慢或被设计用于低等待时间而不是高带宽的网络连接或处理器间链路。
附图说明
在附图中通过示例且非限制的方式示出了本发明的实施方式,其中相同的附图标记表示相似的元件。
图1是示出根据本发明的一个实施方式的存储系统的框图;
图2A是示出根据本发明的一个实施方式的存储系统的读取过程的框图;
图2B是示出根据本发明的一个实施方式的存储系统的写入过程的框图;
图3是示出根据本发明的一个实施方式的在存储系统中读取数据的过程的流程图;
图4是示出根据本发明的一个实施方式在存储系统中写入数据的过程的流程图;
图5A-5D是示出根据本发明的某些实施方式的存储设施的示例的框图;
图6是根据本发明的一个实施方式的通信架构的示例的框图;
图7是根据本发明的一个实施方式的存储模块的示例的框图。
具体实施方式
将参考下面描述的细节来描述本发明的各种实施方式和方面,且附图将示出各种实施方式。下面的描述和附图是示出本发明且不视为限制本发明。许多特定细节被描述以提供对本发明的各种实施方式的全面理解。但是,在某些情况中,公知或常规的细节没有被描述以提供对本发明的实施方式的简洁描述。
在说明书中对“一个实施方式”或“一实施方式”的引用意思是与该实施方式相结合所描述的特定特征、结构或特性能够包括在本发明的至少一个实施方式中。在本说明书中不同位置出现的短语“在一个实施方式中”不必都指同一个实施方式。
根据一些实施方式,存储系统包括经由通信架构(例如高速通信架构)通信耦合或连接一个或多个存储模块的一个或多个客户端。客户端经由多个控制模块访问存储在存储模块的存储设备的任意中的数据,该多个控制模块包括第一控制模块和第二控制模块。控制模块经由通信架构耦合到客户端和存储模块。第一控制模块经由处理器间链路(也称为处理器互连)耦合到第二控制模块,该处理器间链路与通信架构相比可以具有更低的速度或容量。客户端能够经由第一控制模块(例如主路径)和/或第二控制模块(例如辅助路径)访问存储在存储模块中的数据。当路径之一不可用时,客户端能够使用与另一路径相关联的控制模块经由该另一路径访问(例如读取,写入)数据。控制模块经由处理器间链路彼此通信以使得数据在在两个控制模块之间共享的存储模块中被访问。
在一个实施方式中,当第一控制模块(CM)从客户端设备接收到读取请求以从与第二CM相关联的存储位置读取数据时,第一CM经由处理器间链路传送控制信号给第二CM以请求该数据。响应于该控制信号,第二CM从存储模块的该存储位置获取被请求的数据并使得该被请求的数据在由第一CM可访问的存储模块的存储器区中可得。第二CM然后经由处理器间链路传送针对该控制信号的响应或应答给第一CM,该响应或应答指示被请求的数据在该存储器区中可得。响应于该响应或应答,第一CM从该存储器区获取该数据并将该数据返回给客户端。在一个实施方式中,第一CM发起数据事务(例如直接存储器访问或DMA会话)以将被请求的数据从该存储器区移到与客户端设备相关联的客户端存储器,例如经由高速通信架构而不必经过第二CM。结果是,即使从客户端设备到第二CM的路径故障,客户端设备仍然能够通过高速通信架构使用共享的存储模块经由第一CM访问该数据。
在另一实施方式中,当第一CM从客户端设备接收到用于将数据写入到与第二CM相关联的存储位置的写入请求时,第一CM发起数据事务(例如DMA事务)以将该数据从客户端设备的客户端存储器移到与第一CM相关联的存储模块的存储器区(例如通过高速通信架构)。可替换地,客户端发起该数据事务。第一CM然后经由处理器间链路传送控制信号给第二CM,指示在该存储器区中可得的该数据要被写入到与第二CM相关联的持久存储设备的目标存储位置。响应于该控制信号,第二CM使得该数据从与第一CM相关联的存储器区被复制到或移到存储模块的目标存储位置。在特定实施方式中,数据还可以被复制到与第二CM相关联或第二CM内的存储器,以允许第二CM对该数据执行某些操作,例如奇偶构建。之后,第二CM经由处理器间链路返回指示该数据已经成功被写入的响应给第一CM。结果是,即使从客户端设备到第二CM的路径故障,客户端设备仍然能够通过高速通信架构使用共享存储模块经由第一CM写入该数据。
图1是示出了根据本发明的一个实施方式的存储系统的框图。存储系统100可以代表任意存储服务器,例如云存储服务器、内容服务器等。参考图1,存储系统100包括经由一个或多个集线器或交换设备104A-104B通信耦合到控制模块102A-102B和一个或多个存储模块110的一个或多个客户端设备101(也简单称为客户端)。虽然示出了仅一个客户端101,但是能够使用多个客户端。类似地,虽然示出仅一个存储模块110,但也能够使用多个存储模块且除了CM 102A-102B之外还能使用更多CM,这依据特定配置或要求。此外,CM 102A-102B的每一个可以包括处理器和本地存储器,例如CM存储器设备105A-105B(统称为CM存储器设备105)。CM存储器设备105可以是任意种易失性存储器设备,例如动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM或DDR SDRAM。注意到CM能够是多处理器系统中单个处理器。在其他配置中,CM能够被实施为独立的服务器,具有其自己的存储器和本地存储。CM能够是在相同或不同机架(chassis)中的独立的服务器。
在一个实施方式中,客户端101经由通信架构耦合到CM 102A-102B和存储模块110,而CM 102A和CM 102B经由处理器间链路(也称为处理器互连)彼此耦合。在该示例中,为了示出的目的,通信架构由组件101-104B和110之间的实线或连接表示,而处理器间链路106由虚线或虚线连接表示。注意到处理器间链路能够是互连、总线、网络或这些的组合。在该示例中实线和集线器/交换设备104A-104B表示的通信架构可以是全网通信架构,其允许组件101-104B和110的每一个彼此通信并彼此访问资源(例如存储器、处理资源)。
在一个实施方式中,存储系统100可以是服务器或服务器簇的部分,用于通过网络(例如因特网)提供数据存储或内容服务给远程设备。例如,客户端设备101可以是耦合到CM102A-102B和存储模块110表示的后端存储设施的前端服务器组件(例如网页服务器、内容服务器或云服务器)。在这样的配置中,客户端101操作作为用于通过因特网提供服务给远程设备的服务器,同时客户端101通过通信架构操作作为CM 102A-102B和存储模块110表示的存储设施的客户端。CM 102A-102B也统称为CM 102,可以操作为存储设施的存储控制器或服务器组件。
在一个实施方式中,存储系统100可以在电子机柜内被设施。例如,客户端101可以被实施为插入到代表通信架构(其由实线连接和集线器/交换设备104A-104B表示)的背板的客户端刀片(blade)或面板(plane)的部分。CM 102A-102B可以被实施为插入到该背板的一个或多个控制刀片或控制面板的部分。存储模块110可以被实施为插入到背板的存储刀片(或存储面板或数据面板)的部分。因此,所有这些刀片使用各种合适的通信协议经由通信架构彼此耦合,而CM 102A-102B经由控制刀片内的处理器间链路106彼此耦合。还可以存在其他配置。
在一个实施方式中,存储模块110包括一个或多个随机存取存储器(RAM)设备和一个或多个持久存储设备(未示出),其可以由存储模块控制器120控制或管理。存储模块110的RAM设备和持久存储设备可以在逻辑或物理上被划分成存储分区125A-125B(统称为存储分区125)。存储分区125A-125B可以分别被分配用于CM 102A-102B。存储分区125A-125B的每一个包括相应的RAM区,例如RAM区121A-121B(统称为RAM 121)。RAM设备可以是任意类型的易失性存储器设备,例如动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM或DDRSDRAM。类似地,存储分区125A-125B的每一个包括相应的持久存储器或存储区,例如持久存储器区122A-122B(统称为持久存储器区122)。持久存储器区122能够是任意种类的非易失性存储设备,例如固态存储器设备(例如闪存设备)。CM 102A-102B可以通过通信架构与存储模块控制器120通信以访问存储分区125的存储位置。
在一个实施方式中,存储模块控制器120被配置成接收从CM102A-102B读取数据和/或将数据写入到CM 102A-102B的请求。此外,存储模块控制器120被配置成使用存储分区125A-125B服务该读取请求和写入请求。此外,存储模块控制器120可以包括用于在存储分区125、CM存储器设备105和客户端101的客户端存储器(未示出)之间移动或复制数据的直接存储器访问(DMA)引擎。
在一个实施方式中,通信架构可以是任意种类的高速通信架构,例如PCIe、以太网、光纤信道或InfiniBandTM架构。处理器间链路106可以是因特尔QuickPathTM互连或其他点对点通信链路。
客户端101可以是包括用于发送读取请求给存储设施和/或发送写入请求给存储设施的功能的任意系统。客户端101可以包括客户端处理器和客户端存储器(未示出)。在一个实施方式中,客户端101被配置成使用各种通信协议与存储设施(由控制模块102A-102B和存储模块110的一个或多个表示)通信,该通信协议例如是外围组件接口(PCI)、高速PCI(PCIe)、扩展PCI(PCI-X)、高速非易失性存储器(NVMe)、通过PCIe架构的高速非易失性存储器(NVMe)、通过以太网架构的高速非易失性存储器(NVMe)以及通过InfiniBand架构的高速非易失性存储器(NVMe)。
在一个实施方式中,在客户端101、CM 102A-102B和存储模块110之间交换的命令和响应/应答可以经由保存在与这些组件相关联的各种存储器中的相应提交队列和完成队列被交换。例如,CM存储器105A-105B的每一个可以包含用于客户端101和存储模块110的单独或分开的提交队列和完成队列。类似地,客户端101的客户端存储器可以为CM 102A-102B的每一个保存提交队列和完成队列。端点使用提交队列来通过通信架构提交命令给另一端点用于特定操作。端点使用完成队列设置针对之前经由提交队列提交的命令的应答或响应以用信号通知另一端点该命令已完成。
例如,当客户端101向CM 102A发起读取请求时,客户端101在存储器105A中保存的与CM 102A相关联的提交队列中设置读取请求命令。通过在提交队列中设置命令,CM 102A可以例如经由中断(例如门铃中断)被通知。类似地,当CM 102A完成从客户端101发送的命令时,CM 102A可以在与客户端101相关联的完成队列中设置指示符(例如应答、响应)以用信号通知客户端101该命令已经完成。与客户端101相关联的完成队列可以被保存在客户端101的客户端存储器中。关于客户端101、CM 102A-102B和存储模块110以及通信架构的进一步的信息将在下面参考图5A-5D和6-7进一步详细描述。
在一个实施方式中,CM 102A可以具有针对其存储分区125A的读取和写入访问权利或特权,和针对存储分区125B的仅读取访问权利或特权。类似地,CM 102B可以具有针对存储分区125B的读取和写入访问权利,且针对存储分区125A具有仅读取访问权利。可替换地,CM 102A-102B都可以具有针对所有存储器区和存储区的读取和写入访问权利,只要存储模块控制器120能够管理或控制访问争用和/或冲突/相干。在另一实施方式中,CM102A-102B能够直接控制和管理它们各自的存储模块110的存储区和存储器区。在这样的配置中,存储模块控制器120可以是可选的。
典型地,客户端101能够经由通过CM 102A的第一通信路径访问存储在与CM 102A相关联的存储区中的数据。同样地,客户端101能够经由通过CM 102B的第二通信路径访问存储在与CM 102B相关联的存储区中的数据。这两个路径同时可用于客户端101以为了更好带宽。可替换地,一条路径可以是另一条路径的冗余路径。当一条路径(例如通过CM 102B的路径)不可用(例如故障)时,客户端101可以经过另一条路径(例如通过CM 102A的路径)来从与不可用路径相关联的存储区读取数据或向其写入数据。当使用该备选路线时,常规系统可能必须使用处理器间链路106来将数据从一个CM传输到另一个CM。但是,与通信架构相比,处理器间链路106通常是比较慢或具有较低带宽容量。由于CM 102A-102B都经由高速通信架构耦合到存储模块110,因此存储模块110可以用作CM 102A-102B之间的传输路径以使客户端101避免故障的路径并使用其他可用路径来实现相同的目的,而不必使用处理器间链路106来携带或传输数据。
根据一个实施方式,当第一CM(例如CM 102A)从客户端101接收到用于从与第二CM(例如CM 102B)相关联的存储位置读取数据的请求时,第一CM经由处理器间链路106传送控制信号给第二CM以从第二CM请求数据。响应于该控制信号,第二CM与存储模块控制器120通信以从该存储位置获取被请求的数据并使得该被请求的数据在与第一CM相关联的存储器区中可得。第二CM经由处理器间链路106发送响应给第一CM,指示被请求的数据可得。响应于该响应,第一CM发起数据事务(例如DMA会话)以通过通信架构将被请求的数据移到客户端101客户端存储器(例如未示出),而不必经过第二CM和处理器间链路106。
根据另一个实施方式,当第一CM(例如CM 102A)从客户端101接收到用于向与第二CM(例如CM 102B)相关联的存储位置写入数据的请求时,该第一CM发起数据事务(例如DMA会话)以通过通信架构将被请求的数据从客户端101的客户端存储器(例如未示出)移到或复制到与第一CM相关联的存储器位置。第一CM然后经由处理器间链路106传送控制信号给第二CM,指示该数据在该存储器位置处可得。响应于该控制信号,第二CM从该第一CM的该存储器位置获取该数据并将该数据写入到目的地。因此,处理器间链路106被用作控制路径,而通信架构被用作用于访问数据的数据路径。注意到术语“存储器位置”是指易失性存储器(例如RAM区121A-121B、CM存储器105A-105B)内的位置。术语“存储位置”是指非易失性或持久存储器或存储设备(例如持久存储器区122A-122B)内的位置。
图2A是示出根据本发明的一个实施方式的存储系统的读取过程的框图。参考图2A,系统200可以被实施为图1的系统100的部分。在一个实施方式中,假定从客户端101到CM102B的路径故障,这可以是连接201-203的任意。在该示例中,客户端101经由可选集线器/交换设备104A经由路径211(其是通信架构的部分)传送读取请求给CM 102A。该读取请求用于读取存储在与CM 102B相关联的存储模块110的持久存储设备的存储区中的数据,在该示例中是存储分区125B的存储设备122B。
响应于该读取请求,CM 102A经由处理器间链路传送控制信号给CM102B(由操作212表示)。控制信号可以包括标识被请求的数据的标识符、要被读取的数据的尺寸和/或目标存储位置(例如持久存储器区122B的存储位置)。响应于该控制信号,CM 102B经由路径213与存储模块控制器120通信以从来自持久存储设备122B的目标存储位置获取被请求的数据并将该数据置于与CM 102A相关联的存储器区121A的预定存储器位置。该预定存储器位置可以是预先协定好的或在控制信号中被指定的存储器位置。一旦被请求的数据已经被放置在存储器区121A中,CM 102B经由处理器间链路传送针对控制信号的响应给CM 102A(由操作214表示)。响应于该响应,CM102A发起数据事务(例如DMA事务)以通过通信架构经由经过可选集线器/交换设备104A的路径215(a)和215(b)将数据从存储器区121A移到或复制到客户端101的客户端存储器(未示出)。
根据另一实施方式,被请求的数据可以从与CM 102B相关联的持久存储设备122B的目标存储位置被复制到存储器区121B。CM 102B然后经由处理器间链路传送响应给CM102A。作为响应,在发起从存储器区121A到客户端101的客户端存储器的数据事务之前,CM102A将数据从存储器区121B复制到或移到(例如经由存储模块控制器120)存储器区121A。在一个实施方式中,CM 102A可以指令存储模块控制器120编码或配置存储模块控制器120内的DMA引擎(未示出)。可替换地,CM 102A可以与集线器/交换设备104A内的DMA引擎通信以将数据从存储器区121A移到客户端101的客户端存储器。此外,CM 102A可以与客户端101通信以指令客户端101编码或配置客户端101内的DMA引擎从而将数据从存储器区121A移到客户端101的客户端存储器。
根据进一步实施方式,存储分区125A-125B的任意可以被配置成可由CM 102A-102B的任意访问。CM 102A-102B还可以控制和/或管理存储模块110的存储资源而不用涉及存储模块控制器120。在这样的配置中,响应于读取请求,CM 102B能够访问存储分区125B中存储被请求的数据的存储位置以使得被请求的数据在存储器区121A或存储器区121B中可得。例如,CM 102B能够基于控制信号定位存储在持久存储器区122B中的被请求的数据并将该被请求的数据加载或复制在存储器区121A或121B中。CM 102A然后能够发起数据事务以将数据从存储器区121A或存储器区121B移到客户端101的客户端存储器。这样的配置能够消除对在存储器区121B与存储器区121A之间复制数据的需要。
根据另一实施方式,CM 102A能够预留RAM区121A中的预定存储器位置。响应于从CM 102A接收的控制信号,CM 102B从持久存储器区122B获取被请求的数据并将该被请求的数据加载到RAM区121A的预定的存储器位置。CM 102A然后将被请求的数据从RAM区121A传输到客户端101。
图2B是示出根据本发明的一个实施方式的存储系统的读取过程的框图。参考图2B,系统200可以被实施为图1的系统100的部分。在一个实施方式中,假定从客户端101到CM102B的路径故障,这可以是连接201-202或集线器/交换设备104B与存储模块110之间的连接(例如图2A的路径203)的任意。在该示例中,客户端101经由可选集线器/交换设备104A经由路径251(其是通信架构的部分)传送写入请求给CM 102A。该写入请求用于将数据写入到存储模块110的持久存储设备的存储位置或区,在该示例中是存储设备122B,其中目标存储区与CM 102B相关联。响应于该写入请求,要被写入的数据经由路径252被传送。例如,数据可以经由数据事务(例如DMA事务)从客户端设备101的客户端存储器被传送到RAM区121A的存储器位置。数据事务可以由客户端101、集线器/交换设备104A、CM 102A或存储模块控制器120内的DMA引擎发起。
一旦数据已经被存储在存储器区121A中,CM 102A通过处理器间链路经由路径253传送控制信号给CM 102B。控制信号可以包括指示存储器区121A中存储该数据的存储位置、数据尺寸以及持久存储区122B的目标存储位置的信息。响应于该控制信号,CM 102B将数据从存储器区121A复制到或移到存储器121B。CM 102B可以与存储模块控制器120通信以将数据从存储器区121A复制到或移到存储器区121B。数据然后从存储器区121B存储到持久存储区122B的目标存储位置。此外,CM 102B可以经由用于其他操作(例如奇偶计算)的路径254将数据上传到其本地存储器105B。
CM 102B然后通过处理器间链路经由路径255传送响应或应答给CM102A以应答写入信号。CM 102A然后经由路径256返回写入操作的状态给客户端101。可替换地,根据一个实施方式,一旦数据已经从客户端101的客户端存储器被传送到存储器区121A,CM 102A能够返回该状态或应答写入操作给客户端101,而不必等待CM 102B将数据从存储器区121A复制到持久存储区122B的目标存储位置。因此,由于CM 102A-102B经由通信架构耦合到存储模块110,存储模块110能够用作用于传输数据的传输层作为数据路径,而处理器间链路用作控制路径用于交换控制信号。
根据进一步实施方式,如上所述,存储分区125A-125B的任意可以被配置成可由CM102A-102B的任意访问。CM 102A-102B还可以控制和/或管理存储模块110的存储资源,而不涉及存储模块控制器120。在这样的配置中,响应于写入请求,CM 102A能够存储或使得被请求的数据被存储在存储器区121A或存储器区121B中。CM 102A然后经由处理器间链路106传送控制信号给CM 102B,其中控制信号标识被请求的数据被存储在哪。CM 102B然后能够基于控制信号从存储器区121A或存储器区121B获取被请求的数据并将该被请求的数据存储在持久存储器区122B的目标存储位置中。这样的配置能够消除对在存储器区121A与存储器区121B之间复制数据的需要。
图3是示出根据本发明的一个实施方式的在存储系统中读取数据的过程的流程图。过程300可以由处理逻辑执行,该处理逻辑包括硬件(例如电路、专用逻辑等)、软件(例如包含在非暂态计算机可读介质上),或硬件和软件的组合。例如,过程300可以由图1的系统100执行。参考图3,在框301,第一CM从客户端设备接收用于从与第二CM相关联的第二存储位置读取数据的读取请求。该读取请求可以指定或标识数据和存储该数据的存储位置。响应于该读取请求,在框302,第一CM经由处理器间链路传送控制信号给第二CM以请求读取被请求的数据。响应于该控制信号,在框303,第二CM使得被请求的数据为第一CM可得。在一个实施方式中,第二CM使得被请求的数据从第二存储位置被复制到或移到与第一CM相关联的第一存储器位置。在框304,第二CM通过处理器间链路传送针对控制信号的响应或应答给第一CM。在框305,第一CM使得被请求的数据从第一存储器位置被传送(例如经由DMA)到客户端。
可替换地,存储分区的任意非持久资源可以被配置成可由第一CM和第二CM的任意访问。第一CM和第二CM还可以控制和/或管理存储模块110的存储资源,而不涉及存储模块控制器。在这样的配置中,响应于读取请求,第一CM能够通过处理器间链路经由控制信号与第二CM通信。响应于该控制信号,第二CM能够访问目标存储分区中存储被请求的数据的存储位置以使得该被请求的数据在与第一CM相关联的第一存储器区中或与第二CM相关联的第二存储器区中可得。第一CM然后能够发起数据事务以将数据从第一存储器区或第二存储器区移到客户端的客户端存储器。这样的配置能够消除对在第二存储器与域第一存储器区之间复制数据的需要。
图4是示出根据本发明的一个实施方式的在存储系统中写入数据的过程的流程图。过程400可以由处理逻辑执行,该处理逻辑包括硬件(例如电路、专用逻辑等)、软件(例如包含在非暂态计算机可读介质上),或硬件和软件的组合。例如,过程400可以由图1的系统100执行。参考图4,在框401,第一CM从客户端接收用于将数据写入到与第二CM相关联的存储模块的第二存储位置的写入请求。响应于该写入请求,第一CM使得(例如经由DMA)被请求的数据从客户端被传送并存储在与第一CM相关联的存储模块的第一存储器位置中。在框403,第一CM通过处理器间链路传送控制信号给第二CM以指示数据准备好。响应于该控制信号,在框404,第二CM使得被请求的数据从第一存储器位置被复制到或移到存储模块的第二存储位置。在框405,第二CM通过处理器间链路传送响应给第一CM以应答数据已经被写入。响应于该响应,在框406,第一CM返回状态给客户端。
根据进一步实施方式,如上所述,存储分区的任意可以被配置成可由第一CM和第二CM的任意来访问。在这样的配置中,响应于写入请求,第一CM能够存储或使得被请求的数据被存储在与第一CM相关联的第一存储器区或与第二CM相关联的第二存储器区中。第一CM然后经由处理器间链路传送控制信号给第二CM,其中控制信号标识被请求的数据被存储在哪里。第二CM然后能够基于该控制信号从第一存储器区或第二存储器区获取被请求的数据并将该被请求的数据存储在与第二CM相关联的持久存储器区的目标存储位置。这样的配置能够消除对在第一存储器区和第二存储器区之间复制数据的需要。
图5A-5D是示出根据本发明的某些实施方式的存储设施的示例的框图。存储设施可以代表上述的存储设施。参考图5A,存储设施包括控制模块1200和存储模块群组1202。控制模块1200可以代表上述的控制模块的任意。在一个实施方式中,控制模块1200被配置成管理来自一个或多个客户端或客户端设备1380的读取和写入请求的服务。这里的客户端可以代表上述的客户端或客户端设备的任意。在一个实施方式中,控制模块1200被配置成经由通信架构1350从一个或多个客户端1380接收请求,处理该请求(其可以包括发送该请求给存储模块),以及在请求已经被服务之后提供响应给客户端1380。
在一个实施方式中,控制模块1200包括输入/输出模块(IOM)1204、交换架构1206、处理器1208、存储器1210以及可选地场可编程门阵列(FPGA)1212。在一个实施方式中,IOM1204是客户端与存储设施中的其他组件之间的物理接口。IOM 1204支持各种通信协议,例如PCI、PCIe、PCI-X、以太网(包括但不限于IEEE 802.3a-802.3bj下定义的各种标准)、Infiniband和通过聚合以太网(RoCE)的远程直接存储器存取(RDMA)。
在一个实施方式中,交换架构1206包括一个或多个互连的交换机。如果交换架构1206包括多个交换机时,每个交换机可以连接到每个其他交换机,可以连接到交换架构中的交换机子集,或可以仅连接到交换架构中的一个其他交换机。在一个实施方式中,交换架构1206中的交换机的每一个是硬件和逻辑的组合(例如使用集成电路实施)(如交换架构实施的协议定义的),其被配置成在存储设施中将各种组件连接一起并在各种连接的组件之间(使用逻辑进行)路由分组。在一个实施方式中,交换架构1206物理连接到IOM 1204、处理器1208、存储模块组1202,以及FPGA 1212(如果有的话)。在一个实施方式中,控制模块1200中的所有组件间的通信(除了处理器1208与存储器1210之间的通信)经过交换架构1206。此外,控制模块1200与存储模块组1202之间的所有通信经过交换架构1206。在一个实施方式中,使用PCI协议(例如PCI、PCIe、PCI-X或另一PCI协议)来实施交换架构1206。在这样的实施方式中,经过交换架构1206的所有通信使用相应的PCI协议。
在一个实施方式中,如果交换架构1206实施PCI协议,交换架构1206包括用于处理器的端口(或更具体地,用于在处理器1208中集成的根复合体(root complex)的端口或用于连接到处理器的根复合体的端口)、用于存储模块组1202中的存储模块1214A至1214N的一个或多个端口、用于FPGA1212(如果有的话)的端口、以及用于IOM 1204的端口。存储模块1214A-1214N的每一个可以代表上述的存储模块的任意。在一个实施方式中,上述的端口的每一个可以被配置为透明桥或非透明桥。本领域技术人员可以理解虽然已经关于PCI实施描述交换架构1206,但是交换架构1206可以使用其他协议被实施而不偏离本发明的实施方式。
在一个实施方式中,交换架构1206中至少一个交换机被配置成实施组播。更具体地,在一个实施方式中,处理器1208被配置成生成组播群组,其中该组播群组包括两个或更多个成员,每个成员指定存储器1210和/或存储模块1214A-1214N中的地址。当组播群组被创建时,该组播群组与组播地址相关联。为了实施该组播,交换架构中的至少一个交换机被配置成当接收到将组播地址指定为目的地地址的写入时,该交换机被配置成为该组播群组中的每个成员生成新写入并将该写入发送给存储设施中的合适地址。在一个实施方式中,用于该交换机生成的每个写入的地址通过给组播地址添加特定偏移来确定。
处理器1208可以是具有单核或多核的电子电路群组,被配置成执行指令。在一个实施方式中,处理器1208可以使用复杂指令集(CISC)架构或精简指令集(RISC)架构来实施。在一个实施方式中,处理器1208包括根复合体(如PCIe协议定义的)。在一个实施方式中,如果控制模块1200包括根复合体(其可以集成到处理器1208),则存储器1210经由该根复合体耦合到处理器1208。可替换地,存储器1210使用点对点连接机制直接连接到处理器1208。在一个实施方式中,存储器1210可以是任意易失性存储器,包括但不限于动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM和DDR SDRAM。
在一个实施方式中,处理器1208被配置成创建并更新存储器内数据结构(未示出),其中存储器内数据结构被存储在存储器1210在。在一个实施方式中,存储器内数据结构包括存储模块的集合中的逻辑地址和物理存储地址之间的映射(直接或间接)。在一个实施方式中,逻辑地址是从客户端的角度数据看起来位于的地址。在一个实施方式中,逻辑地址是(或包括)通过将哈希函数(例如SHA-1、MD-5等)应用于n元组而生成的哈希值。在一个实施方式中,n元组是<对象ID,偏移ID>,其中对象ID定义文件且偏移ID定义相对于文件的开始地址的位置。在该技术的另一实施方式中,该n元组是<对象ID,偏移ID,生成时间>,其中生成时间对应于创建(使用对象ID标识的)文件的时间。可替换地,逻辑地址可以包括逻辑对象ID和逻辑字节地址,或逻辑对象ID和逻辑地址偏移。在该技术的另一实施方式中,逻辑地址包括对象ID和偏移ID。本领域技术人员应当理解多个逻辑地址可以被映射到单个物理地址且该逻辑地址不限于以上的实施方式。
在一个实施方式中,物理地址可以对应于(i)存储器1210中的位置,(ii)圆顶存储器中的位置,或(iii)固态存储器模块中的位置。在一个实施方式中,如果在存储设施中有数据的多个副本,则存储器内数据结构可以将单个哈希值映射到多个物理地址。
在一个实施方式中,存储器1210包括以下的一个或多个:用于处理器1208的提交队列、用于处理器1208的完成队列、用于存储设施中的存储模块1214A-1214N的每一个的提交队列、以及用于存储设施中的存储模块1214A-1214N的每一个的完成队列。在一个实施方式中,用于处理器1208的提交队列用于发送命令(例如读取请求,写入请求)到处理器1208。在一个实施方式中,用于处理器1208的完成队列用于用信号通知处理器1208其发送到另一实体的命令已经被完成。用于存储模块的提交队列和完成队列以相似方式发挥功能。
在一个实施方式中,处理器1208(经由交换架构)被配置成将各种类型的处理卸载到FPGA 1212。在一个实施方式中,FPGA 1212包括用于计算被写入到存储模块的数据和/或从存储模块读取的数据的校验和的功能。此外,FPGA 1212可以包括用于计算P和/或Q奇偶信息的功能,用于使用RAID方案(例如RAID 2-RAID 6)在存储模块中存储数据,和/或用于执行恢复使用RAID方案(例如RAID 2-RAID 6)存储的毁坏的数据所需的各种计算的功能。在一个实施方式中,存储模块组1202包括一个或多个存储模块(1213A-1214N),每一个被配置成存储数据。
在一个实施方式中,处理器1208被配置成编程系统中的一个或多个DMA引擎。例如,处理器1208被配置成编程客户端交换机中的DMA引擎。处理器1208还可以被配置成编程存储模块中的DMA引擎。在一个实施方式中,编程客户端交换机中的DMA引擎可以包括创建组播群组并生成用于该组播群组中的成员的每一个的描述符。
在一个实施方式中,通信架构1350能够是高速通信架构的任意者,例如PCTe、以太网、光纤信道或InfinibandTM架构。客户端1380可以是包括发送读取请求给存储设施和/或发送写入请求给存储设施的功能的任意系统。客户端1380可以包括客户端处理器1381和客户端存储器1382。在一个实施方式中,客户端1380被配置成使用各种通信协议与存储设施1355通信,该通信协议例如外围组件互连(PCI)、PCI高速(PCIe)、PCI扩展(PCI-X)、非易失性存储器高速(NVMe)、通过PCI高速架构的非易失性存储器高速(NVMe)、通过以太网架构的非易失性存储器高速(NVMe)以及通过Infiniband架构的非易失性存储器高速(NVMe)。
在一个实施方式中,如果客户端1380实施PCI、PCI高速或NVMe,客户端1380可以包括根复合体(未示出)。根复合体是将客户端1380(包括其客户端处理器和客户端存储器)连接到PCIe架构的设备。在一个实施方式中,PCIe架构包括根复合体和端点,其经由交换机连接。端点是除根复合体以外的设备或能够发起PCI事务(例如读取请求、写入请求)或是PCI事务的目标的交换机。一个或多个客户端和一个或多个存储设施可以被集成作为PCIe架构的部分。此外,如果存储设施内的单独组件使用PCIe通信且客户端1380中的单独组件使用PCIe通信,则存储设施和客户端1380中的所有组件可以被认为是单个PCIe架构的部分。
客户端存储器1382可以包括用于客户端处理器的提交队列(SQ)和用于客户端处理器的完成队列(CQ)。在本发明的一个实施方式中,存储设施存储器,例如存储器设备1210,包括通过通信架构对客户端可见的用于客户端处理器的一个或多个提交队列。客户端存储器1382包括通过通信架构对存储设施可见的用于客户端处理器的一个或多个完成队列。用于客户端处理器的提交队列用于发送命令(例如读取请求、写入请求)给客户端处理器。用于客户端处理器的完成队列用于用信号向客户端处理器通知其发送给另一实体的命令已经完成。
客户端1380还可以包括用于将客户端1380耦合到通信架构的客户端交换机,其中客户端交换机可以包括一个或多个交换设备。如果客户端交换机包括多个交换机,每个交换机可以连接到每个其他交换机,可以连接到交换架构中的交换机的子集,或可以仅连接到一个其他交换机。在本发明的一个实施方式中,客户端交换机中的交换机的每一个是硬件和逻辑的组合,被配置成允许数据和消息在客户端1380与存储设施1355之间交换。
在这样的实施方式中,客户端交换机可以包括一个或多个端口,其中每个端口可以被配置为透明桥或不透明桥。实施为透明桥的端口允许根复合体继续发现(直接或间接)连接到该端口的设备(其可以是其他根复合体、交换机、PCI桥或端点)。相反,当根复合体遇到实施为不透明桥的端口时,该根复合体不能继续连接到该端口的设备的发现,而是根复合体将端口视为端点。
当端口被实施为不透明桥时,不透明桥的任一侧的设备可以仅适用邮箱系统和门铃中断(由客户端交换机实施)通信。门铃中断允许不透明桥的一侧的处理器发送中断给不透明桥的另一侧的处理器。此外,邮箱系统包括交换架构的一侧的处理器可读取和可写入的一个或多个寄存器。上述寄存器使得客户端交换机的任一侧的处理器能够经由不透明桥传递控制和状态信息。
为了从不透明桥的一侧的设备发送PCI事务给不透明桥的另一侧的设备,PCI事务必须被寻址到实施不透明桥的端口。在接收到PCI事务时,客户端交换机执行地址转换(使用直接地址转换机制或基于查找表的转换机制)。得到的地址然后用于将分组路由到不透明桥的另一侧的合适设备。
客户端交换机被配置以使得客户端存储器的至少一部分对存储设施直接可访问。也就是说,客户端交换机的一侧的存储设施可以经由客户端交换机直接访问客户端交换机另一侧的客户端存储器。客户端交换机可以包括由连接到客户端交换机的存储设施或客户端处理器编程的DMA引擎。DMA引擎可以被编程用于从对存储设施可访问的客户端存储器的部分中的地址读取数据并将该数据的副本直接写入到存储设施或存储模块中的存储器。此外,DMA引擎可以被编程用于从存储设施读取数据并将该数据的副本直接写入到对存储设施可访问的客户端存储器的部分中的地址。
在本发明的一个实施方式中,DMA引擎支持组播。在这样的实施方式中,存储设施中的处理器可以创建组播群组,其中组播群组的每个成员对应于存储设施的存储器中的唯一目的地址。组播群组的每个成员与描述符相关联,该描述符指定:(i)目的地址;(ii)源地址;(iii)传输尺寸字段;以及(iv)控制字段。用于描述符的每一个的源地址保持不变而目的地址针对每个描述符改变。一旦创建了组播群组,通过以组播群组地址为目标的交换机的任意数据传输(包括DMA引擎发起的传输)在与组播群组相关联的目的端口的所有中放置数据的相同副本。该交换机并行处理组播群组描述符的所有。
现在参考图5B,根据另一实施方式,存储设施包括控制模块1216和至少两个存储模块组1236和1238。控制模块1216包括交换架构1234,其直接连接到IOM A 1218、IOM B1220、处理器A 1222、处理器B 1224、FPGA A 1230(如果有的话)、FPGA B 1232(如果有的话)、存储模块组A 1236中的存储模块1236A-1236N以及存储模块组B 1238中的存储模块1238A-1238N。上述组件之间的所有通信(除了处理器A 1222与处理器B1224之间的通信)经过交换架构1234。在该技术的一个实施方式中,控制模块1216内的处理器1222和1224能够使用例如点对点互连(例如因特尔QuickPath互连)进行直接通信。
在一个实施方式中,控制模块1216中的两个IOM 1218和1220使得用于控制模块1216的I/O带宽(在具有单个IOM的控制模块的I/O带宽之上)加倍。此外,第二IOM(或另外IOM)的添加增加了可连接到给定控制模块的客户端的数量,且通过扩展,增加了能够连接到存储设施的客户端数量。在一个实施方式中,使用交换架构1234处理各种连接的组件(上述的)之间的通信,以允许处理器1222和1224的每一个直接访问(经由交换架构1234)连接到交换架构1234的所有FPGA 1230和1232和所有存储模块(1236A-1236N、1238A-1238N)。
参考图5C,根据另一实施方式,存储设施包括(经由交换架构1246)连接到存储模块组(1256、1258、1260、1262)中的多个存储模块(未示出)的控制模块1240。控制模块1240包括两个IOM(1242、1244)、两个处理器(1248、1250)和存储器(1252、1254)。在一个实施方式中,控制模块1240中的所有组件经由交换架构1246通信。这些组件的操作与上述的操作类似。
在一个实施方式中,处理器A 1248被配置成主要处理与来自存储模块组A和B(1256、1258)的数据的存储和获取有关的请求,而处理器B 1250被配置成主要处理与来自存储模块组C和D(1260、1262)的数据的存储和获取有关的请求。但是,处理器(1248、1250)被配置成(经由交换架构1246)与存储模块组(1256、1258、1260、1262)的全部进行通信。该配置使得控制模块1240能够在处理器之间传播I/O请求的处理和/或提供内置冗余以处理处理器之一故障的情形。
参考图5D,根据另一实施方式,存储设施包括两个控制模块(1264、1266)。每个控制模块包括IOM(1296、1298、1300、1302)、处理器(1268、1270、1272、1274)、存储器(1276、1278、1280、1282)以及FPGA(如果有的话)(1288、1290、1292、1294)。控制模块(1264、1266)的每一个包括交换架构(1284、1286),控制模块内的组件通过该交换架构通信。
在一个实施方式中,控制模块内的处理器(1268、1270、1272、1274)可以例如使用点对点互连(例如因特尔QuickPath互连)彼此通信。此外,控制模块A中的处理器(1268、1270)可以经由到控制模块B中的交换架构(1286)的直接连接与控制模块B中的组件通信。类似地,控制模块B中的处理器(1272、1274)可以经由到控制模块A中的交换架构(1284)的直接连接与控制模块A中的组件通信。
在一个实施方式中,控制模块的每一个连接到各种存储模块(由存储模块组(1304、1306、1308、1310)表示)。每个控制模块可以与连接到控制模块中的交换架构的存储模块通信。此外,控制模块A(1264)中的处理器可以使用交换架构B(1286)与连接到控制模块B(1266)的存储模块通信。类似地,控制模块B(1266)中的处理器可以使用交换架构A(1284)与连接到控制模块A(1264)的存储模块通信。
控制模块之间的互连允许存储控制以在存储设施间分配I/O负载,不管哪个控制模块接收I/O请求。此外,控制模块的互连使得存储设施能够处理更大数量的I/O请求。此外,控制模块的互连在控制模块(或其中的一个或多个组件)故障的情况下提供内置冗余。
在一个实施方式中,存储器中数据结构在控制模块中的存储器间被镜像。在这样的情况中,控制模块中的处理器发送必要命令以更新存储设施内的所有存储器,由此存储器内数据结构在所有存储器间被镜像。以这种方式,任意处理器可以使用其自己的存储器确定存储设施中的数据的位置(如上述的n元组定义)。该功能允许任意处理器服务关于存储模块内的数据的位置的任意I/O请求。此外,通过镜像存储器内数据结构,存储设施可以在存储器之一故障时继续操作。
根据一些实施方式,上述的组件的一些,例如控制模块和/或存储模块可以集成在通信架构内,例如PCIe架构。
图6是示出根据本发明的一个实施方式的具有通信架构的系统的框图。在该示例中,PCIe架构用作用于示例目的的通信架构的示例。但是,可以理解其他类型的通信架构也能够应用。在一个实施方式中,PCIe架构(2100)由两个或更多片(2104A、2104B)组成,其中该片的每一个耦合到处理器(2112A、2112B)和一个或多个客户端(2102A-2102B)。客户端2102A-2102B可以代表上述客户端的任意。
在一个实施方式中,每个客户端(2102A-2102B)是物理设备,其包括处理器(或另一类型的处理组件)、存储器和使其能够连接到PCIe架构(2100)的物理接口。此外,每个客户端包括用于实施本发明的一个或多个实施方式所需的PCIe标准(或其一部分)的功能。客户端2102A-2102B还包括用于发送和/或接收事务层分组(Transaction Layer Packet,TLP)的功能。TLP对应于根据PCIe标准定义的分组类型。在本发明的一个实施方式中,TLP使得客户端能够从PCIe架构读取数据并将该数据写入到PCIe架构。换句话说,TLP使得客户端能够传输往来PCIe架构中的位置的数据。在本发明的一个实施方式中,客户端的一个或多个操作作为PCIe端点,即发起事务的设备和/或是事务的目标的设备。客户端的每一个可以经由链路(即客户端与PCIe架构之间的物理连接)连接到PCIe架构。
每个片(2104A、2104B)包括输入/输出(1O)级交换机(ITS)(2108A、2108B)、集线器级交换机(HTS)(2106A、2106B)、以及一个或多个持久存储模块(PSM)2110A-2110B。关于ITS,每个ITS是连接到一个或多个客户端(2102A-2102B)的物理PCIe交换机。每个ITS还耦合到ITS位于的相同片中的HTS。此外,每个ITS可以耦合到与ITS位于的片不同的片中的一个或多个HTS。在本发明的一个实施方式中,每个ITS连接到PCI架构中的每一个HTS,产生PCIe架构的级之间的完全连接的网格网。本发明的实施方式可以在没有级之间的完全连接的网格网的情况下被实施,不偏离本发明。
在本发明的一个实施方式中,每个ITS被配置成:(i)从其连接的客户端接收TLP并使用地址路由(例如存储器地址路由)将该TLP路由到ITS上的合适的出口端口(下游端口中一者或上游端口),以及(ii)从ITS连接的一个或多个HTS接收TLP,并使用地址路由将TLP路由到该ITS上的合适的出口端口(典型地下游端口)。
每个HTS是耦合到一个或多个ITS(2108A-2108B)和一个或多个持久存储模块(PSM(2110A-2110B))的物理PCIe交换机。每个HTS耦合到HTS位于的相同片中的ITS。此外,每个HTS可以连接到在与HTS位于的片中不同的片中的零个或更多个ITS。在本发明的一个实施方式中,每个HTS连接到PCIe架构中的每一个其他ITS,产生PCIe架构中的级之间的完全连接的网格网。每个HTS还可以经由其根端口(未示出)连接到处理器。本发明的实施方式可以在没有级之间的完全连接的网格网的情况下被实施,而不偏离本发明。
在一个实施方式中,每个HTS被配置成:(i)从其连接的持久存储模块(PSM)接收TLP并使用地址路由将该TLP路由到HTS上的合适出口端口(典型地下游端口)以及(ii)从HTS连接到的一个或多个ITS接收TLP并使用地址路由将该TLP路由到HTS上的合适出口端口(下游端口的一个或多个和/或上游端口)。
在一个实施方式中,存储模块(2100A-2110B)的每一个包括持久存储(未示出)且可选地易失性存储器(未示出)(例如,动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM和DDR SDRAM)。持久存储可以包括但不限于NAND闪存、NOR闪存、磁性RAM存储器(M-RAM)、自旋扭矩磁性RAM存储器(ST-MRAM)、相变存储器(PCM)、忆阻存储器、定义为非易失性存储级存储器(SCM)的任意其他存储器、磁盘和光盘。本领域技术人员应当理解本发明的实施方式不限于存储级存储器。在本发明的一个实施方式中,PSM的每一个是仅一个片的部分。
处理器2112A-2112B的每一个可以是具有被配置成执行指令的单核或被配置成执行指令的多核的电子电路的组。处理器可以使用复杂指令集(CISC)架构或精简指令集(RISC)架构被实施。在本发明的一个或多个实施方式中,处理器包括根复合体(如PCIe标准定义)(未示出)。该根复合体将处理器连接到至少一个片和存储器(114A、114B)(例如动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM和DDR SDRAM),其经由PCIe架构可访问但是不是PCIe架构中的任意片的部分。
在一个实施方式中,PCIe架构2100内的处理器(2112A、2112B)能够例如使用处理器互连(2116)(例如因特尔QuickPath互连、因特尔前侧总线或AMD超传输)通信。本领域技术人员可以理解其他点对点通信机制可以被使用以允许处理器(2112A、2112B)之间的直接通信,而不偏离本发明的实施方式。虽然客户端被耦合到ITS且PSM被耦合到HTS,客户端还可以耦合到HTS且PSM连接到ITS。
在另一实施方式中,PCIe架构可以被实施,由此其不包括PSM2110A-2110B;而是ITS和HTS被连接到客户端的分开的集合,其中PCIe架构促进客户端之间的通信。此外,虽然示出的PCIe架构仅包括两个片、两个处理器和四个PSM,但是PCIe架构2100可以被实施具有更少或更多数量的上述组件的每一个而不偏离本发明。此外,虽然PCIe架构2100连接到四个客户端和两个存储器,本发明的实施方式可以被实施以使得PCIe架构能够与更少或更多数量的客户端和/或存储器连接。
此外,虽然本发明的实施方式参考包括存储(例如PSM 2110A-2110B)的PCIe架构被描述,但是本发明的实施方式可以被实施以使得任意两个设备能够使用PCIe架构进行通信。例如,在本发明的一个实施方式中,客户端可以是刀片服务器,其中刀片服务器不包括任意物理NIC卡且PSM可以被网络端点设备替换。
在该示例中,网络端点设备是被配置成使用联网协议与网络(即有线网络、无线网络或其组合)对接和经由PCIe与PCIe架构对接的设备。网络端点设备的示例是PICe NIC卡。网路端点设备的每一个可以包括持久存储(如上面关于PSM描述的)和存储端点设备存储器(例如动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM、DDR SDRAM、或任意其他类型的易失性存储器)的组合。
在另一示例中,在本发明的一个或多个实施方式中,PSM 2110A-2110B可以被存储端点设备(即,包括用于存储数据和服务来自客户端的读取和写入请求的功能的设备)替换。存储端点设备每一个可以包括持久存储(如以上关于PSM所描述)和存储端点设备存储器(例如动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM、DDR SDRAM、或任意其他类型的易失性存储器)的组合。存储端点设备的示例是存储设施。本发明不限于该示例。
此外,本发明的实施方式可以被扩展为包含经由PCIe架构通信的两个或更多个设备。在一般情况中,PSM 2110A-2110B可以一般化为目标设备,其中目标设备可以包括PSM、网络端点设备、存储端点设备、或能够使用PCIe通信的任意其他设备。虽然PCIe架构2100被示出为包括PSM(或更一般化的目的设备),PCIe架构2100可以被实施为其不包括目的设备;而是PCIe架构2100仅包括用于连接到目的设备的必要物理组件。
图7是示出了根据本发明的一个实施方式的存储模块的示例的框图。存储模块2320包括存储模块控制器(2322)、存储器(2324)和一个或多个持久存储器模块(2330A-2330N)。持久存储器模块2330A-2330N可以是固态存储器设备,例如闪存设备。在一个实施方式中,存储模块控制器(2322)被配置成接收从一个或多个控制模块读取和/或向一个或多个控制模块写入数据的请求。此外,存储模块控制器(2322)被配置成使用存储器(2324)和/或持久存储器模块(2330A-2330N)服务该读取和写入请求。存储模块控制器(2322)可以包括DMA引擎,其中DMA引擎被配置成从存储器(2324)或从持久存储器模块(2330A-2330N)的一个读取数据并将该数据的副本写入到客户端存储器中的物理地址。此外,DMA引擎可以被配置成将来自存储器(2324)的数据写入到持久存储器模块的一个或多个。在本发明的一个实施方式中,DMA引擎被配置成由处理器编程。
存储器(2324)可以是任意易失性存储器,包括但不限于动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM以及DDR SDRAM。存储器(2324)可以逻辑上或物理上被划分为圆顶存储器(2326)和缓存(2328)。在在存储模块中通知供电故障的情况下(或在存储模块可以丢失供电的另一情况下)存储模块控制器(2322)被配置成将圆顶存储器(2326)的整个内容写入到持久存储器模块(2330A-2330N)的一个或多个。在本发明的一个实施方式中,存储模块控制器(2322)被配置成在供电故障通知到存储模块的供电实际丢失之间的时间将圆顶存储器(2326)的整个内容写入到持久存储器模块(2330A-2330N)的一个或多个。相反,缓存(2328)的内容在供电故障的情况下(或存储模块可以丢失供电的另一情况下)丢失。
持久存储器模块可以是使用固态存储器存储持久数据的任意数据存储设备。在本发明的一个实施方式中,固态存储器可以包括但不限于NAND闪存、NOR闪存、磁性RAM存储器(M-RAM)、自旋扭矩磁性RAM存储器(ST-MRAM)、相变存储器(PCM)、忆阻存储器、或定义为非易失性存储级存储器(SCM)的任意其他存储器。本领域技术人员可以理解本发明的实施方式不限于存储级存储器。
在一个实施方式中,以下的存储位置是统一地址空间的部分:(i)经由客户端交换机可访问的客户端存储器的部分,(ii)控制模块中的存储器,(iii)存储模块中的存储器,以及(iv)固态存储器模块。因此,从存储设施中的处理器角度来看,上述的存储位置(当物理上分开时)表现为物理地址的单个池。换句话说,处理器可以发送用于存储在统一地址空间中的物理地址的任意的数据的读取和/或写入请求。上述存储位置可以称为存储架构,其使用统一地址空间可访问。统一地址空间部分由客户端交换机中的不透明桥创建,其允许控制模块中的处理器“看到”客户端存储器的部分。因此,控制模块中的处理器可以在其能够“看到”的客户端存储器的部分执行读取和/或写入请求。
之前详细描述的一些部分已经就计算机存储器内的数据比特的操作的算法和符号表述方面被描述。这些算法描述和表述是数据处理领域的技术人员使用的方式,以最有效向其他领域技术人员表达其工作的实质。这里算法一般地被认为是导致期望结果的操作的自相一致的序列。该操作是需要物理量的物理操作。
但是应当知道,这些和类似术语的全部是与合适的物理量相关联且仅是应用于这些量的方便标签。除非从以上描述明显另有指明,否则可以理解本说明书中,使用诸如权利要求中提出的这些术语的描述涉及计算机系统或类似的电子计算设备的动作和过程,其将计算机系统的寄存器和存储器内的物理(电子)量表述的数据处理并转换成计算机系统存储器或寄存器或其他该信息存储、传输或显示设备内的物理量类似表述的其他数据。
本发明的实施方式还涉及用于执行这里的操作的装置。这样的计算机程序被存储在非暂态计算机可读介质中。机器可读介质包括用于以机器(例如计算机)可读的形式存储信息的任意机制。例如,机器可读(例如计算机可读)介质包括机器(例如计算机)可读存储介质(例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备)。
之前图中示出的过程或方法可以由处理逻辑执行,其包括硬件(例如电路、专用逻辑等)、(例如包含在非暂态计算机可读介质中的)软件或其组合。虽然以上以一些有序操作的方式描述过程或方法,应当理解描述的操作的一些可以以不同顺序被执行。此外,可以并行而不是按顺序执行一些操作。
本发明的实施方式没有参考任意特定编程语言描述,可以理解各种编程语言可以用于实施这里描述的本发明的实施方式的教示。
在上面的说明书中,本发明的实施方式参考其特定示意性实施方式被描述。明显的是可以对其进行各种修改而不偏离权利要求书提出的本发明的更宽实质和范围。因此,说明书和附图被视为示意性而非限制性。
Claims (27)
1.一种存储系统,该存储系统包括:
通信架构;
连接到所述通信架构的客户端设备;
经由所述通信架构连接到所述客户端设备的第一控制模块CM;
经由所述通信架构连接到所述客户端设备的第二CM,其中所述第一CM和所述第二CM经由处理器间链路彼此连接;以及
连接到所述通信架构的存储模块,其中所述第一CM适用于:
从客户端设备接收用于读取存储在所述存储模块的第二存储位置中的第一数据的第一请求,该第二存储位置与第二CM相关联,
经由所述处理器间链路将第一控制信号传送到所述第二CM以请求该第二CM将所述第一数据从所述第二存储位置复制到所述存储模块的第一存储器位置,该第一存储器位置与所述第一CM相关联,以及
发起第一数据事务以通过所述通信架构将所述第一数据从所述第一存储器位置传送所述客户端设备,而不必经过所述第二CM。
2.根据权利要求1所述的存储系统,其中响应于所述第一控制信号,所述第二CM适用于:
从所述第二存储位置获取所述第一数据,
将所述第一数据存储在所述第一存储器位置中,以及
从所述第二CM向所述第一CM传送第二控制信号以指示所述第一数据在所述第一存储器位置处可得,其中所述第一CM响应于所述第二控制信号发起所述第一数据事务。
3.根据权利要求2所述的存储系统,其中所述第二存储位置在所述存储模块的持久存储设备内,其中所述第一存储器位置在所述存储模块的随机存取存储器RAM设备的第一存储器区内,且其中所述第一存储器区与所述第一CM相关联。
4.根据权利要求3所述的存储系统,其中所述第一数据从所述持久存储设备的所述第二存储位置被加载到所述RAM设备的第二存储器区,其中所述第二存储器区与所述第二CM相关联,且其中所述第一数据然后从所述第二存储器区被复制到所述RAM设备的第一存储器区。
5.根据权利要求1所述的存储系统,该存储系统还包括直接存储器存取DMA引擎,其中用于传送所述第一数据的所述第一数据事务包括从所述第一存储器位置到所述客户端的客户端存储器的DMA事务。
6.根据权利要求1所述的存储系统,其中所述通信架构包括高速外围组件接口PCIe架构。
7.根据权利要求1所述的存储系统,其中所述第一CM还适用于:
从所述客户端接收用于将第二数据写入到所述存储模块的第四存储位置的第二请求,该第四存储位置与所述第二CM相关联,
响应于该第二请求,发起第二数据事务以传送该第二数据到所述存储模块的第三存储器位置,该第三存储器位置与所述第一CM相关联,以及
将所述第二数据从所述第三存储器位置复制到所述存储模块内的所述第四存储位置。
8.根据权利要求7所述的存储系统,其中所述第一CM响应于所述第二数据事务传送第三控制信号给所述第二CM以指示所述第二数据已经被存储在所述第三存储器位置,其中响应于所述第三控制信号,所述第二CM使得所述第二数据从所述第三存储器位置被复制到所述第四存储位置。
9.根据权利要求7所述的存储系统,其中所述第二数据事务包括用于将所述第二数据从所述客户端设备的客户端存储器移到所述第三存储器位置的直接存储器存取DMA事务。
10.一种用于访问存储系统中的数据的计算机执行的方法,该方法包括:
在存储系统的第一控制模块CM处,从客户端设备接收用于读取存储在存储模块的第二存储位置中的第一数据的第一请求,该第二存储位置与第二CM相关联,其中该第一CM包括第一处理器以及该第二CM包括第二处理器;
经由处理器间链路将第一控制信号从所述第一CM传送到所述第二CM以请求该第二CM将所述第一数据从所述第二存储位置复制到所述存储模块的第一存储器位置,该第一存储器位置与所述第一CM相关联;以及
由所述第一CM发起第一数据事务以通过通信架构将所述第一数据从所述第一存储器位置传送至所述客户端设备,而不必经过所述第二CM。
11.根据权利要求10所述的方法,该方法还包括:
响应于所述第一控制信号,由所述第二CM从所述第二存储位置获取所述第一数据;
将所述第一数据存储在所述第一存储器位置中;以及
从所述第二CM向所述第一CM传送第二控制信号以指示所述第一数据在所述第一存储器位置处可得,其中所述第一CM响应于所述第二控制信号发起所述第一数据事务。
12.根据权利要求11所述的方法,其中所述第二存储位置在所述存储模块的持久存储设备内,其中所述第一存储器位置在所述存储模块的随机存取存储器RAM设备的第一存储器区内,且其中所述第一存储器区与所述第一CM相关联。
13.根据权利要求12所述的方法,其中所述第一数据从所述持久存储设备的所述第二存储位置被加载到所述RAM设备的第二存储器区,其中所述第二存储器区与所述第二CM相关联,且其中所述第一数据然后从所述第二存储器区被复制到所述RAM设备的第一存储器区。
14.根据权利要求10所述的方法,其中用于传送所述第一数据的所述第一数据事务包括从所述第一存储器位置到所述客户端设备的客户端存储器的直接存储器存取DMA事务。
15.根据权利要求10所述的方法,其中所述通信架构包括高速外围组件接口PCIe架构。
16.根据权利要求10所述的方法,该方法还包括:
在所述第一CM处,从所述客户端设备接收用于将第二数据写入到所述存储模块的第四存储位置的第二请求,该第四存储位置与所述第二CM相关联;
响应于该第二请求,由所述第一CM发起第二数据事务以传送该第二数据到所述存储模块的第三存储器位置,该第三存储器位置与所述第一CM相关联;以及
将所述第二数据从所述第三存储器位置复制到所述存储模块内的所述第四存储位置。
17.根据权利要求16所述的方法,该方法还包括响应于所述第二数据事务从所述第一CM传送第三控制信号给所述第二CM以指示所述第二数据已经被存储在所述第三存储器位置,其中响应于所述第三控制信号,所述第二CM使得所述第二数据从所述第三存储器位置被复制到所述第四存储位置。
18.根据权利要求16所述的方法,其中所述第二数据事务包括用于将所述第二数据从所述客户端设备的客户端存储器移到所述第三存储器位置的直接存储器存取DMA事务。
19.一种用于访问存储系统中的数据的设备,该设备包括:
用于在第一控制模块CM处从客户端设备接收用于读取存储在存储模块的第二存储位置中的第一数据的第一请求的装置,该第二存储位置与第二CM相关联,其中该第一CM包括第一处理器以及该第二CM包括第二处理器;
用于经由处理器间链路将第一控制信号从所述第一CM传送到所述第二CM以请求该第二CM将所述第一数据从所述第二存储位置复制到所述存储模块的第一存储器位置的装置,该第一存储器位置与所述第一CM相关联;以及
用于由所述第一CM发起第一数据事务以通过通信架构将所述第一数据从所述第一存储器位置传送所述客户端设备而不必经过所述第二CM的装置。
20.根据权利要求19所述的设备,该设备还包括:
响应于所述第一控制信号,用于由所述第二CM从所述第二存储位置获取所述第一数据的装置;
用于将所述第一数据存储在所述第一存储器位置中的装置;以及
用于从所述第二CM向所述第一CM传送第二控制信号以指示所述第一数据在所述第一存储器位置处可得的装置,其中所述第一CM响应于所述第二控制信号发起所述第一数据事务。
21.根据权利要求20所述的设备,其中所述第二存储位置在所述存储模块的持久存储设备内,其中所述第一存储器位置在所述存储模块的随机存取存储器RAM设备的第一存储器区内,且其中所述第一存储器区与所述第一CM相关联。
22.根据权利要求21所述的设备,其中所述第一数据从所述持久存储设备的所述第二存储位置被加载到所述RAM设备的第二存储器区,其中所述第二存储器区与所述第二CM相关联,且其中所述第一数据然后从所述第二存储器区被复制到所述RAM设备的第一存储器区。
23.根据权利要求19所述的设备,其中用于传送所述第一数据的所述第一数据事务包括从所述第一存储器位置到所述客户端设备的客户端存储器的直接存储器存取DMA事务。
24.根据权利要求19所述的设备,其中所述通信架构包括高速外围组件接口PCIe架构。
25.根据权利要求19所述的设备,该设备还包括:
用于在所述第一CM处从所述客户端设备接收用于将第二数据写入到所述存储模块的第四存储位置的第二请求的装置,该第四存储位置与所述第二CM相关联;
响应于该第二请求,用于由所述第一CM发起第二数据事务以传送该第二数据到所述存储模块的第三存储器位置的装置,该第三存储器位置与所述第一CM相关联;以及
用于将所述第二数据从所述第三存储器位置复制到所述存储模块内的所述第四存储位置的装置。
26.根据权利要求25所述的设备,该设备还包括用于响应于所述第二数据事务从所述第一CM传送第三控制信号给所述第二CM以指示所述第二数据已经被存储在所述第三存储器位置的装置,其中响应于所述第三控制信号,所述第二CM使得所述第二数据从所述第三存储器位置被复制到所述第四存储位置。
27.根据权利要求25所述的设备,其中所述第二数据事务包括用于将所述第二数据从所述客户端设备的客户端存储器移到所述第三存储器位置的直接存储器存取DMA事务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/983,269 | 2015-12-29 | ||
US14/983,269 US10013370B2 (en) | 2015-12-29 | 2015-12-29 | Method and system for providing access of a storage system using a shared storage module as a transport mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933504A CN106933504A (zh) | 2017-07-07 |
CN106933504B true CN106933504B (zh) | 2020-03-13 |
Family
ID=59087223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610228110.2A Active CN106933504B (zh) | 2015-12-29 | 2016-04-01 | 用于提供存储系统的访问的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10013370B2 (zh) |
CN (1) | CN106933504B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10963394B2 (en) * | 2018-04-16 | 2021-03-30 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
US10409511B1 (en) | 2018-06-30 | 2019-09-10 | Western Digital Technologies, Inc. | Multi-device storage system with distributed read/write processing |
US10725941B2 (en) | 2018-06-30 | 2020-07-28 | Western Digital Technologies, Inc. | Multi-device storage system with hosted services on peer storage devices |
US10592144B2 (en) * | 2018-08-03 | 2020-03-17 | Western Digital Technologies, Inc. | Storage system fabric with multichannel compute complex |
US11294763B2 (en) | 2018-08-28 | 2022-04-05 | Hewlett Packard Enterprise Development Lp | Determining significance levels of error values in processes that include multiple layers |
US10984860B2 (en) * | 2019-03-26 | 2021-04-20 | Hewlett Packard Enterprise Development Lp | Self-healing dot-product engine |
US10977189B2 (en) * | 2019-09-06 | 2021-04-13 | Seagate Technology Llc | Reducing forward mapping table size using hashing |
CN112559420B (zh) * | 2020-12-21 | 2024-01-23 | 国家电网有限公司能源互联网技术研究院 | 基于双高速总线自主可控的数据通信网关机及通信方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589659B1 (en) * | 2012-11-08 | 2013-11-19 | DSSD, Inc. | Method and system for global namespace with consistent hashing |
US8924596B1 (en) * | 2013-12-06 | 2014-12-30 | Concurrent Ventures, LLC | System and method for dividing and synchronizing a processing task across multiple processing elements/processors in hardware |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7631021B2 (en) * | 2005-03-25 | 2009-12-08 | Netapp, Inc. | Apparatus and method for data replication at an intermediate node |
JP2006344119A (ja) * | 2005-06-10 | 2006-12-21 | Fujitsu Ltd | ストレージ装置、構成情報管理方法及びプログラム |
JP5008845B2 (ja) * | 2005-09-01 | 2012-08-22 | 株式会社日立製作所 | ストレージシステムとストレージ装置及びその制御方法 |
JP2007188341A (ja) * | 2006-01-13 | 2007-07-26 | Hitachi Ltd | 記憶デバイス制御装置 |
WO2011141963A1 (en) * | 2010-05-13 | 2011-11-17 | Hitachi, Ltd. | Information processing apparatus and data transfer method |
US20130179481A1 (en) * | 2012-01-11 | 2013-07-11 | Tonian Inc. | Managing objects stored in storage devices having a concurrent retrieval configuration |
US8554963B1 (en) | 2012-03-23 | 2013-10-08 | DSSD, Inc. | Storage system with multicast DMA and unified address space |
US8819317B1 (en) * | 2013-06-12 | 2014-08-26 | International Business Machines Corporation | Processing input/output requests using proxy and owner storage systems |
US9003090B1 (en) | 2014-03-25 | 2015-04-07 | DSSD, Inc. | PCI express fabric routing for a fully-connected mesh topology |
-
2015
- 2015-12-29 US US14/983,269 patent/US10013370B2/en active Active
-
2016
- 2016-04-01 CN CN201610228110.2A patent/CN106933504B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589659B1 (en) * | 2012-11-08 | 2013-11-19 | DSSD, Inc. | Method and system for global namespace with consistent hashing |
US8924596B1 (en) * | 2013-12-06 | 2014-12-30 | Concurrent Ventures, LLC | System and method for dividing and synchronizing a processing task across multiple processing elements/processors in hardware |
Also Published As
Publication number | Publication date |
---|---|
US20170185543A1 (en) | 2017-06-29 |
CN106933504A (zh) | 2017-07-07 |
US10013370B2 (en) | 2018-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933504B (zh) | 用于提供存储系统的访问的方法和系统 | |
US9921756B2 (en) | Method and system for synchronizing an index of data blocks stored in a storage system using a shared storage module | |
US8407377B1 (en) | Storage system with multicast DMA and unified address space | |
CN106933500B (zh) | 访问存储在存储系统中的数据对象的方法和系统 | |
US9870154B2 (en) | Network storage system using flash storage | |
EP3267322B1 (en) | Scalable direct inter-node communication over peripheral component interconnect-express (pcie) | |
US8478835B2 (en) | Method and system for using shared memory with optimized data flow to improve input/output throughout and latency | |
US8301832B1 (en) | Storage system with guaranteed read latency | |
US20210326270A1 (en) | Address translation at a target network interface device | |
US20220188249A1 (en) | Memory appliance couplings and operations | |
CN107430584B (zh) | 经由具有完全连接网格拓扑的pci express结构从存储读取数据 | |
CN107533526B (zh) | 经由具有完全连接网格拓扑的pci express结构向存储写入数据 | |
US11093161B1 (en) | Storage system with module affinity link selection for synchronous replication of logical storage volumes | |
US9921753B2 (en) | Data replication across host systems via storage controller | |
CN113434290A (zh) | 基于raft协议的数据处理方法和设备,及计算机存储介质 | |
US11972112B1 (en) | Host IO device direct read operations on peer memory over a PCIe non-transparent bridge | |
US11487695B1 (en) | Scalable peer to peer data routing for servers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |