CN108804355B - 使用目标协作的快速排序写入的方法和系统 - Google Patents

使用目标协作的快速排序写入的方法和系统 Download PDF

Info

Publication number
CN108804355B
CN108804355B CN201810390073.4A CN201810390073A CN108804355B CN 108804355 B CN108804355 B CN 108804355B CN 201810390073 A CN201810390073 A CN 201810390073A CN 108804355 B CN108804355 B CN 108804355B
Authority
CN
China
Prior art keywords
commit
storage module
commit request
request
data
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
Application number
CN201810390073.4A
Other languages
English (en)
Other versions
CN108804355A (zh
Inventor
M·西本遥
S·拉加达亚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Publication of CN108804355A publication Critical patent/CN108804355A/zh
Application granted granted Critical
Publication of CN108804355B publication Critical patent/CN108804355B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明用于使用目标协作的快速排序写入的方法和系统。总体上来说,本技术的实施例涉及用于在包括多个分离的存储模块的存储设备中执行快速排序写入的方法和系统。更具体地,本技术的实施例使得能够将数据多播到存储设备中的多个存储模块,其中处理写入请求的顺序在存储设备中的所有存储模块上是相同的。

Description

使用目标协作的快速排序写入的方法和系统
技术领域
本发明用于使用目标协作的快速排序写入的方法和系统。总体上来说,本技术的实施例涉及用于在包括多个分离的存储模块(storage module)的存储设备(storageappliance)中执行快速排序写入的方法和系统。更具体地,本技术的实施例使得能够将数据多播到存储设备中的多个存储模块,其中处理写入请求的顺序在存储设备中的所有存储模块上是相同的。
背景技术
存储设备包括存储介质(storage media)并且提供使客户端能够向该存储介质写入数据和从该存储介质读取数据的机制。
发明内容
根据本公开的一个方面涉及一种用于处理写入请求的方法。该方法包括:由第一存储模块接收来自客户端的第一提交请求;响应于接收到所述第一提交请求:处理所述第一提交请求,其中处理所述第一提交请求导致第一数据的第一副本被存储在所述第一存储模块中的永久性存储器(memory)中;由所述第一存储模块生成针对第二存储模块的第二提交请求;向所述第二存储模块发送所述第二提交请求;从所述第二存储模块接收指示所述第一数据的第二副本被存储在所述第二存储模块中的永久性存储器中的第一提交回复;响应于接收到所述第一提交回复并且在处理所述第一提交请求之后,由所述第一存储模块生成对应于所述第一提交请求的第二提交回复;向所述客户端发送所述第二提交回复。
根据本公开的另一个方面涉及一种存储设备。该存储设备包括:结构(fabric);存储阵列,其可操作地连接到所述结构并且包括第一存储模块和所述第二存储模块。所述第一存储模块被配置为:经由所述结构接收来自客户端的第一提交请求;响应于接收到所述第一提交请求:处理所述第一提交请求,其中处理所述第一提交请求导致第一数据的第一副本被存储在所述第一存储模块中的永久性存储器中;生成针对第二存储模块的第二提交请求;经由所述结构向所述第二存储模块发送所述第二提交请求;经由所述结构从所述第二存储模块接收指示所述第一数据的第二副本被存储在所述第二存储模块中的永久性存储器中的第一提交回复;响应于接收到所述第一提交请求并且在处理所述第一提交请求之后,生成对应于所述第一提交请求的第二提交回复;和经由所述结构向所述客户端发送所述第二提交回复。
附图说明
图1A至1C示出了根据本技术的一个或多个实施例的系统。
图2至5示出了根据本技术的一个或多个实施例的流程图。
图6示出了根据本技术的一个或多个实施例的示例系统。
具体实施方式
在本技术的实施例的以下详细描述中,阐述了许多具体细节以便提供对该技术更透彻的理解。然而,对于本领域的普通技术人员来说显而易见的是,可以在没有这些具体细节的情况下实践该技术。在其他情况下,没有详细描述众所周知的特征以避免不必要地使描述复杂化。
在整个申请中,序数(例如,第一、第二、第三等)可以用作元素(即,本申请中的任何名词)的形容词。序数的使用并不意味着或创建任何特定的元素排序,也不限制任何元素仅为单个元素,除非明确地公开,例如通过使用术语“之前”、“之后”、“单个”和其他类似术语。更确切地说,序数的使用是为了区分这些元素。作为示例,第一元素不同于第二元素,并且第一元素可以包含多于一个元素并且在元素的排序中在第二元素之前(或先于)。
在以下对图1A至6的描述中,在本技术的各个实施例中关于附图描述的任何组件可以等同于关于任何其他附图描述的一个或多个相同名称的组件。为了简洁起见,这些组件的描述将不会关于每个图重复。因此,每个附图的组件的每个和每一个实施例通过引用并入并且被假定为可选地存在于具有一个或多个相同命名组件的每个其他附图中。另外,根据本技术的各种实施例,附图的组件的任何描述将被解释为可选的实施例,除了、结合或替代关于任何其他图中的对应相同命名组件描述的实施例,可以实施可选的实施例。
总体上来说,本技术的实施例涉及用于在包括多个分离的存储模块的存储设备中执行快速排序写入的方法和系统。更具体地,本技术的实施例使得能够将数据多播到存储设备中的多个存储模块,其中处理写入请求的顺序在存储设备中的所有存储模块上是相同的。该技术的实施例能够实现上述顺序,而不需要客户端协调将数据写入存储设备。具体地,本技术的实施例使用结构(例如,PCIe结构)结合存储模块之间的协调(例如参见图4至5)来强制执行写入请求的排序。
在本技术的一个实施例中,排序在存储模块上是一致的,使得存储在各个存储模块(或存储模块的子集)中的数据是相同的。例如,考虑存储设备包括三个存储模块(1、2、3)的情况。此外,假设客户端A发出指定对象和偏移的第一写入请求(A),并且客户端B发出指定相同对象和偏移的第二写入请求(B)。该技术的实施例确保写入请求(A,B)在每个存储模块上以相同的顺序被处理,使得在两个写入请求都已经在三个存储模块(1、2、3)上被处理之后,针对特定对象和偏移存储的数据在三个存储模块(1、2、3)中的每一个上都是相同。
图1A示出了根据本技术的一个或多个实施例的系统。参考图1A,该系统包括可操作地连接到存储设备(100)的一个或多个客户端(客户端A(108A)-客户端M(108M))。
在本技术的一个实施例中,客户端(108A-108M)可以是任何类型的物理系统,其包括向存储设备(100)发出读取请求和/或向存储设备(100)发出写入请求的功能。虽然在图1A中未示出,但是每个客户端(108A-108M)分别可以包括客户端处理器(未示出)、客户端存储器(未示出)以及实现本技术的一个或多个实施例所需的任何其他软件和/或硬件。
在本技术的一个实施例中,客户端(108A-108M)被配置为执行包括文件系统的操作系统(OS)。文件系统提供了用于从存储设备(100)存储和检索文件的机制。更具体地说,文件系统包括执行必要动作以向存储设备(100)发出读取请求和写入请求的功能。文件系统还可以提供编程接口以使得能够创建和删除文件,读取和写入文件,在文件内执行搜索,创建和删除目录,管理目录内容等。另外,文件系统还提供管理接口以创建和删除文件系统。在本技术的一个实施例中,为了访问文件,操作系统(经由文件系统)通常提供文件操作接口以打开、关闭、读取和写入每个文件内的数据和/或操纵相应的元数据。在本技术的另一个实施例中,客户端被配置为执行用于访问存储设备的块驱动程序。在本技术的另一个实施例中,客户端被配置为执行使得客户端能够访问存储设备的应用编程接口(API)。
在本技术的一个实施例中,客户端(108A-108M)与存储设备(100)的结构(106)对接以与存储设备(100)通信,如以下在图2中进一步描述的。
在本技术的一个实施例中,存储设备(100)是包括永久性存储装置并被配置为服务于来自一个或多个客户端(108A-108M)的读取请求和/或写入请求的系统。
根据本技术的一个或多个实施例,存储设备(100)包括组织在存储阵列(102)中的一个或多个存储模块(104A-104N)和将存储器模块(104A-104N)与客户端(108A-108M)对接的结构(106)。下面介绍这些组件中的每一个。
根据本技术的实施例,存储阵列(106)容纳一个或多个存储模块(104A-104N)。根据需要或期望,存储阵列可实现存储设备的模块化配置,其中存储模块可被添加到存储设备(100)或从存储设备(100)移除。根据本发明的实施例的存储模块(104)参考图1C在下面描述。
继续讨论存储设备(100),存储设备包括结构(106)。结构(106)可以使用以下协议中的一个或多个来提供客户端(108A-108M)与存储模块(104A-104N)之间的物理连接:外围组件互连(PCI)、PCI-Express(PCIe)、PCI-eXtended(PCI-X)、非易失性存储器Express(NVMe)、PCI-Express结构的非易失性存储器Express(NVMe)、以太网结构的非易失性存储器Express(NVMe)和Infiniband结构的非易失性存储器Express(NVMe)。本领域技术人员将认识到,该技术不限于上述协议。下面参考图1B描述根据本技术的实施例的结构(106)。
图1B示出了根据本技术的一个或多个实施例的结构。结构(106)包括一个或多个叶层交换机(110A、110M)和一个或多个集线器层交换机(112A、112N)。下面描述这些组件中的每一个。
关于叶层交换机(110A、110M),每个叶层交换机是连接到一个或多个客户端(108)的物理PCIe交换机,并且每个客户端(108)可以连接到一个或多个叶层交换机。每个叶层交换机也连接到一个或多个集线器层交换机。在本技术的一个实施例中,每个叶层交换机连接到结构中的每个集线器层交换机,导致结构中的层之间的完全连接的网格。在不脱离本技术的情况下,可以在层之间没有完全连接的网格的情况下实施本技术的实施例。
在本技术的一个实施例中,每个叶层交换机被配置为:(i)从其所连接的客户端接收事务层分组(TLP),并使用地址路由将TLP路由到适当的集线器层交换机;以及(ii)从叶层交换机连接到的一个或多个集线器层交换机接收TLP,并使用地址路由将TLP路由到适当的客户端。
关于集线器层交换机(112A-112N),每个集线器层交换机是连接到一个或多个叶层交换机(110A-110M)并连接到一个或多个存储模块(104)的物理PCIe交换机。此外,每个存储模块可以连接到一个或多个集线器层交换机。在本技术的一个实施例中,每个集线器层交换机连接到结构中的每个其他叶层交换机,导致结构中的层之间的完全连接的网格。在不脱离本技术的情况下,可以在层之间没有完全连接的网格的情况下实施本技术的实施例。
在本技术的一个实施例中,每个集线器层交换机被配置为:(i)从与其连接的存储模块(104)接收TLP,并使用地址路由将TLP路由到适当的叶层交换机,以及(ii)从集线器层交换机连接到的一个或多个叶层交换机接收TLP,并使用地址路由将TLP路由到适当的存储模块(104)。
另外,一个或多个集线器层交换机被配置为响应于从叶层交换机接收单个TLP而生成多个TLP。例如,客户端(108)可以将包括多播地址的TLP生成并发送到叶层交换机。叶层交换机评估多播地址,并基于评估将TLP路由到集线器层交换机。集线器层交换机随后接收TLP并且评估基于评估被识别为多播地址的地址。基于评估,生成N个TLP。然后将N个TLP中的每一个发送到不同的存储模块。
在本技术的一个实施例中,结构可以同时从多个客户端接收TLP。但是,结构将TLP的传输序列化到存储模块。更具体地说,在本技术的一个实施例中,每个集线器层交换机将其从各种客户端接收到的TLP的处理序列化。结果,集线器层交换机还将TLP的传输序列化到存储模块。通过这种方式,集线器层交换机确保它向每个存储模块发出的TLP以相同的顺序发出。
在本技术的一个实施例中,结构被配置为执行图3至5中所示的全部或部分方法。
图1C示出了根据本技术的一个或多个实施例的存储模块(104)。存储模块(104)包括存储模块控制器(120)、缓冲器(122)、一个或多个提交队列(124A、124N)、一个或多个完成队列(128A、128N)和永久性存储装置(126)。下面描述这些组件中的每一个。
在本技术的一个实施例中,存储模块控制器(120)被配置为接收和服务于从永久性存储装置(122)读取和/或写入数据的请求。这些请求可以源自客户端(108)并且可以经由结构(106)被传送到存储模块控制器(120)。此外,存储模块控制器(124)可以被编程为或者以其他方式被配置为执行图4和图5中所示的全部或部分方法。
在本技术的一个实施例中,存储模块控制器(120)包括处理器(未示出)(例如,被配置为执行指令的处理器的一个或多个内核或微内核)、一个或多个硬件寄存器(未示出)和存储器(示出)(例如易失性存储器,其可以是但不限于动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM和DDR SDRAM)以执行图4和图5中所描述的方法的一部分。或者,存储模块控制器(120)可以使用现场可编程门阵列(FPGA)和/或专用集成电路(ASIC)来实现。
在本技术的一个实施例中,存储模块(104)的永久性存储装置(126)可以包括但不限于自旋扭矩磁性RAM(ST-MRAM)、相变存储器(PCM)、NAND闪存和NOR闪存。本领域技术人员将认识到,该技术不限于上述类型的永久性存储装置。
在本技术的一个实施例中,永久性存储器将数据存储为对象。因此,通过指定对象标识符(ID)和偏移(即,对象内的偏移),可以将数据写入对象和/或从对象读取数据。
永久性存储器可以在逻辑上被划分成主分区(130)和一个或多个从分区(132A、132M)。从分区的数量对应于在其上要存储数据副本的其他存储模块的数量。例如,考虑存在三个存储模块(SM1、SM2、SM3)并且数据的副本要存储在每个存储模块上的情况。在该示例中,数据的一个副本可以存储在SM1的主分区中,数据的第二副本可以存储在SM2的从分区中,并且数据的第三副本可以存储在SM3的从分区中。在本技术的一个实施例中,存储模块维护主分区中的地址与相应从分区(位于其他存储模块上)中的一个或多个地址之间的地址映射。
本领域技术人员将认识到,从客户端(图1,108)的角度看,当永久性存储器被逻辑分区(如上所述)时,永久性存储器表现为单个统一地址空间。换句话说,永久性存储器的分区是以对客户端透明的方式执行的。
在本技术的一个实施例中,缓冲器(122)是易失性存储器,其在数据被存储在永久性存储装置中之前暂时存储由存储模块接收的数据。
在本技术的一个实施例中,存储模块可以包括一个或多个提交队列(124A、124N)。提交队列按照存储模块接收的顺序存储提交请求。在本技术的一个实施例中,存储模块包括单个全局提交队列,其中存储从所有客户端接收的所有提交请求。在本技术的另一个实施例中,存储模块包括一组提交队列,其中每个提交队列仅存储从特定客户端接收的提交请求和/或从特定主存储模块(例如参见图5和图6)接收的提交请求。
在本技术的一个实施例中,存储模块可以包括一个或多个完成队列(128A、128N)。完成队列存储由存储模块从其他存储模块接收的提交回复(参见例如图4至6)。在本技术的一个实施例中,存储模块包括单个全局完成队列,其中存储从所有存储模块接收的所有提交回复。在本技术的另一个实施例中,存储模块包括一组完成队列,其中每个完成队列仅存储从特定存储模块接收的提交回复。
本领域技术人员将认识到,系统的架构不限于图1A至1C中所示的组件。例如,存储设备(100)的组件可以包括任何数量的存储模块(104A-104N)。此外,存储模块(104)的存储模块控制器(120)可以配备有中央处理单元(CPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)和/或任何其他类型的处理器,而不偏离本技术。此外,结构可以基于除了上面讨论的那些之外的通信标准,而不偏离本技术。
图2至5示出了根据本技术的一个或多个实施例的流程图。尽管顺序地呈现和描述了流程图中的各个步骤,但本领域的普通技术人员将会理解,可以以不同的顺序执行一些或全部步骤,可以组合或省略这些步骤,并且一些或全部步骤可以并行执行。在该技术的一个实施例中,图2至5可以与图2至5中所示的任何其他步骤并行执行。
图2示出了根据本技术的一个或多个实施例的从客户端的角度将数据写入存储模块的方法。
在步骤200中,客户端生成包括地址和数据的写入请求。包括在写入请求中的地址可以是多播地址。更具体地说,从客户端的角度来看,地址可以显示为任何其他地址;然而,当地址由结构评估时,其导致生成N个写入请求(参见例如图3,步骤304)。
在步骤202中,写入请求由客户端发出到结构。如果结构是PCIe结构(即,实现PCIe的结构),则可以使用一个或多个TLP来发出写入请求。
在步骤204中,客户端生成包括地址的提交请求。尽管写入请求包括要传输的数据,但是提交请求包括导致数据存储在永久性存储器中的命令(参见例如图4、图5)。在本技术的一个实施例中,客户端使用一致散列函数利用对象标识符和偏移作为输入来确定用于提交请求的地址。更具体地说,对于特定对象(使用对象标识符识别)和偏移的提交请求总是被发送到针对<对象ID,偏移>的相同存储模块(即,“主存储模块”)。在本发明的一个实施例中,一致散列函数被用于识别主存储模块。此外,因为每个客户端实现相同的一致散列函数,所以针对特定<对象ID,偏移>的所有提交请求被发送到针对<对象ID,偏移>的相同存储模块(即,“主存储模块”)而不考虑哪个客户端生成提交请求。
在本技术的一个实施例中,提交请求被发送到经由写入请求接收数据的存储模块之一。例如,考虑存在三个存储模块(SM1、SM2、SM3),并且对于<对象ID1,偏移3>在每个存储模块上要存储数据副本的情况。在这种情况下,在写入请求中使用与多播组(即,SM1、SM2、SM3)相关联的多播地址向各个存储模块传输数据。此外,一致散列函数与用作输入的<对象ID1,偏移3>组合以将SM2识别为针对<对象ID1,偏移3>的主存储模块。相应地,提交请求被发送到SM2。
继续图2的讨论,在步骤206中,提交请求由客户端发出到结构。如果结构是PCIe结构(即,实现PCIe的结构),则可以使用一个或多个TLP来发出提交请求。
在稍后的某个时间点,在步骤208中,客户端从结构中接收到提交回复,所述提交回复是由接收到在步骤206中发出的提交请求的存储模块发起的(假设提交请求已被成功处理并且结构保持可操作)。
图3示出了根据本技术的一个或多个实施例的从结构的角度向存储模块写入数据的方法。
在步骤300中,包括数据和多播地址的写入请求由结构中的叶交换机接收。如果结构是PCIe结构,则可以将写入请求作为一个或一组TLP接收。
在步骤302中,叶交换机处理写入请求。更具体地说,写入请求的处理包括评估写入请求中的地址以识别集线器层交换机(或可操作地连接到集线器层交换机的出口端口)。处理的结果是将写入请求传发送到集线器层交换机。在本技术的一个实施例中,特定集线器层交换机处理针对给定地址的所有写入请求。例如,包括地址A的结构接收的所有写入请求都被路由到集线器层交换机A。
在步骤304中,响应于接收到写入请求,集线器层交换机处理写入请求。写入请求的处理包括确定写入请求中的地址是多播地址,并且响应于该确定,生成N个写入请求。生成的写入请求的具体数量(N)在集线器层交换机上预先配置。在本技术的一个实施例中,每个生成的写入请求包括单播地址。
在步骤306中,将所生成的写入请求(即,在步骤304中生成的写入请求)发送到存储模块。更具体地,N个写入请求中的每一个被发送到存储设备中的N个存储模块之一。
在步骤308中,对应于(在步骤300中接收的)写入请求的提交请求由结构中的叶交换机接收。如果结构是PCIe结构,则提交请求可以作为一个或一系列TLP被接收。
在步骤310中,叶交换机处理提交请求。处理的结果是将提交请求发送到连接到主存储模块的集线器层交换机。
在步骤312中,响应于接收到提交请求,集线器层交换机处理提交请求。处理的结果是将提交请求发送到主存储模块(即,针对<对象ID,偏移>的主存储模块)。
在稍后的某个时间点,在步骤314中,结构从主存储模块接收到提交回复。在步骤316中,结构将提交回复发送到客户端(假定结构保持可操作)。
图4示出了根据本技术的一个或多个实施例的从具有单个全局提交队列的存储模块的角度将数据写入存储模块的方法。
在步骤400中,从结构接收单播写入请求(即,在步骤306中由结构发出的写入请求)。
在步骤402中,将与写入请求相关联的数据存储在“主”存储模块的缓冲器中。
在步骤404中,从结构接收单播提交请求(即,在步骤312中由结构发出的提交请求)。
在步骤406中,将单播提交请求放置在单个全局提交队列中。在本技术的一个实施例中,提交请求包括或者以其他方式与客户端标识符相关联。在相应提交回复的生成和/或处理中使用客户端标识符(参见例如图4,步骤414)。
在步骤408中,基于先进先出机制来处理全局提交队列中的提交请求,以便保持处理顺序。处理提交请求的结果是将数据存储在永久性存储器中的主分区中的位置中。换句话说,数据写入永久性存储器的顺序由处理提交请求的顺序决定,而不是由存储模块接收写入请求(和/或数据)的顺序决定。
在步骤410中,主存储模块生成N-1个提交请求,并经由结构将其发送到N-1个从存储模块。例如,考虑存在三个存储模块(SM1、SM2、SM3),并且数据副本要存储在<对象ID 1,偏移3>的每个存储模块上的情况。此外,假定SM 1是<对象ID 1,偏移3>的主存储模块。在这种情况下,SM1生成两个提交请求-一个发送给SM2,并且另一个发送给SM3。在本技术的一个实施例中,在步骤408中将数据存储在永久性存储器的主分区中可以与步骤410并行执行。
在步骤412中,经由结构从从存储模块接收N-1个提交回复,并将其存储在主存储模块上的全局完成队列中。继续该示例,从步骤410开始,SM1(在该示例中是主存储模块)将从SM2接收一个提交回复,并且从SM3接收一个提交回复(假定提交回复被成功处理)。本领域技术人员将认识到,在某些情况下,在所有提交请求被发送到从存储模块之前,由主存储模块可以接收到一个或多个提交回复。例如,主存储模块将提交请求发送到从存储模块1,并在向子存储模块2发送提交请求之前从从存储模块1接收对应的提交回复。
继续图4的讨论,在步骤414中,由主存储模块生成提交回复并将其发送到结构。在本技术的一个实施例中,提交回复是至少部分地基于与对应的提交请求(即,在步骤404中接收的提交请求)相关联的客户端标识符生成的。如果从N-1个从存储模块接收到N-1个提交回复并且步骤408中的提交请求被主存储模块成功处理,则可以仅由主存储模块生成提交回复。
图5示出了根据本技术的一个或多个实施例的从具有单个全局提交队列的从存储模块的角度将数据写入存储模块的方法。
在步骤500中,从结构接收单播写入请求(即,在步骤306中由结构发布的写入请求)。
在步骤502中,将与写入请求相关联的数据存储在存储模块的缓冲区中。
在步骤504中,从结构接收单播提交请求(即,在步骤410中由主存储模块发出的提交请求)。
在步骤506中,将单播提交请求放置在单个全局提交队列中。在本技术的一个实施例中,提交请求包括或者以其他方式与客户端标识符相关联。在对应的提交回复的生成和/或处理中使用客户端标识符(参见例如图5,步骤510)。
在步骤508中,基于先进先出机制来处理全局提交队列中的提交请求,以便保持处理顺序。换句话说,数据写入永久性存储器的顺序由处理提交请求的顺序决定,而不是由存储模块接收写入请求(和/或数据)的顺序决定。
处理提交请求的结果是将数据存储在永久性存储器中。更具体地说,考虑从存储模块从主存储模块接收写入请求1(WR1)并且随后接收提交请求1(CR1)的情况。处理CR1的结果是将与WR1相关联的数据从存储模块中的缓冲器复制到存储模块中的永久性存储器中的对应从分区中的位置。
在步骤510中,生成对应于在步骤504中接收到的提交请求的提交回复,并经由结构将其发送到主存储模块。在本技术的一个实施例中,提交回复是至少部分地基于与对应的提交请求相关联的客户端标识符来生成的。
在本技术的一个实施例中,步骤500-506与步骤508-510并行执行。具体而言,步骤500-506导致全局提交队列的填充,而步骤508-510导致处理全局提交队列中的提交请求。本领域的技术人员将会理解,可以对于每个<对象ID,偏移>并行执行图5中所示的方法。
关于图4和图5中的全局提交队列中的提交请求的处理,本领域技术人员将认识到,用于任何存储模块的全局提交队列可以包括源自一个或多个客户端的提交请求以及源自一个或多个主存储模块的提交请求。在提交请求来自客户端的情况下,提交请求的处理根据图4执行而如果从主存储模块接收到提交请求则根据图5执行提交请求的处理。
此外,虽然已经关于在主存储模块中使用单个全局提交队列和在每个从存储模块中使用单个全局提交队列描述了图4和图5,但是本技术的实施例可以使用以下来实现:(i)一组提交队列和(ii)一组完成队列。该组提交队列可以包括针对每个客户端的每个客户端提交队列和针对每个从其接收到提交请求的主存储模块的每个主存储模块提交队列。此外,该组完成队列可以包括针对每个从其接收到提交回复的从存储模块的每个从存储模块完成队列。
在本技术的这样的实施例中,每个提交请求包括全局排序标签或者以其他方式与全球排序标签相关联。全局排序标签用于维护由存储模块接收到的提交请求的全局处理顺序。全局排序标签可以被存储模块控制器添加到提交请求(或以其他方式与提交请求相关联)。此外,基于全局排序标签处理每个客户端提交队列中的提交请求,以便保持存储模块中的全局处理顺序。
本领域的技术人员将理解,可以使用其他方案来组织提交队列和/或完成队列,而不偏离本技术。
图6示出了根据本技术的一个或多个实施例的示例系统。该示例并不打算限制该技术的范围。
转到该示例,考虑其中客户端想要将三个数据副本存储在存储设备中的情况。为了将三个数据副本存储在存储设备中,客户端发出具有多播地址和数据的写入请求,并将该请求发送到结构。该结构响应于接收到写入请求而生成并发出三个写入请求。这导致在每个存储模块(存储模块1、存储模块2、存储模块3)中的缓冲器(未示出)中存储数据的一个副本。
客户端随后生成提交请求(提交请求A)。在这个示例中,假设数据被写入<对象5,偏移3>,并且主存储模块(如使用一致散列函数确定的)是存储模块1。因此,提交请求经由结构被发送到存储模块1。
响应于接收到提交请求A,存储模块1将提交请求A存储在存储模块1中的提交队列(未示出)中。提交请求A随后由存储模块1处理,导致数据的副本(当前在存储模块1中的缓冲器中)存储在存储模块1中的永久性存储器的主分区1A中的位置中。存储模块1还生成两个提交请求(提交请求B和提交请求C)。存储模块1然后经由结构将提交请求B发送到存储模块2并且将提交请求C发送到存储模块3。如上所述,提交请求A的处理可以与提交请求B和提交请求C的生成和传输并行地执行。
响应于接收到提交请求B,存储模块2将提交请求B存储在存储模块2中的提交队列(未示出)中。提交请求B随后由存储模块2处理,导致数据的副本(当前在存储模块2中的缓冲器中)被存储在存储模块2中的永久性存储器的从分区2A中的位置中。在提交请求B已经被处理之后,存储模块2经由结构生成提交回复B并且将其传输到存储模块1。
响应于接收到提交请求C,存储模块3将提交请求C存储在存储模块3中的提交队列(未示出)中。提交请求C随后由存储模块3处理,导致数据的副本(当前在存储模块3中的缓冲器中)被存储在存储模块3中的永久性存储器的从分区3A中的位置中。在提交请求C已经被处理之后,存储模块3经由结构生成提交回复C并且将其传输到存储模块1。
返回到存储模块1,存储模块1接收提交回复B和提交回复C并且将其存储在完成队列中。一旦提交请求A已被处理并且已经接收到提交回复B和C,存储模块A就经由结构生成提交回复A并将其传输到客户端。
尽管已经关于有限数量的实施例描述了本技术,但是受益于本公开的本领域技术人员将会理解,可以设计出不偏离在此公开的技术范围的其他实施例。因此,本技术的范围应仅由所附权利要求来限定。

Claims (16)

1.一种用于处理写入请求的方法,包括:
由第一存储模块接收来自客户端的第一提交请求,其中所述第一提交请求与第一数据相关联并且包括地址,其中所述地址是通过将一致散列函数应用于至少对象标识符和与所述第一数据相关联的偏移而生成的,其中所述地址与所述第一存储模块相关联;
响应于接收到所述第一提交请求:
处理所述第一提交请求,其中处理所述第一提交请求使得所述第一数据的第一副本被存储在所述第一存储模块中的永久性存储器中,其中所述第一数据的第一副本是在所述第一存储模块接收所述第一提交请求之前由所述第一存储模块从所述客户端接收的;
由所述第一存储模块生成针对第二存储模块的第二提交请求;
向所述第二存储模块发送所述第二提交请求;
从所述第二存储模块接收指示所述第一数据的第二副本被存储在所述第二存储模块中的永久性存储器中的第一提交回复,其中所述第一数据的第二副本是在所述第一存储模块接收所述第一提交请求之前由所述第二存储模块从所述客户端接收的;
响应于接收到所述第一提交回复并且在处理所述第一提交请求之后,由所述第一存储模块生成对应于所述第一提交请求的第二提交回复;和
向所述客户端发送所述第二提交回复。
2.根据权利要求1所述的方法,还包括:
由所述第一存储模块从所述第二存储模块接收第三提交请求,其中所述第三提交请求与第二数据相关联;
处理所述第三提交请求,其中处理所述第三提交请求使得所述第二数据的第一副本存储在所述第一存储模块中的所述永久性存储器的从分区中,
其中所述从分区与所述第二存储模块上的主分区相关联。
3.根据权利要求2所述的方法,还包括:
在接收到所述第二提交请求之前:
从所述客户端接收所述第二数据的第二副本;和
将所述第二数据的所述第二副本临时存储在所述第一存储模块中的缓冲器中。
4.根据权利要求1所述的方法,其中处理所述第一提交请求包括:
将所述第一提交请求存储在全局提交队列中,其中所述全局提交队列维护由所述第一存储模块接收到的所有提交请求的顺序,
其中基于所述顺序来处理所述第一提交请求。
5.根据权利要求1所述的方法,其中处理所述第一提交请求包括:
将所述第一提交请求存储在与所述客户端相关联的客户端提交队列中,其中所述第一提交请求与全局排序标签相关联,
其中所述第一提交请求是基于由所述全局排序标签指定的顺序来处理的。
6.根据权利要求1所述的方法,其中所述第一提交请求是由所述客户端从可操作地连接到所述客户端和所述第一存储模块的结构接收的。
7.根据权利要求6所述的方法,其中使用所述结构向所述第二存储模块发送所述第二提交请求。
8.根据权利要求6所述的方法,其中所述结构是高速外围组件互连PCIe结构。
9.根据权利要求1所述的方法,其中所述第一存储模块中的所述永久性存储器包括相变存储器。
10.一种存储设备,包括:
结构;
存储阵列,其可操作地连接到所述结构并且包括第一存储模块和第二存储模块,
其中所述第一存储模块被配置为:
经由所述结构接收来自客户端的第一提交请求,其中所述第一提交请求与第一数据相关联并且包括地址,其中所述地址是通过将一致散列函数应用于至少对象标识符和与所述第一数据相关联的偏移而生成的,其中所述地址与所述第一存储模块相关联;
响应于接收到所述第一提交请求:
处理所述第一提交请求,其中处理所述第一提交请求使得所述第一数据的第一副本被存储在所述第一存储模块中的永久性存储器中,其中所述第一数据的第一副本是在所述第一存储模块接收所述第一提交请求之前由所述第一存储模块从所述客户端接收的;
生成针对所述第二存储模块的第二提交请求;
经由所述结构向所述第二存储模块发送所述第二提交请求;
经由所述结构从所述第二存储模块接收指示所述第一数据的第二副本被存储在所述第二存储模块中的永久性存储器中的第一提交回复,其中所述第一数据的第二副本是在所述第一存储模块接收所述第一提交请求之前由所述第二存储模块从所述客户端接收的;
响应于接收到所述第一提交请求并且在处理所述第一提交请求之后,生成对应于所述第一提交请求的第二提交回复;和
经由所述结构向所述客户端发送所述第二提交回复。
11.根据权利要求10所述的存储设备,其中所述第一存储模块还被配置为:
从所述第二存储模块接收第三提交请求,其中所述第三提交请求与第二数据相关联;并且
处理所述第三提交请求,其中处理所述第三提交请求使得所述第二数据的第一副本存储在所述第一存储模块中的所述永久性存储器的从分区中,
其中所述从分区与所述第二存储模块上的主分区相关联。
12.根据权利要求11所述的存储设备,其中所述第一存储模块还被配置为:
在接收到所述第三提交请求之前:
从所述客户端接收所述第二数据的第二副本;和
将所述第二数据的所述第二副本临时存储在所述第一存储模块中的缓冲器中。
13.根据权利要求10所述的存储设备,其中处理所述第一提交请求包括:
将所述第一提交请求存储在全局提交队列中,其中所述全局提交队列维护由所述第一存储模块接收到的所有提交请求的顺序,
其中基于所述顺序来处理所述第一提交请求。
14.根据权利要求10所述的存储设备,其中处理所述第一提交请求包括:
将所述第一提交请求存储在与所述客户端相关联的客户端提交队列中,其中所述第一提交请求与全局排序标签相关联,
其中所述第一提交请求是基于由所述全局排序标签指定的顺序来处理的。
15.根据权利要求10所述的存储设备,其中所述结构是高速外围组件互连PCIe结构。
16.根据权利要求10所述的存储设备,其中所述第一存储模块中的所述永久性存储器包括相变存储器。
CN201810390073.4A 2017-04-28 2018-04-27 使用目标协作的快速排序写入的方法和系统 Active CN108804355B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/581,707 US10614019B2 (en) 2017-04-28 2017-04-28 Method and system for fast ordered writes with target collaboration
US15/581,707 2017-04-28

Publications (2)

Publication Number Publication Date
CN108804355A CN108804355A (zh) 2018-11-13
CN108804355B true CN108804355B (zh) 2023-11-07

Family

ID=63917282

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810390073.4A Active CN108804355B (zh) 2017-04-28 2018-04-27 使用目标协作的快速排序写入的方法和系统

Country Status (2)

Country Link
US (1) US10614019B2 (zh)
CN (1) CN108804355B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10564898B2 (en) * 2018-06-11 2020-02-18 Western Digital Technologies, Inc. System and method for storage device management
US11880598B2 (en) 2021-07-08 2024-01-23 EMC IP Holding Company LLC Request manager framework

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5708668A (en) 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
US6415355B1 (en) 1998-05-11 2002-07-02 Kabushiki Kaisha Toshiba Combined disk array controller and cache control method for parity generation mode and data restoration mode
US6351838B1 (en) 1999-03-12 2002-02-26 Aurora Communications, Inc Multidimensional parity protection system
US6742081B2 (en) 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
US7543100B2 (en) 2001-06-18 2009-06-02 3Par, Inc. Node controller for a data storage system
US20030093740A1 (en) 2001-10-19 2003-05-15 Nebojsa Stojanovic Iterative hard decoding method for multidimensional SPC
US7180732B2 (en) 2002-11-06 2007-02-20 Disk Dynamix Mounting apparatus for storage devices
KR20040066638A (ko) 2003-01-20 2004-07-27 삼성전자주식회사 외부 저장 서브 시스템에서의 패리티 저장 방법 및에러블록 복구 방법
GB2400935B (en) 2003-04-26 2006-02-15 Ibm Configuring memory for a raid storage system
US7149847B2 (en) 2003-06-26 2006-12-12 Adaptec, Inc. RAID 6 disk array architectures
CN101566931B (zh) 2003-08-14 2011-05-18 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
US7644197B1 (en) 2003-10-15 2010-01-05 Sun Microsystems, Inc. Queue management by multiple processors
JP4595342B2 (ja) 2004-02-19 2010-12-08 日本電気株式会社 記憶装置のデータ書き込み、読み出し方法およびデータ記憶システム
US7490083B2 (en) 2004-02-27 2009-02-10 International Business Machines Corporation Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates
US7191388B1 (en) 2004-03-01 2007-03-13 Lattice Semiconductor Corporation Fast diagonal interleaved parity (DIP) calculator
US7237062B2 (en) 2004-04-02 2007-06-26 Seagate Technology Llc Storage media data structure system and method
US7406621B2 (en) 2004-04-02 2008-07-29 Seagate Technology Llc Dual redundant data storage format and method
US7594075B2 (en) 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US7496735B2 (en) * 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
JP2008533564A (ja) 2005-02-24 2008-08-21 ゼラウンド システムズ リミテッド データ管理のための方法および装置
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7519859B2 (en) * 2005-08-30 2009-04-14 International Business Machines Corporation Fault recovery for transaction server
US7934120B2 (en) 2006-09-11 2011-04-26 International Business Machines Corporation Storing data redundantly
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7831768B2 (en) 2006-11-03 2010-11-09 Hewlett-Packard Development Company, L.P. Method and apparatus for writing data to a disk array
US7711678B2 (en) 2006-11-17 2010-05-04 Microsoft Corporation Software transaction commit order and conflict management
US7788526B2 (en) 2007-01-10 2010-08-31 International Business Machines Corporation Providing enhanced tolerance of data loss in a disk array system
JP4798285B2 (ja) * 2007-03-23 2011-10-19 富士通株式会社 パケットの伝送品質計測方法、およびパケット受信計測装置
US7752389B1 (en) 2007-06-20 2010-07-06 Emc Corporation Techniques for determining physical data layout of RAID devices
US7849356B2 (en) 2008-01-17 2010-12-07 International Business Machines Corporation Parity data management system apparatus and method
US8049980B1 (en) 2008-04-18 2011-11-01 Network Appliance, Inc. Partial disk failures and improved storage resiliency
CN101604267B (zh) 2008-06-09 2012-05-30 普安科技股份有限公司 独立磁盘冗余阵列系统
JP4978576B2 (ja) 2008-07-03 2012-07-18 株式会社Jvcケンウッド 符号化方法および符号化装置ならびに復号方法および復号装置
US8078906B2 (en) 2008-08-21 2011-12-13 Infinidat, Ltd. Grid storage system and method of operating thereof
US8626709B2 (en) * 2008-09-26 2014-01-07 Codefutures Corporation Scalable relational database replication
US8645749B2 (en) 2009-02-04 2014-02-04 Micron Technology, Inc. Systems and methods for storing and recovering controller data in non-volatile memory devices
US8145840B2 (en) 2009-06-05 2012-03-27 Lsi Corporation Method and system for storing excess data in a redundant array of independent disk level 6
US8463826B2 (en) 2009-09-03 2013-06-11 Apple Inc. Incremental garbage collection for non-volatile memories
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8214560B2 (en) * 2010-04-20 2012-07-03 International Business Machines Corporation Communications support in a transactional memory
US8489979B2 (en) 2010-05-28 2013-07-16 Seagate Technology Llc Methods and devices to reduce outer code failure rate variability
US8677063B2 (en) 2010-07-30 2014-03-18 International Business Machines Corporation Parity declustered storage device array with partition groups
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8782339B2 (en) 2010-10-11 2014-07-15 Open Invention Network, Llc Storage system having cross node data redundancy and method and computer readable medium for same
CN101980137B (zh) 2010-10-19 2012-05-30 成都市华为赛门铁克科技有限公司 廉价磁盘冗余阵列重构方法、装置及系统
US8782340B2 (en) 2010-12-06 2014-07-15 Xiotech Corporation Hot sheet upgrade facility
US8719520B1 (en) 2010-12-14 2014-05-06 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
JP5367686B2 (ja) 2010-12-24 2013-12-11 株式会社東芝 データ記憶装置、メモリ制御装置及びメモリ制御方法
US8560772B1 (en) 2010-12-29 2013-10-15 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices
US9104327B2 (en) 2011-05-17 2015-08-11 Sandisk Technologies Inc. Fast translation indicator to reduce secondary address table checks in a memory device
US9519555B2 (en) * 2011-05-23 2016-12-13 Microsoft Technology Licensing, Llc Synchronous replication in a distributed storage environment
US20120324156A1 (en) 2011-06-17 2012-12-20 Naveen Muralimanohar Method and system of organizing a heterogeneous memory architecture
US9069657B2 (en) 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
CN103577111B (zh) 2012-07-23 2017-05-31 上海宝存信息科技有限公司 基于非易失性存储器的动态独立冗余阵列存储系统及方法
US8464095B1 (en) 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance
CN103019617A (zh) 2012-11-25 2013-04-03 向志华 高效实现ssd内部raid的构建方法、数据读写方法及装置
TWI500272B (zh) 2012-12-03 2015-09-11 Nat Univ Tsing Hua 資料偵錯系統及其方法
US8554997B1 (en) 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid
US9778943B2 (en) 2013-05-28 2017-10-03 Red Hat Israel, Ltd. Timer based virtual processor scheduling and suspension on physical processor for use of physical processor by other processing
US9529674B2 (en) 2013-06-18 2016-12-27 Dell Product, LP Storage device management of unrecoverable logical block addresses for RAID data regeneration
US9552242B1 (en) 2013-09-25 2017-01-24 Amazon Technologies, Inc. Log-structured distributed storage using a single log sequence number space
US8924776B1 (en) 2013-12-04 2014-12-30 DSSD, Inc. Method and system for calculating parity values for multi-dimensional raid
CN103902465B (zh) 2014-03-19 2017-02-08 华为技术有限公司 一种固态硬盘垃圾回收的方法、系统和固态硬盘控制器
US10523753B2 (en) 2014-05-06 2019-12-31 Western Digital Technologies, Inc. Broadcast data operations in distributed file systems
US9389787B2 (en) * 2014-05-15 2016-07-12 Netapp, Inc. System and method for simulating a persistent byte addressable storage device on a persistent block addressable storage device
TWI567554B (zh) 2014-11-06 2017-01-21 慧榮科技股份有限公司 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置
US9558847B2 (en) 2014-11-21 2017-01-31 Sandisk Technologies Llc Defect logging in nonvolatile memory
US20160210060A1 (en) 2015-01-21 2016-07-21 HGST Netherlands B.V. Dynamic resource allocation within storage devices
US9436608B1 (en) 2015-02-12 2016-09-06 International Business Machines Corporation Memory nest efficiency with cache demand generation
US10248463B2 (en) 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
US9864710B2 (en) * 2015-03-30 2018-01-09 EMC IP Holding Company LLC Writing data to storage via a PCI express fabric having a fully-connected mesh topology
US10466913B2 (en) 2015-04-29 2019-11-05 EMC IP Holding Company LLC Method and system for replicating and using grid level metadata in a storage system
CN106406987B (zh) 2015-07-29 2020-01-03 阿里巴巴集团控股有限公司 一种集群中的任务执行方法及装置
US10387649B2 (en) 2015-10-31 2019-08-20 Quick Heal Technologies Private Limited Detecting malware when executing in a system
US10261902B2 (en) * 2016-01-04 2019-04-16 Toshiba Memory Corporation Parallel processing of a series of data units for writing
US10095414B2 (en) 2016-03-07 2018-10-09 Toshiba Memory Corporation Memory system including a controller and a nonvolatile memory having memory blocks
US9760493B1 (en) 2016-03-14 2017-09-12 Vmware, Inc. System and methods of a CPU-efficient cache replacement algorithm
US10248327B2 (en) 2016-04-01 2019-04-02 SK Hynix Inc. Throttling for a memory system using a GC/HOST ratio and operating method thereof
US20170300249A1 (en) 2016-04-15 2017-10-19 Western Digital Technologies, Inc. Validity tracking for garbage collection
US10031810B2 (en) * 2016-05-10 2018-07-24 International Business Machines Corporation Generating a chain of a plurality of write requests
US20170351604A1 (en) 2016-06-02 2017-12-07 Futurewei Technologies, Inc. Host and garbage collection write ratio controller
US20180032333A1 (en) 2016-07-31 2018-02-01 Mark Kenneth Sullivan Atomic Line Multi-Tasking
KR20180104830A (ko) 2017-03-14 2018-09-27 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법

Also Published As

Publication number Publication date
CN108804355A (zh) 2018-11-13
US10614019B2 (en) 2020-04-07
US20180314663A1 (en) 2018-11-01

Similar Documents

Publication Publication Date Title
CN110232036B (zh) 主机系统及其方法和加速模块
US10540323B2 (en) Managing I/O operations in a storage network
US11216443B2 (en) Processing device configured for data integrity testing utilizing signature-based multi-phase write operations
US9921756B2 (en) Method and system for synchronizing an index of data blocks stored in a storage system using a shared storage module
US11249834B2 (en) Storage system with coordinated recovery across multiple input-output journals of different types
CN106933503B (zh) 在基于哈希的存储系统中从异步到同步复制的一致转变
KR20160046729A (ko) 키-값 저장 엔진 및 그것의 효과적인 키 충돌 관리 방법
EP3089045A1 (en) Multi-bank memory with one read port and one or more write ports per cycle
US10534541B2 (en) Asynchronous discovery of initiators and targets in a storage fabric
US10338813B2 (en) Storage controller and using method therefor
CN107430584B (zh) 经由具有完全连接网格拓扑的pci express结构从存储读取数据
CN108804355B (zh) 使用目标协作的快速排序写入的方法和系统
US20160034191A1 (en) Grid oriented distributed parallel computing platform
CN107533526B (zh) 经由具有完全连接网格拓扑的pci express结构向存储写入数据
US20190042133A1 (en) Technologies for providing adaptive data access request routing in a distributed storage system
CN105765542B (zh) 访问文件的方法、分布式存储系统和存储节点
CN108804029B (zh) 使用原子多播的快速排序写入的方法和系统
US11494405B2 (en) Lock contention resolution for active-active replication performed in conjunction with journal recovery
US20240069766A1 (en) Selective data map unit access
US20240184722A1 (en) Memory commands for multi-host communications
CN107155307B (zh) 访问文件的方法、系统和主机

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