CN108696569B - 在NVMe-oF以太网SSD中提供数据复制的系统和方法 - Google Patents
在NVMe-oF以太网SSD中提供数据复制的系统和方法 Download PDFInfo
- Publication number
- CN108696569B CN108696569B CN201810234803.1A CN201810234803A CN108696569B CN 108696569 B CN108696569 B CN 108696569B CN 201810234803 A CN201810234803 A CN 201810234803A CN 108696569 B CN108696569 B CN 108696569B
- Authority
- CN
- China
- Prior art keywords
- solid state
- ethernet solid
- passive
- active
- host
- 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
-
- 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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- 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
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Abstract
本发明公开了一种数据复制系统和方法。所述系统具有机箱,所述机箱包括多个eSSD、结构交换机和基板管理控制器。基板管理控制器将所述多个eSSD之一构造为主动eSSD,并且将所述多个eSSD中的一个或多个构造为一个或多个被动eSSD。机箱的结构交换机被编程为将流向主动eSSD的分组转送至主动eSSD和所述一个或多个被动eSSD二者。响应于从主机接收到的主机数据写命令,主动eSSD存储主机数据并将对应于主机数据的地址和指令发送至所述一个或多个被动eSSD。所述一个或多个被动eSSD中的每一个利用从主动eSSD接收到的地址和指令和在通过结构交换机转送的分组中接收到的主机数据存储主机数据的副本。
Description
相关申请的交叉引用
本申请要求于2017年3月31日提交的美国临时专利申请No.62/480,113的利益和优先权,该申请的公开以引用方式全文并入本文中。
技术领域
本公开整体上涉及一种用于提供数据复制的系统和方法,更具体地说,涉及一种用于在固态盘(SSD)中提供数据复制的系统和方法。
背景技术
固态盘(SSD)正替代传统硬盘驱动器(HDD)快速成为现代信息技术(IT)基础设施的主要存储元件。SSD提供低延迟、高数据读/写吞吐量和用户数据的可靠存储。结构上的快速非易失性存储器(NVMe)(NVM Express over Fabrics,NVMe-oF)是一种允许几百个几千个可兼容NVMe的SSD在诸如以太网的网络结构(network fabric)上连接的新兴技术。可兼容以太网连接的NVMe-oF标准的SSD被称作连接以太网的SSD,或者简单地称作eSSD。
NVMe-oF协议支持允许大量eSSD通过网络结构连接至远程主机的远程直连存储(rDAS)协议。NVMe-oF协议还支持提供可靠传输服务以通过网络结构在远程主机与eSSD之间携带NVMe命令、数据和响应的远程直接存储器存取(RDMA)协议。可提供RDMA服务的传输协议的示例包括InfiniBand、iWARP、RoCE v1和RoCE v2。
对用户数据进行可靠访问是数据存储系统的最重要的要求。在数据存储系统中的各个点采用了各种技术和方法,以实现必要程度的可靠性和数据可用性。例如,当存储装置变得不可用时,将写至存储装置的数据复制到一个或多个其它存储装置作为备份存储。这种数据复制机制通常被称作镜像或备份。
在连接了多个eSSD的机箱中,各个eSSD可通过以太网直接连接至主机。主机可朝两个或更多个eSSD执行数据复制,用于数据镜像。然而,主机的数据复制功能的实施为主机和系统软件增加了负担,因此为数据输入/输出(I/O)操作增加了额外延迟并增加了数据存储系统的整体成本。
可替换地,可将内联独立冗余磁盘阵列(RAID)控制器嵌入SSD中,以按照对于主机透明的方式执行数据复制。然而,RAID控制器通常较贵并且会由于增加额外延迟而降低I/O性能。此外,具有嵌入式RAID控制器的SSD会在重负载或每秒最大输入/输出操作(IOPS)下以最大功率分配或接近最大功率分配消耗功率,并且不能符合根据NVMe-oF标准的eSSD的功耗要求。因此,通过eSSD中的嵌入式RAID控制器的数据复制可能不是一种用于可兼容NVMe-oF的数据存储系统的可行解决方案。
发明内容
根据一种实施例,一种数据复制方法包括步骤:提供数据复制系统,其包括包含在机箱中的多个以太网固态盘(eSSD),其中,所述机箱包括用于为所述多个eSSD中的每一个提供下行链路的结构交换机和用于控制结构交换机和所述多个eSSD的基板管理控制器(BMC);利用BMC将所述多个eSSD之一构造为主动eSSD;利用BMC将所述多个eSSD中的一个或多个构造为一个或多个被动eSSD;利用BMC为结构交换机编程,以将流向主动eSSD的分组转送至主动eSSD和所述一个或多个被动eSSD二者;在主动eSSD处接收来自主机的主机数据写命令;将对应于主机数据的地址和指令从主动eSSD发送至所述一个或多个被动eSSD;将主机数据存储在主动eSSD中;以及利用从主动eSSD接收到的地址和指令和在通过结构交换机转送的分组中接收到的主机数据将主机数据的副本存储在所述一个或多个被动eSSD中。
根据另一实施例,一种数据复制系统包括:机箱,其包括多个eSSD、结构交换机和基板管理控制器(BMC)。结构交换机被构造为为所述多个eSSD中的每一个提供下行链路,并且BMC被构造为控制结构交换机和所述多个eSSD。BMC将所述多个eSSD之一构造为主动eSSD,并且将所述多个eSSD中的一个或多个构造为一个或多个被动eSSD,并且对结构交换机编程,以将流向主动eSSD的分组转送至主动eSSD和所述一个或多个被动eSSD二者。主动eSSD被构造为响应于从主机接收到的主机数据写命令存储主机数据。主动eSSD还被构造为将对应于主机数据的地址和指令发送至所述一个或多个被动eSSD。所述一个或多个被动eSSD中的每一个被构造为利用从主动eSSD接收到的地址和指令和在通过结构交换机转送的分组中接收到的主机数据存储主机数据的副本。
现在,将参照附图更具体地描述并在权利要求中指出包括事件实施和组合的各种新颖细节的以上和其它优选特征。应该理解,仅以说明的方式而不是作为限制来示出本文所述的特定系统和方法。本领域技术人员应该理解,本文所述的原理和特征可在不同的和多个实施例中采用,而不脱离本公开的范围。
附图说明
作为本说明书的一部分被包括的附图示出了当前优选实施例,并且与上面提供的一般性描述和下面提供的对优选实施例的详细描述一起用于解释和教导本文所述的原理。
图1示出了根据一个实施例的示例NVMe-oF系统的框图;
图2示出了根据另一实施例的示例NVMe-oF系统的框图;
图3示出了根据一个实施例的示例NVMe-oF系统的数据复制处理;
图4是根据一个实施例的对机箱的eSSD和以太网交换机进行初始化和编程以实施数据复制的流程图;
图5是根据一个实施例的通过主动eSSD处理主机命令的流程图;
图6示出了根据一个实施例的示例数据复制处理;
图7是根据一个实施例的通过被动eSSD处理主机命令的流程图;
图8是根据一个实施例的用于将LBA和指令从主动eSSD传达至被动eSSD的流程图;
图9是根据一个实施例的通过被动eSSD处理数据复制的流程图;以及
图10是根据一个实施例的故障切换操作的流程图。
附图不一定按照比例绘制,并且在整个附图中,针对示出性目的,相似结构或功能的元件通常由相同附图标记指代。附图仅旨在有利于进行本文所述的各种实施例的描述。附图不描述本文公开的教导的各个方面,并且不限制权利要求的范围。
具体实施方式
本文公开的特征和教导中的每一个可分开利用或者与其它特征和教导结合利用,以提供以太网SSD中的数据复制。参照附图更详细地描述分开或者组合地利用许多这些额外特征和教导的代表性示例。这篇具体实施方式仅旨在传授本领域技术人员以实行本教导的各方面,并且不旨在限制权利要求的范围。因此,在具体实施方式中,上面公开的特征的组合可不一定按照最宽含义实行教导,而是仅教导以描述本教导的特定代表性示例。
在下面的描述中,仅针对解释的目的,阐述了特定术语以提供对本公开的彻底理解。然而,本领域技术人员之一应该清楚,实行本公开的教导并不要求这些特定细节。
按照对计算机存储器中的数据比特的操作的算法和象征性表达来呈现本文所述的具体实施方式的一些部分。数据处理领域的技术人员使用这些算法描述和表达,以有效地将他们工作的内容传递给本领域其他技术人员。通常本文中将算法构思为通向期望结果的有条理的步骤序列。所述步骤是那些需要物理操纵物理量的步骤。这些量通常(但不一定)采取能够被存储、传递、组合、比较和以其他方式操纵的电信号或磁信号的形式。主要是由于共同习惯的原因,已经证明了将这些信号称作比特、值、元素、符号、字符、术语、编号等是方便的。
然而,应该明白所有这些和相似术语与合适的物理量关联,并且仅为应用于这些量的方便标签。除非从下面的讨论中明白地另外指出,否则应该理解,在整个描述中,利用诸如“处理”、“运算”、“计算”、“确定”、“显示”等的术语的讨论是指计算机系统或者相似的电子计算装置的行为和处理,所述相似的电子计算装置将计算机系统的寄存器和存储器中的表达为物理(电子)量的数据操纵和转换为其它数据类似地表达为计算机系统存储器或寄存器或其它这种信息存储、传输或显示装置中的物理量。
本文提供的算法并非固有与任何特定计算机或其它设备关联。各种通用系统、计算机服务器或个人计算机可与根据本文教导的程序一起使用,或者其可证明方便构造更专用的设备或者执行要求的方法步骤。用于多种这些系统的要求的结构将显示在下面的描述中。应该理解,可使用多种编程语言来实施如本文所述的本公开的教导。
此外,代表性示例和从属权利要求的各种特征可按照未清楚和明确例举的多种方式组合,以提供本教导的额外的有用实施例。还应该特别注意,所有值的范围或者多组实体的指示公开了用于原始公开的目的以及用于限制所要求保护的主题内容的目的的各种可能的中间值或中间实体。还应该特别注意,图中所示的组件的尺寸和形状设计为用于帮助理解本教导如何实施,但不旨在限制示例所示的尺寸和形状。
本公开提供了一种利用可兼容NVMe-oF标准的一个或多个SSD(本文中称作以太网固态盘、以太网SSD或eSSD)提供数据复制的系统和方法。可在没有主机参与或者没有诸如中央处理单元(CPU)或RAID控制器的昂贵且影响性能的外部组件的情况下,实现通过当前系统和方法采用的数据复制。
根据一个实施例,机箱中的eSSD中的每一个可按照主动模式、被动模式和正常模式构造和操作。机箱的基板管理控制器(BMC)可将机箱中的eSSD之一编程为主动eSSD,并且将其余eSSD中的一个或多个编程为被动eSSD。未被构造为主动eSSD或被动eSSD的eSSD可按照正常模式操作,并且当作标准NVMe-oF SSD。在主动eSSD与被动eSSD之间,仅主动eSSD对于远程主机可见(可被远程主机发现),并且可与远程主机执行NVMe-oF协议的终止。相反,被动eSSD对于远程主机不可见(不可被远程主机发现)。这里,为了方便起见,可将存在于网络结构(例如,以太网)上的远程主机简单地称作主机。
主动eSSD可处理由主机发出的命令、执行进出主机的数据转移、并且将完成队列(CQ)条目发送至主机,以指示主机命令的成功完成或执行故障。机箱中的被动eSSD既不执行任何主机命令也不参与主机协议。作为替代,被动eSSD被动地接收流向主动eSSD的入口流量分组(ingress traffic packet)。例如,机箱的以太网交换机被编程为将指向主动eSSD的所有入口分组复制至被编程为与所述主动eSSD关联的被动eSSD。
根据一个实施例,被动eSSD将除RDMA READ RESPONSE(远程直接存储器存取读响应)分组以外的所有复制的入口分组丢弃。RDMA READ RESPONSE分组提供主机写数据,并且将主机写数据保持在主机的FIFO缓冲器中。通过主动eSSD取用(fetch)FIFO缓冲器中的主机写数据。在取用主机写数据之后,主动eSSD向关联的被动eSSD提供用于写主机写数据的指令(例如,写指令)以及关联的逻辑块地址(LBA)和/或命名空间。利用通过主动eSSD提供的指令和LBA和从复制的RDMA READ RESPONSE分组接收到的数据,被动eSSD可将复制的数据写至其非易失性存储器。被动eSSD的非易失性存储器可为闪速存储器或持久存储器。根据构造,多于一个的被动eSSD可复制主机写数据。
根据一个实施例,主动eSSD发送至关联的被动eSSD的LBA/命名空间和写指令可包含包括发送队列和接收队列的RDMA队列对(QP)中的更微小的细节。在会需要经QP交换额外信息的主动eSSD与被动eSSD之间建立的路径中可存在通过主机启用的多个主动QP。根据一个实施例,每个RDMA READ RESPONSE上的被动eSSD窥探RDMA报头,以获得诸如QP和数据序列的关于主机写关联的数据区块上的额外信息。
根据一个实施例,主动eSSD可在从主机接收主机写请求之后并在将一个或多个RDMA READ请求发送至主机之前,发送一次写指令。主动eSSD可预先计算如何将主机写分解为一个或多个单独的RDMA READ请求,以及如何在区段分散收集列表(SGL)中接收关联的数据。这样可以减小私有信道以及PCIe总线或网络结构的流量,从而当在多个数据复制集上建立了多个QP连接时提高I/O性能。此外,当在机柜、机架、数据中心和多个地理位置上复制数据时,可降低数据复制的开销。
被动eSSD可被构造为将指示主机写数据被成功留存或者主机写数据的存储失败的确认发送至主动eSSD。主动eSSD在将完成队列条目发送至主机之前可等待从所有关联的被动eSSD的确认。该确认机制可随时保护和确保主机写数据的数据留存。
本发明的系统和方法不需要用于RAID-on-Chip(ROC)的目标方x86服务器或外部专用集成电路(ASIC)来支持数据复制特征。本发明的系统和方法通过消除或降低主机上的额外硬件和软件开销,在提高数据存储性能的同时提供了降低的总体拥有成本(TCO)。与其中与数据I/O操作同时地执行数据复制的常规内联数据复制方案相比,本发明的系统和方法具有改进的I/O延迟和带宽性能。
本发明的系统和方法是一种提供数据复制的成本经济的和有效的方案,这是因为主要在机箱的eSSD(即,主动eSSD和被动eSSD)和以太网交换机中实施数据复制特征。本发明的系统和方法消除了对复杂系统软件和硬件的需要,并且减小了主机方对于额外计算、存储和功率的负担和成本。在对主机方具有最小改变或无改变的情况下,在包含eSSD和以太网交换机的机箱中实施本发明的数据复制特征。
图1示出了根据一个实施例的示例NVMe-oF系统的框图。NVMe-oF系统100包括主机110和包含一个或多个可兼容NVMe-oF的以太网SSD(eSSD)的机箱160(本文中还可称作eSSD机箱)。例如,机箱160包括24或48个eSSD。将机箱160中的eSSD分别标为eSSD170a至170n(本文中统称作eSSD 170)。主机110包括应用程序111、操作系统(OS)和文件系统(FS)112以及NVMe-oF驱动器113。主机110的起动程序(例如,应用程序111)可利用NVMe-oF驱动器113在以太网150上与eSSD 170建立NVMe-oF连接。机箱160包括以太网交换机161、基板管理控制器(BMC)162和PCIe交换机163。以太网交换机161在中平面165上提供与eSSD 170的以太网连接,并且PCIe交换机163在中平面165上提供针对eSSD 170的管理接口164。在当前示例中,可将各个eSSD 170中的一个构造为主动eSSD,并且可将其它eSSD构造为被动eSSD。BMC162可根据系统管理员提供的指令对eSSD 170进行编程。
以太网交换机161提供主机110与eSSD 170之间的网络连接性。以太网交换机161可具有大容量(例如,100Gbps)上行链路,以连接至一个或多个主机。以太网交换机161还具有多个较低容量(例如,25Gbps)下行链路,以连接至各个eSSD 170。例如,以太网交换机161包含12个100Gbps的上行链路以及24或48个25Gbps的下行链路。以太网交换机161可具有到BMC 162的专门构造/管理端口(未示出)。
BMC 162管理包括以太网交换机161、PCIe交换机163和eSSD 170的机箱160的内部组件。BMC 162可支持用于系统管理的PCIe接口和/或SMBus接口。BMC 162可构造主动eSSD和被动eSSD,并且对以太网交换机161进行编程。当主动eSSD故障时,BMC 162可执行故障切换,指明新的主动eSSD,并根据需要构造额外的被动eSSD。
根据一个实施例,机箱160中的eSSD 170可按照主动、被动和正常这三种模式之一操作。被构造为主动eSSD的eSSD 170和一个或多个被动eSSD可提供期望的数据复制。在一些实施例中,机箱160可包括多个主动/被动eSSD集。当给定eSSD不需要数据复制时,BMC162可按照正常模式构造该eSSD。被构造为正常eSSD的eSSD用作标准NVMe-oF SSD。
图2示出了根据另一实施例的示例NVMe-oF系统的框图。NVMe-oF系统200包括主机210和在以太网250上连接至主机210的多个eSSD机箱260a至260m(统称为eSSD机箱260)。主机210包括应用程序211、操作系统(OS)和文件系统(FS)212以及用于在以太网250上与机架270中的eSSD机箱260中的每一个连接的NVMe-oF驱动器213。机架270包括提供机架270中的多个机箱260之间的连接的机架顶(TOR)交换机271。相似地,NVMe-oF系统200可包括可位于不同位置的多个机架270。机架270可通过它们的TOR交换机271彼此连接。所述多个机架270的TOR交换机271可经专线或通过以太网250上的外部交换机直接彼此连接。
图3示出了根据一个实施例的示例NVMe-oF系统的数据复制处理。NVMe-oF系统300包括主机310和包含多个eSSD(包括eSSD370a-370n)的机箱360。例如,机箱360可包括24或48个eSSD。主机310包括应用程序311、操作系统(OS)和文件系统(FS)312以及NVMe-oF驱动器313。主机310的起动程序(例如,应用程序311)可利用NVMe-oF驱动器313在以太网350上与主动eSSD 370a建立NVMe-oF连接。机箱360包括以太网交换机361、BMC 362和PCIe交换机363。以太网交换机361在中平面365上为eSSD 370提供以太网连接,并且PCIe交换机363在中平面365上为eSSD 370提供管理接口364。BMC 362可对作为主动eSSD 370a的各个eSSD370之一以及作为被动eSSD的其它eSSD进行编程。为了便于说明,当前示例示出了一个主动eSSD 370a和一个被动eSSD 370b;然而,应该注意,eSSD的复制组包括主动eSSD和一个或多个被动eSSD,并且机箱中可存在不止一个复制组,而不脱离本公开的范围。被动eSSD 370b可表示被构造为与主动eSSD 370a关联的多个被动eSSD之一。由被动eSSD370b执行的活动可同时被机箱360中的其它被动eSSD执行。例如,如果NVMe-oF系统300这样构造,则可将相同的数据复制至多于两个被动eSSD。在一些实施例中,机箱360可包含不止一个复制组,并且复制组中的每一个可包括一个主动eSSD和被编程为与复制组中的主动eSSD协同提供数据复制的一个或多个被动eSSD。
主动eSSD 370a可与主机310一起处理所有NVMe-oF协议处理和终止。利用提交队列(SQ)和完成队列(CQ)实施主机310与主动eSSD 370a之间的NVMe-oF系统300的传输协议。向主机310通告主动eSSD 370a的位置地址,以使得主动eSSD 370a对于在主机310上运行的应用程序311所调用的NVMe-oF驱动器313可见。当主动eSSD 370a接收主机写数据时,主动eSSD 370a在专用通信信道上将与主机写数据关联的一个或多个LBA和必要指令发送至关联的被动eSSD 370b。在一个实施例中,主动eSSD 370a和被动eSSD 370b可通过机箱360中的以太网交换机361或者PCIe交换机363形成专用低带宽通信信道。
被动eSSD 370b可存储写至主动eSSD的主机数据的副本。BMC362可对以太网交换机361进行编程,以将向主动eSSD 370a指明的主动入口流量复制至被动eSSD 370b,以使得被动eSSD 370b可接收流向主动eSSD 370a的所有入口分组的副本。被动eSSD 370b过滤接收到的分组,并且仅保留接收到的分组中的RDMA READ RESPONSE分组。被动eSSD 370b解析接收到的RDMA READ RESPONSE分组,并且提取在RDMA READ RESPONSE分组中携带的主机写数据区块。被动eSSD 370b还从主动eSSD 370a接收数据复制指令和对应于数据区块的LBA。被动eSSD 370b使用LBA信息和从RDMA READ RESPONSE分组接收到的数据,以将主机数据留存在其存储介质中。在一些实施例中,以太网交换机361过滤入口分组,以仅将RDMA READRESPONSE分组提供至被动eSSD。在留存主机数据之后,被动eSSD 370b可在建立的专用通信信道上将确认发送至主动eSSD 370a。
BMC 362在存储管理员的指导下负责设置数据复制特征。在一个实施例中,BMC362使用SMBus或PCIe总线上的NVMe-MI协议来构造eSSD 370。首先,BMC 362识别eSSD并在主动模式下对eSSD进行编程。此外,BMC 362选择一个或多个eSSD并将eSSD编程为被动eSSD。通过BMC 362构造的被动eSSD的数量可取决于由存储管理员指定的数据副本的数量。BMC 362在被动模式下对那些eSSD编程。
一旦合适地构造主动eSSD和被动eSSD 370,BMC 362就构造以太网交换机361。以太网交换机361可将流向对应于主动eSSD 370a的下行链路端口的入口分组复制并转送至对应于被动eSSD 370b的下行链路端口。在合适地构造eSSD 370和以太网交换机361之后,存储管理员和/或BMC 362可向主机310的应用程序311和OS/文件系统312通告eSSD 370已准备好数据存储和复制。
图4是根据一个实施例的对机箱的eSSD和以太网交换机进行初始化和编程以实施数据复制的流程图。由存储管理员发出的初始化命令触发初始化处理(400)。响应于初始化命令,机箱的BMC选择eSSD(401)并对选择的eSSD编程,以将其构造为主动eSSD(402)。根据一个实施例,初始化命令可包括用于主动eSSD的唯一标识符(例如,IP地址、MAC地址),并且BMC将构造命令发送至主动eSSD,以在SMBus或PCIe总线上利用NVMe-MI协议在主动模式下对其进行构造。
在对主动eSSD编程之后,机箱的BMC选择一个或多个eSSD(403),并且将选择的eSSD编程为被动eSSD(404)。根据一个实施例,机箱的BMC选择被动eSSD和对其编程,如从存储管理员接收到的初始化命令中指示的那样。例如,BMC初始化命令的可包括被动eSSD的标识符(例如,IP地址、MAC地址),并且BMC将构造命令发送至对应的被动eSSD,以在SMBus或PCIe总线上利用NVMe-MI协议在被动模式下对它们进行构造。
根据一个实施例,可同时或者按照相反次序执行对主动eSSD和被动eSSD的选择和编程。换句话说,BMC可首先对被动eSSD进行选择和编程,然后对主动eSSD进行选择和编程,或者同时构造主动eSSD和被动eSSD。
在对eSSD编程之后,BMC对机箱的以太网交换机编程(405)。例如,以太网交换机创建提供主动eSSD与被动eSSD之间的关联的映射表。在被编程之后,以太网交换机将流向主动eSSD的入口分组复制至关联的被动eSSD。在一个实施例中,以太网交换机可过滤入口分组并仅将RDMA READ RESPONSE分组发送至被动eSSD。
主动eSSD可由主机发现并且可与在主机上运行的NVMe-oF驱动器通信。主机可利用NVMe-oF协议将主机命令发送至主动eSSD。主动eSSD执行所有主机命令、执行任何必要的数据转移、并且将命令完成队列条目发送至主机。换句话说,主动eSSD执行NVMe-oF协议处理并执行通过正常eSSD执行的主机命令。另外,主动eSSD结合一个或多个被动eSSD支持数据复制。数据复制主要属于主机写命令。针对主机读命令,主动eSSD可不需要支持任何特殊功能。
针对主机写命令,主动eSSD负责从主机取用数据。根据一个实施例,主动eSSD向主机发出RDMA READ请求,以取用主机数据。作为响应,主机利用一个或多个RDMA READRESPONSE分组发送数据区块。主动eSSD将在RDMA READ RESPONSE分组中接收到的主机数据区块存储至其内部闪速存储器或者将主机数据留存在断电保护缓冲器中。
对于在RDMA READ RESPONSE分组中接收到的主机数据的各个数据区块,主动eSSD将关联的NAMESPACE和LBA信息与写指令一起发送至关联的一个或多个被动eSSD中的每一个。可在主动eSSD与被动eSSD之间建立的专用通信信道上完成这种通信。可通过机箱的以太网交换机或PCIe交换机形成专用通信信道。如果主动eSSD变成非操作性或者主动eSSD写接收到的数据区块失败,则主动eSSD将丢弃指令发送至被动eSSD,以丢弃数据区块。
一旦局部留存主机数据并且将NAMESPACE.LBA信息发送至被动eSSD,主动eSSD就可基于一致性模式将命令完成发送至主机。根据一个实施例,主动eSSD可将命令完成立即发送至主机,而不等待来自被动eSSD的关于数据留存的响应。本文中称作几乎完美的一致性模式的这种立即命令完成响应可在备份副本未能如实被留存的情况下提供稍好的延迟性能。这种错误情况的可能性可较小,并且可存在容忍少量数据丢失的应用程序。将在下面更详细地讨论这种错误情况的详细分析。
根据另一实施例,主动eSSD可等待从被动eSSD确认数据留存。如果存在被复制的不止一个备份副本,则主动eSSD可在将命令完成条目发送至主机之前等待一个至所有关联的被动eSSD的确认。由于所述数据复制可与在(例如,至主动eSSD的)主数据路径上的主机数据的存储并行发生,因此对来自被动eSSD的确认的等待会为在主机上运行的应用程序增加可接受或不可接受的适量延迟。与采用立即命令完成响应的几乎完美的一致性模式相反,等待来自所有关联的被动eSSD的响应(本文中也可称作完美的一致性模式)的这种操作模式确保与无数据丢失一致的忠实数据。
根据一个实施例,可通过利用各种用户服务质量(QoS)策略的BMC设置NVMe-oF系统的一致性模式。一致性与延迟之间的权衡可取决于应用程序,并且BMC可在存储管理员的指导下实施各种策略。在主动eSSD和被动eSSD不符合数据一致性观点的情况下,需要恢复它们或者使它们处于相同同步水平。这种恢复功能可由BMC管理。为了有利于恢复操作,主动eSSD保持最后“n”个成功写操作的日志。例如,日志包括NAMESPACE.LBA和指示特定写操作的标记。
主动eSSD也可将一些管理命令发送至关联的被动eSSD,以有利于数据复制处理。这些管理命令的示例包括(但不限于)生成/删除NAMESPACE和修剪(Trim)命令。在执行管理命令之后,被动eSSD可将确认发送回主动eSSD。
图5是根据一个实施例的通过主动eSSD处理主机命令的流程图。被构造为被动eSSD的每个eSSD均与主动eSSD关联。主动eSSD与被动eSSD之间的关联可通过BMC设为图4所示的初始化的一部分。被动eSSD的主要功能之一是复制主机数据。在一个实施例中,被动eSSD可通过保持两个平行的FIFO队列执行主机数据的数据复制,其中一个队列用于存储主机数据(本文中还可称作“接收到的消息FIFO”),而另一个队列用于存储写地址和指令(本文中还可称作“LBA和指令FIFO”)。当主机数据被写至主动eSSD时,被动eSSD使用这两个FIFO留存主机数据。
主动eSSD从主机接收主机命令并且随着接收到主机命令而将接收到的主机命令布置在提交队列(SQ)中(500)。主动eSSD仲裁提交队列中的条目(501)并且从提交队列中选择用于执行的主机命令(502)。主机命令可为主机写命令(503)、管理命令(510)或正常命令(516)之一。
如果选择的主机命令是主机写命令(503),则主机写命令包括用于写入主动eSSD的内部存储装置中的主机数据。例如,主动eSSD根据存储装置的存储单元(例如,闪速存储器的页大小或块大小)将主机数据分段为数据区块(504)。主动eSSD检查是否取用了与主机写命令关联的所有数据区块(505)。如果在分段的数据区块中还有待取用的至少一个数据区块,则主动eSSD将RDMA READ请求发送至主机,以取用剩余数据区块(506)。针对各个数据区块,主动eSSD将NAMESPACE.LBA和指令发送至关联的被动eSSD中的每一个(507)。可同时执行将RDMA READ请求发送至主机以及将NAMESPACE.LBA和指令发送至被动eSSD。在接收用于数据区块的RDMA READ RESPONSE分组之后,主动eSSD将数据区块留存在内部存储装置(例如,闪速存储器)中(509)。应该注意,可将取用的数据区块暂时存储在主动eSSD的数据缓冲器中,并且可同时留存与单个主机写命令关联的所有数据区块。
一旦取用和留存所有数据区块,主动eSSD就检查一致性模式(513)。根据一个实施例,可将一致性模式设为“完美的”或“几乎完美的”。如果将主动eSSD的一致性模式设为“完美的”,则主动eSSD等待与主动eSSD关联的所有被动eSSD的确认(514),并且将完成队列条目发送至主机(515)。如果将主动eSSD的一致性模式设为“几乎完美的”,主动eSSD将完成队列条目发送至主机(515)而不用等待关联的被动eSSD的确认。
如果接收到的主机命令是包括生成命名空间命令的管理命令,或者关于关联的被动eSSD中的一个或多个的修剪命令(510),则主动eSSD执行接收到的命令(511),并且将指令发送至对应的被动eSSD(512)。根据一致性模式(513),主动eSSD在等待或不等待关联的被动eSSD的确认的情况下将完成队列条目发送至主机(515)。如果接收到的主机命令不是主机写命令或管理命令,则主动eSSD将接收到的命令作为与数据复制无关的正常命令处理,并且因此执行正常命令(516)。
图6示出了根据一个实施例的示例数据复制处理。机箱660的以太网交换机661通过以太网连接从主机接收主机命令,并且将接收到的主机命令转送至主动eSSD 670a。可将接收到的主机命令布置在主动eSSD 670a的提交队列(SQ)中。布置在提交队列中的主机命令可包括主机写命令、管理命令(例如,生成命名空间)和正常命令(例如,获得日志页)。
当处理提交队列中的接收到的主机命令中的主机写命令时,主动eSSD 670a将RDMA READ请求发送至主机,以取用与主机写命令关联的数据。主动eSSD 670a可针对与主机写命令关联的主机写数据的各个数据区块发出一系列RDMA READ请求。针对各个数据区块,主动eSSD 670a发送NAMESPACE.LBA和指令以将数据存储在被动eSSD 670b中。同时,对以太网交换机661编程,以将针对主动eSSD 670a的入口流量复制到被动eSSD 670b。
图7是根据一个实施例的通过被动eSSD处理主机命令的流程图。被动eSSD接收流向主动eSSD的所有入口流量(701)。入口流量主要包括携带主机命令的RDMA SEND分组和携带用于主机写命令的主机数据的RDMA READ RESPONSE分组。除RDMA分组之外,入口流量还可包括其它网络流量。被动eSSD解析接收到的入口分组(702)。被动eSSD利用分组过滤逻辑过滤所有接收到的分组,以仅保留RDMA READ RESPONSE分组(703)。被动eSSD丢弃除RDMAREAD RESPONSE分组以外的入口分组(706)。被动eSSD将RDMA READ RESPONSE分组组合为RDMA数据消息(704)并且提取在RDMA READ RESPONSE分组中携带的主机写数据(705)。
参照图6,被动eSSD将RDMA READ RESPONSE分组组合为RDMA数据消息,并且将它们布置在接收到的消息FIFO 672中。在将主机数据区块存储在被动eSSD 670b的存储介质中之前,接收到的消息FIFO 672暂时存储主机数据区块。另外,被动eSSD 670b将从主动eSSD670a接收到的NAMESPACE.LBA和指令存储在分离的缓冲器(本文中称作LBA和指令FIFO671)中。缓存在LBA和指令FIFO 671中的NAMEPSACE.LBA和指令可利用标识符或标记指向布置在接收到的消息FIFO 672中的对应的主机数据。被动eSSD 670b基于指令(例如,写)、地址利用对应的数据区块将主机数据留存在其自己的存储介质中。在留存主机数据之后,被动eSSD 670b可在专用通信信道上将确认发送至主动eSSD 670a。
图8是根据一个实施例的将LBA和指令从主动eSSD传达至被动eSSD的流程图。针对接收到的数据区块中的每一个,主动eSSD将关联的LBA和指令发送至关联的被动eSSD中的每一个,并且被动eSSD将LBA和指令布置在LBA和指令FIFO中(801)。被动eSSD解析接收到的入口分组(802),以仅将包括在RDMA READ RESPONSE分组中的主机写数据布置在接收到的消息FIFO中。利用从主动eSSD接收到的LBA和指令,被动eSSD将主机数据留存在存储介质中(803)。被动eSSD根据主动eSSD的指示重复复制数据的处理。
主动eSSD的指令通常为“写”,其指示被动eSSD将对应的数据区块存储在提供的NAMESPACE.LBA的。将数据区块写在主动eSSD中失败会偶尔发生。在这种情况下,主动eSSD可将指令“丢弃”发送至被动eSSD。当被动eSSD遇到“丢弃”指令时,被动eSSD简单地丢弃对应的数据区块。主动eSSD可将其它指令发送至被动eSSD。这些指令可为诸如命名空间管理命令(例如,生成命名空间)的管理命令和主动eSSD从主机或包括主动eSSD和被动eSSD的机箱的以太网交换机、BMC或PCIe交换机接收到的修剪命令。用于管理命令的协议可扩展至包括其它主机命令,而不偏离本公开的范围。当被动eSSD遇到LBA和指令FIFO中的非数据命令,被动eSSD可执行非数据命令,而不影响接收到的消息FIFO。
当通过被动eSSD执行指令时,被动eSSD可选择性地将完成确认发送至主动eSSD。按照这种模式,主动eSSD在针对原始主机命令将完成队列条目发送至主机之前,等待来自关联的一个或多个被动eSSD的确认。这种操作模式确保主动eSSD和被动eSSD始终彼此一致。
由于很少有写数据区块失败或执行命令失败,因此在一些情况下,主动eSSD可不等待来自关联的被动eSSD的确认。在关联的被动eSSD之一中会发生错误,并且关联的被动eSSD中的任一个可能都不能写数据或不能执行指令。根据一个实施例,被动eSSD可将针对主动eSSD指示的复制主机数据的错误报告给机箱的BMC。BMC可针对异常处理和可能的一致性状态恢复采取合适行动。
图9是根据一个实施例的通过被动eSSD处理数据复制的流程图。BMC构造主动eSSD并且将一个或多个被动eSSD与主动eSSD关联。
被动eSSD检查LBA和指令FIFO中的条目(900)并且从LBA和指令FIFO拉出下一指令(901)。如果该指令是写指令(902),则被动eSSD基于NAMESPACE.LBA留存与写指令关联的数据区块(903)。如果该指令不是写指令(902),则被动eSSD确定该指令是否为丢弃指令(906)。被动eSSD响应于丢弃指令丢弃数据区块(907)。如果该指令不是丢弃指令(906),则被动eSSD进一步检查该指令是否为管理指令(909)并且执行该管理指令(910)。如果该指令不是管理指令(909),则被动eSSD向BMC发出警报(911)并且报告错误状态(912)。
如果被动eSSD的一致性模式是完美模式(904),则被动eSSD向主动eSSD发送确认(905)。如果被动eSSD的一致性模式是几乎完美的模式(904),则被动eSSD检查是否存在错误(908)。在存在错误的情况下,被动eSSD将错误报告给BMC(911)。如果没有错误,则被动eSSD检查LBA和指令FIFO(900),以执行LBA和指令FIFO中的下一指令(901)。
根据一个实施例,BMC可周期性地监视主动eSSD和被动eSSD的健康状态。例如,BMC使用NVMe-MI协议以及特别使用用于健康状态监视的NVMe-MI“健康状态轮询”命令。BMC可使用PCIe接口或者SMBus接口进行管理。eSSD(无论是主动eSSD还是被动eSSD)可因为各种原因从机箱取出。BMC从机箱中的eSSD中的每一个周期性地接收“存在”信号。在eSSD被取出的事件下,BMC接收这种事件的报告。
一旦BMC确定当前主动eSSD故障或者不再存在于机箱中,BMC可启动故障切换操作。首先,BMC在主动模式下对机箱中的被动eSSD或正常eSSD之一编程。根据需要,BMC还可选择机箱中的另一eSSD作为新的被动eSSD。BMC对以太网交换机再编程,以复制新的主动eSSD的入口流量。
图10是根据一个实施例的用于故障切换操作的流程图。BMC可检测主动eSSD故障或者从机箱取下(1000)。BMC从机箱中选择新的主动eSSD(1001)。根据一个实施例,机箱中的被动eSSD之一或者正常eSSD可转换为新的主动eSSD。BMC随后确定是否需要新的被动eSSD(1002)。当需要新的被动eSSD时(1002),BMC选择机箱中的eSSD(1005),并且将eSSD编程为被动eSSD并将eSSD与新的主动eSSD关联(1006)。如果被动eSSD转换为新的主动eSSD,则主机数据的副本数量会减少。因此,新的被动eSSD可由存在于机箱中的正常eSSD之一构造。可替换地,与另一主动eSSD关联的被动eSSD可转换为主动eSSD。BMC对机箱的以太网交换机编程(1003),并且为新的主动eSSD编程(1004)。
在数据复制设置中,保持复制的数据副本一致是至关重要的。换句话说,eSSD(主动eSSD和关联的被动eSSD)的集合需要彼此一致。如果出现任何不一致,则可不能确定那个数据副本是正确的,因此这种情况会导致一些数据损失。一些使用情况可容忍特定的数据丢失事件,但是多数使用情况不希望数据丢失。
根据一个实施例,用于提供数据复制的本发明的系统和方法可确保主动eSSD与关联的被动eSSD之间的完美的一致性,并且实现无数据丢失。在一些情况下,用户应用程序如果可容忍罕见事件中的一些数据丢失则可实现更好的延迟。这种数据丢失的可能性可极小。
基于使用情况,作为复制设置的一部分,BMC可将数据复制的一致性模式设为完美的一致性模式或几乎完美的一致性模式。在完美的一致性模式中,主动eSSD在将完成队列条目发送至主机之前等待所有的关联的被动eSSD的确认。在完美的一致性模式中,主动eSSD在留存其用户数据的副本之后可不立即发送主机命令完成队列条目,以确保所有被动eSSD成功留存了主机数据。对被动eSSD的确认的等待会为主机写访问增加轻微延迟。由于主动eSSD和被动eSSD同时接收用户数据,因此由被动eSSD的确认导致的额外延迟不是很显著。延迟可主要对应于被动eSSD确认到达主动eSSD消耗的时间量。主动eSSD与被动eSSD之间的专用通信信道是本地的和专用的,因此这种eSSD间的通信时间将最少。
如果主动eSSD被取出或者突然变得不能操作,则在提交队列中可存在一些主机写命令。在这种情况下,主动eSSD针对这部分写命令不会发送任何命令完成队列条目。因此,从主机观点可保持数据完整性。主机可将失败的写命令再发送至不同的存储单元,或者等待故障切换。
在几乎完美的一致性模式中,主动eSSD不等待关联的被动eSSD的确认。只要主动eSSD留存其自己的写数据的副本,主动eSSD就将命令完成发送至主机。与完美的一致性模式相比,这导致针对主机的更好的延迟。而在该模式下,如果主动eSSD被取出或者变得不可操作,则会存在一些执行的主机写命令。对于未针对其发送命令完成的所有主机写命令,仍然可保持数据完整性。主机可将写命令再发送至替代性存储单元。一种极端情况是主动eSSD已成功将写命令完成发送至主机,但是由于某些原因被动eSSD未能留存所述数据。在这种极端情况下,主机确定已成功写数据,但是数据的主动副本不再可用,并且数据的被动副本未能留存。在发送写命令完成之后主动eSSD被取出或变得不可操作同时被动eSSD未能留存关联的写数据的可能性极小。虽然几乎完美的一致性模式可提供稍好的延迟,但是存在较小风险的数据丢失。针对可容忍这种情况的应用程序,几乎完美的一致性模式可为一种可行选项。
根据一个实施例,一种数据复制方法包括步骤:提供数据复制系统,其包括包含在机箱中的多个以太网固态盘(eSSD),其中机箱包括为所述多个eSSD中的每一个提供下行链路的结构交换机和用于控制所述结构交换机和所述多个eSSD的基板管理控制器(BMC);利用BMC将所述多个eSSD之一构造为主动eSSD;利用BMC将所述多个eSSD中的一个或多个构造为一个或多个被动eSSD;利用BMC为结构交换机编程,以将流向主动eSSD的分组转送至主动eSSD和所述一个或多个被动eSSD二者;在主动eSSD接收来自主机的主机数据写命令;将对应于主机数据的地址和指令从主动eSSD发送至所述一个或多个被动eSSD;将主机数据存储在主动eSSD中;以及利用从主动eSSD接收到的地址和指令以及在通过结构交换机转送的分组中接收到的主机数据将主机数据的副本存储在所述一个或多个被动eSSD中。
主动eSSD可为可由主机发现的并且所述一个或多个被动eSSD可以是不可由主机发现的。
所述方法还可包括:建立主动eSSD与所述一个或多个被动eSSD之间的专用通信信道,以将地址和指令从主动eSSD发送至所述一个或多个被动eSSD。
可通过机箱中的结构交换机或者PCIe交换机建立专用通信信道。
所述方法还可包括:响应于主机数据写命令,利用主动eSSD将远程直接存储器存取(RDMA)READ请求发送至主机;以及在一个或多个RDMA READ RESPONSE分组中接收来自主机的主机数据。
RDMA READ RESPONSE分组可包括主机数据的数据区块。
所述一个或多个被动eSSD中的每一个可丢弃从结构交换机接收到的除RDMA READRESPONSE分组以外的分组。
所述方法还可包括:基于一致性模式,在从所述一个或多个被动eSSD接收响应之后,或者在将主机数据存储在主动eSSD中而没有从所述一个或多个被动eSSD接收响应之后,将完成队列条目发送至主机。
所述一个或多个被动eSSD中的每一个可包括用于存储地址和指令的第一缓冲器和用于存储主机数据的数据区块的第二缓冲器。
所述方法还可包括:检测与主动eSSD关联的错误;从机箱中的所述多个eSSD中选择eSSD;将选择的eSSD构造为新的主动eSSD;确定是否需要新的被动eSSD;构造新的被动eSSD;以及对结构交换机编程,以将新的主动eSSD与所述一个或多个被动eSSD和新的被动eSSD关联。
根据另一实施例,一种数据复制系统包括机箱,其包括多个eSSD、结构交换机和基板管理控制器(BMC)。结构交换机被构造为为所述多个eSSD中的每一个提供下行链路,并且BMC被构造为控制结构交换机和所述多个eSSD。BMC将所述多个eSSD之一构造为主动eSSD,并且将所述多个eSSD中的一个或多个构造为一个或多个被动eSSD,并且对结构交换机编程,以将流向主动eSSD的分组转送至主动eSSD和所述一个或多个被动eSSD二者。主动eSSD被构造为响应于从主机接收到的主机数据写命令存储主机数据。主动eSSD还被构造为将对应于主机数据的地址和指令发送至所述一个或多个被动eSSD。所述一个或多个被动eSSD中的每一个被构造为利用从主动eSSD接收到的地址和指令和在通过结构交换机转送的分组中接收到的主机数据存储主机数据的副本。
主动eSSD可为可由主机发现的,并且所述一个或多个被动eSSD可以是不可由主机发现的。
可在主动eSSD与所述一个或多个被动eSSD之间建立专用通信信道,以发送地址和指令。
可通过机箱中的结构交换机或者PCIe交换机建立专用通信信道。
主动eSSD还可被构造为:响应于主机数据写命令将远程直接存储器存取(RDMA)READ请求发送至主机;并且在一个或多个RDMA READ RESPONSE分组中接收来自主机的主机数据。
RDMA READ RESPONSE分组可包括主机数据的数据区块。
所述一个或多个被动eSSD中的每一个可丢弃从结构交换机接收到的除RDMA READRESPONSE分组以外的分组。
主动eSSD还可被构造为:基于一致性模式,在从所述一个或多个被动eSSD接收响应之后,或者在将主机数据存储在主动eSSD中而没有从所述一个或多个被动eSSD接收响应之后,将完成队列条目发送至主机。
所述一个或多个被动eSSD中的每一个可包括用于存储地址和指令的第一缓冲器和用于存储主机数据的数据区块的第二缓冲器。
BMC还可被构造为:检测与主动eSSD关联的错误;从机箱中的所述多个eSSD中选择eSSD;将选择的eSSD构造为新的主动eSSD;确定是否需要新的被动eSSD;构造新的被动eSSD;以及为结构交换机编程,以将新的主动eSSD与所述一个或多个被动eSSD和新的被动eSSD关联。
上文中已描述了以上示例实施例,以示出实施用于在以太网SSD中提供数据复制的系统和方法的各种实施例。本领域普通技术人员应该清楚对公开的示例实施例的各种修改和背离。在以下权利要求中阐述旨在落入本发明的范围中的主题内容。
Claims (20)
1.一种数据复制方法,包括步骤:
提供数据复制系统,其包括包含在机箱中的多个以太网固态盘,其中,所述机箱包括用于为所述多个以太网固态盘中的每一个提供下行链路的结构交换机和用于控制所述结构交换机和所述多个以太网固态盘的基板管理控制器;
利用所述基板管理控制器将所述多个以太网固态盘之一构造为主动以太网固态盘;
利用所述基板管理控制器将所述多个以太网固态盘中的一个或多个构造为一个或多个被动以太网固态盘;
利用所述基板管理控制器为所述结构交换机编程,以将寻址到所述主动以太网固态盘的网络分组经由第一下行链路端口转送至所述主动以太网固态盘并经由与所述第一下行链路端口不同的第二下行链路端口转送至所述一个或多个被动以太网固态盘中的每一个;
在所述主动以太网固态盘处通过所述结构交换机经由所述第一下行链路端口接收来自主机的包括主机数据写命令的网络分组;
将与所述主机数据写命令相关联的主机数据存储在所述主动以太网固态盘的存储器位置中;
将对应于主机数据写命令的所述主动以太网固态盘的存储器位置和指令从所述主动以太网固态盘发送至所述一个或多个被动以太网固态盘;以及
利用从所述主动以太网固态盘接收到的所述主动以太网固态盘的存储器位置和指令和在通过所述结构交换机经由所述第二下行链路端口转送的网络分组中接收到的主机数据将主机数据的副本存储在所述一个或多个被动以太网固态盘中。
2.根据权利要求1所述的方法,其中,所述主动以太网固态盘是可被主机发现的,并且所述一个或多个被动以太网固态盘是不可被主机发现的。
3.根据权利要求1所述的方法,还包括步骤:
在所述主动以太网固态盘与所述一个或多个被动以太网固态盘之间建立专用通信信道,以将所述存储器位置和指令从所述主动以太网固态盘发送至所述一个或多个被动以太网固态盘。
4.根据权利要求3所述的方法,其中,通过所述结构交换机或者通过所述机箱中的PCIe交换机建立所述专用通信信道。
5.根据权利要求1所述的方法,还包括步骤:
响应于所述主机数据写命令,利用所述主动以太网固态盘将远程直接存储器存取读请求发送至主机;以及
在一个或多个远程直接存储器存取读响应分组中接收来自主机的主机数据。
6.根据权利要求5所述的方法,其中,所述远程直接存储器存取读响应分组包括主机数据的数据区块。
7.根据权利要求5所述的方法,其中,所述一个或多个被动以太网固态盘中的每一个丢弃从所述结构交换机接收到的除所述远程直接存储器存取读响应分组之外的分组。
8.根据权利要求1所述的方法,还包括步骤:
基于一致性模式,在从所述一个或多个被动以太网固态盘接收响应之后,或者在将主机数据存储在所述主动以太网固态盘中而没有从所述一个或多个被动以太网固态盘接收响应之后,将完成队列条目发送至主机。
9.根据权利要求1所述的方法,其中,所述一个或多个被动以太网固态盘中的每一个包括用于存储所述存储器位置和指令的第一缓冲器和用于存储主机数据的数据区块的第二缓冲器。
10.根据权利要求1所述的方法,还包括步骤:
检测与所述主动以太网固态盘关联的错误;
从所述机箱中的所述多个以太网固态盘中选择以太网固态盘;
将选择的以太网固态盘构造为新的主动以太网固态盘;
确定是否需要新的被动以太网固态盘;
构造新的被动以太网固态盘;以及
对所述结构交换机编程,以将所述新的主动以太网固态盘与所述一个或多个被动以太网固态盘和新的被动以太网固态盘关联。
11.一种数据复制系统,包括:
机箱,其包括多个以太网固态盘、结构交换机和基板管理控制器;
其中,所述结构交换机被构造为为所述多个以太网固态盘中的每一个提供下行链路,并且所述基板管理控制器被构造为控制所述结构交换机和所述多个以太网固态盘,
其中,所述基板管理控制器将所述多个以太网固态盘之一构造为主动以太网固态盘,并且将所述多个以太网固态盘中的一个或多个构造为一个或多个被动以太网固态盘,并且所述基板管理控制器对所述结构交换机编程,以将寻址到所述主动以太网固态盘的网络分组经由第一下行链路端口转送至所述主动以太网固态盘并经由与所述第一下行链路端口不同的第二下行链路端口转发至所述一个或多个被动以太网固态盘中的每一个,
其中,所述主动以太网固态盘被构造为通过所述结构交换机经由所述第一下行链路端口从主机接收包括主机数据写命令的网络分组,并将与所述主机数据写命令相关联的主机数据存储在所述主动以太网固态盘的存储器位置中,
其中,所述主动以太网固态盘还被构造为将对应于主机数据写命令的存储器位置和指令发送至所述一个或多个被动以太网固态盘,并且
其中,所述一个或多个被动以太网固态盘中的每一个被构造为利用从主动以太网固态盘接收到的所述主动以太网固态盘的存储器位置和指令和在通过所述结构交换机经由所述第二下行链路端口转送的网络分组中接收到的主机数据存储主机数据的副本。
12.根据权利要求11所述的数据复制系统,其中,所述主动以太网固态盘是可由主机发现的,并且所述一个或多个被动以太网固态盘是不可由主机发现的。
13.根据权利要求11所述的数据复制系统,其中,在所述主动以太网固态盘与所述一个或多个被动以太网固态盘之间建立专用通信信道,以发送所述存储器位置和指令。
14.根据权利要求13所述的数据复制系统,其中,通过所述结构交换机或者通过所述机箱中的PCIe交换机建立所述专用通信信道。
15.根据权利要求11所述的数据复制系统,其中,所述主动以太网固态盘还被构造为:
响应于主机数据写命令将远程直接存储器存取读请求发送至主机;并且
在一个或多个远程直接存储器存取读响应分组中接收来自主机的主机数据。
16.根据权利要求15所述的数据复制系统,其中,远程直接存储器存取读响应分组包括主机数据的数据区块。
17.根据权利要求15所述的数据复制系统,其中,所述一个或多个被动以太网固态盘中的每一个丢弃从所述结构交换机接收到的除所述远程直接存储器存取读响应分组以外的分组。
18.根据权利要求11所述的数据复制系统,其中,所述主动以太网固态盘还被构造为:
基于一致性模式,在从所述一个或多个被动以太网固态盘接收响应之后,或者在将主机数据存储在所述主动以太网固态盘中而没有从所述一个或多个被动以太网固态盘接收响应之后,将完成队列条目发送至主机。
19.根据权利要求11所述的数据复制系统,其中,所述一个或多个被动以太网固态盘中的每一个包括用于存储所述存储器位置和指令的第一缓冲器和用于存储主机数据的数据区块的第二缓冲器。
20.根据权利要求11所述的数据复制系统,其中,所述基板管理控制器还被构造为:
检测与所述主动以太网固态盘关联的错误;
从所述机箱中的所述多个以太网固态盘中选择以太网固态盘;
将选择的以太网固态盘构造为新的主动以太网固态盘;
确定是否需要新的被动以太网固态盘;
构造新的被动以太网固态盘;以及
对所述结构交换机编程,以将所述新的主动以太网固态盘与所述一个或多个被动以太网固态盘和新的被动以太网固态盘关联。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762480113P | 2017-03-31 | 2017-03-31 | |
US62/480,113 | 2017-03-31 | ||
US15/617,925 US10691368B2 (en) | 2017-03-31 | 2017-06-08 | System and method for providing data replication in NVMe-oF ethernet SSD |
US15/617,925 | 2017-06-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108696569A CN108696569A (zh) | 2018-10-23 |
CN108696569B true CN108696569B (zh) | 2022-01-11 |
Family
ID=63670633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810234803.1A Active CN108696569B (zh) | 2017-03-31 | 2018-03-21 | 在NVMe-oF以太网SSD中提供数据复制的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10691368B2 (zh) |
JP (1) | JP6955466B2 (zh) |
KR (1) | KR102457091B1 (zh) |
CN (1) | CN108696569B (zh) |
TW (1) | TWI734890B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10275180B2 (en) * | 2017-05-08 | 2019-04-30 | Samsung Electronics Co., Ltd. | Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch |
US10764180B1 (en) * | 2018-02-20 | 2020-09-01 | Toshiba Memory Corporation | System and method for storing data using software defined networks |
US10607712B1 (en) * | 2018-09-28 | 2020-03-31 | Toshiba Memory Corporation | Media error reporting improvements for storage drives |
US10635355B1 (en) * | 2018-11-13 | 2020-04-28 | Western Digital Technologies, Inc. | Bandwidth limiting in solid state drives |
US11366610B2 (en) | 2018-12-20 | 2022-06-21 | Marvell Asia Pte Ltd | Solid-state drive with initiator mode |
US11144488B2 (en) * | 2019-02-04 | 2021-10-12 | American Megatrends International, Llc | Techniques of sending alerts from storage services running on server san target |
CN113767360A (zh) | 2019-03-14 | 2021-12-07 | 马维尔亚洲私人有限公司 | 在驱动器级别处对非易失性存储器联网消息的终止 |
EP3939237B1 (en) | 2019-03-14 | 2024-05-15 | Marvell Asia Pte, Ltd. | Transferring data between solid state drives (ssds) via a connection between the ssds |
WO2020186270A1 (en) * | 2019-03-14 | 2020-09-17 | Marvell Asia Pte, Ltd. | Ethernet enabled solid state drive (ssd) |
US10942881B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
US11762798B2 (en) | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
US11768613B2 (en) | 2019-06-25 | 2023-09-26 | Micron Technology, Inc. | Aggregation and virtualization of solid state drives |
US11513923B2 (en) | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives |
US10942846B2 (en) * | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
US11055249B2 (en) | 2019-06-25 | 2021-07-06 | Micron Technology, Inc. | Access optimization in aggregated and virtualized solid state drives |
US11573708B2 (en) | 2019-06-25 | 2023-02-07 | Micron Technology, Inc. | Fail-safe redundancy in aggregated and virtualized solid state drives |
JP7347157B2 (ja) | 2019-11-22 | 2023-09-20 | 富士通株式会社 | 情報処理システム、ストレージ制御プログラム、及び、ストレージ制御装置 |
US20210294702A1 (en) * | 2021-06-04 | 2021-09-23 | Intel Corporation | High-availability memory replication in one or more network devices |
US11726880B1 (en) * | 2022-02-18 | 2023-08-15 | Dell Products L.P. | Fault tolerance and debug analysis during a boot process |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001337788A (ja) * | 2000-05-24 | 2001-12-07 | Hitachi Ltd | 記憶装置の2重化方式及び記憶装置の2重化での障害回復方法 |
US7633955B1 (en) * | 2004-02-13 | 2009-12-15 | Habanero Holdings, Inc. | SCSI transport for fabric-backplane enterprise servers |
US10572188B2 (en) | 2008-01-12 | 2020-02-25 | Hewlett Packard Enterprise Development Lp | Server-embedded distributed storage system |
CN101520742B (zh) * | 2009-03-26 | 2011-12-21 | 成都市华为赛门铁克科技有限公司 | 固态硬盘数据备份方法、系统和相应的固态硬盘 |
JP2011209892A (ja) * | 2010-03-29 | 2011-10-20 | Fujitsu Ltd | ストレージシステム、ストレージシステムの制御方法、スイッチ装置およびストレージ装置 |
US9104326B2 (en) * | 2010-11-15 | 2015-08-11 | Emc Corporation | Scalable block data storage using content addressing |
US9582384B2 (en) | 2011-03-23 | 2017-02-28 | Stormagic Limited | Method and system for data replication |
US20120254508A1 (en) * | 2011-04-04 | 2012-10-04 | International Business Machines Corporation | Using the Short Stroked Portion of Hard Disk Drives for a Mirrored Copy of Solid State Drives |
US8942139B2 (en) * | 2011-12-07 | 2015-01-27 | International Business Machines Corporation | Support for converged traffic over ethernet link aggregation (LAG) |
US9015525B2 (en) * | 2012-06-19 | 2015-04-21 | Lsi Corporation | Smart active-active high availability DAS systems |
US9986028B2 (en) * | 2013-07-08 | 2018-05-29 | Intel Corporation | Techniques to replicate data between storage servers |
KR20150047785A (ko) * | 2013-10-25 | 2015-05-06 | 삼성전자주식회사 | 서버 시스템 및 스토리지 시스템 |
US9471259B2 (en) | 2014-01-28 | 2016-10-18 | Netapp, Inc. | Shared storage architecture |
CN103777905B (zh) * | 2014-02-14 | 2017-04-12 | 华中科技大学 | 一种软件定义的固态盘融合存储方法 |
EP3117583A4 (en) * | 2014-03-08 | 2017-11-01 | Diamanti, Inc. | Methods and systems for converged networking and storage |
US9696942B2 (en) | 2014-03-17 | 2017-07-04 | Mellanox Technologies, Ltd. | Accessing remote storage devices using a local bus protocol |
US9811677B2 (en) * | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US9652175B2 (en) * | 2015-04-09 | 2017-05-16 | Sandisk Technologies Llc | Locally generating and storing RAID stripe parity with single relative memory address for storing data segments and parity in multiple non-volatile memory portions |
US9760314B2 (en) | 2015-05-29 | 2017-09-12 | Netapp, Inc. | Methods for sharing NVM SSD across a cluster group and devices thereof |
KR102403489B1 (ko) * | 2015-07-10 | 2022-05-27 | 삼성전자주식회사 | 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 |
US10055379B2 (en) * | 2015-07-10 | 2018-08-21 | SK Hynix Inc. | Peripheral component interconnect express card |
KR102387973B1 (ko) * | 2015-12-01 | 2022-04-19 | 삼성전자주식회사 | 이중화 저장 장치, 그것을 포함한 서버 시스템 및 그것의 동작 방법 |
CN206039500U (zh) * | 2016-07-23 | 2017-03-22 | 西安飞铭电子科技有限公司 | 一种多用户实时网络仿真系统 |
US10326613B2 (en) * | 2017-04-18 | 2019-06-18 | Arista Networks, Inc. | Method and system for processing spanning tree protocol (STP) state in a multichassis link aggregation (MLAG) domain |
-
2017
- 2017-06-08 US US15/617,925 patent/US10691368B2/en active Active
-
2018
- 2018-01-05 KR KR1020180001859A patent/KR102457091B1/ko active IP Right Grant
- 2018-01-24 TW TW107102418A patent/TWI734890B/zh active
- 2018-03-20 JP JP2018052308A patent/JP6955466B2/ja active Active
- 2018-03-21 CN CN201810234803.1A patent/CN108696569B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108696569A (zh) | 2018-10-23 |
JP6955466B2 (ja) | 2021-10-27 |
KR20180111483A (ko) | 2018-10-11 |
KR102457091B1 (ko) | 2022-10-20 |
US10691368B2 (en) | 2020-06-23 |
TWI734890B (zh) | 2021-08-01 |
JP2018173949A (ja) | 2018-11-08 |
US20180284989A1 (en) | 2018-10-04 |
TW201840149A (zh) | 2018-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108696569B (zh) | 在NVMe-oF以太网SSD中提供数据复制的系统和方法 | |
US8402189B2 (en) | Information processing apparatus and data transfer method | |
US20190188079A1 (en) | Durable block storage in data center access nodes with inline erasure coding | |
US10423332B2 (en) | Fibre channel storage array having standby controller with ALUA standby mode for forwarding SCSI commands | |
US9823955B2 (en) | Storage system which is capable of processing file access requests and block access requests, and which can manage failures in A and storage system failure management method having a cluster configuration | |
JP2007072571A (ja) | 計算機システム及び管理計算機ならびにアクセスパス管理方法 | |
US8281071B1 (en) | Systems and methods for managing cluster node connectivity information | |
JP2007207007A (ja) | ストレージシステム、ストレージコントローラ及び計算機システム | |
US20160217049A1 (en) | Fibre Channel Failover Based on Fabric Connectivity | |
US11573736B2 (en) | Managing host connectivity to a data storage system | |
WO2018121456A1 (zh) | 一种数据存储方法、服务器以及存储系统 | |
US11531498B2 (en) | Peer storage device messaging over control bus | |
WO2021012169A1 (zh) | 一种提高存储系统可靠性的方法和相关装置 | |
US10241950B2 (en) | Multipath I/O proxy device-specific module | |
US20080101236A1 (en) | Storage system and communication bandwidth control method | |
CN110471627B (zh) | 一种共享存储的方法、系统及装置 | |
US8473643B2 (en) | Method and apparatus of tier storage management awareness networking | |
US10216596B1 (en) | Fast consistent write in a distributed system | |
CN115023930A (zh) | 非易失性存储器快速节点的管理 | |
US10855522B2 (en) | Dual port storage device emulation | |
US10768834B2 (en) | Methods for managing group objects with different service level objectives for an application and devices thereof | |
US11983428B2 (en) | Data migration via data storage device peer channel | |
US20230393772A1 (en) | Data Migration via Data Storage Device Peer Channel | |
US20240104064A1 (en) | Unified storage and method of controlling unified storage | |
US20240126713A1 (en) | System of and method for input output throttling in a network |
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 | ||
GR01 | Patent grant |