CN104283938A - 用于在存储服务器之间复制数据的技术 - Google Patents
用于在存储服务器之间复制数据的技术 Download PDFInfo
- Publication number
- CN104283938A CN104283938A CN201410321310.3A CN201410321310A CN104283938A CN 104283938 A CN104283938 A CN 104283938A CN 201410321310 A CN201410321310 A CN 201410321310A CN 104283938 A CN104283938 A CN 104283938A
- Authority
- CN
- China
- Prior art keywords
- storage server
- data
- rdma
- equipment
- network
- 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
-
- 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/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明描述了用于在存储服务器之间复制数据的技术。公开了用于在存储服务器之间复制数据的示例。在某些示例中,耦合到客户端设备或存储服务器的网络输入/输出(I/O)设备可以交换从客户端设备接收到的与复制数据相关联的远程直接存储器访问(RDMA)命令或RDMA完成命令。数据可以被复制到通过相应的网络通信链路彼此互连和/或互连到客户端设备的多个存储服务器。描述并要求保护其他示例。
Description
技术领域
此处所描述的示例一般涉及将数据从客户端设备复制到多个存储服务器。
背景技术
对数据可靠性和可恢复性的典型解决方案可以是使用冗余独立磁盘阵列(redundant array of independent disk:RAID)。RAID的实现可以在从简单镜像到冗余奇偶校验块之间变动。与存储容量相关联的成本持续下降。网络访问时间或网络带宽能力改善,以使得可以在与本地可访问存储的时间相当的时间下使用网络可访问存储。由于较低的成本和较大的网络带宽能力,诸如因特网公用数据中心(IPDC)之类的许多数据中心使用多个网络节点或存储服务器来管理数据可靠性并且改善数据访问可缩放性。
附图说明
图1示出了第一示例系统。
图2示出了示例完成队列元素。
图3示出了第二示例系统。
图4示出了第三示例系统。
图5示出了第四示例系统。
图6示出了第五示例系统。
图7示出了第六示例系统。
图8示出了第七示例系统。
图9示出了第一设备的示例框图。
图10示出第一逻辑流程的示例。
图11示出第一存储介质的示例。
图12示出了第一网络输入/输出设备的示例。
图13示出了第二设备的示例框图。
图14示出第二逻辑流程的示例。
图15示出了第二存储介质的示例。
图16示出了第二网络输入/输出设备的示例。
具体实施方式
如在本发明中设想的,数据中心可以使用多个网络节点或存储服务器来管理数据可靠性,改善数据访问可缩放性。复制数据的多个存储服务器可能部分地由于硬盘驱动器或固态驱动器(SSD)的存储容量扩展,以使得各种RAID方案用来保护数据变得困难或不切实际。例如,使用带有分布式奇偶校验块(parity block)的块条带(block stripping)的RAID5方案可能具有长得不能接受的重建时间,并且在从以前的错误恢复时遇到不可恢复的错误的概率可能不再是可忽略的。另一种RAID方案,RAID6尝试通过添加冗余奇偶校验块来解决RAID5的这些问题。然而,添加冗余奇偶校验块可能会显著增大数据保护开销。
在某些示例中,使用多个存储服务器的方案可以使用每一存储服务器作为类似于RAID方案中的硬盘或硬盘驱动的冗余单元。对于这些多个存储服务器方案,从客户端设备进行数据复制可能是级联的。换言之,客户端设备可以向存储服务器发出存储器请求,然后,存储服务器将数据复制到其他存储服务器(包括提供合适的纠错码/校验和)。在一些解决方案中,服务器在实际执行复制之前确认数据的写入/复制的完成。这可以避免来自多个事务的等待时间/开销。然而,客户端设备可能没有数据成功地被复制到其他存储服务器的确认。
最近,存储服务器开始包括具有试图最小化操作系统和主机处理器参与的增强能力的存储控制器和网络(NW)输入/输出(I/O)设备。例如,诸如命令提交和命令完成队列之类的硬件元件可以被存储服务器的NWI/O设备和存储控制器用来允许客户端或主机设备远程通过被称为远程直接存储器访问(RDMA)的过程来访问存储器。
在这些远程可访问存储服务器上维护的存储控制器还被设计成可以遵循可与RDMA一起良好工作的相对新的互连通信协议来操作。进一步地,这些存储控制器可以控制对硬盘驱动器(HDD)或固态驱动器(SSD)的访问。SSD可以包括,但不仅限于,各种类型的非易失性存储器,诸如3维交叉点存储器、闪存、铁电存储器、硅氧化物氮化物氧化物硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(EEPROM)。在某些示例中,对HDD或SSD的访问可以包括使用行业标准或规范(包括后代或变体)(诸如2010年11月发布的外围组件互连(PCI)Express(快速)基本规范(“PCI Express”或“PCIe”))中所描述的互连通信协议,和/或使用各种基于PCIe的SSD的控制器接口(诸如2012年10月发布的非易失性存储器Express(nvme)规范修订版1.1)。
遵循NVMe规范操作的存储控制器(“NVMe控制器”)在允许远程客户端或主机设备访问诸如SSD之类的存储设备时可以能够最小化操作系统和主机处理器参与,并使用这些存储设备来支持可靠性、可用性和可维修性(RAS)解决方案。这些类型的远程可访问NVMe受控存储器设备,在与高速网络连接(例如,10千兆每秒钟(Gbps)或更高)耦合时,可以被高效地用于支持包括多个存储服务器的RAS解决方案。然而,如上文所提及的,仅仅级联客户端设备和存储服务器之间的数据复制可能会导致没有数据在存储服务器之间被成功地复制的明显指示。正是针对这些和其它挑战才需要此处所描述的示例。
在某些示例中,可以实现在存储服务器之间复制数据的技术。对于这些示例,技术可以包括在耦合到客户端设备的NW I/O设备处发送将用于复制的数据存储到多个存储服务器的RDMA命令消息。可以通过一个或多个存储服务器和客户端设备之间的至少一个网络连接,将RDMA命令消息发送到多个存储服务器之中的一个或多个存储服务器。此外,对于这些示例,还可以从所述一个或多个存储服务器中接收一个或多个RDMA命令完成消息,所述完成消息用于指示所述数据在所述多个存储服务器之中的至少第一存储服务器和第二存储服务器之间的复制。
根据某些其他示例,技术可以包括在耦合到第一存储服务器的NW I/O设备中,通过第一网络连接,从远程客户端接收第一RDMA命令消息。对于这些其他示例,第一RDMA命令消息可以与在由第一存储服务器中维护的第一NVMe控制器控制的第一存储设备处存储数据相关联。然后,可以将所述第一RDMA命令消息转发到所述第一NVMe控制器以导致第一NVMe控制器响应于RDMA命令消息而从远程客户端获取数据并将所述数据存储到第一存储设备中。然后,可以将RDMA命令完成消息从所述第一NVMe控制器转发到所述远程客户端以指示数据的存储。这些其他示例也可以包括通过第二网络连接,从第二存储服务器接收第二RDMA命令消息。第二RDMA命令消息可以与复制存储到第一存储设备的数据相关联。然后,可以将第二RDMA命令消息转发到第一NVMe控制器。然后,第一NVMe控制器可以导致存储在第一存储设备上的数据可被第二存储服务器读取,以使第二存储服务器能够通过将数据存储到由在第二存储服务器中维护的第二NVMe控制器控制的第二存储设备来复制数据。
图1示出了第一示例系统。如图1所示,第一示例系统包括具有通过网络50通信地耦合到服务器20的客户端10的系统100。根据某些示例,术语“主机计算机”、“主机设备”、“主机”、“客户端设备”、“客户端”和“客户端节点”可以可互换地使用,并可以表示,例如但不限于:一个或多个终端站、移动因特网设备、智能电话、媒体设备、输入/输出(I/O)设备、平板电脑、电器、中间站、网络接口、客户端、和/或其一些部分。此外,在某些示例中,术语“服务器”、“存储服务器”、“服务器节点”、“复制服务器”、“存储节点”,或“远程存储服务器”可以可互换地使用,并可以表示,例如但不限于客户端设备远程可访问的(例如,通过网络连接)的服务器。虽然客户端10、服务器20以及网络50将以单数引用的,但是应该理解,每一这样的相应的组件都可以包括多个这样的相应的组件,而不会偏离这些示例。
根据某些示例,“网络”可以是或包括任何机构、工具、模态和/或其部分,其至少部分地准许、便于和/或允许两个或更多个实体通信地耦合到一起。也在某些示例中,如果第一实体能够向第二实体传输和/或从第二实体接收一个或多个命令和/或数据,则第一实体可以“通信地耦合”到第二实体。此外,数据和信息还以可互换地使用,并可以是或包括一个或多个命令(例如,一个或多个程序指令),和/或一个或多个这样的命令可以是或包括数据和/或信息。此外,对于这些示例,“指令”可包括数据和/或一个或多个命令。
客户端10可以包括此处被称为网络(NW)I/O设备106的远程直接存储器访问(RDMA)启用的网络接口控制器(RNIC)和/或一个或多个(以及在图1所示出的示例中,多个)缓冲器13。
如图1所示,服务器20可以包括一个或多个集成电路(IC)芯片180、存储器21,和/或存储150。一个或多个芯片180可以具有可以包括NW I/O设备108、可管理性模块109或NVMe控制器112的电路118。虽然在图1中未示出,但是,在某些示例中,NW I/O设备108和/或NVMe控制器112可以分别地是耦合到服务器20并包括如下面进一步描述的电路的可附连设备。
也如图1所示,一个或多个芯片180可被整合到一个或多个多核主机处理器(HP)和/或中央处理单元(CPU)12内。尽管在图中未示出,然而,服务器20也可包括一个或多个芯片组或设备,以包括,但不仅限于,存储器或输入/输出控制器电路)。NW I/O设备108、NVMe控制器112,和/或HP/CPU12可以能够相互进行通信。另外,NW I/O设备108、NVMe控制器112、可管理性模块109和/或HP/CPU12可以能够通过一个或多个这样的芯片组,访问服务器20的一个或多个其他组件(诸如存储器21和/或存储150)和/或与它们进行通信。在某些示例中,客户端10和/或NW I/O设备106可以远离(例如,在地理位置上远离)服务器20和/或NW I/O设备108。
根据某些示例,“电路”可包括例如单个或任意组合形式的模拟电路、数字电路、硬连线电路、可编程电路、协处理器电路、状态机电路和/或可包括程序指令的存储器,该程序指令可由可编程电路执行。也在某些示例中,处理器、HP、CPU、处理器核(PC)、核和控制器中的每一个都可以包括能够执行一个或多个算术和/或逻辑操作和/或执行一个或多个指令的相应的电路。集成电路芯片可以包括一个或多个微电子器件、衬底,和/或管芯。虽然在图1中未示出,但是,服务器20可以具有图形用户界面系统,该系统可以包括,例如,相应的键盘、指示设备以及可以允许个人用户向服务器20和/或系统100输入命令以及监测服务器20和/或系统100的操作的显示系统。此外,存储器还可以包括下列类型的存储器中的一种或多种:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机存取存储器、闪存、磁盘存储器、光盘存储器和/或其他或未来开发的计算机可读和/或可写存储器。
在某些示例中,存储150可以包括大容量存储156。对于这些示例,存储150可以包括一个或多个设备,可以分别向其中存储数据和/或从其中检索数据。此外,对于这些示例,大容量存储还可以包括能够对数据进行非易失性存储的存储。例如,大容量存储156可包括但不限于一个或多个非易失性电机械、磁、光学和/或半导体存储设备。这些设备可以包括硬盘驱动器(HDD)或固态驱动器(SSD)。SSD可以具有非易失性存储器,诸如3维交叉点存储器、闪存、铁电存储器、硅氧化物氮化物氧化物硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(EEPROM)。
根据某些示例,可管理性模块109、NVMe控制器112、存储150或大容量存储156可以能够遵循PCIe规范和/或NVMe规范操作。
一个或多个机器可读程序指令可以存储在存储器21中。在服务器20的操作中,这些机器可读指令可以由一个或多个主机处理器12、NW I/O设备108,和/或NVMe控制器112来访问和执行。当被一个或多个HP 12执行时,这些一个或多个机器可读指令可以导致一个或多个操作系统环境(OSE)31由一个或多个HP12执行,并变成驻留在存储器21中。此外,当这些机器可读指令由NW I/O设备108和/或NVMe控制器112执行时,这一个或多个指令可以导致NVMe控制器112的一个或多个命令接口、一个或多个门铃(doorbell)192、一个或多个指针202、一个或多个代理194、一个或多个完成队列124,和/或一个或多个提交队列126被建立和/或由NWI/O设备108和/或NVMe控制器112执行,和/或变成驻留在存储器21中。
根据某些示例,一个或多个OSE32可以包括一个或多个操作系统(OS)31和/或一个或多个NW I/O设备和/或NVMe控制器驱动器33。这一个或多个驱动器33可以与一个或多个OS 31相互不同。另选地或另外地,在不偏离这些示例的情况下,一个或多个OS 32和/或驱动器33的一个或多个相应的部分可以相互不同,和/或可以包括在彼此中。同样,在不偏离这些示例的情况下,电路118、NW I/O设备108、可管理性模块109和/或NVMe控制器112可以不同于一个或多个未示出的芯片组和/或HP12,或者可另选地,可以被包括在一个或多个未示出的芯片组和/或HP12中。此外,在不偏离这些示例的情况下,存储器21的一个或多个部分可以被包括在或维护在NW I/O设备108、可管理性模块109、NVMe控制器112、电路118、HP 12,和/或IC 180。
在某些示例中,实体的一部分或子集可以包括实体的全部或少于实体的全部。同时,对于这些示例,进程、线程、守护进程(daemon)、程序、驱动器、操作系统、应用程序、内核和/或虚拟机监视器中的每一个都可以(1)包括,和/或(2)导致和/或来源于,一个或多个操作和/或程序指令的执行。
根据某些示例,命令接口可以至少部分地促进,允许,和/或实现数据和/或一个或多个命令的交换、传输,和/或接收。对于这些示例,队列、缓冲器和/或门铃可以是存储器中可以至少临时地存储数据和/或一个或多个命令的一个或多个位置(例如,由一个或多个地址指定的和/或指出的)。此外,队列元素还可以包括要被存储和/或存储在一个或多个队列中的数据和/或一个或多个命令,诸如,例如,一个或多个描述符和/或一个或多个命令。另外,对于这些示例,指针可以指示,寻址,和/或指定存储器中的一个或多个位置和/或一个或多个项。
在某些示例中,NW I/O设备106和NW I/O设备108可以通过网络50,根据一个或多个协议交换数据和/或命令,该一个或多个协议可以符合和/或兼容于RDMA协议,诸如因特网广域RDMA协议(iWARP)、Infiniband(无限带:IB)协议、以太网协议、传输控制协议/网际协议(TCP/IP)协议和/或汇聚以太网上RDMA(RDMA over converged Ethernet:RoCE)协议。例如,iWARP协议可以符合和/或兼容于Recio等人所著的“An RDMAProtocol Specification(RDMA协议规范)”(因特网草案规范(Internet DraftSpecification),,互联网工程任务组(IETF),2002年10月21日)。还例如,以太网协议可以符合和/或兼容于2008年12月26日电气与电子工程师学会,Inc.(IEEE)标准802.3-2008。另外,例如,TCP/IP协议可以符合和/或兼容于在1981年9月发布的因特网工程任务组(IETF)征求意见资料(RFC)791和793中所描述的协议。此外,IB协议还可以符合和/或兼容于2012年11月发布的InfinibandTM体系结构规范,第2卷版本1.3。另外,例如,RoCE协议可以符合和/或兼容于2010年4月发布的Infiniband架构规范的增补,Vol.1,Rel.1.2.1,附录A16:“汇聚以太网上RDMA(RoCE)”。许多不同的,额外的,和/或其他协议可以用于这样的数据和/或命令交换,而不会偏离这些示例(例如,如上所述的,相关的,和/或其他协议的以前的和/或以后开发的版本)。
根据某些示例,电路118可以允许和/或促进NW I/O设备106通过NWI/O设备108对一个或多个命令接口110的访问。例如,电路118可以允许和/或促进NW I/O设备106能够以独立于服务器20中的OSE32的方式访问一个或多个命令接口110。此访问可以包括,例如,将至少一个队列元素(例如,一个或多个队列元素(QE)116)写入到一个或多个命令接口110中的一个或多个提交队列114。这可以会导致NW I/O设备108将命令转发到NVMe控制器112以执行涉及与NVMe控制器112相关联的存储150和/或大容量存储156的一个或多个操作。NVMe控制器112可以响应于一个或多个队列元素116(例如,在一个或多个队列元素116被写入到一个或多个提交队列114然后由NW I/O设备108转发之后,并响应于此)执行这些一个或多个操作。涉及存储150和/或大容量存储156的这一个或多个操作可以包括涉及存储150和/或大容量存储156的一个或多个写入操作和/或一个或多个读取操作。对于这些示例,户端10由此能够通过由NVMe控制器112执行的一个或多个读取操作和/或一个或多个写入操作访问存储150和/或大容量存储156。
作为示例,在系统100的操作中,客户端10和/或NW I/O设备106可以向服务器20认证客户端10和/或NW I/O设备106和/或NW I/O设备108处的逻辑和/或特征。这可能会导致客户端10和/或NW I/O设备106被给予访问在服务器20的元件中维护的或由该元件控制的设备的权限(例如,通过NW I/O设备108)。与此同时,在此之后或之前,NVMe控制器112、一个或多个代理194,和/或OSE32可以在存储器21中生成、建立,和/或维持一个或多个接口110和/或一个或多个指示符181。一个或多个接口110和/或指示符181可以指出一个或多个接口110和/或其组件可以位于存储器21中的什么位置(例如,一个或多个位置)。例如,一个或多个指示符181可以指示存储器21中的一个或多个提交队列114、一个或多个完成队列120、一个或多个门铃170,和/或一个或多个缓冲器130A...130N可能所在的一个或多个位置。NW I/O设备108可以通过网络50向NW I/O设备106提供一个或多个指示符181。此后,NW I/O设备106可以使用一个或多个指示符181中的一个或多个来访问一个或多个命令接口110和/或一个或多个命令接口110的一个或多个组件。一个或多个指示符181可以是或包括存储器21中的一个或多个区域的一个或多个句柄(例如,被指派给事务上下文),诸如,在此示例中,可符合和/或可兼容于RDMA(例如,iWARP、IB、RoCE)协议的一个或多个服务标记(STag)。在某些示例中,存储器21中的一个或多个区域可以被包括在维护的一个或多个缓冲器中,以促进客户端10对存储150或大容量存储156的远程访问。
在接收一个或多个指示符181之后,客户端10和/或NW I/O设备106可以通过网络50以及NVMe控制器112的NW I/O设备108以绕过和/或独立于OSE32的参与的方式,向服务器20发出一个或多个命令105。一个或多个命令105可以命令NVMe控制器112执行涉及存储150和/或大容量存储156的一个或多个操作。
根据某些示例,一个或多个命令105可以符合和/或兼容于RDMA(例如,iWARP、IB、RoCE)协议。一个或多个命令105可以包括和/或指定可以实现和/或指出涉及存储150和/或大容量存储156的正在被命令的一个或多个操作的一个或多个队列元素116。虽然在图1中未示出,一个或多个命令105可以包括,指定,和/或指示指示符181中的一个或多个,这些指示符可以指示一个或多个提交队列114中的一个或多个位置作为一个或多个队列元素116的一个或多个预期目的地。
在某些示例中,一个或多个队列元素116可以导致NW I/O设备108转发让NVMe控制器112执行涉及存储150和/或大容量存储156的一个或多个写入操作的命令。因此,作为NW I/O设备108向NVMe控制器112转发一个或多个队列元素116的结果,一个或多个命令105还可以包括和/或指定数据199将被写入存储150和/或大容量存储156。一个或多个命令105可以包括,指定,和/或指示指示符志181中的一个或多个,这些指示符可以指示客户端10的一个或多个缓冲器(例如,缓冲器13)中数据199将被(至少临时)写入到的一个或多个位置
在某些示例中,响应于接收到一个或多个命令105,NW I/O设备108可以(例如,根据RDMA(例如,iWARP、IB、RoCE)协议和/或以绕过和/或独立于OSE32的方式),以由一个或多个命令105命令的方式,将一个或多个队列元素116和数据199直接分别写入到一个或多个提交队列114和一个或多个缓冲器130A。如此,事实上,通过向NW I/O设备108发出一个或多个命令105,NW I/O设备106可以将一个或多个队列元素116和数据199分别写入到一个或多个提交队列114和一个或多个缓冲器130A。
一个或多个命令105还可以包括和/或指定一个或多个值201以及一个或多个指示符181,这些指示符可以指示一个或多个门铃170中一个或多个值201可以被写入到的一个或多个位置。响应于一个或多个命令105中的这一个或多个值201以及这一个或多个指示符181,NW I/O设备108可以(例如,根据RDMA(例如,iWARP、IB、RoCE)协议和/或以绕过和/或独立于OSE 32的方式),以由一个或多个命令105命令的方式,直接在门铃170中写入一个或多个值201。在门铃170中写入一个或多个值201可以振铃门铃170。如此,事实上,通过向NW I/O设备108发出一个或多个命令105,NW I/O设备106可以振铃门铃170。
根据某些示例,与实体相关联的门铃的振铃可以包括和/或涉及将一个或多个值写入到一个或多个存储器位置(例如,与门铃相关联,包括门铃,和/或实现门铃),这些值可能会导致和/或触发实体执行一个或多个操作和/或动作。在某些示例中,门铃170和/或192可以对CPU 12和/或服务器20分别表现为NVMe控制器112和/或NW I/O设备108中的相应的存储器(未示出)中的一个或多个相应的存储器位置(未示出)。
在某些示例中,响应于门铃170的振铃,NVMe控制器112可以返回到完全操作状态(例如,如果NVMe控制器112先前进入了相对于此完全操作状态的功率降低状态),并可以读取被写入到一个或多个提交队列114的一个或多个队列元素116。NVMe控制器112可以执行由一个或多个队列元素116指定和/或实现的一个或多个命令。这可能会导致NVMe控制器112执行涉及存储150和/或大容量存储156的一个或多个操作(例如,存储在一个或多个缓冲器130A中的数据199的向存储150和/或大容量存储156的一个或多个写入)。
根据某些示例,在涉及存储150和/或大容量存储156的这一个或多个操作的完成之后,NVMe控制器112可以生成一个或多个完成队列元素(CQE)129并将它们写入到一个或多个完成队列124。也在涉及存储150和/或大容量存储156的这一个或多个操作完成之后,NVMe控制器112或可管理性模块109可以将一个或多个值写入到与NW I/O设备108相关联的一个或多个门铃192。这可以振铃一个或多个门铃192。响应于一个或多个门铃192的振铃,NW I/O设备108可以(例如,通过一个或多个RDMA写入操作)将一个或多个完成队列元素190写入到一个或多个完成队列120,然后,(例如,通过一个或多个响应197)将一个或多个完成队列元素190转发到客户端10中的一个或多个缓冲器13。
在某些示例中,在执行涉及存储150和/或大容量存储156的一个或多个(例如,若干个)这样的写入和/或读取操作之后,一个或多个代理194可以实现某些管理功能。例如,一个或多个代理194可以在与NW I/O设备108相关联的一个或多个提交队列126中建立一个或多个提交队列条目/元素(E)和/或在表250中建立一个或多个提交队列条目/元素QE A...QE N(参见图2)。如下面比较详细地讨论的,这些元素196A...196N和/或QE A...QE N,当由NW I/O设备108执行时,可以允许和/或促进一个或多个其他队列条目(例如,一个或多个NVMe控制器112完成条目129)向客户端10和/或NW I/O设备106的复制或转发,和/或由NVMe控制器112读取的数据的复制或转发。
根据某些示例,这些管理功能还可以包括由一个或多个代理194更新(例如,适当地推进)与(同NW I/O控制器108和NVMe控制器112相关联的)一个或多个队列对(例如,提交/完成队列对114、120和/或提交/完成队列对126,124)相关联的一个或多个指针(例如,振铃指针PNTR202)。这可以允许将队列对的新条目存储在将不会导致队列对中的其他条目的错误的改写的位置处。另外,作为这些管理功能的一部分,一个或多个代理194可以指示也可以重复使用的缓冲器130A...130N中的一个或多个。
作为另一个示例,一个或多个队列元素116可以命令NVMe控制器112执行涉及存储150和/或大容量存储156的一个或多个读取操作。因此,作为执行一个或多个队列元素116的结果,一个或多个命令105还可以包括和/或指定存储150和/或大容量存储156中NVMe控制器112将从中读取数据199的一个或多个位置(例如,名称空间)。
根据某些示例,响应于接收到一个或多个命令105,NW I/O设备108可以(例如,根据RDMA(例如,iWARP、IB、RoCE)协议和/或以绕过和/或独立于OSE 32的方式),以由一个或多个命令105命令的方式,将一个或多个队列元素116直接写入到一个或多个提交队列114。如此,事实上,通过向NW I/O设备108发出一个或多个命令105,NW I/O设备106可以将一个或多个队列元素116分别写入到一个或多个提交队列114和一个或多个缓冲器130A。
在此示例中,一个或多个命令105还可以包括和/或指定一个或多个值201和指示符181中的一个或多个,这些指示符可以指示一个或多个门铃170中的一个或多个值201可以被写入到的一个或多个位置。响应于一个或多个命令105中的这些一个或多个值201和这一个或多个指示符181,NWI/O设备108可以(例如,根据RDMA(例如,iWARP、IB、RoCE)协议和/或以绕过和/或独立于OSE32的方式),以由一个或多个命令105命令的方式,直接在门铃170中写入一个或多个值201。在门铃170中写入一个或多个值201可以振铃门铃170。如此,事实上,通过向NW I/O设备108发出一个或多个命令105,NW I/O设备106可以振铃门铃170。
根据某些示例,响应于门铃170的振铃,NVMe控制器112可以返回到完全操作状态(例如,如果NVMe控制器112先前进入了相对于此完全操作状态的功率降低状态),并可以读取被写入到一个或多个提交队列114的一个或多个队列元素116。NVMe控制器112随后可以执行由一个或多个队列元素116指定和/或体现的一个或多个命令。这可能会导致NVMe控制器112执行涉及存储150和/或大容量存储156的一个或多个操作(例如,对存储150和/或大容量存储156的获得数据199的一个或多个读取),并将数据199存储在一个或多个缓冲器中(例如,一个或多个缓冲器130A)。
在某些示例中,在涉及存储150和/或大容量存储156的这些一个或多个操作的完成之后,NVMe控制器112可以生成一个或多个完成队列元素(CQE)129并将它们写入到一个或多个完成队列124。也在涉及存储150和/或大容量存储156的这些一个或多个操作完成之后,NVMe控制器112还可以将一个或多个值写入到与NW I/O设备108相关联的一个或多个门铃192。这可以振铃一个或多个门铃192。响应于一个或多个门铃192的振铃,NW I/O设备108可以从一个或多个完成队列124获得队列元素129,并将一个或多个完成队列元素190转发到或写入到一个或多个完成队列120,以促进数据199(例如,通过利用NW I/O设备106的一个或多个RDMA写入操作)向客户端10中的一个或多个缓冲器13的传输(例如,通过一个或多个响应197)。可另选地,可管理性模块109可以从完成队列124获取队列元素129,并将完成队列元素190转发到或写入到完成队列120,以促进数据199向缓冲器13的传输。
根据某些示例,命令接口110可以是异步的,因为,例如,完成队列元素可以不以一顺序存储在一个或多个完成队列120中,该顺序对应于(1)命令队列元素存储在一个或多个提交队列114中的顺序,(2)这样的命令队列元素被转发供由NVMe控制器112执行和/或完成的顺序,和/或(3)完成队列元素190存储在一个或多个完成队列120和/或被提供给NW I/O设备106和/或客户端10的顺序。在操作中,在从客户端10和/或NW I/O设备106发出的写入命令的情况下,NW I/O设备106和/或客户端10可以适当地重新排序从NW I/O设备108接收到的相应的完成队列元素190。然而,在此实施例中,在读取命令的情况下,为了允许从存储150和/或大容量存储156中读取的相应的数据被适当地与对应的完成队列元素190相关联,以传输到客户端10和/或NW I/O设备106,由被NW I/O设备108置于完成队列120中的完成指示所产生的每一个完成队列元素(例如,完成队列元素190)可以包括图2中所示出的元素。
如图2所示,完成队列元素200(例如,完成队列元素190)可以包括一个或多个命令参数304、一个或多个命令队列标识符306、一个或多个命令队列头部(head)位置指示符308、状态信息310、一个或多个队列相位比特(P)312,和/或一个或多个命令标识符302。一个或多个命令参数304可以是和/或指示一个或多个队列元素116和/或命令105的一个或多个命令特定参数,这些参数可以对应于一个或多个完成队列元素190和/或与它们相关联。一个或多个命令队列标识符306可以指示和/或指定一个或多个队列元素116被写入其中的一个或多个提交队列114。一个或多个命令队列头部位置指示符308可以指示一个或多个队列元素116可位于的当前位置(例如,在由一个或多个命令队列标识符306所标识的一个或多个提交队列114中)。状态信息310可以指出一个或多个命令105和/或一个或多个队列元素116是否由NVMe控制器112成功地执行。一个或多个相位比特312可以指示一个或多个完成队列元素190是否构成一个或多个完成队列120中的最近添加的有效条目(例如,用于服务)。一个或多个命令标识符302可以指示对应的一个或多个队列元素116中的一个或多个对应的命令标识符和/或与它们相同。作为这些一个或多个对应的队列元素116的执行的结果,命令标识符302可以允许将一个或多个完成队列元素190被正确地与一个或多个对应的队列元素116相关联和/或与从存储150和/或大容量存储156中读取的相应的数据199相关联。
在某些示例中,可以选择一个或多个命令标识符302,以使得不与可能当前被任何完成队列元素使用的、还没有被NW I/O设备108提供给客户端10和/或NW I/O设备的任何其他命令标识符冲突和/或相同。可以在系统100中使用的命令标识符可以是预先计算出的和/或预先生成的,并可以被用作可以存储在可被存储于存储器21中的表250中的相应的条目ENTRY(条目)A...ENTRY N的相应的索引INDEX(索引)A...INDEXN。表250中的每一个条目ENTRY A...ENTRY N都可以存储可与NW I/O设备108的相关联的一个或多个相应的预先计算出的和/或预先生成的命令队列元素QE A...QE N。每一个相应的元素QE A...QE N都可以与一个或多个缓冲器130A...130N中的一个或多个相应的缓冲器相关联。NVMe控制器112可以向其中存储从存储150和/或大容量存储156中读取的数据的一个或多个缓冲器130A...130N中的缓冲器中的每一个也可以与系统100中所使用的一个或多个相应的提交标识符和/或相应的条目ENTRYA...ENTRY N相关联。
命令队列元素QE A...QE N可以由客户端10和/或一个或多个代理194存储在和/或维护在表250中。如果一个或多个缓冲器130A...130N是静态地分配的,则表250可以是静态的,并就例如分配特征而言可以对应于可在客户端10中分配的一个或多个缓冲器13。
作为示例,在NVMe控制器112从存储150和/或大容量存储156读取数据199之后,NVMe控制器112可以将数据199存储在可以与一个或多个命令标识符302相关联的一个或多个缓冲器中(例如,一个或多个缓冲器130A),并可以向NW I/O设备108发送访问命令已经完成的指示,例如,振铃一个或多个门铃192。响应于NVMe控制器112振铃一个或多个门铃192,NW I/O设备108可以基于一个或多个队列相位比特312,确定一个或多个完成队列120中的一个或多个最近添加的有效完成队列。NWI/O设备108可以使用一个或多个完成队列元素190中的一个或多个命令标识符302以索引到表250中,以定位表250中可与一个或多个命令标识符302相关联的和/或可以由一个或多个命令标识符302所标识的一个或多个条目(例如,一个或多个条目ENTRY A)和一个或多个命令队列元素(例如,一个或多个队列元素QE A)。NW I/O设备108可以执行可与这一个或多个命令队列元素QE A相关联的和/或由这一个或多个命令队列元素QEA体现的一个或多个命令。对于这些示例,这可以导致NW I/O108读取一个或多个缓冲器130A以获取数据199,并将数据199和一个或多个完成队列元素190传输到NW I/O设备106和/或客户端10(例如,通过一个或多个响应197)。结果,数据199和/或一个或多个完成队列元素190可以被复制到一个或多个客户端缓冲器13中。
可另选地,在某些示例中NW I/O设备108可以包括状态机(未示出)。此状态机可以是独立的和/或与可与NW I/O设备108相关联和/或由NW I/O设备108使用的一个或多个提交队列114分开。此状态机可以基于一个或多个命令标识符302,定位表250中的一个或多个命令队列元素QE A,并可以将一个或多个队列元素QE A复制到一个或多个提交队列126中的一个或多个对应的提交队列元素196A。然后,状态机可以发信号指令NW I/O设备108访问并执行一个或多个提交队列126中的一个或多个提交队列元素196A。
进一步可另选地,在不偏离这些示例的情况下,在完成涉及存储150和/或大容量存储156的一个或多个读取操作之前,NVMe控制器112可以基于一个或多个命令标识符302,定位和/或选择表250中的一个或多个队列元素QE A。然后,NVMe控制器112可以将一个或多个完成队列元素190写入到一个或多个完成队列120中,并可以将一个或多个队列元素QE A写入到一个或多个提交队列126中的一个或多个对应的提交队列元素196A中。然后,NVMe控制器112可以振铃一个或多个门铃192。这可以导致NW I/O设备108访问和执行一个或多个提交队列126中的一个或多个提交队列元素196A。对于这些示例,这可以导致NW I/O设备108读取一个或多个缓冲器130A,以获取数据199,并将数据199和一个或多个完成队列元素190传输到NW I/O设备106和/或客户端10(例如,通过一个或多个响应197)。结果,数据199和/或一个或多个完成队列元素190可以被复制到一个或多个客户端缓冲器13中。
在此替换的示例中,由NW I/O设备108、NVMe控制器112或可管理性模块109执行的固件和/或一个或多个代理194可以维护每队列对(per-queue-pair)上下文信息,以指示用于RDMA事务的一个或多个队列对。此上下文信息还可以包括各种指针(例如,指向提交队列元素196A...196N的一个或多个阵列以将数据从一个或多个缓冲器130A...130N移动到一个或多个缓冲器13,和/或一个或多个提交队列126的头部),一个或多个门铃192的一个或多个位置和用于振铃一个或多个门铃192的一个或多个值,以及一个或多个提交队列126的头部的本地副本和/或指向该一个或多个提交队列126的指针。这些指针(例如,头和尾指针)可以通过由NVMe控制器112执行的固件来动态地更新。
另选地或另外地,在不偏离这些示例的情况下,NW I/O设备108、可管理性模块109和/或NVMe控制器112可以被包括在未示出的芯片组,或包括在未示出的电路板或设备。也另选地或另外地,在不偏离此实施例的情况下,存储150和/或大容量存储156可以是服务器20内部的,或可以是服务器20外部的。
进一步地,虽然前面的描述是参考NW I/O设备108是RNIC而NVMe控制器112是NVMe顺应存储控制器来作出的,但是,此实施例的原理可以应用于其中可以使用与RDMA或NVMe不同和/或作为其补充的协议的情况,和/或其中在执行和/或促进不涉及存储150的操作(例如,其他和/或附加的输入/输出和/或通信相关操作)时可能涉及NVMe控制器112的情况。相应地,在不偏离上文所提及的示例的情况下,NW I/O设备108可以利用,和/或客户端10和服务器20之间的通信可以使用与RDMA不同和/或作出其补充的协议。此外,在不偏离此实施例的情况下,NW I/O设备108、可管理性模块109或NVMe控制器112可以在执行时被涉及,和/或可以促进可使用与PCIe协议或NVMe协议不同的协议的此类其他和/或附加操作的执行。在这些附加的和/或备选方案中,硬件和/或固件电路(未示出)可以被包括在电路118中,该电路118可以允许通过例如一个或多个中断机制(例如,一个或多个消息中断((MSI/MSI-X)和/或其他机制)向门铃170和/或192写入。此实施例应该被广泛地视为包含所有这样的替代方案、修改方案,以及变体。
如此,在某些示例中,电路可以被布置为允许客户端中的第一NW I/O设备,通过远离客户端中的服务器中的第二NW I/O设备并以独立于服务器中的操作系统环境的方式,访问服务器的另一(例如,存储器,和/或另一/附加的类型的)控制器的命令接口。客户端中的NW I/O设备和服务器中的NW I/O设备可以是或包括相应的远程直接存储器访问启用的网络接口控制器(例如,能够使用RDMA和/或通过RDMA进行通信的控制器)。命令接口可以包括至少一个(例如,存储器,和/或其他/附加的类型的)控制器命令队列。这样的访问可以包括将至少一个队列元素写入到至少一个提交队列,以命令另一控制器来执行与另一控制器(例如,NVMe控制器)相关联的至少一个操作(例如,涉及存储器,和/或涉及一个或多个其他和/或附加的类型的操作,诸如,其他和/或附加的输入/输出操作)。其他控制器可以响应于至少一个队列元素,执行至少一个操作。许多替代方案、变化,以及修改也是可以的。这些替代方案中的某些可以包括使用耦合在NWI/O设备和服务器中的NVMe控制器之间的可管理性模块(例如,可管理性模块109),以促进远程NW I/O设备对至少一个命令接口的访问。
如此,在某些示例中,服务器20中的NVMe控制器112的一个或多个命令接口110可以由客户端的NW I/O设备106通过一个或多个RDMA事务,以绕过、独立于、和/或不会涉及服务器的OSE32和/或CPU12的方式来直接访问。有利地,这可以允许存储命令、数据,以及完成消息在客户端和服务器之间快速地并且高效地传递,且具有缩短的等待时间。此外,在此实施例中,NW I/O设备108和NVMe控制器112之间的交互可以完全地或几乎完全地由硬件执行(例如,使用对等存储器和门铃写入),并且还以绕过、独立于、和/或不会涉及服务器的OSE32和/或CPU12的方式来执行。有利地,这可以允许这样的交互被快速地并且高效地执行,且具有缩短的等待时间。另外,此实施例的上面的特征可以降低服务器的功耗,热耗散,以及由OSE32和CPU12消费的带宽量。
许多其他修改方案也是可以的。例如,如前所述,在此实施例中,客户端10可以包括多个客户端。如果RDMA用于服务器20和客户端10之间的通信,则在此实施例中,有利地,客户端10可以在客户端10与服务器20、NW I/O设备108,和/或NVMe控制器112之间的通信中动态地共享缓冲器130A...130N,作为公共缓冲器池。为了允许这样的缓冲器共享,NW I/O设备108可以能够操纵、调整,和/或修改可在由客户端10提供给服务器20的命令105中指示的缓冲器指定信息,以便允许在客户端10之间共享缓冲器130A...130N和/或其他服务器资源,而不会导致例如竞争相关问题。
例如,一个或多个指示符181和/或由一个或多个指示符181指示的STag可以包括NW I/O设备108可以将其与一个或多个缓冲器和/或缓冲器130A中的缓冲池进行关联的相应的信息(作为一个或多个存储器区句柄的替代和/或补充)。。在此布局中,客户端10可以使用这样的指示符181来执行RDMA读取操作,NW I/O设备108可以对由相应的信息和/或指示符181指示的一个或多个缓冲器和/或缓冲池执行写入操作。在执行其操作时,NW I/O设备108可以适当地调整提供给NVMe控制器112的实际命令和/或命令队列元素,以便当NVMe控制器112执行这样的命令和/或命令队列元素时导致正确的缓冲器等等被NVMe控制器112写入。
替代或补充地,在不偏离上面的示例的情况下,NW I/O设备108可以包括共享接收队列(未示出)和/或与其相关联,用以从多个客户端10接收例如命令105。NW I/O设备108可以能够将一个或多个合适的服务器缓冲器地址,值,和/或其他信息替换到接收到的命令105的一个或多个部分(例如,队列元素116、值201、指示符181,和/或其他信息),以允许在多个客户端10之间共享一个或多个命令接口110中的结构,而不会导致竞争或性能的其他降级。在此布置中,客户端可能不被提供和/或使用存储控制器的命令队列和/或门铃的一个或多个STag,并且向这些结构写入可以由服务器的NW I/O设备108来执行。有利地,这可以允许可以与共享的接收队列相关联和/或使用共享的接收队列的多个客户端10来使用和/或共享相同存储控制器命令队列、门铃,和/或其他结构。
例如,在写入操作的情况下,一个或多个命令105中的一个或多个指示符181、一个或多个值201,和/或其他信息可以指示用于写入操作的一个或多个存储控制器STag(以及相关的信息),和/或一个或多个完成队列元素可以被写入到其中的一个或多个缓冲器的一个或多个RDMA STag。对于这些示例,基于一个或多个接收到的命令105和/或存储在NW I/O设备108中的其他信息,NW I/O设备108可以选择缓冲器130A...130N中的一个或多个缓冲器以及提交队列114中的一个或多个位置,要向该一个或多个位置张贴待写入数据199及将被转发到与NVMe控制器112相关联的提交队列126的一个或多个对应的命令队列元素。NW I/O设备108可以根据这样的选择,张贴数据199和一个或多个对应的命令队列元素,此后,可以振铃门铃170。如由NW I/O设备108张贴的,一个或多个命令队列元素可以指示在一个或多个命令105中所提供的一个或多个存储控制器STag、命令标识符302、安全上下文信息(例如,用以允许验证一个或多个存储控制器STag),和/或数据199已经被张贴到其中的一个或多个缓冲器的一个或多个STag。在NVMe控制器112完成了请求的一个或多个写入操作并张贴一个或多个完成队列元素(例如,向完成队列124)之后,NVMe控制器112可以振铃门铃192。基于表250中的信息,NW I/O设备108可以生成一个或多个合适的响应197,并通过将来自完成队列124的完成队列元素转发到完成队列120,来将一个或多个合适的响应197转发到提供接收到的命令105的一个或多个客户端。
在读取操作的情况下,可以在命令105中提供一般类似的信息,并可以由NW I/O设备108和/或NVMe控制器112执行一般类似的操作。然而,在读取操作的情况下,由NVMe控制器112读取的数据199可以由NVMe控制器112存储到由NW I/O设备108所指定的缓冲器130A...130N中的一个或多个中,并可以由NW I/O设备108读取,而不是相反(例如,如可能是写入操作中的情况那样)。NW I/O设备108可以将读取的数据199传输到在一个或多个响应197中提供接收到的命令105的一个或多个客户端。在前面的布局中,至少从启动这样的访问的一个或多个客户端执行的应用程序的观点来看,命令105可以与可被客户端用来访问客户端本地的存储的命令相类似或与其相同。有利地,这可以允许前面所描述的类型的远程操作和/或RDMA事务基本上对这些一个或多个客户端执行的应用程序是透明的。
如此,在某些示例中,有利地,多个客户端可以共享存储控制器的命令队列、门铃,和/或服务器的缓冲器,和/或使用RDMA协议,写入到这些结构(通过服务器的NW I/O设备),而不会遭受原本可能会发生的资源竞争问题(和/或其他缺点)。服务器的NW I/O设备可以能够修改与客户端的命令105相关联的和/或包含在客户端的命令105中的信息,以在客户端之间或当中促进这样的共享和/或RDMA STag信息的共享。有利地,这可以允许RDMA协议用于服务器和多个客户端之间的命令通信和/或完成信息,且具有改进的可缩放性,而同时降低实现这样的特征所需的存储器消耗,且没有通信线路速率的降级。
图3示出了第二示例系统。如图3所示,第二示例系统包括系统300。根据某些示例,系统300可以包括多个存储节点或存储服务器310-1到305-n(其中,“n”表示大于3的任何正整数)和客户端350。对于这些示例,NW I/O设备330或缓冲器360可以位于客户端305上,被维护在客户端305上,或与客户端305耦合。此外,如图3所示,用于复制的数据340还可以至少临时存储在客户端305中和/或由诸如由客户端305的电路执行的应用程序之类的逻辑和/或特征(未示出)生成。
在某些示例中,由网络I/O设备330和/或客户端305的电路执行的逻辑和/或特征可以向存储服务器310-1到310-n分配资源,以促进用于复制的数据340中所包括的数据的复制。对于这些示例,单独的I/O队列对(QP)320-1到320-n可以分别被分配或指派给存储服务器310-1到310-n。此外,缓冲器360的至少某些部分还可以被分配或指派给服务器310-1到310-n。根据某些示例,I/O QP320-1到320-n和/或缓冲器360可以是驻留在客户端305中的系统存储器的一部分(未示出)。可另选地,I/O QP320-1到320-n可以被维护在NW I/O设备330中或通过其来维护。
根据某些示例,I/O QP320-1到320-n可以分别地包括命令提交队列和命令完成队列两者,这些队列被NW I/O设备330中的逻辑和/或特征用来与存储服务器310-1到310-n交换关于RDMA命令或与RDMA命令相关联的请求的信息,以复制用于复制的数据340中所包括的数据。对于这些示例,用于复制的数据340也可以包括合适的纠错码/校验和来复制所包括的数据。
在某些示例中,由NW I/O设备330中的电路执行的逻辑和/或特征可以能够发送将用于复制的数据340存储在服务器310-1到310-n中的RDMA命令消息。如下文比较详细地描述的,可以通过一个或多个存储服务器和客户端305之间的至少一个网络连接,将RDMA命令消息发送到存储服务器310-1到310-n之中的一个或多个存储服务器。NW I/O设备330中的逻辑和/或特征也可以从一个或多个存储服务器接收一个或多个RDMA命令完成消息,这些消息指示数据在存储服务器310-1到310-n之中的服务器中的至少两个之间的复制。
根据某些示例,I/O QP320-1到320-n可以被维护在NW I/O设备330中。对于这些示例,I/O QP320-1到320-n可以处于在NW I/O设备330中维护的存储器中,存储器包括非易失性存储器或易失性存储器中的至少一种。在NW I/O设备330中维护的存储器可以能够至少临时存储与存储服务器310-1到310-n中的一个或多个处用于复制的数据340中所包括的数据的存储相关联的信息。信息可以包括一个或多个RDMA STag。在某些示例中,存储服务器中的每一个的相应的STag可能已经被预先指派给客户端305,并可以指示针对由在这些存储服务器处维护的NVMe控制器控制的相应的存储设备预先指派给客户端305的存储容量的量或部分。
图4示出了第三示例系统。如图4所示,第三示例系统包括系统400。根据某些示例,系统400可以包括耦合到客户端305的存储服务器310-1和存储服务器310-2到310-n。对于这些示例,NW I/O设备430、NVMe控制器450、缓冲器460或存储设备470可以位于存储服务器310-1中,被维护或与其耦合。此外,如图4所示,存储设备470可以包括用于复制的数据340,其中可以包括从客户端305复制和/或存储的数据。
在某些示例中,由网络I/O设备430和/或服务器310-1的电路执行的逻辑和/或特征可以向客户端305和/或存储服务器310-2到310-n分配资源,以促进对由NVMe控制器450控制或通过NVMe控制器450可访问的存储设备470的远程访问。对于这些示例,单独的I/O QP420-1到420-n可以被分别分配或指派给客户端305和存储服务器310-2到310-n。此外,缓冲器460的至少某些部分还可以被分配或指派给客户端305和存储服务器310-1到310-n。根据某些示例,I/O QP420-1到420-n和/或缓冲器460可以是可被单独地管理的驻留在存储服务器310-1中的系统存储器的一部分,或存储服务器310-1中维护的单独的系统存储器的一部分(未示出)。可另选地,I/O QP420-1到420-n可以被维护在NW I/O设备430中或通过其来维护。
根据某些示例,类似于图3的系统300,I/O QP420-1到420-n可以单独地包括命令提交队列和命令完成队列两者,这些队列被NW I/O设备430中的逻辑和/或特征用来就客户端305和/或存储服务器310-2到310-n接收/转发关于复制用于复制的数据340中所包括的数据的RDMA命令或与复制用于复制的数据340中所包括的数据的RDMA命令相关联的请求的RDMA命令/命令完成消息。
在某些示例中,如下文比较详细地描述的,由NW I/O设备430中的电路执行的逻辑和/或特征可以从诸如客户端305之类的客户端接收包括STag的RDMA命令。如下文比较详细地描述的,STag可能已经由存储服务器310-1软件(未示出)预先指派给客户端305,并可以指示存储设备470中已经被分配给客户端305和/或被分配用于存储用于复制的数据340的存储容量的量或部分。对于这些示例,RDMA命令可以是复制用于复制的数据340中从客户端305接收/获取的数据,以及将接收/获取的数据存储在由NVMe控制器450控制和/或通过NVMe控制器450可访问的存储设备470中。NW I/O设备430中的逻辑和/或特征可以将带有STag的RDMA命令转发到NVMe控制器450。根据某些示例,NVMe控制器450可以基于将RDMA命令中所包括的STag与分配部分进行关联的关联方案,将用于复制的数据340中所包括的数据存储到存储设备470中的分配部分。
根据某些示例,一旦用于复制的数据340中所包括的数据已经被存储到存储设备470中的分配部分,NVMe控制器450就可以生成RDMA命令完成消息。对于这些示例,NW I/O设备430中的逻辑和/或特征可以能够将RDMA命令完成消息转发到客户端305,以指示用于复制数据340中所包括的数据的存储。
在某些示例中,NW I/O设备430中的逻辑和/或特征也可以从诸如存储服务器310-2之类的存储服务器接收另一RDMA命令。此其他RDMA命令也可以包括STag。对于这些示例,STag可以是由存储服务器310-1软件(未示出)预先指派的相同STag,并可以指示存储设备470中已经被分配给客户端305-1和/或被分配用于存储用于复制的数据340的存储容量的量或部分。对于这些示例,其他RDMA命令可以是复制用于复制的数据340中的数据,并将复制的数据存储在存储服务器310-2中。NW I/O设备430中的逻辑和/或特征可以将带有Stag的其他RDMA命令转发到NVMe控制器450。根据某些示例,NVMe控制器450可在随后导致用于复制的数据340中所包括的数据可被存储服务器310-2的逻辑和/或特征读取,以使存储服务器310-2能够通过将数据存储到由在存储服务器310-2中维护的另一NVMe控制器控制的一个或多个存储设备来复制数据。
根据某些示例,响应于发送到存储服务器310-2的、使存储服务器310-2复制用于复制的数据340的请求消息,可能已经接收到其他RDMA命令。对于这些示例,请求可能已经由客户端305的逻辑和/或特征发送。可另选地,请求可能已经由存储服务器310-1的逻辑和/或特征发送。
根据某些示例,I/O QP420-1到420-n可以维护在NW I/O设备430中。对于这些示例,I/O QP420-1到420-n可以处于在NW I/O设备430中维护的存储器中,存储器包括非易失性存储器或易失性存储器中的至少一种。在NW I/O设备430中维护的存储器可以能够至少临时存储与存储服务器310-1和/或一个或多个存储服务器310-2到310-n处用于复制的数据340中所包括的数据的存储相关联的信息。信息可以包括一个或多个RDMASTag。在某些示例中,一个或多个RDMA STag之中的至少一个RDMA STag可以被包括在被转发到NVMe控制器450的其他RDMA命令消息中,以导致用于复制的数据340中所包括的数据可被存储服务器310-2中的逻辑和/或特征读取。
图5示出了第四示例系统。如图5所示,第四示例系统包括系统500。根据某些示例,系统500可以包括耦合到客户端305的存储服务器310-2,存储服务器310-1到和存储服务器310-3到310-n。对于这些示例,NW I/O设备530、NVMe控制器550、缓冲器560或存储设备570可以位于存储服务器310-2中,被维护在服务器310-2处或与服务器310-2耦合。此外,如图5所示,存储设备570可以包括用于复制的数据340,其可以包括从客户端305或诸如存储服务器310-1之类的另一存储服务器复制的数据。
在某些示例中,由网络I/O设备530和/或服务器310-2的电路执行的逻辑和/或特征可以向客户端305和/或存储服务器310-1或310-3到310-n分配资源,以促进对由NVMe控制器550控制或通过NVMe控制器550可访问的存储设备570的远程访问。对于这些示例,单独的I/O QP520-1到520-n可以分别被分配或指派给客户端305和存储服务器310-1、310-3到310-n。此外,缓冲器560的至少诸部分还可以被分配或指派给客户端305和存储服务器310-1、310-3到310-n。根据某些示例,I/O QP520-1到520-n和/或缓冲器560可以是驻留在可被单独管理的存储服务器310-2中的系统存储器的一部分,或存储服务器310-2中维护的单独的系统存储器的一部分(未示出)。可另选地,I/O QP520-1到520-n可以维护在NW I/O设备530中。
根据某些示例,类似于图3或4的系统300或400,I/O QP520-1到520-n可以单独地包括命令提交队列和命令完成队列,这些队列被NW I/O设备530中的逻辑和/或特征用于就客户端305和/或存储服务器310-1或310-3到310-n接收/转发关于复制用于复制的数据340中所包括的数据的RDMA命令或与复制用于复制的数据340中所包括的数据的RDMA命令相关联的请求的RDMA命令/命令完成消息。
在某些示例中,类似于存储服务器310-1的NW I/O设备430,由NWI/O设备530中的电路执行的逻辑和/或特征可以从诸如客户端305之类的客户端或诸如存储服务器310-1之类的存储服务器接收包括STag的RDMA命令。STag可能已经由存储服务器310-2软件(未示出)预先指派给客户端305或存储服务器310-1,并可以指示存储设备570中已经被分配给客户端305和/或被分配用于存储用于复制的数据340的存储容量的量或部分。对于这些示例,RDMA命令可以是复制用于复制的数据340中从客户端305或存储服务器310-1接收/获取的数据,以及将接收/获取的数据存储在由NVMe控制器550控制和/或通过NVMe控制器550可访问的存储设备570中。NW I/O设备530中的逻辑和/或特征可以将带有Stag的RDMA命令转发到NVMe控制器550。根据某些示例,NVMe控制器550可以基于将RDMA命令中所包括的STag与分配部分进行关联的关联方案,将用于复制的数据340中所包括的数据存储到存储设备570的分配部分。
根据某些示例,一旦用于复制的数据340中所包括的数据已经被存储到存储设备570中的分配部分,NVMe控制器550就可以生成RDMA命令完成消息。对于这些示例,NW I/O设备530中的逻辑和/或特征可以能够将RDMA命令完成消息转发到接收到的RDMA命令的源,假设它是客户端305或存储服务器310-1,以指出用于复制数据340中所包括的数据的存储。
图6示出了第五示例系统。如图6所示,第五示例系统包括系统600。根据某些示例,系统600可以包括分别通过网络(NW)连接605-1、605-2和605-3,耦合到存储服务器310-1、310-2和310-3的客户端305。在某些示例中,NW连接605-1到605-3可以通过一种或多种类型的有线或无线通信介质,通过诸如局部访问网(LAN)之类的网络(未示出)来路由。一种或多种类型的有线或无线通信介质,例如,可以被配置成允许客户端305与服务器310-1到310-3交换RDMA消息,这些RDMA消息顺应包括但不限于iWARP、Infiniband或RoCE的协议。
在某些示例中,客户端305中的逻辑和/或特征可以通过相应的NW连接605-1,605-2,向存储服务器310-1和310-2发送单独的RDMA命令消息。单独的RDMA消息可以是存储用于复制的数据。对于这些示例,诸如上文参照图4和5所描述的逻辑和/或特征之类的存储服务器310-1和310-2中的逻辑和/或特征可以导致通过将数据存储在由这些存储服务器中的每一个中维护的相应的NVMe控制器450和550控制的存储设备470或570中来复制数据。然后,存储服务器310-1和310-2可以向客户端305单独地发送RDMA命令完成消息,这些消息指示数据在至少存储服务器310-1和310-2之间的复制。
根据某些示例,可以通过NW连接605-3,将另一RDMA命令消息发送到存储服务器310-3。其他RDMA命令消息可以是存储与在存储服务器310-1和310-2中复制的或存储的数据相关联的错误校正或数据恢复信息。对于这些示例,存储服务器310-3中的逻辑和/或特征可以将错误校正或数据恢复信息存储在由在存储服务器310-3中维护的NVMe控制器控制的存储设备中。然后,存储服务器310-3中的逻辑和/或特征可以向客户端305发送RDMA命令完成消息,这些消息用于指示错误校正或数据恢复信息的存储。在某些示例中,错误校正或数据恢复信息可以被用来校正由服务器310-1或310-2存储的复制的数据中的一个或多个错误或用来恢复复制的数据的至少某些部分。
图7示出了第六示例系统。如图7所示,第六示例系统包括系统700。根据某些示例,系统700可以包括分别通过NW连接705-1、705-2、705-3和705-4,耦合到存储服务器310-1、310-2和310-4的客户端305。在某些示例中,类似于图6的NW连接605-1到605-3、NW连接705-1到705-4可以通过一种或多种类型的有线或无线通信介质,通过诸如LAN之类的网络(未示出)来路由。一种或多种类型的有线或无线通信介质,例如,也可以被配置成允许客户端305与服务器310-1到310-4交换RDMA消息,这些RDMA消息顺应包括但不限于iWARP、Infiniband或RoCE的协议。
在某些示例中,客户端305中的逻辑和/或特征可以通过NW连接705-2,向存储服务器310-1发送RDMA命令消息。第一RDMA消息可以是在存储服务器310-1中存储用于复制的数据340。对于这些示例,诸如上文参照图4所描述的逻辑和/或特征之类的存储服务器310-1中的逻辑和/或特征可以导致用于复制的数据340中所包括的数据被存储在由存储服务器310-1中维护的NVMe控制器450控制的存储设备470中。然后,存储服务器310-1可以向客户端305发送RDMA命令完成消息,这些消息指示用于复制的数据340至少在存储设备470中的存储。
根据某些示例,客户端305中的逻辑和/或特征可以通过NW连接705-2,将用于复制的数据340中所包括的数据发送或推到存储服务器310-1中维护的诸如缓冲器460之类的一个或多个缓冲器。然后,客户端305中的逻辑和/或特征可以在第一RDMA消息中指示数据的位置。对于这些示例,存储服务器310-1中的NVMe控制器450可以能够基于从一个或多个缓冲器中读取数据,并将此数据存储在存储设备470中,导致RDMA命令完成消息被发送到客户端305。在某些示例中,用于复制的数据340可以存储在存储设备470中与由客户端305所发送的第一RDMA消息中所包括的STag相关联的分配部分。
在某些其他示例中,客户端305中的逻辑和/或特征可以将用于复制的数据340中所包括的数据发送到客户端305中维护的诸如缓冲器360之类的一个或多个缓冲器。然后,客户端305中的逻辑和/或特征可以在第一RDMA消息中指示数据的位置。对于这些示例,存储服务器310-1中的NWI/O设备430可以能够通过NW连接705-2从缓冲器360拉取数据。然后,所拉取的数据可以至少临时存储到存储服务器310-1中的缓冲器460中。然后,存储服务器310-1中的NVMe控制器450可以基于从缓冲器460中读取数据,并将此数据存储在存储设备470中,来导致RDMA命令完成消息被发送到客户端305。在某些示例中,用于复制的数据340可以存储在存储设备470中与由客户端305所发送的第一RDMA消息中所包括的STag相关联的分配部分。
在某些示例中,第二RDMA命令消息可以由客户端305的逻辑和/或特征通过NW连接705-4发送到存储服务器310-4。第二RDMA命令消息可以是存储与被存储在存储服务器310-1中的用于复制的数据340相关联的错误校正或数据恢复信息。对于这些示例,存储服务器310-4中的逻辑和/或特征可以将错误校正或数据恢复信息存储在由在存储服务器310-4中维护的NVMe控制器控制的存储设备中。然后,存储服务器310-3中的逻辑和/或特征可以向客户端305发送RDMA命令完成消息,这些消息用于指示错误校正或数据恢复信息的存储。在某些示例中,错误校正或数据恢复信息可以被用来校正存储在存储服务器310-1以及还存储在存储服务器310-2中的用于复制的数据340中的一个或多个错误(下面比较详细地描述)或用来恢复复制的数据的至少诸部分。
根据某些示例,客户端305中的逻辑和/或特征,在从存储服务器310-1接收到指示用于复制的数据340的存储的RDMA命令完成消息之后,可以通过相应的NW连接705-1和705-3,向存储服务器310-2和310-3发送单独的复制请求消息。对于这些示例,存储服务器310-2和310-3中的逻辑和/或特征可以响应于来自客户端305的它们的相应的复制请求消息,各自向存储服务器310-1发送RDMA命令消息。单独的RDMA命令消息可以是复制存储在由NVMe控制器450控制的存储设备470中的用于复制的数据340中所包括的数据。单独的RDMA命令消息可被各自转发到NVMe控制器450以导致存储在存储设备470中的用于复制的数据340可被存储服务器310-2和310-3读取。
在某些示例中,单独的RDMA命令消息可以各自包括一个或多个RDMA Stag,用以指示存储存储设备470中的用于复制的数据340的位置。对于这些示例,存储服务器310-2和310-3中的相应的NW I/O设备可以能够使用一个或多个RDMA STag,经由NW连接710-1和710-2,拉取用于复制的数据340中所包括的数据。此外,这些存储服务器中的NVMe控制器还可以能够将所拉取的数据存储到由这些NVMe控制器控制的存储设备,以便复制用于复制的数据340中所包括的数据。一旦数据已经被复制,存储服务器310-2和310-3就可以向存储服务器310-1发送单独的RDMA命令完成消息以指示数据的成功的复制。复制可以包括由复制方服务器计算各种类型的错误恢复代码,包括,但不仅限于,Reed Solomon(李德所罗门)错误恢复代码集。
根据某些其他示例,单独的RDMA命令消息可以各自包括一个或多个RDMA STag,用以指示存储在存储设备470中的用于复制的数据340中所包括的数据的位置,该用于复制的数据340中所包括的数据已通过NW连接710-1和710-2被推到存储服务器310-2和310-3中的每一个中的一个或多个缓冲器。对于这些其他示例,这些存储服务器中的相应的NVMe控制器可以能够读取被推到一个或多个缓冲器的数据,并将数据存储到由这些NVMe控制器控制的存储设备,以便复制用于复制的数据340中所包括的数据。一旦数据已经被复制,存储服务器310-2和310-3就可以向存储服务器310-1发送单独的RDMA命令完成消息以指出数据的成功的复制。
图8示出了第七示例系统。如图8所示,第七示例系统包括系统800。根据某些示例,系统800可以包括通过NW连接805耦合到存储服务器310-1的客户端305。此外,如图8所示,存储服务器310-1还可以分别通过NW连接810-1和810-2耦合到存储服务器310-2和310-3。在某些示例中,NW连接805可以通过一种或多种类型的有线或无线通信介质,通过诸如LAN之类的网络(未示出)来路由。此外,NW连接810-1和810-2还可以通过一种或多种类型的有线或无线通信介质,通过相同或不同的的网络来路由。一种或多种类型的有线或无线通信介质,例如,可以被配置成允许客户端305与服务器310-1交换RDMA消息,或允许服务器310-1与存储服务器310-2或310-3交换RDMA消息。这些交换的RDMA消息可以顺应包括但不限于iWARP、Infiniband或RoCE的协议。
在某些示例中,客户端305中的逻辑和/或特征可以通过NW连接805,向存储服务器310-1发送RDMA命令消息。RDMA消息可以发往NVMe控制器450,以将用于复制的数据340存储在存储设备470中。对于这些示例,存储服务器310-1中的诸如NW I/O设备430和/或NVMe控制器450之类的逻辑和/或特征可以响应于RDMA消息,从客户端305读取用于复制的数据340中所包括的数据,并导致将数据存储到存储设备470中的分配部分。NVMe控制器450还可以通过相应的NW连接810-1和810-2,将单独的请求消息发送到存储服务器310-2和310-3,以使这些存储服务器复制被存储到存储设备470中的分配部分的数据。存储服务器310-2和310-3的逻辑和/或特征可以复制用于复制数据340中所包括的数据,然后,将单独的RDMA命令完成消息发送到存储服务器310-1,以指示成功的复制。根据某些示例,然后,NVMe控制器450可以导致RDMA命令完成消息被发送到客户端305,以指示用于复制的数据340被成功地复制到存储服务器310-1到310-3。
图9示出了第一设备的示例框图。如图9所示,第一设备包括设备900。尽管图9中示出的设备900具有处于特定拓扑中的有限数量的元素,但可以明白,设备900可包括给定实现所需的处于替换拓扑中的更多或更少元素。
设备900可以由在耦合到客户端305(例如,客户端305)的NW I/O设备中维护的电路920来支持。电路920可以被配置为执行一个或多个软件或固件实现的组件或模块922-a。值得注意的是,如此处所使用的“a”和“b”和“c”以及类似的符号旨在作为表示任何正整数的变量。如此,例如,如果实现设置a=3的值,那么,模块922-a的完整的一组软件或固件可以包括模块922-1、922-2或922-3。呈现的示例在此上下文不受限制,所使用的不同的变量可以表示相同或不同的整数值。
根据某些示例,电路920可以包括处理器或处理器电路。处理器或处理器电路可以是各种市场上可买到的处理器中的任一种,包括但不仅限于,和处理器;应用程序、嵌入式和安全处理器;和以及处理器;IBM和Cell处理器;Core(核)(2)Core i3、Core i5、Core i7、和处理器;以及类似的处理器。根据某些示例,电路920也可以是专用集成电路(ASIC),至少某些模块922-a可以实现为ASIC的硬件元件。
根据某些示例,设备900可以包括供电路920执行的命令模块922-1。命令模块922-1可以能够发送存储可被复制到多个存储服务器中的数据905中所包括的数据以及还将错误校正或数据恢复信息915中所包括的错误校正或数据恢复信息存储到存储服务器以校正或恢复与将数据复制到多个服务器相关联的可能的错误的RDMA命令。
在某些示例中,命令模块922-1可以能够至少临时存储RDMA协议信息924-a、STag信息925-b(例如,存储在诸如查询表(LUT)之类的数据结构中或在非易失性存储器中),以促进将RDMA命令发送到存储服务器。对于这些示例,RDMA协议信息924-a可以基于与iWARP、Infiniband或RoCE相关联的协议中的至少一个。此外,对于这些示例,STag信息925-b可以包括指示多个存储服务器中的所分配的存储部分的RDMA STag。RDMA STag可能已经通过由耦合到设备900的客户端中的软件或由多个存储服务器中的软件发送的客户端RDMA Stag而被接收到。
在某些示例中,设备900也可以包括供电路920执行的请求模块922-2。请求模块922-2可以能够向多个存储服务器中的至少某些发送复制被存储到多个服务器中的至少一个的数据的请求消息。请求模块922-2可以能够至少临时存储存储服务器信息927-d(例如,存储在LUT中),以促进发送可以包括复制数据的请求消息的请求935。
在某些示例中,设备900也可以包括供电路920执行的完成模块922-3。完成模块922-3可以能够接收命令完成消息940中所包括的一个或多个RDMA命令完成消息。对于这些示例,可以从多个存储服务器之中的存储服务器中的一个或多个接收RDMA命令完成消息940,这些消息可以指示数据905在多个存储服务器之中的至少第一存储服务器和第二存储服务器之间的复制。
根据某些示例,RDMA命令930、请求935和RDMA命令完成消息940可以在具有设备900的客户端和多个存储服务器之间交换,如上文参照图6-8中的系统600、700或800所描述的。在此上下文中,示例不受限制。
此处所包括的是一组代表用于执行所公开的体系结构的新颖方面的示例方法的逻辑流程图。尽管为了简洁起见,作为一系列动作示出和描述了一个或多个方法,但是,所属领域的技术人员将了解和明白,方法不受动作的顺序的限制。某些动作可以按与此处所示出和描述的不同的顺序进行和/或与其他动作并行地进行。例如,本领域的技术人员将明白并理解,方法可被替换地表示为一系列相互相关联的状态或事件,诸如以状态图的形式。此外,并非方法中所示出的所有动作都是新颖实现所必需的。
逻辑流程可以以软件、固件,和/或硬件来实现。在软件和固件实施例中,逻辑流程可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学存储、磁存储或半导体存储之类的至少一种非临时计算机可读介质或机器可读介质上。在此上下文中,示例不受限制。
图10示出第一逻辑流程的示例。如图10所示,第一逻辑流程包括逻辑流程1000。逻辑流程1000可表示诸如设备900之类的本文所述的一个或多个逻辑、特征或设备所执行的操作中的一些或全部。更具体而言,逻辑流程1000可以通过命令模块922-1、请求模块922-2或完成模块922-3来实现。
根据某些示例,在框1002,逻辑流程1000可以包括发送将用于复制的数据存储在多个存储服务器的RDMA命令消息。可以通过一个或多个存储服务器和客户端设备之间的至少一个网络连接,将RDMA命令消息发送到多个存储服务器之中的一个或多个存储服务器。对于这些示例,客户端设备中所包括的设备900的命令模块922-1可以发送将用于复制的数据905存储在多个存储服务器的RDMA命令消息。
在某些示例中,在框1004,逻辑流程1000可以从一个或多个存储服务器接收一个或多个RDMA命令完成消息,这些完成消息用于指示数据在多个存储服务器之中的至少第一存储服务器和第二存储服务器之间的复制。对于这些示例,完成模块922-3可以接收RDMA命令完成消息940中所包括的一个或多个RDMA命令完成消息,这些完成消息用于指示数据905在第一和第二存储服务器中的复制。
在某些示例中,命令模块922-1和/或完成模块922-3可以使用RDMA协议信息924-a来发送或接收顺应诸如iWARP、Infiniband或RoCE之类的协议的消息。
图11示出第一存储介质的示例。如图11所示,第一存储介质包括存储介质1100。存储介质1100可以包括制品。在某些示例中,存储介质1100可以包括任何非瞬态计算机可读介质或机器可读介质,诸如光学存储、磁存储或半导体存储。存储介质1100可以存储各种类型的计算机可执行指令,诸如实现逻辑流程1000的指令。计算机可读或机器可读存储介质的示例可包括能够存储电子数据的任何有形的介质,包括易失性存储器或非易失性存储器,可移动或不可移动存储器,可擦除或不可擦存储器,可写入或可重写的存储器等等。计算机可执行指令的示例可包括任何合适类型的代码,如源代码、已编译的代码、已解释的代码、可执行代码、静态代码、动态代码、面向对象代码、可视代码等等。在此上下文中,示例不受限制。
图12示出了示例NW I/O设备1200。在某些示例中,如图12所示,NW I/O设备1200可以包括处理组件1240、其他平台组件或通信接口1260。根据某些示例,如上文所提及的,NW I/O设备1200可以在耦合到客户端设备的NW I/O设备中实现。
根据某些示例,处理组件1240可以执行设备900和/或存储介质1100的处理操作或逻辑。处理组件1240可包括各硬件元素、软件元素或两者的组合。硬件元件的示例可包括器件、逻辑器件、组件、处理器、微处理器、电路、处理器电路、电路元件(例如,晶体管、电阻器、电容器、感应器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、设备驱动器、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序编程接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或其任何组合。判断一个示例是否使用硬件元素或软件元素来示例可以根据任意数量的因素而不同,如所希望的计算速率、功率级别、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度,及其他设计或性能约束,如根据需要给定示例的需要。
在某些示例中,其他平台组件1250可以包括常见的计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、计时设备等等。存储器单元的示例可以包括,但不仅限于,一种或多种更高的速度存储器单元形式的各种类型的计算机可读的和机器可读的存储介质,诸如ROM、RAM、DRAM、DDRAM、SDRAM、SRAM、PROM、EPROM、EEPROM、闪存或适用于存储信息的任何其他类型的存储介质。
在某些示例中,通信接口1260可以包括支持通信接口的逻辑和/或特征。对于这些示例,通信接口1260可以包括根据各种通信协议或标准来操作以通过直接或网络通信链路进行通信的一种或多种通信接口。直接通信可以通过使用在一个或多个行业标准(包括后代和变体)(诸如那些与PCIe规范、NVMe规范、RDMA协议规范、IEEE802-2-2008规范、RFC791或RFC793相关联的)中所描述的通信协议或标准来进行。
NW I/O设备1200的组件和特征可以使用不连续线路、专用集成电路(ASIC)、逻辑门和/或单芯片体系结构的任何组合来实现。进一步地,在适当的情况下,NW I/O设备1200的特征可以使用微控制器、可编程逻辑阵列和/或微处理器或合适的前面的任何组合来实现。值得注意的是,硬件、固件和/或软件元素可以共同地或分别地称为“逻辑”或“电路”。
应该理解,图12的框图所示出的示例性NW I/O设备1200可以表示许多潜在实现的一个功能描述性的示例。相应地,附图中所描绘的块功能的分割、省略或包括不会推断,用于实现这些功能的硬件组件、电路、软件和/或元件将一定被分割,省略,或包括在各实施例中。
图13示出了第二设备的示例框图。如图13所示,第二设备包括设备1300。尽管图13中示出的设备1300具有处于特定拓扑中的有限数量的元素,但可以明白,设备1300可包括给定实现所需的处于替换拓扑中的更多或更少元素。
设备1300可以由位于或耦合到存储服务器的NW I/O设备中维护的电路1320来支持,存储服务器可以远离客户端设备(例如,远程客户端)。电路1320可以被布置为执行一个或多个软件或固件实现的组件或模块1322-a。值得注意的是,如此处所使用的“a”和“b”和“c”以及类似的符号旨在作为表示任何正整数的变量。如此,例如,如果实现设置a=4的值,那么,模块1322-a的完整的一组软件或固件可以包括模块1322-1、1322-2、1322-2或1322-4。呈现的示例在此上下文不受限制,所使用的不同的变量可以表示相同或不同的整数值。
根据某些示例,电路1320可以包括处理器或处理器电路。处理器或处理器电路可以是各种市场上可买到的处理器中的任一种,包括但不仅限于,和处理器;应用程序、嵌入式和安全处理器;和以及处理器;IBM和Cell处理器;Core(2)Core i3、Core i5、Core i7、和处理器;以及类似的处理器。根据某些示例,电路1320也可以是专用集成电路(ASIC),至少某些模块1322-a可以实现为ASIC的硬件元件。
根据某些示例,设备1300可以包括供电路1320执行的命令接收模块1322-1。命令接收模块1322-1可以能够通过第一网络连接,从远程客户端接收被包括在RDMA命令1310中的第一RDMA命令消息。第一RDMA命令消息可以与在由第一存储服务器中维护的第一NVMe控制器控制的第一存储设备中存储包括在数据1305中的数据相关联。对于这些示例,命令接收模块1322-1可以能够至少临时存储RDMA协议信息1324-b(例如,在诸如LUT之类的数据结构中)。RDMA协议信息1324-a可以基于与iWARP、Infiniband或RoCE相关联的协议中的至少一个,并可以被命令接收模块1322-1用来接收第一RDMA命令消息。
在某些示例中,设备1300也可以包括供电路1320执行的命令转发模块1322-2。命令转发模块1322-2可以能够将第一RDMA命令消息转发到第一NVMe控制器,以导致第一NVMe控制器响应于RDMA命令1310中所包括的第一RDMA命令消息,从远程客户端获取被包括在数据1305中的数据,并将数据存储到中第一存储设备中。对于这些示例,命令转发模块1322-2可以能够至少临时将STag信息1325-b维护在诸如LUT之类的数据结构中或非易失性存储器中。STag信息1325-b可以包括与第一存储设备中所分配的部分相关联的一个或多个STag。
在某些示例中,设备1300也可以包括供电路1320执行的完成转发模块1322-3。完成转发模块1322-3可以能够将RDMA命令完成消息1335中所包括的RDMA命令完成消息从第一NVMe控制器转发到远程客户端,以指示将数据1305中所包括的数据存储到第一存储设备。
根据某些示例,命令接收模块1322-1还可以能够通过接收被包括在RDMA命令完成消息1310中的第二RDMA命令消息。对于这些示例,第二RDMA命令消息可以与复制数据1305中所包括并且被存储到第一存储设备的数据相关联。此外,对于这些示例,命令转发模块1322-3还可以将第二RDMA命令消息转发到第一NVMe控制器,以导致存储在第一存储设备中的数据可被第二存储服务器读取。导致数据可被读取可以使第二存储服务器能通过将数据存储到由在第二存储服务器中维护的第二NVMe控制器控制的第二存储设备来复制数据。对于这些示例,复制数据还可以包括添加至少一些纠错码/校验和,以保护数据免于在在存储服务器之间进行数据复制期间可能发生的至少一些错误。
根据某些示例,设备1300也可以包括供电路1320执行的请求转发模块1322-4。请求转发模块1322-4可以能够从第一NVMe控制器转发请求1330中所包括的一个或多个请求消息,以使第二存储服务器复制被存储到第一存储设备的数据。对于这些示例,命令接收模块1322-1可以响应于被转发到第二存储服务器的请求消息,接收第二RDMA命令消息。
一个或多个RDMA协议可以包括,但不限于,iWARP、Infiniband或RoCE协议。此外,对于这些示例,请求转发模块1322-4还可以至少临时维护存储服务器信息1326-c(例如,在LUT中),以促进将请求消息发送到第二存储服务器,并发送到可能的其他存储服务器以复制数据1305中所包括的数据。
根据某些示例,RDMA命令1310、请求1330和RDMA命令完成消息1335可以在具有设备1300的存储服务器和远程客户端或其他存储服务器之间交换,如上文参照图6-8中的系统600、700或800所描述的。在此上下文中,示例不受限制。
图14示出第二逻辑流程的示例。如图14所示,第二逻辑流程包括逻辑流程1400。逻辑流程1400可表示诸如设备1300之类的本文所述的一个或多个逻辑、特征或设备所执行的操作中的一些或全部。更具体而言,逻辑流程1400可以通过命令接收模块1322-1、命令转发模块1322-2、完成转发模块1322-3或请求转发模块1322-4来实现。
根据某些示例,在框1402,逻辑流程1400可以通过第一网络连接,从远程客户端接收第一远程RDMA命令消息。第一RDMA命令消息可以与在由第一存储服务器中维护的第一NVMe控制器控制的第一存储设备中存储数据相关联。例如,命令接收模块1322-1还可以接收RDMA命令1310中所包括的第一RDMA命令消息中的用于存储数据1305中所包括的数据的第一RDMA命令消息。
在某些示例中,在框1404,逻辑流程1400可以将第一RDMA命令消息转发到第一NVMe控制器,以导致第一NVMe控制器响应于RDMA命令消息而从远程客户端获取数据并将数据存储到存储设备中。例如,命令转发模块1322-2可以将第一RDMA命令消息转发到第一NVMe控制器,以便数据1305中所包括的数据被存储到第一存储设备。
根据某些示例,逻辑流程1400在框1406可以将RDMA命令完成消息从第一NVMe控制器转发到客户端设备以指示数据的存储。例如,完成转发模块1322-3可以通过RDMA命令完成消息1335将RDMA命令完成消息转发到远程客户端。
在某些示例中,逻辑流程1400在框1400可以通过第二网络连接,从第二存储服务器接收第二RDMA命令消息。第二RDMA命令消息可以与复制被存储到第一存储设备的数据相关联。例如,命令接收模块1322-1可以通过与第二存储服务器的第二网络连接,接收第二RDMA命令消息。
根据某些示例,逻辑流程1400在框1410可以将第二RDMA命令消息转发到第一NVMe控制器以导致存储在第一存储设备上的数据可被第二存储服务器读取,以使第二存储服务器能够通过将数据存储到由在第二存储服务器中维护的第二NVMe控制器控制的第二存储设备来复制数据。例如,命令转发模块1322-2可以将第二RDMA命令消息转发到第一NVMe控制器。然后,第一NVMe控制器可以使第二存储服务器能将数据1305中所包括的数据复制到由在第二存储服务器中维护的第二NVMe控制器控制的第二存储设备。
图15示出了第二存储介质的示例。如图15所示,第二存储介质包括存储介质1500。存储介质1500可以包括制品。在某些示例中,存储介质1500可以包括任何非瞬时的计算机可读介质或机器可读的介质,诸如光学存储、磁存储或半导体存储。存储介质1500可以存储各种类型的计算机可执行指令,诸如用于实现逻辑流程1400的指令。计算机可读或机器可读存储介质的示例可包括能够存储电子数据的任何有形的介质,包括易失性存储器或非易失性存储器,可移动或不可移动存储器,可擦除或不可擦存储器,可写入或可重写的存储器等等。计算机可执行指令的示例可包括任何合适类型的代码,如源代码、已编译的代码、已解释的代码、可执行代码、静态代码、动态代码、面向对象代码、可视代码等等。在此上下文中,示例不受限制。
图16示出了示例NW I/O设备1600。在某些示例中,如图16所示,NW I/O设备1600可以包括处理组件1640、其他平台组件或通信接口1660。根据某些示例,如上文所提及的,NW I/O设备1600可以在耦合到能够耦合到远程客户端的服务器的NW I/O设备中实现。
根据某些示例,处理组件1640可以执行设备1300和/或存储介质1500的处理操作或逻辑。处理组件1640可包括各硬件元素、软件元素或两者的组合。
在某些示例中,其他平台组件1650可以包括常见的计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备等等。
在某些示例中,通信接口1660可以包括支持通信接口的逻辑和/或特征。对于这些示例,通信接口1660可以包括根据各种通信协议或标准来操作以通过直接或网络通信链路进行通信的一种或多种通信接口。直接通信可以通过使用在一个或多个行业标准(包括后代和变体)(诸如那些与PCIe规范、NVMe规范、RDMA协议规范、IEEE802-2-2008规范、RFC791或RFC793相关联的)中所描述的通信协议或标准来进行。
NW I/O设备1600的组件和特征可以使用不连续线路、专用集成电路(ASIC)、逻辑门和/或单芯片体系结构的任何组合来实现。进一步地,在适当的情况下,NW I/O设备1600的特征可以使用微控制器、可编程逻辑阵列和/或微处理器或合适的前面的任何组合来实现。值得注意的是,硬件、固件和/或软件元素可以共同地或分别地称为“逻辑”或“电路”。
应该理解,图16的框图所示出的示例性NW I/O设备1600可以表示许多潜在的实现的一个功能上描述性的示例。相应地,附图中所描绘的块功能的分割、省略或包括不会推断,用于实现这些功能的硬件组件、电路、软件和/或元件将一定被分割,省略,或包括在各实施例中。
至少一个示例的一个或多个方面可以通过存储在至少一种机器可读介质上的代表性的指令来实现,指令表示处理器内的各种逻辑,指令在由机器、计算设备或系统读取时使机器、计算设备或系统制造执行此处所描述的技术的逻辑。被称为“IP核”的这样的表示可以存储在有形的机器可读介质中,并提供给各种客户或生产设施,以加载到实际制造逻辑或处理器的制造机器中。
各示例可以使用硬件元件、软件元件或两者的组合来实现。在某些示例中,硬件元件可包括器件、逻辑器件、组件、处理器、微处理器、电路、处理器组件、电路元件(例如,晶体管、电阻器、电容器、感应器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。在某些示例中,软件元件可以包括软件组件、程序、应用程序、计算机程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或其任何组合。判断一个示例是否使用硬件元素或软件元素来实现可以根据任意数量的因素而不同,如所希望的计算速率、功率级别、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度,及给定实现需要的其他设计或性能约束。
某些示例可以包括制品或至少一种计算机可读介质。计算机可读介质可以包括存储逻辑的非瞬态存储介质。在某些示例中,非瞬态存储介质可包括一种或多种类型的能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器,可移动或不可移动存储器,可擦除或不可擦存储器,可写入或可重写的存储器等等。在某些示例中,逻辑可包括各种软件元素,如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或其任何组合。
根据某些示例,计算机可读介质可以包括存储或维护指令的非瞬态存储介质,所述指令,当由机器、计算设备或系统执行时,导致机器、计算设备或系统执行根据所描述的示例的方法和/或操作。指令可包括任何合适类型的代码,如源代码、已编译的代码、已解释的代码、可执行代码、静态代码、动态代码等等。指令可以根据预定义的计算机语言、方式或语法来实现,以便指示机器、计算设备或系统来执行某一功能。指令可以使用任何合适的高级、低级、面向对象、可视、已编译和/或解释性编程语言来实现。
可以使用表达“在一个示例中”或“示例”以及它们的派生词来描述某些示例。这些术语意味着,参考示例所描述的特定功能、结构或特征包括在至少一个示例中。在本说明书中的不同位置出现短语“在一个示例中”不一定都是指同一个示例。
可以使用表达“耦合”和“连接”以及它们的派生词来描述某些示例。这些术语不一定作为彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以表示,两个或更多元件彼此处于直接的物理或电接触的状态。然而,术语“耦合”也可以意味着,两个或更多彼此不直接接触,但是仍彼此合作或进行交互的元件。
要强调的是,提供可公开内容的摘要以符合37C.F.R.第1.72(b)段,要求将可使读者快速地弄清本技术公开的特征的摘要。但应理解,它不能被用来解释或限制权利要求的范围或含义。此外,在前面的“具体实施方式”中,可以看出,各种特点可以组合在一个示例中,以便简化说明。本发明的此方法不应被解释为反映带权利要求的各示例需要比每一个权利要求中明确地列举的特点更多的特点的意图。相反,如下面的权利要求所反映的,本发明的主题在于少于所公开的单一示例的所有特点。如此,下面的权利要求被包括到“详细描述”中,每一个权利要求本身也作为单独的示例。在所附权利要求书中,术语“包括”和“其特征在于”被用作相应的术语“包含”和“其中”的普通英语等效词。此外,术语“第一”、“第二”、“第三”等等只用作标记,并不旨在对它们的对象施加数值要求。
在某些示例中,网络I/O设备的示例第一设备可以包括电路。示例第一设备还可以包括供电路执行的命令模块,用以发送把用于复制的数据存储到多个存储服务器中的RDMA命令消息。可以通过一个或多个存储服务器和网络I/O设备之间的至少一个网络连接,将RDMA命令消息发送到多个存储服务器之中的一个或多个存储服务器。示例第一设备还可以包括供电路执行以从一个或多个存储服务器接收一个或多个RDMA命令完成消息的完成模块,这些消息指示数据在多个存储服务器之中的至少第一和第二存储服务器之间的复制。
在示例第一设备的某些示例中,命令模块可以通过相应的第一和第二网络连接向第一存储服务器和第二存储服务器两者发送RDMA命令消息,并且完成模块从第一和第二存储服务器接收相应的第一和第二RDMA命令完成消息,完成消息指示数据在至少第一和第二存储服务器之间的复制。
根据示例第一设备的某些示例,命令模块向第一存储服务器发送RDMA命令消息可以包括命令模块向在第一存储服务器中维护的控制第一存储设备的第一NVMe控制器发送RDMA命令消息并导致数据被推到第一存储设备中的一个或多个缓冲器。第一NVMe控制器可以能够基于从一个或多个缓冲器中读取数据并将数据存储在第一存储设备中,导致第一RDMA命令完成消息被发送到网络I/O设备。对于这些示例,命令模块向第二存储服务器发送RDMA命令消息包括命令模块向在第二存储服务器中维护的控制第二存储设备的第二NVMe控制器发送RDMA命令消息并导致数据被推到第二存储设备中的一个或多个缓冲器。第二NVMe控制器可以能够基于从一个或多个缓冲器中读取数据并将数据存储在第二存储设备中,导致第二RDMA命令完成消息被发送到网络I/O设备。
在示例第一设备的某些示例中,命令模块可以通过第三存储服务器和网络I/O设备之间的第一网络连接,向第三存储服务器发送RDMA命令消息。对于这些示例,RDMA命令消息发往在第三存储服务器中维护的控制存储设备的NVMe控制器。NVMe控制器能够响应于RDMA命令消息,从客户端设备获取数据,将数据存储到存储设备,并导致RDMA命令完成消息被发送到完成模块以指示数据的存储。示例第一设备还可以包括请求模块,该请求模块供电路执行以通过网络I/O设备和第一存储服务器之间的第二网络连接,向第一存储服务器发送使第一存储服务器复制存储到被存储设备的数据的第一请求消息。对于这些示例,请求模块可以通过网络I/O设备和第二存储服务器之间的第三网络连接,向第二存储服务器发送使第二存储服务器复制被存储到存储设备的数据的第二请求消息。
根据示例第一设备的某些示例,命令模块可以导致数据被推到第三存储设备中的一个或多个缓冲器,并在RDMA命令消息中指示数据的位置。对于这些示例,完成模块基于NVMe控制器从一个或多个缓冲器读取数据并将数据存储到存储设备中的分配部分,从NVMe控制器接收RDMA命令完成消息。
在示例第一设备的某些示例中,命令模块可以导致数据被推到耦合到网络I/O设备的客户端设备中的一个或多个缓冲器,并在RDMA命令消息中指示数据的位置。第三存储服务器中的网络I/O设备可以能够从客户端设备中的一个或多个缓冲器拉取数据,以至少临时将数据存储到第三存储服务器中的一个或多个缓冲器中。对于这些示例,完成模块基于NVMe控制器从第三存储服务器中的一个或多个缓冲器读取数据并将数据存储到存储设备中的分配部分,从NVMe控制器接收RDMA命令完成消息。
根据示例第一设备的某些示例,命令模块可以通过第三存储服务器和网络I/O设备之间的第一网络连接,向第三存储服务器发送RDMA命令消息。RDMA命令消息可以发往在第三存储服务器中维护的控制存储设备的NVMe控制器。对于这些示例,完成模块可以基于NVMe控制器响应于RDMA命令消息从网络I/O设备读取数据并将数据存储到存储设备中的分配部分,从NVMe控制器接收RDMA命令完成消息。NVMe控制器还可以通过第三存储服务器和第一存储服务器之间的第二网络连接,向第一存储服务器发送使第一存储服务器复制被存储到存储设备的数据的第一请求消息,以及,通过第三存储服务器和第二存储服务器之间的第三网络连接,向第二存储服务器发送使第二存储服务器复制被存储到存储设备的数据的第二请求消息。
在示例第一设备的某些示例中,RDMA命令消息和RDMA命令完成消息可以顺应包括iWARP、Infiniband或RoCE中的一个的协议。
根据某些示例,示例第一设备也可以包括具有非易失性存储器或易失性存储器中的至少一种的存储器。存储器可以能够至少临时存储与把用于复制的数据存储到多个存储服务器相关联的信息。信息可以包括一个或多个RDMA STag,一个或多个RDMA服务标记之中的至少一个RDMA服务标记被包括在RDMA命令消息中。
在某些示例中,在网络I/O设备中实现的示例第一方法可以包括发送把用于复制的数据存储到多个存储服务器的RDMA命令消息。可以通过一个或多个存储服务器和网络I/O设备之间的至少一个网络连接,将RDMA命令消息发送到多个存储服务器之中的一个或多个存储服务器。示例第一方法还可以包括从一个或多个存储服务器接收一个或多个RDMA命令完成消息,这些消息用于指示数据在多个存储服务器之中的至少第一和第二存储服务器之间的复制。
根据某些示例,示例第一方法还可以通过相应的第一和第二网络连接向第一存储服务器和第二存储服务器两者发送RDMA命令消息,以及从第一和第二存储服务器接收相应的第一和第二RDMA命令完成消息,完成消息指示数据在至少第一和第二存储服务器之间的复制。
在示例第一方法的某些示例中,向第一存储服务器发送RDMA命令消息可以包括向在第一存储服务器中维护的控制第一存储设备的NVMe控制器发送RDMA命令消息。示例第一方法还可以包括向第一存储服务器中的一个或多个缓冲器发送数据,第一NVMe控制器能够基于从一个或多个缓冲器中读取数据并将数据存储在第一存储设备中,导致所述第一RDMA命令完成消息被发送到网络I/O设备。示例第一方法还可以包括,向第二存储服务器发送RDMA命令消息包括向在第二存储服务器中维护的控制第二存储设备的第二NVMe控制器发送RDMA命令消息并向第二存储服务器中的一个或多个缓冲器发送数据。第二NVMe控制器可以能够基于从一个或多个缓冲器中读取数据并将数据存储在第二存储设备中,导致第二RDMA命令完成消息被发送到网络I/O设备。
根据某些示例,示例第一方法还可以包括通过第三网络连接,将与被复制到第一和第二存储服务器的数据相关联的错误校正或数据恢复信息发送到第三存储服务器。对于这些示例,错误校正或数据恢复信息用于校正复制的数据中的一个或多个错误或恢复复制的数据的至少诸部分。
在某些示例中,示例第一方法还可以包括通过第三存储服务器和网络I/O设备之间的第一网络连接,向第三存储服务器发送RDMA命令消息。RDMA命令消息可以发往在第三存储服务器中维护的控制存储设备的NVMe控制器。NVMe控制器能够响应于RDMA命令消息,从网络I/O设备获取数据,将数据存储到存储设备,并导致RDMA命令完成消息被发送到网络I/O设备以指示数据的存储。示例第一方法还可以包括通过网络I/O设备和第一存储服务器之间的第二网络连接,向第一存储服务器发送使第一存储服务器复制被存储到存储设备的数据的第一请求消息。示例第一方法还可以包括通过网络I/O设备和第二存储服务器之间的第三网络连接,向第二存储服务器发送使第二存储服务器复制被存储到存储设备的数据的第二请求消息。
根据某些示例,示例第一方法还可以包括向第三存储设备中的一个或多个缓冲器发送数据,并在RDMA命令消息中指示数据的位置,第二NVMe控制器能够基于从一个或多个缓冲器中读取数据并将数据存储在第二存储设备中的分配部分,导致RDMA命令完成消息被发送到网络I/O设备。
在某些示例中,示例第一方法还可以包括向耦合到网络I/O设备的客户端设备中的一个或多个缓冲器发送数据。示例第一方法还可以包括在RDMA命令消息中指出数据的位置。第三存储服务器中的网络I/O设备可以能够从客户端设备中的一个或多个缓冲器拉取数据,以至少临时将数据存储到第三存储服务器中的一个或多个缓冲器中。第二NVMe控制器可以能够基于从第三存储服务器上的一个或多个缓冲器中读取数据并将数据存储在第二存储设备中的分配部分,导致RDMA命令完成消息被发送到网络I/O设备。
根据某些示例,示例第一方法还可以包括通过网络I/O设备和第四存储服务器之间的第四网络连接,将与被复制到第一和第二存储服务器的数据相关联的错误校正或数据恢复信息发送到第四存储服务器。对于这些示例,错误校正或数据恢复信息用于校正复制的数据中的一个或多个错误或恢复复制的数据的至少诸部分。
在某些示例中,示例第一方法还可以包括通过第三存储服务器和网络I/O设备之间的第一网络连接,向第三存储服务器发送RDMA命令消息。RDMA命令消息发往在第三存储服务器中维护的控制存储设备的NVMe控制器。示例第一方法还可以包括基于NVMe控制器响应于RDMA命令消息从网络I/O设备读取数据并将数据存储到存储设备中的分配部分,从NVMe控制器接收RDMA命令完成消息。所述NVMe控制器还通过所述第三存储服务器和所述第一存储服务器之间的第二网络连接,向所述第一存储服务器发送使所述第一存储服务器复制被存储到所述存储设备的数据的第一请求消息,以及,通过所述第三存储服务器和所述第二存储服务器之间的第三网络连接,向所述第二存储服务器发送使所述第二存储服务器复制被存储到存储设备的数据的第二请求消息。
根据示例第一方法的某些示例,RDMA命令消息和RDMA命令完成消息可以顺应包括iWARP、Infiniband或RoCE中的一个的协议。
在某些示例中,包括多个指令的第一至少一种机器可读介质,所述指令,响应于在网络I/O设备上执行,导致网络I/O设备发送把用于复制的数据存储到多个存储服务器的RDMA命令消息。可以通过一个或多个存储服务器和网络I/O设备之间的至少一个网络连接,将RDMA命令消息发送到多个存储服务器之中的一个或多个存储服务器。RDMA命令消息可以顺应包括iWARP、Infiniband或RoCE中的一个的协议。指令还可以导致网络I/O设备从一个或多个存储服务器接收一个或多个RDMA命令完成消息,这些消息用于指示数据在多个存储服务器之中的至少第一和第二存储服务器之间的复制。RDMA命令完成消息顺应协议。
根据第一至少一种机器可读介质的某些示例,指令还导致网络I/O设备通过相应的第一和第二网络连接,向第一存储服务器和第二存储服务器两者发送RDMA命令消息,以及从第一和第二存储服务器接收相应的第一和第二RDMA命令完成消息,完成消息指示数据在至少第一和第二存储服务器之间的复制。
在第一至少一种机器可读介质的某些示例中,指令还可以导致网络I/O设备向第一存储服务器中维护的控制第一存储设备的NVMe控制器发送RDMA命令消息,并导致数据被推到第一存储服务器中的一个或多个缓冲器。第一NVMe控制器可以能够基于从一个或多个缓冲器中读取数据并将数据存储在第一存储设备中,导致第一RDMA命令完成消息被发送到网络I/O设备。指令还可以导致网络I/O设备向第二存储服务器中维护的控制第二存储设备的第二NVMe控制器发送RDMA命令消息,并导致数据被推到第二存储服务器中的一个或多个缓冲器,第二NVMe控制器能够基于从一个或多个缓冲器中读取数据并将数据存储在第二存储设备中,导致第二RDMA命令完成消息被发送到网络I/O设备。
根据第一至少一种机器可读介质的某些示例,指令还导致网络I/O设备通过第三存储服务器和网络I/O设备之间的第一网络连接,向第三存储服务器发送RDMA命令消息。RDMA命令消息可以发往在第三存储服务器中维护的控制存储设备的NVMe控制器。NVMe控制器能够响应于RDMA命令消息,从网络I/O设备获取数据,将数据存储到存储设备,并导致RDMA命令完成消息被发送到网络I/O设备以指示数据的存储。指令还可以导致网络I/O设备通过网络I/O设备和第一存储服务器之间的第二网络连接,向第一存储服务器发送使第一存储服务器复制被存储到存储设备的数据的第一请求消息。指令还可以导致I/O设备通过客户端设备和第二存储服务器之间的第三网络连接,向第二存储服务器发送使第二存储服务器复制被存储到存储设备的数据的第二请求消息。
在第一至少一种机器可读介质的某些示例中,指令还可以导致网络I/O设备通过第三存储服务器和网络I/O设备之间的第一网络连接,向第三存储服务器发送RDMA命令消息,RDMA命令消息发往在第三存储服务器中维护的控制存储设备的NVMe控制器。指令还可以导致网络I/O设备基于NVMe控制器响应于RDMA命令消息,从网络I/O设备读取数据,将数据存储到存储设备中的分配部分,从NVMe控制器接收RDMA命令完成消息。NVMe控制器还可以通过第三存储服务器和第一存储服务器之间的第二网络连接,向第一存储服务器发送使第一存储服务器复制被存储到存储设备的数据的第一请求消息,以及,通过所述第三存储服务器和所述第二存储服务器之间的第三网络连接,向所述第二存储服务器发送使所述第二存储服务器复制被存储到存储设备的数据的第二请求消息。
在某些示例中,网络I/O设备的示例第二设备可以包括电路。示例第二设备还可以包括供电路执行的命令接收模块,用以通过第一网络连接从远程客户端接收第一RDMA命令消息。第一RDMA命令消息与在由耦合到网络I/O设备的第一存储服务器中维护的第一NVMe控制器控制的第一存储设备中存储数据相关联。示例第二设备还可以包括命令转发模块,该命令转发模块供电路执行以将第一RDMA命令消息转发到第一NVMe控制器,以导致第一NVMe控制器,响应于第一RDMA命令消息,从远程客户端获取数据,并将数据存储到存储设备中。示例第二设备还可以包括完成转发模块,该完成转发模块供电路执行以将RDMA命令完成消息从第一NVMe控制器转发到远程客户端,以指示数据的存储。命令接收模块可以通过第二网络连接从第二存储服务器接收第二RDMA命令消息。第二RDMA命令消息与复制被存储到第一存储设备的数据相关联。示例第二设备还可以包括命令转发模块,该命令转发模块用以将第二RDMA命令消息转发到第一NVMe控制器,以导致存储到第一存储设备中的数据可被第二存储服务器读取,以使第二存储服务器能通过将数据存储到由在第二存储服务器中维护的第二NVMe控制器控制的第二存储设备来复制数据。
在某些示例中,示例第二设备还可以包括请求转发模块,该请求转发模块供电路执行以从第一NVMe控制器转发使第二存储服务器复制被存储到第一存储设备的数据的请求消息。命令接收模块响应于被转发到第二存储服务器的请求消息,接收第二RDMA命令消息。
根据示例第二设备的某些示例,命令转发模块可以将第二RDMA命令消息转发到第一NVMe控制器,以导致通过包括用于指示存储在第一存储设备中的数据的位置的RDMA Stag的第二RDMA命令消息,存储在第一存储设备中的数据可被第二存储服务器读取。第二存储服务器上的第二网络I/O设备可以能够使用RDMA STag来从第一存储设备拉取数据,而第二NVMe控制器能够将拉取到的数据存储到第二存储设备,以便复制数据。
在示例第二设备的某些示例中,命令转发模块可以将第二RDMA命令消息转发到第一NVMe控制器,以导致通过致使存储在第一存储设备中的数据被推到第二存储服务器上的一个或多个缓冲器,存储在第一存储设备中的数据可被第二存储服务器读取。对于这些示例,命令转发模块可以与转发的第二RDMA命令一起包括RDMA STag,以指示用于将数据存储到第二存储设备的分配部分。第二NVMe控制器可以能够读取被推到第二存储服务器中的一个或多个缓冲器的数据,并使用RDMA STag将数据存储到分配部分,以便复制数据。
根据某些示例,RDMA命令消息和RDMA命令完成消息可以顺应包括iWARP、Infiniband或RoCE中的一个的协议。
在示例第二设备的某些示例中,第一存储设备可以包括固态驱动器(SSD),固态驱动器(SSD)具有非易失性存储器,所述非易失性存储器包括3维交叉点存储器、闪存、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(EEPROM)中的至少一种。
根据某些示例,示例第二设备也可以包括包括具有非易失性存储器或易失性存储器中的至少一种的存储器。存储器可以能够至少临时存储与把用于复制的数据存储到第二存储服务器相关联的信息。信息可以包括一个或多个RDMA STag,一个或多个RDMA STag之中的至少一个RDMA STag将被包括在由命令转发模块转发到第一NVMe控制器的第二RDMA命令消息中,以导致存储在第一存储设备中的数据可被第二存储服务器读取。
在某些示例中,在网络I/O设备中实现的示例第二方法可以包括在网络I/O设备中通过第一网络连接,从远程客户端接收第一RDMA命令消息。第一RDMA命令消息可以与在由耦合到网络I/O设备的第一存储服务器中维护的第一NVMe控制器控制的第一存储设备中存储数据相关联。示例第一方法还可以包括将第一RDMA命令消息转发到第一NVMe控制器,以导致第一NVMe控制器响应于RDMA命令消息而从远程客户端获取数据并将数据存储到第一存储设备中。示例第一方法还可以包括将RDMA命令完成消息从第一NVMe控制器转发到远程客户端以指示数据的存储。示例第一方法还可以包括通过第二网络连接,从第二存储服务器接收第二RDMA命令消息,第二RDMA命令消息与复制被存储到第一存储设备的数据相关联。示例第一方法还可以包括将第二RDMA命令消息转发到第一NVMe控制器,以导致存储在第一存储设备中的数据可被第二存储服务器读取,以使第二存储服务器能够通过将数据存储到由在第二存储服务器中维护的第二NVMe控制器控制的第二存储设备来复制数据。
根据某些示例,示例第二方法还可以包括响应于发送到第二存储服务器的使第二存储服务器复制被存储到第一存储设备的数据的请求消息,接收第二RDMA命令消息。对于这些示例,可从第一存储服务器或远程客户端中的一个发送请求消息。
在示例第二方法的某些示例中,将第二RDMA命令消息转发到第一NVMe控制器以导致存储在第一存储设备中的数据可被第二存储服务器读取,可以涉及与第二RDMA命令消息一起包括用于指示存储在第一存储设备中的数据的位置的RDMA STag,第二存储服务器中的第二网络I/O设备能够使用RDMA STag,从第一存储设备拉取数据,第二NVMe控制器能够将拉取的数据存储到第二存储设备,以便复制数据。
根据示例第二方法的某些示例,RDMA STag可以与从第一存储服务器或远程客户端中的一个发送的请求消息一起被接收。
在示例第二方法的某些示例中,将第二RDMA命令消息转发到第一NVMe控制器以导致存储在第一存储设备中的数据可被第二存储服务器读取,可以包括将存储在第一存储设备中的数据推到第二存储服务器中的一个或多个缓冲器。对于这些示例,可以与第二RDMA命令一起包括RDMASTag,用以指示将数据存储到第二存储设备的分配部分,第二NVMe控制器能够读取被推到第二存储服务器中的一个或多个缓冲器的数据,并使用RDMA STag将数据存储到分配部分,以便复制数据。
根据示例第二方法的某些示例,RDMA STag可以与从第一存储服务器或远程客户端中的一个发送的请求消息一起被接收。
在示例第二方法的某些示例中,RDMA命令消息和RDMA命令完成消息可以顺应包括iWARP、Infiniband或RoCE中的一个的协议。
在示例第二方法的某些示例中,第一存储设备可以包括具有非易失性存储器的SSD,所述非易失性存储器包括3维交叉点存储器、闪存、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(EEPROM)中的至少一种。
在某些示例中,包括多个指令的第二至少一种机器可读介质,所述指令,响应于在网络I/O设备上执行,导致网络I/O设备通过第一网络连接,从远程客户端接收第一RDMA命令消息。第一RDMA命令消息可以与在由耦合到网络I/O设备的第一存储服务器中维护的第一NVMe控制器控制的第一存储设备中存储数据相关联,RDMA命令消息顺应包括iWARP、Infiniband或RoCE中的一个的协议。指令还可以导致网络I/O设备向第一NVMe控制器转发第一RDMA命令消息,以导致第一NVMe控制器响应于RDMA命令消息从远程客户端获取数据并将数据存储到第一存储设备中。指令还可以导致网络I/O设备将RDMA命令完成消息从第一NVMe控制器转发到远程客户端,以指示数据的存储,RDMA命令完成消息顺应协议。指令还可以导致网络I/O设备通过第二网络连接,从第二存储服务器接收第二RDMA命令消息,第二RDMA命令消息与复制被存储到第一存储设备的数据相关联,第二RDMA命令消息顺应协议。指令还可以导致网络I/O设备将第二RDMA命令消息转发到第一NVMe控制器,以导致存储在第一存储设备中的数据可被第二存储服务器读取,以使第二存储服务器能够通过将数据存储到由在第二存储服务器中维护的第二NVMe控制器控制的第二存储设备来复制数据。
根据第二至少一种机器可读介质的某些示例,可以响应于发送到第二存储服务器的使第二存储服务器复制被存储到第一存储设备的数据的请求消息,接收第二RDMA命令消息。对于这些示例,可以从第一存储服务器或远程客户端中的一个发送请求消息。
在第二至少一种机器可读介质的某些示例中,导致网络I/O设备将第二RDMA命令消息转发到第一NVMe控制器以导致存储在第一存储设备中的数据可被第二存储服务器读取的指令可以包括还导致网络I/O设备用第二RDMA命令消息包括RDMA STag的指令,该RDMA Stag用于指示存储在第一存储设备中的数据的位置。对于这些示例,第二存储服务器中的第二网络I/O设备可以能够使用RDMA STag,从第一存储设备拉取数据,而第二NVMe控制器能够将拉取的数据存储到第二存储设备,以便复制数据,RDMA STag是与从第一存储服务器或远程客户端中的一个发送的请求消息一起被接收到的。
根据第二至少一种机器可读介质的某些示例,导致网络I/O设备将第二RDMA命令消息转发到第一NVMe控制器以导致存储到第一存储设备中的数据可被第二存储服务器读取的指令包括还导致网络I/O设备将存储在第一存储设备中的数据推到第二存储服务器中的一个或多个缓冲器的指令。这些指令还可以导致网络I/O设备用第二RDMA命令包括RDMA Stag,该RDMAStag指示将数据存储到第二存储设备的分配部分,第二NVMe控制器能够读取被推到第二存储服务器中的一个或多个缓冲器的数据,并使用RDMA STag将数据存储到分配部分,以便复制数据,RDMA STag是与从第一存储服务器或远程客户端中的一个发送的请求消息一起被接收到的。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。
Claims (25)
1.一种用于网络输入/输出(I/O)设备的装置,包括:
电路;
命令模块,所述命令模块由所述电路执行以发送把用于复制的数据存储到多个存储服务器的远程直接存储器访问(RDMA)命令消息,所述RDMA命令消息通过所述一个或多个存储服务器和所述网络I/O设备之间的至少一个网络连接,被发送到所述多个存储服务器之中的一个或多个存储服务器;以及
完成模块,所述完成模块由所述电路执行以从所述一个或多个存储服务器接收一个或多个RDMA命令完成消息,所述完成消息指示所述数据在所述多个存储服务器之中的至少第一存储服务器和第二存储服务器之间的复制。
2.如权利要求1所述的装置,其特征在于,包括:命令模块,所述命令模块通过相应的第一和第二网络连接向所述第一存储服务器和所述第二存储服务器两者发送所述RDMA命令消息;以及完成模块,所述完成模块从所述第一和第二存储服务器接收相应的第一和第二RDMA命令完成消息,所述完成消息指示所述数据在至少所述第一和第二存储服务器之间的复制。
3.如权利要求2所述的装置,其特征在于,包括
所述命令模块向所述第一存储服务器发送所述RDMA命令消息包括所述命令模块向在所述第一存储服务器上维护的控制第一存储设备的第一非易失性存储器快速(NVMe)控制器发送所述RDMA命令消息并导致所述数据被推到所述第一存储设备上的一个或多个缓冲器,所述第一NVMe控制器能够基于从所述一个或多个缓冲器中读取所述数据并将所述数据存储在所述第一存储设备中,导致所述第一RDMA命令完成消息被发送到所述网络I/O设备;以及
所述命令模块向所述第二存储服务器发送所述RDMA命令消息包括所述命令模块向在所述第二存储服务器上维护的控制第二存储设备的第二NVMe控制器发送所述RDMA命令消息并导致所述数据被推到所述第二存储设备上的一个或多个缓冲器,所述第二NVMe控制器能够基于从所述一个或多个缓冲器中读取所述数据并将所述数据存储在所述第二存储设备中,导致所述第二RDMA命令完成消息被发送到所述网络I/O设备。
4.如权利要求1所述的装置,其特征在于,包括:
所述命令模块通过所述第三存储服务器和所述网络I/O设备之间的第一网络连接,向第三存储服务器发送所述RDMA命令消息,所述RDMA命令消息发往在所述第三存储服务器中维护的控制存储设备的非易失性存储器快速(NVMe)控制器,所述NVMe控制器能够响应于所述RDMA命令消息,从所述客户端设备获取所述数据,将所述数据存储到所述存储设备,并导致所述RDMA命令完成消息被发送到所述完成模块以指示所述数据的存储;
请求模块,所述请求模块由所述电路执行以通过所述网络I/O设备和所述第一存储服务器之间的第二网络连接,向所述第一存储服务器发送使所述第一存储服务器复制被存储到所述存储设备的所述数据的第一请求消息;以及
所述请求模块通过所述网络I/O设备和所述第二存储服务器之间的第三网络连接,向所述第二存储服务器发送使所述第二存储服务器复制被存储到所述存储设备的所述数据的第二请求消息。
5.如权利要求4所述的装置,其特征在于,包括:
所述命令模块导致所述数据被推到所述第三存储服务器处的一个或多个缓冲器,并在所述RDMA命令消息中指示所述数据的位置;以及
所述完成模块基于所述NVMe控制器从所述一个或多个缓冲器读取所述数据并将所述数据存储到所述存储设备中的分配部分,从所述NVMe控制器接收所述RDMA命令完成消息。
6.如权利要求4所述的装置,其特征在于,包括:
所述命令模块导致所述数据被推到耦合到所述所述网络I/O设备的客户端设备中的一个或多个缓冲器,并在所述RDMA命令消息中指示所述数据的位置,所述第三存储服务器中的网络I/O设备能够从所述客户端设备中的所述一个或多个缓冲器拉取所述数据,以至少临时将所述数据存储到所述第三存储服务器中的一个或多个缓冲器;以及
所述完成模块基于所述NVMe控制器从所述第三存储服务器上的所述一个或多个缓冲器读取所述数据并将所述数据存储到所述存储设备中的分配部分,从所述NVMe控制器接收所述RDMA命令完成消息。
7.如权利要求1所述的装置,其特征在于,包括:
所述命令模块通过所述第三存储服务器和所述网络I/O设备之间的第一网络连接,向第三存储服务器发送所述RDMA命令消息,所述RDMA命令消息发往在所述第三存储服务器中维护的控制存储设备的非易失性存储器快速(NVMe)控制器;以及
所述完成模块基于所述NVMe控制器响应于所述RDMA命令消息,从所述网络I/O设备读取所述数据并将所述数据存储到所述存储设备中的分配部分,从所述NVMe控制器接收所述RDMA命令完成消息,所述NVMe控制器还通过所述第三存储服务器和所述第一存储服务器之间的第二网络连接,向所述第一存储服务器发送使所述第一存储服务器复制被存储到所述存储设备的所述数据的第一请求消息,以及,通过所述第三存储服务器和所述第二存储服务器之间的第三网络连接,向所述第二存储服务器发送使所述第二存储服务器复制被存储到所述存储设备的所述数据的第二请求消息。
8.如权利要求1所述的装置,其特征在于,包括所述RDMA命令消息和所述RDMA命令完成消息顺应包括以下各项中的一个的协议:因特网广域RDMA协议(iWARP)、Infiniband或汇聚以太网上RDMA(RoCE)中的一种的协议。
9.如权利要求1所述的装置,其特征在于,包括:
包括非易失性存储器或易失性存储器中的至少一个的存储器,所述存储器能够至少临时存储与把用于复制的数据存储到所述多个存储服务器相关联的信息,所述信息包括一个或多个RDMA服务标记(STag),所述一个或多个RDMA服务标记之中的至少一个RDMA服务标记被包括在所述RDMA命令消息中。
10.一种在网络输入/输出(I/O)设备处实现的方法,包括:
发送把用于复制的数据存储到多个存储服务器的远程直接存储器访问(RDMA)命令消息,所述RDMA命令消息通过所述一个或多个存储服务器和所述网络I/O设备之间的至少一个网络连接,被发送到所述多个存储服务器之中的一个或多个存储服务器;以及
从所述一个或多个存储服务器接收一个或多个RDMA命令完成消息,所述完成消息指示所述数据在所述多个存储服务器之中的至少第一存储服务器和第二存储服务器之间的复制。
11.如权利要求10所述的方法,其特征在于,包括通过相应的第一和第二网络连接向所述第一存储服务器和所述第二存储服务器两者发送所述RDMA命令消息,以及从所述第一和第二存储服务器接收相应的第一和第二RDMA命令完成消息,所述完成消息指示所述数据在至少所述第一和第二存储服务器之间的复制。
12.如权利要求11所述的方法,其特征在于,包括:
向所述第一存储服务器发送所述RDMA命令消息包括向在所述第一存储服务器处维护的控制第一存储设备的第一非易失性存储器快速(NVMe)控制器发送所述RDMA命令消息以及将所述数据发送到所述第一存储服务器中的一个或多个缓冲器,所述第一NVMe控制器能够基于从所述一个或多个缓冲器中读取所述数据并将所述数据存储在所述第一存储设备,导致所述第一RDMA命令完成消息被发送到所述网络I/O设备;以及
向所述第二存储服务器发送所述RDMA命令消息包括向在所述第二存储服务器处维护的控制第二存储设备的第二NVMe控制器发送所述RDMA命令消息以及将所述数据发送到所述第二存储服务器中的一个或多个缓冲器,所述第二NVMe控制器能够基于从所述一个或多个缓冲器中读取所述数据并将所述数据存储在所述第二存储设备中,导致所述第二RDMA命令完成消息被发送到所述网络I/O设备。
13.如权利要求10所述的方法,其特征在于,包括:
通过第三网络连接,将与被复制到所述第一和第二存储服务器的所述数据相关联的错误校正或数据恢复信息发送到第三存储服务器,所述错误校正或数据恢复信息用于校正所述复制的数据中的一个或多个错误或恢复所述复制的数据的至少诸部分。
14.如权利要求10所述的方法,其特征在于,包括:
通过所述第三存储服务器和所述网络I/O设备之间的第一网络连接,向第三存储服务器发送所述RDMA命令消息,所述RDMA命令消息发往在所述第三存储服务器中维护的控制存储设备的非易失性存储器快速(NVMe)控制器,所述NVMe控制器能够响应于所述RDMA命令消息,从所述网络I/O设备获取所述数据,将所述数据存储到所述存储设备,并导致所述RDMA命令完成消息被发送到所述所述网络I/O设备以指示所述数据的存储;
通过所述网络I/O设备和所述第一存储服务器之间的第二网络连接,向所述第一存储服务器发送使所述第一存储服务器复制被存储到所述存储设备的所述数据的第一请求消息;以及
通过所述所述网络I/O设备和所述第二存储服务器之间的第三网络连接,向所述第二存储服务器发送使所述第二存储服务器复制被存储到所述存储设备的所述数据的第二请求消息。
15.如权利要求14所述的方法,其特征在于,包括:
将所述数据发送到所述第三存储设备中的一个或多个缓冲器;以及
在所述RDMA命令消息中指出所述数据的位置,所述第二NVMe控制器能够基于从所述一个或多个缓冲器中读取所述数据并将所述数据存储在所述第二存储设备中的分配部分,导致所述RDMA命令完成消息被发送到所述网络I/O设备。
16.如权利要求14所述的方法,其特征在于,包括:
将所述数据发送到耦合至所述网络I/O设备的客户端设备中的一个或多个缓冲器;以及
在所述RDMA命令消息中指示所述数据的位置,所述第三存储服务器处的网络I/O设备能够从所述客户端设备中的所述一个或多个缓冲器拉取所述数据,以至少临时将所述数据存储到所述第三存储服务器中的一个或多个缓冲器,所述第二NVMe控制器能够基于从所述第三存储服务器处的所述一个或多个缓冲器中读取所述数据并将所述数据存储在所述第二存储设备中的分配部分,导致所述RDMA命令完成消息被发送到所述网络I/O设备。
17.如权利要求14所述的方法,其特征在于,包括:
通过所述网络I/O设备和所述第四存储服务器之间的第四网络连接,将与被复制到所述第一和第二存储服务器的所述数据相关联的错误校正或数据恢复信息发送到第四存储服务器,所述错误校正或数据恢复信息用于校正所述复制的数据中的一个或多个错误或恢复所述复制的数据的至少诸部分。
18.如权利要求10所述的方法,其特征在于,包括:
通过所述第三存储服务器和所述网络I/O设备之间的第一网络连接,向第三存储服务器发送所述RDMA命令消息,所述RDMA命令消息发往在所述第三存储服务器中维护的控制存储设备的非易失性存储器快速(NVMe)控制器;以及
基于所述NVMe控制器响应于所述RDMA命令消息,从所述网络I/O设备读取所述数据并将所述数据存储到所述存储设备中的分配部分,从所述NVMe控制器接收所述RDMA命令完成消息,所述NVMe控制器还通过所述第三存储服务器和所述第一存储服务器之间的第二网络连接,向所述第一存储服务器发送使所述第一存储服务器复制被存储到所述存储设备的所述数据的第一请求消息,以及,通过所述第三存储服务器和所述第二存储服务器之间的第三网络连接,向所述第二存储服务器发送使所述第二存储服务器复制被存储到所述存储设备的所述数据的第二请求消息。
19.包括多个指令的至少一个机器可读介质,响应于在设备上被执行,所述指令导致所述设备执行如权利要求10-18中任一项所述的方法。
20.一种在网络输入/输出(I/O)设备处实现的方法,包括:
通过第一网络连接,从远程客户端接收第一远程直接存储器访问(RDMA)命令消息,所述第一RDMA命令消息与把数据存储到由在耦合到所述网络I/O设备的第一存储服务器中维护的第一非易失性存储器快速(NVMe)控制器控制的第一存储设备相关联;
将所述第一RDMA命令消息转发到所述第一NVMe控制器以导致所述第一NVMe控制器响应于所述RDMA命令消息而从所述远程客户端获取所述数据并将所述数据存储到所述第一存储设备;
将RDMA命令完成消息从所述第一NVMe控制器转发到所述远程客户端以指示所述数据的所述存储;
通过第二网络连接从第二存储服务器接收第二RDMA命令消息,所述第二RDMA命令消息与复制被存储到所述第一存储设备的所述数据相关联;以及
将所述第二RDMA命令消息转发到所述第一NVMe控制器以导致存储在所述第一存储设备处的所述数据可被所述第二存储服务器读取,以使所述第二存储服务器能够通过将所述数据存储到由在所述第二存储服务器中维护的第二NVMe控制器控制的第二存储设备来复制所述数据。
21.如权利要求20所述的方法,其特征在于,包括响应于发送到所述第二存储服务器以使所述第二存储服务器复制被存储到所述第一存储设备的所述数据的请求消息,接收所述第二RDMA命令消息,所述请求消息是从所述第一存储服务器或所述远程客户端中的一个发送的。
22.如权利要求21所述的方法,其特征在于,将所述第二RDMA命令消息转发到所述第一NVMe控制器以导致存储在所述第一存储设备处的所述数据可被所述第二存储服务器读取包括:
用所述第二RDMA命令消息包括指示存储所述第一存储设备处的所述数据的位置的RDMA服务标记(STag),所述第二存储服务器处的第二网络I/O设备能够使用所述RDMA STag来从所述第一存储设备拉取数据,而所述第二NVMe控制器能够将所述拉取的数据存储到所述第二存储设备,以便复制所述数据,所述RDMA STag是与从所述第一存储服务器或所述远程客户端中的一个发送的所述请求消息一起被接收到的。
23.如权利要求21所述的方法,其特征在于,将所述第二RDMA命令消息转发到所述第一NVMe控制器以导致存储在所述第一存储设备处的所述数据可被所述第二存储服务器读取包括:
将存储在所述第一存储设备处的所述数据推到所述第二存储服务器处的一个或多个缓冲器;以及
用所述第二RDMA命令消息包括指示用于将所述数据存储到所述第二存储设备的分配部分的RDMA服务标记(STag),所述第二NVMe控制器能够读取被推到所述第二存储服务器中的所述一个或多个缓冲器的所述数据,并使用所述RDMA STag将所述数据存储到所述分配部分,以便复制所述数据。
24.包括多个指令的至少一种机器可读介质,响应于在设备上被执行,所述指令导致所述设备执行如权利要求20-23中任一项所述的方法。
25.一种用于网络输入/输出(I/O)设备的装备,包括:
用于通过第一网络连接从远程客户端接收第一远程直接存储器访问(RDMA)命令消息的装置,所述第一RDMA命令消息与把数据存储到由在耦合到所述网络I/O设备的第一存储服务器中维护的第一非易失性存储器快速(NVMe)控制器控制的存储设备相关联,所述RDMA命令消息顺应包括因特网广域RDMA协议(iWARP)、Infiniband或汇聚以太网上RDMA(RoCE)中的一种的协议;
用于将所述第一RDMA命令消息转发到所述第一NVMe控制器以导致所述第一NVMe控制器响应于所述RDMA命令消息而从所述远程客户端获取所述数据并将所述数据存储到所述第一存储设备中的装置;
用于将RDMA命令完成消息从所述第一NVMe控制器转发到所述远程客户端以指出所述数据的所述存储的装置,所述RDMA命令完成消息顺应所述协议;
用于通过第二网络连接从第二存储服务器接收第二RDMA命令消息的装置,所述第二RDMA命令消息与复制被存储到所述第一存储设备的所述数据相关联,所述第二RDMA命令消息顺应所述协议;以及
用于将所述第二RDMA命令消息转发到所述第一NVMe控制器以导致存储在所述第一存储设备上的所述数据可被所述第二存储服务器读取,以使所述第二存储服务器能够通过将所述数据存储到由在所述第二存储服务器中维护的第二NVMe控制器控制的第二存储设备来复制所述数据的装置,所述第二RDMA命令消息是响应于发送到所述第二存储服务器以让所述第二存储服务器复制被存储到所述第一存储设备所述的数据的请求消息而接收的,所述请求消息是从所述第一存储服务器或所述远程客户端中的一个发送的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/937,014 US9986028B2 (en) | 2013-07-08 | 2013-07-08 | Techniques to replicate data between storage servers |
US13/937,014 | 2013-07-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104283938A true CN104283938A (zh) | 2015-01-14 |
CN104283938B CN104283938B (zh) | 2018-01-30 |
Family
ID=52106462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410321310.3A Active CN104283938B (zh) | 2013-07-08 | 2014-07-07 | 用于在存储服务器之间复制数据的技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9986028B2 (zh) |
CN (1) | CN104283938B (zh) |
DE (1) | DE102014109519A1 (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107045483A (zh) * | 2016-02-05 | 2017-08-15 | 北京忆恒创源科技有限公司 | 基于队列的消息交换方法及其装置 |
WO2017148292A1 (zh) * | 2016-03-01 | 2017-09-08 | 华为技术有限公司 | 一种级联板、ssd远程共享访问的系统和方法 |
CN107305534A (zh) * | 2016-04-22 | 2017-10-31 | 三星电子株式会社 | 对使用NVMe接口的装置同时进行的内核模式和用户模式访问 |
CN108108120A (zh) * | 2016-11-25 | 2018-06-01 | 捷鼎国际股份有限公司 | 数据储存系统及其数据储存方法 |
CN108304214A (zh) * | 2017-12-13 | 2018-07-20 | 华为技术有限公司 | 一种立即数的完整性的校验方法及装置 |
CN108334285A (zh) * | 2017-01-20 | 2018-07-27 | 三星电子株式会社 | 存储系统和操作存储系统的方法 |
CN108351859A (zh) * | 2015-11-30 | 2018-07-31 | 英特尔公司 | 用于端点设备的直接存储器存取 |
CN108733601A (zh) * | 2017-04-25 | 2018-11-02 | 三星电子株式会社 | NVMe-oF以太网SSD中的低延迟直接访问块存储 |
CN109274647A (zh) * | 2018-08-27 | 2019-01-25 | 杭州创谐信息技术股份有限公司 | 分布式可信内存交换方法及系统 |
TWI666901B (zh) * | 2018-03-27 | 2019-07-21 | 緯穎科技服務股份有限公司 | 資料傳輸方法與使用此方法的主機系統 |
CN110968642A (zh) * | 2018-09-28 | 2020-04-07 | 戴尔产品有限公司 | 用于分布式系统中的数据存储的系统和方法 |
CN111352873A (zh) * | 2016-06-30 | 2020-06-30 | 北京忆芯科技有限公司 | NVMe协议命令处理方法与装置 |
CN112204513A (zh) * | 2018-03-26 | 2021-01-08 | 微软技术许可有限责任公司 | 多租户存储系统中的基于组的数据复制 |
CN113138722A (zh) * | 2021-04-30 | 2021-07-20 | 北京百度网讯科技有限公司 | 用于分布式块存储系统的复制快照方法、系统和介质 |
CN114691304A (zh) * | 2022-03-28 | 2022-07-01 | 同方威视技术股份有限公司 | 实现集群虚拟机高可用的方法和装置、设备和介质 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626377B1 (en) * | 2013-06-07 | 2017-04-18 | EMC IP Holding Company LLC | Cluster file system with metadata server for controlling movement of data between storage tiers |
US20150249708A1 (en) * | 2014-03-03 | 2015-09-03 | Cloudendure Ltd. | System and method for asynchronous replication of a storage in a computing environment |
US9384093B1 (en) * | 2014-05-28 | 2016-07-05 | Microsemi Storage Solutions (U.S.), Inc. | Raid enabled NVME device |
JP6365854B2 (ja) * | 2014-05-29 | 2018-08-01 | 華為技術有限公司Huawei Technologies Co.,Ltd. | サービス処理方法、関連するデバイス、及びシステム |
US10178169B2 (en) * | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
KR102430187B1 (ko) * | 2015-07-08 | 2022-08-05 | 삼성전자주식회사 | RDMA NVMe 디바이스의 구현 방법 |
US9892071B2 (en) * | 2015-08-03 | 2018-02-13 | Pure Storage, Inc. | Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array |
US10409762B2 (en) | 2016-03-08 | 2019-09-10 | International Business Machines Corporation | Remote direct memory access-based on static analysis of asynchronous blocks |
US20180088978A1 (en) * | 2016-09-29 | 2018-03-29 | Intel Corporation | Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container |
CN108228082B (zh) * | 2016-12-21 | 2021-04-02 | 伊姆西Ip控股有限责任公司 | 存储系统和用于存储控制的方法 |
US10691368B2 (en) * | 2017-03-31 | 2020-06-23 | Samsung Electronics Co., Ltd. | System and method for providing data replication in NVMe-oF ethernet SSD |
US10282094B2 (en) * | 2017-03-31 | 2019-05-07 | Samsung Electronics Co., Ltd. | Method for aggregated NVME-over-fabrics ESSD |
JP7105870B2 (ja) * | 2017-08-10 | 2022-07-25 | 華為技術有限公司 | データアクセス方法、装置およびシステム |
KR20190023433A (ko) * | 2017-08-29 | 2019-03-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
CN110199512B (zh) | 2017-12-26 | 2020-12-22 | 华为技术有限公司 | 存储系统中存储设备的管理方法及装置 |
US10761765B2 (en) * | 2018-02-02 | 2020-09-01 | EMC IP Holding Company LLC | Distributed object replication architecture |
US11455409B2 (en) | 2018-05-21 | 2022-09-27 | Pure Storage, Inc. | Storage layer data obfuscation |
US11954220B2 (en) | 2018-05-21 | 2024-04-09 | Pure Storage, Inc. | Data protection for container storage |
US12086431B1 (en) | 2018-05-21 | 2024-09-10 | Pure Storage, Inc. | Selective communication protocol layering for synchronous replication |
US10310760B1 (en) * | 2018-05-21 | 2019-06-04 | Pure Storage, Inc. | Layering communication fabric protocols |
US10992598B2 (en) | 2018-05-21 | 2021-04-27 | Pure Storage, Inc. | Synchronously replicating when a mediation service becomes unavailable |
US11675503B1 (en) | 2018-05-21 | 2023-06-13 | Pure Storage, Inc. | Role-based data access |
US10769042B2 (en) * | 2018-06-25 | 2020-09-08 | Seagate Technology Llc | Single port data storage device with multi-port virtualization |
US11016911B2 (en) * | 2018-08-24 | 2021-05-25 | Samsung Electronics Co., Ltd. | Non-volatile memory express over fabric messages between a host and a target using a burst mode |
US10893105B1 (en) * | 2019-08-07 | 2021-01-12 | EMC IP Holding Company LLC | Utilization of networking protocol for seamless integration of compute nodes with software-defined storage nodes |
JP7347157B2 (ja) * | 2019-11-22 | 2023-09-20 | 富士通株式会社 | 情報処理システム、ストレージ制御プログラム、及び、ストレージ制御装置 |
US11748181B2 (en) * | 2021-04-28 | 2023-09-05 | EMC IP Holding Company, LLC | System and method for efficient scalable software-defined NVMEoF front-end connectivity |
US20210294702A1 (en) * | 2021-06-04 | 2021-09-23 | Intel Corporation | High-availability memory replication in one or more network devices |
CN115904210A (zh) * | 2021-08-09 | 2023-04-04 | 华为技术有限公司 | 一种数据发送的方法、网卡和计算设备 |
US11733912B2 (en) | 2022-01-19 | 2023-08-22 | Dell Products L.P. | Intelligent target routing in a distributed storage system |
US11829602B2 (en) | 2022-03-16 | 2023-11-28 | Dell Products L.P. | Intelligent path selection in a distributed storage system |
US11907537B2 (en) | 2022-04-06 | 2024-02-20 | Dell Products L.P. | Storage system with multiple target controllers supporting different service level objectives |
US11762595B1 (en) | 2022-04-08 | 2023-09-19 | Dell Products L.P. | Host-based locality determination for logical volumes stored across multiple nodes of a distributed storage system |
US12032830B2 (en) | 2022-04-27 | 2024-07-09 | Dell Products L.P. | Host path selection utilizing address range distribution obtained from storage nodes for distributed logical volume |
US11995356B2 (en) | 2022-10-12 | 2024-05-28 | Dell Products L.P. | Host-based locality determination using locality log pages |
CN116048424B (zh) * | 2023-03-07 | 2023-06-06 | 浪潮电子信息产业股份有限公司 | Io数据处理方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1771495A (zh) * | 2003-05-07 | 2006-05-10 | 国际商业机器公司 | 分布式文件服务体系结构系统 |
CN101212490A (zh) * | 2006-12-30 | 2008-07-02 | 财团法人工业技术研究院 | 储存装置控制器 |
US20090292861A1 (en) * | 2008-05-23 | 2009-11-26 | Netapp, Inc. | Use of rdma to access non-volatile solid-state memory in a network storage system |
US20100146068A1 (en) * | 2008-12-04 | 2010-06-10 | Yaron Haviv | Device, system, and method of accessing storage |
US20130191590A1 (en) * | 2011-11-15 | 2013-07-25 | Kiron Balkrishna Malwankar | Processor agnostic data storage in a pcie based shared storage environment |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105931A1 (en) * | 2001-11-30 | 2003-06-05 | Weber Bret S. | Architecture for transparent mirroring |
US7152077B2 (en) * | 2003-05-16 | 2006-12-19 | Hewlett-Packard Development Company, L.P. | System for redundant storage of data |
US7275152B2 (en) * | 2003-09-26 | 2007-09-25 | Intel Corporation | Firmware interfacing with network protocol offload engines to provide fast network booting, system repurposing, system provisioning, system manageability, and disaster recovery |
US7698361B2 (en) * | 2003-12-31 | 2010-04-13 | Microsoft Corporation | Lightweight input/output protocol |
US7782905B2 (en) * | 2006-01-19 | 2010-08-24 | Intel-Ne, Inc. | Apparatus and method for stateless CRC calculation |
US7889762B2 (en) * | 2006-01-19 | 2011-02-15 | Intel-Ne, Inc. | Apparatus and method for in-line insertion and removal of markers |
US20070208820A1 (en) * | 2006-02-17 | 2007-09-06 | Neteffect, Inc. | Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations |
US8341237B2 (en) * | 2006-10-23 | 2012-12-25 | International Business Machines Corporation | Systems, methods and computer program products for automatically triggering operations on a queue pair |
US7917597B1 (en) * | 2006-11-02 | 2011-03-29 | Netapp, Inc. | RDMA network configuration using performance analysis |
US8244825B2 (en) * | 2006-11-06 | 2012-08-14 | Hewlett-Packard Development Company, L.P. | Remote direct memory access (RDMA) completion |
US8706687B2 (en) * | 2007-01-24 | 2014-04-22 | Hewlett-Packard Development Company, L.P. | Log driven storage controller with network persistent memory |
US20090083392A1 (en) * | 2007-09-25 | 2009-03-26 | Sun Microsystems, Inc. | Simple, efficient rdma mechanism |
US7836226B2 (en) * | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US8627136B2 (en) * | 2010-12-27 | 2014-01-07 | Netapp Inc. | Non-disruptive failover of RDMA connection |
US8677031B2 (en) * | 2011-03-31 | 2014-03-18 | Intel Corporation | Facilitating, at least in part, by circuitry, accessing of at least one controller command interface |
WO2013109640A1 (en) * | 2012-01-17 | 2013-07-25 | Intel Corporation | Techniques for command validation for access to a storage device by a remote client |
US9665521B2 (en) * | 2012-05-18 | 2017-05-30 | Dell Products, Lp | System and method for providing a processing node with input/output functionality by an I/O complex switch |
JP5561334B2 (ja) * | 2012-09-27 | 2014-07-30 | 日本電気株式会社 | データ転送装置 |
US9098402B2 (en) * | 2012-12-21 | 2015-08-04 | Intel Corporation | Techniques to configure a solid state drive to operate in a storage mode or a memory mode |
US20140195634A1 (en) * | 2013-01-10 | 2014-07-10 | Broadcom Corporation | System and Method for Multiservice Input/Output |
US9967340B2 (en) * | 2013-04-11 | 2018-05-08 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Network-displaced direct storage |
US9311230B2 (en) * | 2013-04-23 | 2016-04-12 | Globalfoundries Inc. | Local direct storage class memory access |
US9430412B2 (en) * | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
US20150006478A1 (en) * | 2013-06-28 | 2015-01-01 | Silicon Graphics International Corp. | Replicated database using one sided rdma |
-
2013
- 2013-07-08 US US13/937,014 patent/US9986028B2/en active Active
-
2014
- 2014-07-07 CN CN201410321310.3A patent/CN104283938B/zh active Active
- 2014-07-08 DE DE102014109519.7A patent/DE102014109519A1/de active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1771495A (zh) * | 2003-05-07 | 2006-05-10 | 国际商业机器公司 | 分布式文件服务体系结构系统 |
CN101212490A (zh) * | 2006-12-30 | 2008-07-02 | 财团法人工业技术研究院 | 储存装置控制器 |
US20090292861A1 (en) * | 2008-05-23 | 2009-11-26 | Netapp, Inc. | Use of rdma to access non-volatile solid-state memory in a network storage system |
US20100146068A1 (en) * | 2008-12-04 | 2010-06-10 | Yaron Haviv | Device, system, and method of accessing storage |
US20130191590A1 (en) * | 2011-11-15 | 2013-07-25 | Kiron Balkrishna Malwankar | Processor agnostic data storage in a pcie based shared storage environment |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108351859B (zh) * | 2015-11-30 | 2021-12-14 | 英特尔公司 | 用于端点设备的直接存储器存取 |
CN108351859A (zh) * | 2015-11-30 | 2018-07-31 | 英特尔公司 | 用于端点设备的直接存储器存取 |
CN107045483B (zh) * | 2016-02-05 | 2019-10-18 | 北京忆恒创源科技有限公司 | 基于队列的消息交换方法及其装置 |
CN107045483A (zh) * | 2016-02-05 | 2017-08-15 | 北京忆恒创源科技有限公司 | 基于队列的消息交换方法及其装置 |
WO2017148292A1 (zh) * | 2016-03-01 | 2017-09-08 | 华为技术有限公司 | 一种级联板、ssd远程共享访问的系统和方法 |
US10901638B2 (en) | 2016-03-01 | 2021-01-26 | Huawei Technologies Co., Ltd. | Cascading board and SSD shared remote access system and method |
CN107305534A (zh) * | 2016-04-22 | 2017-10-31 | 三星电子株式会社 | 对使用NVMe接口的装置同时进行的内核模式和用户模式访问 |
CN107305534B (zh) * | 2016-04-22 | 2022-02-18 | 三星电子株式会社 | 同时进行内核模式访问和用户模式访问的方法 |
CN111352873A (zh) * | 2016-06-30 | 2020-06-30 | 北京忆芯科技有限公司 | NVMe协议命令处理方法与装置 |
CN111352873B (zh) * | 2016-06-30 | 2021-10-08 | 北京忆芯科技有限公司 | NVMe协议命令处理方法与装置 |
CN108108120A (zh) * | 2016-11-25 | 2018-06-01 | 捷鼎国际股份有限公司 | 数据储存系统及其数据储存方法 |
CN108334285A (zh) * | 2017-01-20 | 2018-07-27 | 三星电子株式会社 | 存储系统和操作存储系统的方法 |
CN108334285B (zh) * | 2017-01-20 | 2023-04-18 | 三星电子株式会社 | 存储系统和操作存储系统的方法 |
CN108733601B (zh) * | 2017-04-25 | 2023-08-04 | 三星电子株式会社 | NVMe-oF以太网SSD中的低延迟直接访问块存储 |
CN108733601A (zh) * | 2017-04-25 | 2018-11-02 | 三星电子株式会社 | NVMe-oF以太网SSD中的低延迟直接访问块存储 |
CN108304214B (zh) * | 2017-12-13 | 2022-05-13 | 超聚变数字技术有限公司 | 一种立即数的完整性的校验方法及装置 |
CN108304214A (zh) * | 2017-12-13 | 2018-07-20 | 华为技术有限公司 | 一种立即数的完整性的校验方法及装置 |
CN112204513A (zh) * | 2018-03-26 | 2021-01-08 | 微软技术许可有限责任公司 | 多租户存储系统中的基于组的数据复制 |
CN112204513B (zh) * | 2018-03-26 | 2024-03-08 | 微软技术许可有限责任公司 | 多租户存储系统中的基于组的数据复制 |
CN110309087B (zh) * | 2018-03-27 | 2021-01-26 | 纬颖科技服务股份有限公司 | 数据传输方法与使用此方法的主机系统 |
US10698638B2 (en) | 2018-03-27 | 2020-06-30 | Wiwynn Corporation | Data transmission method and host system using the same |
TWI666901B (zh) * | 2018-03-27 | 2019-07-21 | 緯穎科技服務股份有限公司 | 資料傳輸方法與使用此方法的主機系統 |
CN110309087A (zh) * | 2018-03-27 | 2019-10-08 | 纬颖科技服务股份有限公司 | 数据传输方法与使用此方法的主机系统 |
CN109274647B (zh) * | 2018-08-27 | 2021-08-10 | 杭州创谐信息技术股份有限公司 | 分布式可信内存交换方法及系统 |
CN109274647A (zh) * | 2018-08-27 | 2019-01-25 | 杭州创谐信息技术股份有限公司 | 分布式可信内存交换方法及系统 |
CN110968642A (zh) * | 2018-09-28 | 2020-04-07 | 戴尔产品有限公司 | 用于分布式系统中的数据存储的系统和方法 |
CN110968642B (zh) * | 2018-09-28 | 2023-10-24 | 戴尔产品有限公司 | 用于分布式系统中的数据存储的系统和方法 |
CN113138722A (zh) * | 2021-04-30 | 2021-07-20 | 北京百度网讯科技有限公司 | 用于分布式块存储系统的复制快照方法、系统和介质 |
CN113138722B (zh) * | 2021-04-30 | 2024-01-12 | 北京百度网讯科技有限公司 | 用于分布式块存储系统的复制快照方法、系统和介质 |
CN114691304A (zh) * | 2022-03-28 | 2022-07-01 | 同方威视技术股份有限公司 | 实现集群虚拟机高可用的方法和装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
US20150012607A1 (en) | 2015-01-08 |
US9986028B2 (en) | 2018-05-29 |
DE102014109519A1 (de) | 2015-01-08 |
CN104283938B (zh) | 2018-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104283938A (zh) | 用于在存储服务器之间复制数据的技术 | |
US11755527B2 (en) | Techniques for command validation for access to a storage device by a remote client | |
CN104750658B (zh) | 辅助式一致共享存储器 | |
CN104683430A (zh) | 用于从远程可访问存储设备进行初始化的技术 | |
TWI570563B (zh) | 後置中斷架構 | |
US10671556B2 (en) | Selectable peripheral logic in programmable apparatus | |
US9244881B2 (en) | Facilitating, at least in part, by circuitry, accessing of at least one controller command interface | |
CN105408880A (zh) | 对共享存储装置的持久存储器的直接访问 | |
US8990451B2 (en) | Controller for direct access to a memory for the direct transfer of data between memories of several peripheral devices, method and computer program enabling the implementation of such a controller | |
CN111865831B (zh) | 数据处理的方法、网络设备、计算节点和系统 | |
JP7497146B2 (ja) | 多数の装置環境でペアリングするfpgaとssdを識別するためのストレージ装置及びコプロセッサを含むシステム及び方法 | |
WO2018074933A1 (en) | Programmable cache coherent node controller | |
JP2013512520A (ja) | システムのいくつかの構成要素のメモリ間の直接データ転送を許可するそのシステム | |
JP2019095844A (ja) | データ転送装置およびデータ転送方法 | |
CN106557429A (zh) | 一种内存数据的迁移方法和节点控制器 | |
CN106527961A (zh) | 用于保证数据一致性的方法和装置 |
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 |