CN104516793A - 数据镜像控制设备和方法 - Google Patents

数据镜像控制设备和方法 Download PDF

Info

Publication number
CN104516793A
CN104516793A CN201410509938.6A CN201410509938A CN104516793A CN 104516793 A CN104516793 A CN 104516793A CN 201410509938 A CN201410509938 A CN 201410509938A CN 104516793 A CN104516793 A CN 104516793A
Authority
CN
China
Prior art keywords
data
storage device
write
order
sent
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
Application number
CN201410509938.6A
Other languages
English (en)
Other versions
CN104516793B (zh
Inventor
李柱坪
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN104516793A publication Critical patent/CN104516793A/zh
Application granted granted Critical
Publication of CN104516793B publication Critical patent/CN104516793B/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/14Handling requests for interconnection or transfer
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2087Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/825Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking

Abstract

提供一种数据镜像控制设备和方法。所述数据镜像控制设备包括:命令分发单元,被构造为将第一写入命令发送到多个镜像存储装置,第一写入命令包括用于主机所请求写入的数据的指令;内存锁定设置单元,被构造为对存储在主机存储器中的数据之中主机所请求写入的数据设置内存锁定,并被构造为在具有内存锁定的数据被写入到所述多个镜像存储装置之后解除对数据的内存锁定。

Description

数据镜像控制设备和方法
本申请要求于2013年9月27日提交到韩国知识产权局的第10-2013-0115579号韩国专利申请的优先权,所述专利申请的公开内容通过引用全部合并于此。
技术领域
本发明构思的至少一个示例实施例涉及数据镜像技术。
背景技术
几十年来,硬盘驱动器(HDD)已经被用作典型存储装置。HDD的示例是使用以特定速度旋转的磁盘的磁头执行读取/写入操作的机械装置。考虑到其容量,HDD可以相对地便宜。然而,由于HDD的读取/写入性能取决于磁盘的旋转速度,因此HDD的读取/写入性能(特别是随机读取/写入性能)可比基于半导体的存储装置的读取/写入性能(特别是随机读取/写入性能)更加受限。另外,HDD可比基于半导体的存储装置具有更高的故障率。存储装置中的故障是有害的,因为其能够导致用户数据的丢失。
为了克服HDD的受限制的性能和可靠性,已经广泛地使用了独立磁盘冗余阵列(RAID)技术。RAID技术通过连接多个HDD装置形成HDD阵列,并将读取/写入操作适当地分布在HDD阵列中。RAID技术根据HDD装置之间的数据排列策略被分类为多种具体技术,例如,RAID 0(条带化)、RAID 1(镜像)、RAID 5(具有分布式奇偶校验的条带化)、RAID 10(镜像和条带化)等。具体地讲,镜像技术可包括将相同的数据存储在两个或更多个HDD中。因此,即使所述两个或更多个HDD中的一个HDD发生故障,也可因为还没有发生故障的HDD能够持续地提供数据服务而防止数据丢失。
同时,对固态驱动器(SSD)的利用正在持续地增加。SSD与HDD兼容,并可比HDD具有更好的性能和可靠性。与HDD不同,SSD可不具有机械装置。因此,SSD可比HDD具有更低的故障率。此外,SSD的读取/写入性能(具体地讲,随机读取/写入性能)可高于HDD的读取/写入性能。虽然SSD可在性能和可靠性方面优于HDD,但是RAID技术也能够通过形成SSD阵列而应用于SSD,以实现额外性能提高或者防止由于SSD的故障而导致的数据丢失。
发明内容
本发明构思的至少一个示例实施例提供一种数据镜像控制设备和方法。
本发明构思的至少一个示例实施例提供一种数据镜像控制设备,包括:命令分发单元,将主机所请求写入的数据的写入命令发送到多个镜像存储装置;内存锁定设置单元,对存储在主机存储器中的数据之中主机所请求写入的数据设置内存锁定,并且在具有内存锁定的数据被写入到所述多个镜像存储装置之后解除对数据的内存锁定。
本发明构思的至少一个示例实施例提供一种数据镜像控制设备,包括:快速存储装置设置单元,将多个镜像存储装置中的至少一个设置为快速存储装置;命令分发单元,将主机所请求写入的数据的写入命令发送到快速存储装置;内存锁定设置单元,对存储在主机存储器中的数据之中主机所请求写入的数据设置内存锁定,并且在具有内存锁定的数据被写入到所述多个镜像存储装置之后解除对数据的内存锁定。
本发明构思的至少一个示例实施例提供一种数据镜像控制方法,包括:将主机所请求写入的数据的写入命令发送到多个镜像存储装置;对存储在主机存储器中的数据之中主机所请求写入的数据设置内存锁定,并且在具有内存锁定的数据被写入到所述多个镜像存储装置之后解除对数据的内存锁定。
本发明构思的至少一个示例实施例提供一种数据镜像控制方法,包括:将多个镜像存储装置中的至少一个设置为快速存储装置;将主机所请求写入的数据的写入命令发送到快速存储装置;对存储在主机存储器中的数据之中主机所请求写入的数据设置内存锁定,并且在具有内存锁定的数据被写入到所述多个镜像存储装置之后解除对数据的内存锁定。
本发明构思的至少一个示例实施例提供一种数据镜像控制设备,包括:命令分发单元,将主机所请求写入的数据的写入命令发送到多个镜像存储装置,并在请求的数据被写入到所述多个镜像存储装置之一之后,发送请求的数据的写入完成消息;修剪命令发送单元,基于与将请求的数据写入到所述多个镜像存储装置之一的写入有关的信息,将修剪命令发送到未接收到请求的数据的写入命令的存储装置。
本发明构思的至少一个示例实施例提供一种数据镜像控制设备,包括:命令分发单元,被构造为响应于来自主机的写入请求将第一写入命令发送到多个镜像存储装置,其中,第一写入命令指示所述多个镜像存储装置存储请求的数据,请求的数据是在主机存储的第一数据,写入请求表示第一数据被写入到所述多个镜像存储装置中的至少一个存储装置的请求;内存锁定设置单元,被构造为响应于写入请求对位于主机中的第一数据设置内存锁定,并被构造为响应于第一数据被写入到所述多个镜像存储装置,解除对位于主机中的第一数据的内存锁定。
命令分发单元可被构造为在接收到表示所述多个镜像存储装置中的第一镜像存储装置完成第一数据的写入的写入完成消息之后,将第二写入命令发送到第一镜像存储装置,其中,第一镜像存储装置是所述多个镜像存储装置中的相对于所述多个镜像存储装置中的其余镜像存储装置在最早的时间点完成第一数据的写入的存储装置。
内存锁定设置单元可被构造为响应于确定所述多个镜像存储装置中的接收到第一写入命令且未被禁用的每个装置已经完成第一数据的写入,解除对位于主机中的第一数据的内存锁定。
附图说明
通过参照附图详细地描述本发明构思的示例实施例,本发明构思的示例实施例的上述和其他特征和优点将变得更加清楚。附图意图描绘本发明构思的示例实施例,不应被解释为限制权利要求的预期范围。附图不用被视为按比例绘制,除非明确地指出。
图1是示出根据本发明构思的至少一个示例实施例的数据镜像存储系统的配置的示图。
图2是示出根据本发明构思的至少一个示例实施例的数据镜像控制设备的配置的示图。
图3A至图3C是示出在没有应用内存锁定的情况下数据丢失的示图。
图4A和图4B是示出设置内存锁定和发送写入完成消息的处理的示图。
图5A和图5B是示出在以非阻止方式(non-blocking manner)发送写入命令的情况下设置内存锁定和发送写入完成消息的处理的示图。
图6A和图6B是示出发送修剪命令(trim command)的处理的示图。
图7A至图7C是示出快速存储装置的示图。
图8是示出在主机发生故障的情况下数据恢复的示图。
图9是示出在多个存储装置包括固态驱动器(SSD)和硬盘驱动器(HDD)的情况下数据镜像控制的示图。
图10是示出根据本发明构思的至少一个示例实施例的设置内存锁定的处理的流程图。
图11是示出根据本发明构思的至少一个示例实施例的发送写入命令和写入完成消息的处理的流程图。
图12是示出根据本发明构思的至少一个示例实施例的发送写入命令和写入完成消息的处理的流程图。
图13是示出根据本发明构思的至少一个示例实施例的改变快速存储装置的处理的流程图。
图14是示出根据本发明构思的至少一个示例实施例的改变快速存储装置的处理的流程图。
图15是示出根据本发明构思的至少一个示例实施例的改变快速存储装置的处理的流程图。
图16是示出根据本发明构思的至少一个示例实施例的在快速存储装置发生故障的情况下数据恢复处理的流程图。
图17是示出根据本发明构思的至少一个示例实施例的在主机发生故障的情况下数据恢复处理的流程图。
具体实施方式
这里公开本发明构思的详细示例实施例。然而,出于描述本发明构思的示例实施例的目的,这里公开的特定结构和功能细节仅是代表。然而,本发明构思的示例实施例可以以多种替代形式实现,并且不应被解释为仅限于这里阐述的实施例。
因此,虽然本发明构思的示例实施例能够具有各种修改和替代形式,但是本发明构思的实施例在附图中通过示例的方式被示出并且将在这里被详细地描述。然而,应当理解的是,不意图将本发明构思的示例实施例限制到所公开的具体形式,而是相反,本发明构思的示例实施例将涵盖落入本发明构思的示例实施例的范围内的所有修改、等同物和替代。贯穿附图的描述,相同的标号表示相同的元件。
将理解的是,虽然术语“第一”、“第二”等可在这里用于描述各种元件,但是这些元件不应受这些术语限制。这些术语仅用于区分一个元件与另一元件。例如,在不脱离本发明构思的示例实施例的范围的情况下,第一元件可被命名为第二元件,类似地,第二元件可被命名为第一元件。如这里使用的,术语“和/或”包括相关联列出项目中的一个或更多个的任何和所有组合。
将理解的是,当元件被称为“连接”或“耦合”到另一元件时,其可直接连接或耦合到该另一元件,或者可存在中间元件。相反,当元件被称为“直接连接”或“直接耦合”到另一元件时,不存在中间元件。用于描述元件之间的关系的其他词语应以类似的方式被解释(例如,“在…之间”对“直接在…之间”、“相邻”对“直接相邻”等)。
这里使用的术语仅是为了描述特定实施例的目的,不意图限制本发明构思的示例实施例。如这里使用的,除非上下文另外明确地指示,否则单数形式还意图包括复数形式。将进一步理解的是,当在这里使用时,术语“包括”和/或“包含”指定存在所陈述的特征、整体、步骤、操作、元件和/或组件,但是不排除存在或添加一个或更多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。
还应注意的是,在一些替代实施方式中,所记录的功能/动作可以不按附图中所述的顺序发生。例如,根据涉及的功能/动作,连续示出的两幅附图事实上可以基本上同时被执行或者有时可以按相反的顺序被执行。
为了便于描述,诸如“在…之下”、“在…下方”、“下面”、“在…上方”、“上面”等的空间相对术语可在这里用于描述附图中示出的一个元件或特征与另一元件或特征的关系。将理解的是,除了附图中描绘的方位之外,空间相对术语还意图包含装置在使用或操作中的不同方位。例如,如果附图中的装置被翻转,则被描述为“在”其他元件或特征“下方”或“在”其他元件或特征“之下”的元件将随后被定向为“在”所述其他元件或特征“上方”。因此,示例性术语“在…下方”可包含上方和下方两个方位。装置可另外被定向(旋转90度或在其他方位)并且这里使用的空间相对描述符被相应地解释。
这里参照截面图示(和中间结构)描述实施例,所述截面图示是理想化实施例的示意性图示。如此,将预期由例如制造技术和/或容差导致的图示的形状的变化。因此,这些实施例不应被解释为限于这里示出的区域的特定形状,而是应包括例如制造所导致的形状上的偏差。例如,通常,被示出为矩形的注入区域将在其边缘具有圆形或弯曲的特征和/或注入浓度的梯度,而不是从注入到非注入区域的二元变化。同样地,通过注入形成的掩埋区域可在掩埋区域和注入发生的表面之间的区域中导致一些注入。因此,附图中示出的区域本质上是示意性的,它们的形状不意图示出装置的区域的实际形状,也不意图限制本发明构思的示例实施例的范围。
除非另外定义,否则这里使用的所有术语(包括技术和科学术语)具有与本发明构思的示例实施例所属领域的普通技术人员通常理解的含义相同的含义。将进一步理解的是,除非这里明确地这样定义,否则诸如在通用字典中定义的那些术语应被解释为具有与在相关领域的上下文和本说明书中的含义一致的含义,并且将不被解释为理想化或过于形式化的意义。下文中,将参照附图详细地描述本发明构思的至少一些示例实施例。
图1是示出根据本发明构思的至少一个示例实施例的数据镜像存储系统的配置的示图。参照图1,数据镜像存储系统可包括数据镜像控制设备110、主机120和多个存储装置130。
多个存储装置130通过数据镜像重复地存储相同的数据,以防止数据在多个存储装置130中的一个存储装置发生故障时丢失。根据本发明构思的至少一个示例实施例,存储装置130可包括固态驱动器(SSD)的阵列。然而,本发明构思的示例实施例不限于此,存储装置130还可包括一个或更多个SSD以及一个或更多个硬盘驱动器(HDD)。
主机120可将对存储在主机存储器中的数据的写入请求发送到数据镜像控制设备110。这里,主机120可以以阻止方式(blocking manner)或非阻止方式将写入请求发送到数据镜像控制设备110。具体地讲,利用非阻止方式,主机120可不管是否已经接收到主机120先前请求写入的数据的写入完成消息而将对数据的写入请求发送到数据镜像控制设备110。另一方面,利用阻止方式,主机120不做出对数据的写入请求,直到接收到主机120先前请求写入的数据的写入完成消息为止。
数据镜像控制设备110可对存储在主机存储器(host memory,主机内存)中的数据之中主机120所请求写入的数据设置内存锁定(存储锁定)。
另外,在具有内存锁定的数据被写入到所有的镜像存储装置130之后,数据镜像控制设备110可解除对数据的内存锁定。
内存锁定可防止存储在主机存储器的特定地址处的数据之中主机120所请求写入的数据从主机存储器被擦除或在数据被写入到存储装置130之前被修改。
根据本发明构思的至少一个示例实施例,数据镜像控制设备110可将主机120所请求写入的数据的写入命令发送到存储装置130。
这里,写入命令可以以阻止方式或非阻止方式被发送到存储装置130中的每个存储装置。具体地讲,利用阻止方式,当其他数据当前正被写入到存储装置130时,数据镜像控制设备110可不发送数据的写入命令。一旦其他数据被写入到存储装置130,数据镜像控制设备110就可发送数据的写入命令。
另一方面,利用非阻止方式,数据镜像控制设备110可不管其他数据是否正被写入到存储装置130而将另一数据的写入命令发送到存储装置130中的每个存储装置。存储装置130中的每个存储装置按照命令队列存储接收到的写入命令,完成当前数据的写入,然后,通过执行存储在命令队列中的写入命令来写入其他数据。
在主机120所请求写入的数据被写入到存储装置130之一时,数据镜像控制设备110可将数据的写入完成消息发送到主机120。
根据本发明构思的至少一个示例实施例,数据镜像控制设备110可将主机120所请求写入的数据的写入命令发送到存储装置130之中被设置为快速存储装置的存储装置。具体地讲,数据镜像控制设备110可将写入命令发送到存储装置130中的每个存储装置。然后,当存储装置130之一完成对写入命令的执行时,数据镜像控制设备110可将写入完成消息发送到主机120。
根据本发明构思的至少一个其他示例实施例,数据镜像控制设备110可将写入命令发送到存储装置130之中的快速存储装置,并且当快速存储装置完成对写入命令的执行时,将写入完成消息发送到主机120。
数据镜像控制设备110可被实现为与主机120分开的设备。然而,本发明构思的示例实施例不限于此,数据镜像控制设备110还可包括在主机120中。
图2是示出根据本发明构思的至少一个示例实施例的数据镜像控制设备110的配置的示图。
参照图2,内存锁定设置单元112可对存储在主机存储器中的数据之中主机120所请求写入的数据设置内存锁定。
另外,在具有内存锁定的数据被写入到所有的存储装置130之后,内存锁定设置单元112可解除对数据的内存锁定。
换言之,在数据被写入到所有的存储装置130(不只是存储装置130中的任何一个存储装置)之后,可解除对主机120所请求写入的数据的内存锁定。
根据本发明构思的至少一个示例实施例,当从主机120接收到对数据的写入请求时,命令分发单元111可将请求的数据的写入命令发送到存储装置130中的每个存储装置。
当存储装置130之一完成对写入命令的执行时,命令分发单元111可将写入完成消息发送到主机120。
根据本发明构思的至少一个示例实施例,命令分发单元111可将主机120所请求写入的数据的写入命令发送到存储装置130之中被设置为快速存储装置的存储装置。
在此情况下,在请求的数据被写入到快速存储装置之后,命令分发单元111可将数据的写入完成消息发送到主机120。
快速存储装置设置单元113可将存储装置130中的至少一个存储装置设置为快速存储装置。这里,快速存储装置可以是存储装置130之中存储最新的数据的存储装置。
根据本发明构思的至少一个示例实施例,快速存储装置设置单元113可基于响应于写入命令的写入完成速度来将存储装置130之中的存储装置设置为快速存储装置。
具体地讲,快速存储装置设置单元113可将存储装置130之中的以最高速度写入相同数据的存储装置设置为快速存储装置。
另外,如果首先完成相同数据的写入的存储装置不是快速存储装置,则快速存储装置设置单元113可将该存储装置改变为快速存储装置。
根据本发明构思的至少一个示例实施例,快速存储装置设置单元113可将存储装置130之中的任意存储装置设置为快速存储装置,并且周期性地或非周期性地改变快速存储装置。
例如,快速存储装置设置单元113可从存储装置130中的每个存储装置周期性地接收写入加速因子(WAF)值,并将具有最高WAF值的存储装置设置为快速存储装置。WAF意指存储装置的写入速度。
作为另一示例,当快速存储装置具有写入延迟时,快速存储装置设置单元113可改变快速存储装置。
作为另一示例,当自由块由于通过快速存储装置执行写入命令而减小到预定大小或(可选地)参考大小或者更小时,快速存储装置设置单元113可改变快速存储装置。
根据本发明构思的至少一个示例实施例,可使用在存储装置130中的每个存储装置中存储的快速存储装置指示符来设置快速存储装置。具体地讲,快速存储装置设置单元113可通过将在存储装置130中的每个存储装置中存储的快速存储装置指示符的值设置为一或零来设置或改变快速存储装置。
根据本发明构思的至少一个示例实施例,当快速存储装置发生故障时,命令分发单元111可将具有内存锁定的数据的写入命令发送到没有发生故障的另一存储装置。
对数据设置的内存锁定表示数据尚未被写入到存储装置130中的至少一个存储装置。因此,当快速存储装置发生故障时,如果具有内存锁定的数据被发送到没有发生故障的另一存储装置,则可防止由于快速存储装置的故障而导致的数据的丢失。
根据本发明构思的至少一个示例实施例,当主机120发生故障时,命令分发单元111可对存储在存储装置130中的数据进行匹配。
具体地讲,当主机120由于意外故障而重新启动时,命令分发单元111可将存储在快速存储装置中的数据与存储在其他存储装置130中的数据进行比较,以确定存储在快速存储装置中的数据是否与存储在其他存储装置130中的数据匹配。
当存储在快速存储装置中的数据不与存储在其他存储装置130中的数据匹配时,命令分发单元111可基于存储在快速存储装置中的数据将重写(overwrite)命令发送到其他存储装置130,以便与存储在快速存储装置中的数据匹配。
修剪命令发送单元114可基于与将数据写入到存储装置130之一的写入有关的信息将修剪命令发送到尚未接收到数据的写入命令的存储装置。
具体地讲,可能难以或者不可能就地更新作为SSD的组件的NAND闪存。因此,为了在特定位置执行写入操作,包括所述位置的整个块应当被预先擦除。这里,不再使用的无效数据被擦除,有效数据被传送到另一块。
因此,当存储装置130之一完成数据写入时,修剪命令发送单元114通过使用修剪命令向未接收到数据的写入命令的存储装置通知无效数据区域,从而提高存储装置的性能并减少存储装置的损耗。
当被设置为快速存储装置的存储装置被改变为慢速存储装置时,垃圾回收命令发送单元115可将垃圾回收命令发送到被改变为慢速存储装置的存储装置。
具体地讲,在主机120所请求写入的数据的写入命令仅被发送到快速存储装置的情况下,写入命令不被发送到已经被改变为慢速存储装置的存储装置。在此情况下,使被改变为慢速存储装置的存储装置执行垃圾回收,以预先确保备用空间(spare space)。因此,这提高了当存储装置被再次设置为快速存储装置时存储装置的写入性能。
慢速存储装置可以是没有被设置为快速存储装置的存储装置。
图3A至图3C是示出在没有应用内存锁定的情况下数据丢失的示图。
图3A示出在主机所请求写入的数据被写入到所有镜像存储装置之后写入完成消息被发送到主机的情况的示例。在图3A的示例中,当SSD 1和SSD2完成主机所请求写入的数据的写入的时候,写入完成消息被发送到主机。
具体地讲,当具有慢写入完成速度的SSD 2完成数据1的写入时,数据1的写入完成消息被发送到主机。同样地,当具有慢写入完成速度的SSD 2完成数据2的写入时,数据2的写入完成消息被发送到主机。
主机可以以阻止方式将数据写入请求发送到SSD 1和SSD 2。具体地讲,主机可仅在接收到主机先前请求写入的数据的写入完成消息之后将对数据的写入请求发送到SSD 1和SSD 2。
在图3A的示例中,在SSD 2完成数据1的写入之后,主机将对数据2的写入请求发送到SSD 1和SSD 2。在图3A中示出的示例中,即使SSD 1在完成数据1的写入之后发生故障,由于数据1的写入完成消息未被发送到主机直到SSD 2完成数据1的写入为止,因此主机存储器中的数据1不被擦除或修改。因此,数据2的写入命令可被发送到SSD 2,从而防止数据2的丢失。
然而,即使SSD 1较早地完成数据写入,也不发送对下一数据的写入请求,直到SSD 2完成数据写入为止。因此,整个存储装置的写入完成速度降低。
图3B示出在多个镜像存储装置之一完成数据写入之后写入完成消息被立即发送到主机的情况的示例。
与图3A的情况不同,在图3B的情况下,在SSD 1和SSD 2中的任一个完成数据写入之后,写入完成消息被立即发送到主机。另外,当接收到写入完成消息时,主机发送对另一数据的写入请求(因而以阻止方式操作)。
具体地讲,由于对于主机所请求写入的数据1、2和3,SSD 1的写入完成速度快于SSD 2写入完成速度,因此,当SSD 1完成数据1、数据2和数据3中的每个数据的写入的时候,数据1、数据2和数据3中的每个数据的写入完成消息被发送到主机。
当接收到数据1的写入完成消息时,主机做出对数据2的写入请求,数据2的写入命令被发送到SSD 1。另外,当接收到数据2的写入完成消息时,主机做出对数据3的写入请求,数据3的写入命令被发送到SSD 1。
在此情况下,与图3A的情况相比,整个存储装置的写入完成速度提高。然而,如果在数据2和数据3中的每个数据的写入命令被发送到SSD 2之前SSD 1发生故障,则数据2和数据3会丢失。
具体地讲,如果主机已经接收到数据1、数据2和数据3中的每个数据的写入完成消息,则存储在主机存储器中的数据2和数据3可被擦除或修改。因此,当如图3B的示例中SSD 1在完成数据3的写入之后发生故障时,如果数据2和数据3未被保持在主机存储器中,则数据2和数据3的写入命令不能被发送到尚未接收到数据2和数据3的写入命令的SSD 2。在此情况下,数据2和数据3会丢失。
图3C示出以非阻止方式发送写入请求的情况的示例。
参照图3C,主机可在接收到写入完成消息之前做出对另一数据的写入请求。如图3C的示例中,主机可在接收到请求写入的数据1的写入完成消息之前做出与每个SSD的命令队列的深度相应的对另一数据的写入请求。
SSD 1和SSD 2中的每一个可将主机所请求写入的数据的写入命令存储在其命令队列中,然后,写入数据。另外,当SSD 1和SSD 2之一完成数据写入时,其可将写入完成消息发送到主机。
即使在此情况下,仍然存在超过命令队列的深度的数据丢失的风险。在图3C中,假设SSD 1和SSD 2中的每一个的命令队列的深度是四。在此情况下,当SSD 1完成数据1的写入时,数据1的写入完成消息被发送到主机,数据5的写入命令被发送到SSD 1的命令队列。另外,当SSD 1完成数据2的写入时,数据2的写入完成消息被发送到主机,数据6的写入命令被发送到SSD 1的命令队列。
然而,由于当SSD 1完成数据6的写入并且SSD 2的命令队列的深度是四的时候SSD 2正在写入数据1,因此数据5和数据6的写入命令不能被发送到SSD 2。
因此,当SSD 1在完成数据5和数据6的写入之后发生故障时,如果数据5和数据6未被存储在主机存储器中,则数据5和数据6的写入命令不能被发送到SSD 2。在此情况下,数据5和数据6会丢失。
图4A和图4B是示出设置内存锁定和发送写入完成消息的处理的示图。
在图4A和图4B的示例中,为了便于描述而假设多个镜像存储装置包括两个SSD。然而,本发明构思的示例实施例不限于该假设,镜像存储装置也可包括两个或更多个SSD,或者也可包括一个或更多个SSD以及一个或更多个HDD。
参照图4A,当从主机120接收到数据写入请求时,数据镜像控制设备110可对存储在主机存储器中的数据之中主机120所请求写入的数据设置内存锁定。
例如,在图4A中,当从主机120接收到对数据1的写入请求时,数据镜像控制设备110可对存储在主机存储器中的数据1设置内存锁定。同样地,当从主机120接收到对数据2至数据4中的每个数据的写入请求时,数据镜像控制设备110可对数据2至数据4中的每个数据设置内存锁定。
当SSD 1和SSD 2完成数据写入时,解除对数据的内存锁定。在图4A的示例中,由于SSD 2的数据写入完成速度慢于SSD 1的数据写入完成速度,因此数据镜像控制设备110可在SSD 2完成数据1的写入之后解除对数据1的内存锁定。另外,可在SSD 2完成数据2至数据4中的每个数据的写入之后解除对数据2至数据4中的每个数据的内存锁定。
当SSD 1和SSD 2之一完成数据写入时,数据镜像控制设备110可将数据的写入完成消息立即发送到主机120。在图4A的示例中,由于对于数据1至数据4中的每个数据,SSD 1的写入完成速度快于SSD 2的写入完成速度,因此当SSD 1完成数据1的写入时,数据镜像控制设备110将数据1的写入完成消息发送到主机120。同样地,当SSD 1完成数据2至数据4中的每个数据的写入时,数据镜像控制设备110将数据2至数据4中的每个数据的写入完成消息发送到主机120。
主机120不发送对另一数据的写入请求,直到其接收到请求写入的数据的写入完成消息为止(因而以阻止方式操作)。具体地讲,主机120仅在从数据镜像控制设备110接收到数据1的写入完成消息之后将对数据2的写入请求发送到数据镜像控制设备110。同样地,主机120仅在接收到数据2的写入完成消息之后将对数据3的写入请求发送到数据镜像控制设备110,并且仅在接收到数据3的写入完成消息之后将对数据4的写入请求发送到数据镜像控制设备110。
数据镜像控制设备110将主机120所请求写入的数据的写入命令发送到SSD 1和SSD 2。具体地讲,数据镜像控制设备110不发送下一数据的写入命令,直到先前接收的写入命令的执行完成为止(因而以阻止方式操作)。在图4A的示例中,在SSD 1完成数据1的写入之后,数据2的写入命令被发送到SSD 1。同样地,在SSD 2完成数据1的写入之后,数据2的写入命令被发送到SSD 2。
参照图4B,假设在数据2至数据4的写入命令被发送到SSD 2之前SSD1发生故障。
在此情况下,不解除对数据2至数据4中的每个数据设置的内存锁定,直到SSD 2完成数据2至数据4的写入为止。因此,数据镜像控制设备110可将存储在主机存储器中的数据2至数据4的写入命令发送到SSD 2。因此,与图3B的情况不同,可防止由于SSD 1的故障而导致的数据丢失。
换言之,保持对正被写入的数据的内存锁定,直到两个SSD全部完成对数据的写入命令的执行为止。因此,即使处理写入命令的SSD首先发生故障,也可防止数据丢失。
另外,当两个SSD之一完成数据写入时,写入完成消息被立即发送到主机120,从而可写入下一数据。这可提高整个存储装置的写入完成速度。
图5A和图5B是示出在以非阻止方式发送写入命令的情况下设置内存锁定和发送写入完成消息的处理的示图。
参照图5A,主机120可不管是否已经接收到主机120先前请求写入的其他数据的写入完成消息而将对数据的写入请求发送到数据镜像控制设备110。
另外,数据镜像控制设备110可不管SSD 1和SSD 2是否正在写入数据而将主机120所请求写入的数据的写入命令发送到SSD 1和SSD 2中的每一个。
具体地讲,主机120所请求写入的数据的写入命令被存储在SSD 1和SSD2中的每一个的命令队列中。另外,SSD 1和SSD 2中的每一个使用存储在命令队列中的写入命令来写入数据。
根据本发明构思的至少一个示例实施例,可考虑SSD 1和SSD 2中的每一个的命令队列的深度来将写入命令发送到SSD 1和SSD 2中的每一个。
在图5A的示例中,SSD 1和SSD 2中的每一个的命令队列的深度是四,数据1至数据4的写入命令首先被发送到SSD 1和SSD 2的命令队列。在SSD1完成对数据1的写入命令的执行之后,数据5的写入命令被发送到SSD 1的命令队列。另外,在SSD 1完成对数据2的写入命令的执行之后,数据6的写入命令被发送到SSD 1的命令队列。
同样地,当SSD 2完成对数据1的写入命令的执行时,数据5的写入命令被发送到SSD 2的命令队列。另外,在SSD 2完成对数据2的写入命令的执行之后,数据6的写入命令被发送到SSD 2的命令队列。
当从主机120发送了对数据1至数据6中的每个数据的写入请求时,对存储在主机存储器中的数据1至数据6中的每个数据设置内存锁定,并且当SSD 1和SSD 2完成数据1至数据6中的每个数据的写入时,解除内存锁定。
另外,当SSD 1和SSD 2之一完成主机120所请求写入的数据的写入时,数据镜像控制设备110可将数据的写入完成消息发送到主机120。
具体地讲,在图5A的示例中,当SSD 1完成数据1至数据6中的每个数据的写入时,数据镜像控制设备110可将数据1至数据6中的每个数据的写入完成消息发送到主机120。
另一方面,当所有存储装置完成数据1至数据6中的每个数据的写入时(也就是说,当在图5A中示出的示例中相对于SSD 1较慢的装置SSD 2完成数据1至数据6中的每个数据的写入时),解除对数据1至数据6中的每个数据设置的内存锁定。
参照图5B,在数据5和数据6的写入命令被发送到SSD 2的命令队列之前,SSD 1发生故障。
在此情况下,不解除对存储在主机存储器中的数据5和数据6中的每个数据设置的内存锁定,直到SSD 2完成数据5和数据6中的每个数据的写入为止。因此,数据镜像控制设备110可通过将具有内存锁定的数据5和数据6的写入命令发送到SSD 2来控制SSD 2写入数据5和数据6。
也就是说,与图3C的情况不同,即使SSD 1发生故障,由于对存储在主机存储器中的数据5和数据6中的每个数据设置的内存锁定被保持,因此具有内存锁定的数据5和数据6的写入命令也可被发送到SSD 2,从而防止数据5和数据6的丢失。
另外,当两个SSD之一完成数据写入时,数据的写入完成消息被立即发送到主机120,从而可写入下一数据。这可提高整个存储装置的写入完成速度。
图6A和图6B是示出发送修剪命令(trim command)的处理的示图。
参照图6A,在数据2的写入命令被发送到SSD 2之前,SSD 1完成数据1至数据4的写入。
这里,数据镜像控制设备110可基于与将数据2至数据4写入到SSD 1的写入有关的信息来将修剪命令发送到SSD 2。
与HDD不同,诸如SSD的基于闪存的存储装置不能立即将数据记录在非空的页中。这样的存储装置可仅在现有数据被擦除之后记录数据。具体地讲,以逐块为基础擦除SSD。因此,为了将数据重写到非空的块,从存储在该块中的数据排除了无效数据之外的数据应当被传送到另一块或SSD内的缓存,然后,存储在该块中的数据应当被擦除。
这里,如果通过使用修剪命令能够明确地通知哪个数据是无效数据,则可减小在为了重写的擦除操作期间应当被传送到另一块的数据的量。具体地讲,将相同的数据存储在SSD 1和SSD 2中。因此,如果数据2至数据4被重写到SSD 1,则在SSD 2的将写入数据2至数据4的块中存储的数据可被理解为无效数据。
例如,如果数据被重写到SSD 1的第1000块至第1500块,则在尚未执行数据2至数据4的写入命令的SSD 2的第1000块至第1500块中存储的数据是无效数据。
因此,在数据2至数据4的写入命令被发送到SSD 2之前,数据镜像控制设备110可使用修剪命令明确地通知SSD 2在数据2至数据4将被写入到的地址存储的数据是无效数据。修剪命令使SSD 2能够减小在为了重写的擦除操作期间应当被传送到其他块的数据的量,从而提高SSD 2的性能并减少SSD 2的损耗。
参照图6B,当尚未接收到数据5和数据6的写入命令的SSD 2完成对数据1的写入命令的执行的时候,SSD 1完成数据5和数据6的写入。
因此,数据镜像控制设备110可基于与将数据5和数据6写入到SSD 1的写入有关的信息来将修剪命令发送到SSD 2。
图7A至图7C是示出快速存储装置的示图。
参照图7A,数据镜像控制设备110可将对于完成主机120所请求写入的数据的写入最快的存储装置设置为快速存储装置。
具体地讲,在图7A中,由于SSD 1首先完成数据1和数据2的写入,因此SSD 1可被设置为快速存储装置。
另一方面,由于SSD 2首先完成数据3和数据4的写入,因此当SSD 2完成数据3的写入的时候,数据镜像控制设备110可将快速存储装置改变为SSD 2。
参照图7B,数据镜像控制设备110可将写入命令发送到被设置为快速存储装置的SSD 1,将读取命令发送到SSD 2。例如,根据至少一个示例实施例,当读取和写入命令被同时发送时,写入命令可被发送到被设置为快速存储装置的存储装置,读取命令可被发送到被设置为慢速存储装置(或未被设置为快速存储装置)的存储装置。
可根据(例如)WAF、自由块的大小、写入延迟的发生等,周期性地或非周期性地设置和改变快速存储装置。
在图7B的示例中,当初始被设置为快速存储装置的SSD 1的WAF值低于SSD 2的WAF值时,快速存储装置可改变为SSD 2。
此外,根据本发明构思的至少一个示例实施例,当SSD 1具有写入延迟时或者当自由块的大小由于通过SSD 1执行写入命令而减小到预定大小或(可选地)参考大小或更小时,快速存储装置可改变为SSD 2。
在图7B的示例中,在SSD 1完成数据2的写入之后,快速存储装置改变为SSD 2。因此,写入命令可被发送到SSD 2。
这里,数据镜像控制设备110可将具有内存锁定的数据1和数据2的写入命令发送到SSD 2。
在此情况下,在快速存储装置改变之后,数据1和数据2的写入命令可与主机120所请求写入的数据3和数据4的写入命令交替地发送。然而,根据本发明构思的至少一个示例实施例,在图7B中示出的示例的替代示例中,写入到SSD 1的数据1和数据2的写入命令可被优先发送到SSD 2。
当快速存储装置改变为SSD 2时,数据镜像控制设备110可在将数据1和数据2的写入命令发送到SSD 2之前,基于与将数据1和数据2写入到SSD1的写入有关的信息来将修剪命令发送到SSD 2。具体地讲,如果数据1和数据2的写入命令是重写命令,则可以理解的是,在数据1和数据2被写入到的SSD 1中的地址先前存储的数据是无效数据。因此,数据镜像控制设备110可使用修剪命令明确地通知SSD 2在数据1和数据2将被写入到的SSD 2中的地址存储的数据是无效数据。接收修剪命令的SSD 2可减小在重写数据2至数据4所需的擦除操作期间应当被传送到其他块的数据的量。结果,可提高SSD 2的性能,并可减少SSD 2的损耗。
当快速存储装置改变为SSD 2时,数据镜像控制设备110可通过将垃圾回收命令发送到SSD 1来控制SSD 1执行垃圾回收。
例如,当快速存储装置改变为SSD 2时,写入命令被发送到SSD 2,读取命令被发送到SSD 1。因此,SSD 1不执行写入操作。这里,在快速存储装置再次改变为SSD 1之前,数据镜像控制设备110控制SSD 1执行垃圾回收。由于存储无效数据的页通过垃圾回收而被回收和擦除,因此可预先确保自由空间。这可提高在快速存储装置再次改变为SSD 1时SSD 1的写入性能。
在图7B的示例中,即使快速存储装置改变为SSD 2,最新的数据也被存储在SSD 1中,直到SSD 2完成数据1和数据2的写入为止。
因此,如图7C的示例中,数据镜像控制设备110可通过在将快速存储装置改变为SSD 2之前将具有内存锁定的数据1和数据2的写入命令发送到SSD 2,来对存储在SSD 2中的数据和存储在SSD 1中的数据进行匹配。
然后,当SSD 2完成数据1和数据2的写入时,数据镜像控制设备110可将快速存储装置改变为SSD 2。
在此情况下,与图7B的情况不同,最新的数据可被一直存储在快速存储装置中。
数据镜像控制设备110可在将数据1和数据2的写入命令发送到SSD 2之前,基于与将数据1和数据2写入到SSD 1的写入有关的信息来将修剪命令发送到SSD 2。
另外,当快速存储装置改变为SSD 2时,数据镜像控制设备110可通过将垃圾回收命令发送到SSD 1来控制SSD 1执行垃圾回收。
在图7B和图7C中,只有写入命令被发送到快速存储装置,读取命令被发送到其他存储装置。然而,本发明构思的示例实施例不限于此。
例如,当负载平衡在存储装置之间是必需的或期望的时或者当存在对最近写入到快速存储装置的数据的读取请求时,读取命令可被发送到快速存储装置。
图8是示出在主机120发生故障的情况下数据恢复的示图。
参照图8,当主机120由于意外故障而重新启动时,数据镜像控制设备110可基于存储在快速存储装置中的数据,对存储在多个存储装置中的数据进行匹配。
由于最新的数据被存储在快速存储装置中,因此存储在存储装置中的数据可与存储在快速存储装置中的数据匹配。
具体地讲,当主机120重新启动时,可将存储在快速存储装置中的数据与存储在其他存储装置中的数据进行比较,以确定这两组存储的数据是否匹配。
这里,可通过存储在每个存储装置中的快速存储装置指示符710识别存储装置中的哪个存储装置是快速存储装置。在图8的示例中,具有设置为一的快速存储装置指示符710的SSD 1是快速存储装置。
可使用更新位图720确定在SSD 1和SSD 2之间是否存在不匹配的数据。
具体地讲,数据镜像控制设备110可将多个存储装置130中的每个存储装置的整个数据区域划分为N个块(chunk),并通过使用与N个块中的每个块相应的更新比特来确定在每个存储装置130的N个块中的每个块中存储的数据是否与在另一存储装置130的N个块中的相应块中存储的数据匹配。
在图8的示例中,SSD 1和SSD 2中的每一个的数据区域被划分为八个块,并示出了用于八个块的更新位图720。
包括在更新位图720中的每个比特对应于一个块,并表示在SSD 1的块中存储的数据是否与在SSD 2的相应块中存储的数据匹配。
具体地讲,如果数据仅被写入到SSD 1和SSD 2中的SSD 1(即,快速存储装置),则用于数据被写入到的块730和740的更新比特可被设置为一。
另一方面,如果数据被写入到SSD 1和SSD 2两者,则用于数据被写入到的块的更新比特可被设置为零。此外,没有数据写入到的块可被设置为零。
因此,不需要比较存储在SSD 1和SSD 2中的全部数据。而是可比较仅仅存储在更新位图720中的更新比特被设置为一的块中的数据,从而减少数据恢复时间。
当主机120发生故障时对存储在多个存储装置中的数据进行匹配的方法不限于以上使用图8中示出的更新位图720的方法。
例如,由于对存储在主机存储器中的数据之中写入到快速存储装置(而不是写入到慢速存储装置)的数据保持内存锁定,因此具有内存锁定的数据不被擦除或修改,直到其被写入到慢速存储装置为止。因此,数据镜像控制设备110可记录存储在主机存储器中的具有内存锁定的数据的列表,并将数据的列表存储在非易失性存储器或存储装置的区域中。然后,当主机120重新启动时,数据镜像控制设备110可将列表上的数据的写入命令发送到慢速存储装置,以对存储在慢速存储装置中的数据与存储在快速存储装置中的数据进行匹配。
图9是示出在多个存储装置包括SSD和HDD的情况下数据镜像控制的示图。
参照图9,多个镜像存储装置可包括至少一个HDD和至少一个SSD。
数据镜像控制设备110可将HDD设置为快速存储装置,使得数据可被首先写入到HDD。然后,数据镜像控制设备110可将快速存储装置改变为SSD,使得与写入到HDD的数据相同的数据可被写入到SSD。
数据镜像控制设备110可将主机120随机地请求写入的数据的写入命令转换为顺序写入命令,并将顺序写入命令发送到HDD。
具体地讲,在图9的示例中,写入请求1'、2'和3'是对存储了数据1、2和3的地址的重写请求。这里,数据镜像控制设备110可将与对主机120所请求的数据的写入请求1'、2'和3'相应的写入命令转换为顺序的写入命令4、5和6,并将顺序的写入命令4、5和6发送到HDD。
通常,HDD比SSD具有更大的可用空间。因此,如果在HDD和SSD之间应用数据镜像,则在HDD中创建更多的可用空间。另外,根据HDD的物理属性,HDD的顺序写入性能优于HDD的随机写入性能。因此,数据镜像控制设备110可将主机120随机地请求写入的数据转换为日志形式(logform),使得数据可被连续地存储。相应地,HDD的写入性能可提高。
当快速存储装置被改变为SSD时,数据镜像控制设备110可基于与将数据写入到HDD的写入有关的信息,使用修剪命令将关于无效数据的信息发送到SSD。
在图9的示例中,数据镜像控制设备110可将表示存储在HDD中的数据之中的数据1、2和3是无效数据的修剪命令发送到SSD,然后,将数据1、2和3的写入命令发送到SSD。
以上方法可提高HDD的写入性能并减少SSD的损耗。
图10是示出根据本发明构思的至少一个示例实施例的设置内存锁定的处理的流程图。
参照图10,当从主机120接收到写入请求(步骤910)时,数据镜像控制设备110可对存储在主机存储器中的数据之中主机120所请求写入的数据设置内存锁定(步骤920)。
在具有内存锁定的数据被写入到全部的多个存储装置130(步骤930)之后,数据镜像控制设备110可解除对数据的内存锁定(步骤940)。
换言之,不解除对数据的内存锁定,直到数据被写入到全部的存储装置130为止。
图11是示出根据本发明构思的至少一个示例实施例的发送写入命令和写入完成消息的处理的流程图。参照图11,数据镜像控制设备110可将主机120所请求写入的数据的写入命令发送到多个存储装置130(步骤1010)。
这里,主机120的写入请求和主机120所请求写入的数据的写入命令可以以阻止方式或非阻止方式被发送到存储装置130中的每个存储装置。
当存储装置130中的至少一个存储装置完成主机120所请求写入的数据的写入(步骤1020)时,数据镜像控制设备110可将数据的写入完成消息发送到主机120(步骤1030)。
根据本发明构思的至少一个示例实施例,当存储装置130中的至少一个存储装置完成主机120所请求写入的数据的写入时,数据镜像控制设备110可基于与将数据写入到完成了写入数据的存储装置的写入有关的信息,将修剪命令发送到尚未接收到数据的写入命令的存储装置(步骤1040)。
图12是示出根据本发明构思的至少一个示例实施例中的另一实施例的发送写入命令和写入完成消息的处理的流程图。
参照图12,数据镜像控制设备110可将主机120所请求写入的数据的写入命令发送到快速存储装置(步骤1110)。
换言之,数据镜像控制设备110可将写入命令仅发送到多个存储装置130之中被设置为快速存储装置的存储装置。
根据本发明构思的至少一个示例实施例,如果存储装置130包括至少一个HDD和至少一个SSD,则数据镜像控制设备110可将HDD设置为快速存储装置,将主机120所请求的数据的写入命令转换为顺序写入命令,并将顺序写入命令发送到HDD。
数据镜像控制设备110可将存储装置130中的至少一个存储装置设置为快速存储装置,并且周期性地或非周期性地改变快速存储装置。
另外,根据本发明构思的至少一个示例实施例,数据镜像控制设备110可将读取命令发送到存储装置130之中未被设置为快速存储装置的每个存储装置。
然而,本发明构思的示例实施例不限于此。当在存储装置130之间需要或期望负载平衡时或者当存在对最近写入到快速存储装置的数据的读取请求时,读取命令可被发送到快速存储装置。
当快速存储装置完成主机120所请求写入的数据的写入(步骤1120)时,数据镜像控制设备110可将写入完成消息发送到主机120(步骤1130)。
图13是示出根据本发明构思的至少一个示例实施例的改变快速存储装置的处理的流程图。参照图13,数据镜像控制设备110可将主机120所请求写入的数据的写入命令发送到多个镜像存储装置130(步骤1210)。
根据本发明构思的至少一个示例实施例,最快地写入请求的数据的存储装置可被设置为快速存储装置。
因此,当存储装置130中的一个存储装置完成主机120所请求写入的数据的写入(步骤1220)时,可确定该存储装置是否是快速存储装置(步骤1230)。
如果多个存储装置中的首先完成请求的数据的写入的存储装置当前未被设置为快速存储装置,则可由例如数据镜像控制设备110将快速存储装置改变为首先完成请求的数据的写入的存储装置(步骤1240)。
图14是示出根据本发明构思的至少一个示例实施例的改变快速存储装置的处理的流程图。
参照图14,数据镜像控制设备110可将主机120所请求写入的数据的写入命令发送到快速存储装置(步骤1310)。
然后,数据镜像控制设备110可周期性地或非周期性地确定是否需要改变快速存储装置(步骤1320),并基于确定结果改变快速存储装置(步骤1330)。
具体地讲,与图12的情况不同,可根据例如WAF、自由块的大小、写入延迟的发生等来周期性地或非周期性地确定是否需要改变快速存储装置。
例如,当快速存储装置的WAF值低于另一存储装置的WAF值时,数据镜像控制设备110可改变快速存储装置。
在另一示例中,当快速存储装置具有写入延迟时或者当自由块的大小由于通过快速存储装置执行写入命令而减小到预定大小或(可选地)参考大小或更小时,数据镜像控制设备110可改变快速存储装置。
当快速存储装置改变为SSD时,数据镜像控制设备110可基于与将数据写入到先前快速存储装置的写入有关的信息来将修剪命令发送到SSD(步骤1340)。
另外,当被设置为快速存储装置的SSD变为慢速存储装置时,数据镜像控制设备110可将垃圾回收命令发送到SSD(步骤1350)。
图15是是示出根据本发明构思的至少一个示例实施例的改变快速存储装置的处理的流程图。
参照图15,数据镜像控制设备110可将主机120所请求写入的数据的写入命令发送到快速存储装置(步骤1410)。
然后,数据镜像控制设备110可周期性地或非周期性地确定是否需要改变快速存储装置(步骤1420)。
具体地讲,可根据WAF、自由块的大小、写入延迟的发生等来周期性地或非周期性地确定是否需要改变快速存储装置。
例如,当快速存储装置的WAF值低于另一存储装置的WAF值时,数据镜像控制设备110可确定需要改变快速存储装置。
在另一示例中,当快速存储装置具有写入延迟时或者当自由块的大小由于通过快速存储装置执行写入命令而减小到预定大小或(可选地)参考大小或更小时,数据镜像控制设备110可确定需要改变快速存储装置。
然后,数据镜像控制设备110可将具有内存锁定的数据的写入命令发送到将被设置为快速存储装置的存储装置(步骤1440)。
根据本发明构思的至少一个示例实施例,如果将被设置为快速存储装置的存储装置是SSD,则数据镜像控制设备110可在将具有内存锁定的数据的写入命令发送到将被设置为快速存储装置的SSD之前,基于与将数据写入到当前快速存储装置的写入有关的信息来将修剪命令发送到SSD(步骤1430)。
当将被设置为快速存储装置的存储装置完成具有内存锁定的数据的写入(步骤1450)时,数据镜像控制设备110可将快速存储装置改变为该存储装置(步骤1460)。
这里,根据本发明构思的至少一个示例实施例,当被设置为快速存储装置的SSD变为慢速存储装置时,数据镜像控制设备110可将垃圾回收命令发送到SSD(步骤1470)。
图16是示出根据本发明构思的至少一个示例实施例的在快速存储装置发生故障的情况下数据恢复处理的流程图。参照图16,当多个存储装置130之一发生故障(步骤1510)时,数据镜像控制设备110可确定发生故障的存储装置是否是快速存储装置(步骤1520)。
如果发生故障的存储装置是快速存储装置,则数据镜像控制设备110可将具有内存锁定的数据的写入命令发送到没有发生故障的另一存储装置(步骤1530)。
对主机存储器中数据的内存锁定表示数据尚未被写入到存储装置130中的至少一个存储装置。
因此,数据镜像控制设备110将具有内存锁定的数据的写入命令发送到尚未接收到数据的写入命令的存储装置,从而防止由于快速存储装置的故障而导致的数据的丢失。
对数据设置的内存锁定还表示数据的写入命令已经被发送到快速存储装置。因此,如果发生故障的存储装置不是快速存储装置,则不需要数据恢复过程。
图17是示出根据本发明构思的至少一个示例实施例的在主机120发生故障的情况下数据恢复处理的流程图。
参照图17,当主机120由于故障(例如,意外故障)而重新启动(步骤1610)时,数据镜像控制设备110可确定存储在多个存储装置130中的数据是否匹配(步骤1620)。
这里,根据本发明构思的至少一个示例实施例,数据镜像控制设备110可将存储装置130中的每个存储装置的整个数据区域划分为多个块,并通过使用与每个块相应的更新比特来确定存储在存储装置130中的数据是否匹配。
根据另一实施例,数据镜像控制设备110可记录存储在主机存储器中的具有内存锁定的数据的列表,并将数据的列表存储在非易失性存储器或快速存储装置的区域中。因此,当主机120重新启动时,数据镜像控制设备110可通过参考列表来确定存储在存储装置130中的数据是否匹配。
当存储在存储装置130中的数据不匹配(步骤1630)时,数据镜像控制设备110可基于存储在快速存储装置中的数据将重写命令发送到其他存储装置(步骤1640)。
具体地讲,由于最新的数据被存储在快速存储装置中,因此当在快速存储装置的块中存储的数据与在另一存储装置的相应块中存储的数据不匹配时,数据镜像控制设备110可将在快速存储装置的块中存储的数据重写到该另一存储装置的相应块,从而使在快速存储装置的块中存储的数据与在该另一存储装置的相应块中存储的数据匹配。
根据本发明构思的至少一个示例实施例,主机所请求写入的数据被存储在主机存储器中,直到该数据被写入到所有镜像存储装置。因此,可防止由于存储装置中的任何一个的故障而导致的数据丢失。
另外,当多个镜像存储装置之一完成数据写入时,数据的写入完成消息被立即发送到主机。这可提高写入性能。
此外,在适当的时候发送修剪命令和垃圾回收命令。因此,SSD的性能和寿命可提高。
本发明构思的至少一个示例实施例还可被实现为计算机可读记录介质上的计算机可读代码。计算机可读记录介质可以是能够存储之后可由计算机系统读取的数据的任何数据存储装置。计算机可读记录介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光学数据存储装置。此外,用于完成实施本发明构思的示例实施例的功能程序、代码和代码段可由本发明构思的示例实施例所属领域的编程技术人员容易地解释。
根据至少一个示例实施例,数据镜像控制设备110可包括控制数据镜像控制设备110的操作的处理器。如这里使用的,术语“处理器”表示包括在结构上被构造为实施特定操作或在结构上被构造为执行从计算机可读代码读取的指令的电路的机器。上述处理器的示例包括(但不限于)微处理器、多处理器、中央处理单元(CPU)、数字信号处理器(DSP)、专用集成电路(ASIC)和场可编程门阵列(FPGA)。
根据至少一个示例实施例,控制主机120的操作的处理器也可以是控制数据镜像控制设备110的处理器。根据至少一个示例实施例,控制主机120的操作的处理器可与控制数据镜像控制设备110的处理器分开。
根据至少一个示例实施例,由数据镜像控制设备110或其组件之一执行的在此例如参照图1至图17中的任何一个描述的任何操作可由包括在数据镜像控制设备110中的上述处理器执行。例如,根据至少一个示例实施例,数据镜像控制设备110可在软件和/或硬件方面被编程,以执行由数据镜像控制设备110执行的在此描述的功能中的任何或所有功能。
现在,将在下面论述数据镜像控制设备110在软件方面被编程以执行由数据镜像控制设备110执行的在此描述的功能中的任何或所有功能的示例。例如,数据镜像控制设备110可包括程序存储单元,程序存储单元可存储包括与由数据镜像控制设备110执行的参照图1至图15描述的操作中的任何或所有操作相应的可执行指令的程序。根据至少一个示例实施例,除了被存储在程序存储单元中之外或者作为被存储在程序存储单元中的替代,可执行指令可被存储在计算机可读介质中,计算机可读介质包括例如光盘、闪存驱动器、SD卡等,并且数据镜像控制设备110可包括用于读取存储在计算机可读介质上的数据的硬件。此外,包括在数据镜像控制设备110中的处理器可被构造为例如通过读取和执行在上述程序存储单元和计算机可读存储介质中的至少一个中存储的可执行指令,来执行由数据镜像控制设备110执行的参照图1至图15描述的操作中的任何或所有操作,其中,计算机可读存储介质被装载到在数据镜像控制设备110中包括的用于读取计算机可读介质的硬件中。
现在,将在下面论述数据镜像控制设备110在硬件方面被编程以执行由数据镜像控制设备110执行的在此描述的功能中的任何或所有功能的示例。除了如上所述与由数据镜像控制设备110执行的参照图1至图17描述的功能对应的存储在程序存储单元或计算机可读介质中的可执行指令之外或作为其替代,包括在数据镜像控制设备110中的处理器可包括具有专门用于执行由数据镜像控制设备110执行的参照图1至图17描述的操作中的任何或所有操作的结构设计的电路。例如,包括在数据镜像控制设备110的处理器中的上述电路可以是在物理上被编程为执行由数据镜像控制设备110执行的参照图1至图17描述的操作中的任何或所有操作的FPGA或ASIC。
已经这样描述了示例实施例,将显然的是,示例实施例可以以多种方式变化。这样的变化不应被视为脱离本发明构思的示例实施例的期望的精神和范围,并且将对本领域技术人员显然的所有这样的修改意在被包括在权利要求的范围内。

Claims (20)

1.一种数据镜像控制设备,包括:
命令分发单元,被构造为将第一写入命令发送到多个镜像存储装置,第一写入命令包括用于主机所请求写入的数据的指令;
内存锁定设置单元,被构造为对存储在主机存储器中的数据之中主机所请求写入的数据设置内存锁定,并被构造为在具有内存锁定的数据被写入到所述多个镜像存储装置之后解除对数据的内存锁定。
2.如权利要求1所述的数据镜像控制设备,其中,命令分发单元被构造为当所述多个镜像存储装置之一完成请求的数据的写入时,将请求的数据的写入完成消息发送到主机。
3.如权利要求1所述的数据镜像控制设备,还包括:修剪命令发送单元,被构造为基于与将请求的数据写入到所述多个镜像存储装置之一的写入有关的信息,将修剪命令发送到尚未接收到用于请求的数据的第一写入命令的存储装置。
4.如权利要求1所述的数据镜像控制设备,其中,命令分发单元被构造为将用于具有内存锁定的数据的第一写入命令发送到尚未接收到用于具有内存锁定的数据的第一写入命令的存储装置。
5.如权利要求1所述的数据镜像控制设备,还包括:
快速存储装置设置单元,被构造为将所述多个镜像存储装置中的至少一个设置为快速存储装置,
其中,命令分发单元被构造为将第一写入命令发送到快速存储装置。
6.如权利要求5所述的数据镜像控制设备,其中,快速存储装置设置单元被构造为基于响应于写入命令的写入完成速度来设置快速存储装置。
7.如权利要求5所述的数据镜像控制设备,其中,命令分发单元被构造为在请求的数据被写入到快速存储装置之后将写入完成消息发送到主机,写入完成消息表示请求的数据已经被写入。
8.如权利要求5所述的数据镜像控制设备,其中,快速存储装置设置单元被构造为周期性地或非周期性地改变快速存储装置。
9.如权利要求8所述的数据镜像控制设备,其中,所述设备被构造为使得当快速存储装置改变时,命令分发单元将用于具有内存锁定的数据的第一写入命令发送到新的快速存储装置。
10.如权利要求8所述的数据镜像控制设备,其中,所述设备被构造为使得当所述设备确定改变快速存储装置的条件已经满足时,命令分发单元将用于具有内存锁定的数据的第一写入命令发送到第一存储装置,并且当第一存储装置完成具有内存锁定的数据的写入时,快速存储装置设置单元通过将第一存储装置设置为快速存储装置来改变快速存储装置。
11.如权利要求5所述的数据镜像控制设备,其中,所述设备被构造为使得当快速存储装置发生故障时,命令分发单元将用于具有内存锁定的数据的第一写入命令发送到没有发生故障的另一存储装置。
12.如权利要求5所述的数据镜像控制设备,其中,所述设备被构造为使得当主机发生故障时,命令分发单元确定在所述多个镜像存储装置的每个镜像存储装置中存储的数据是否相同,如果在所述多个镜像存储装置中存储的数据不相同,则基于存储在快速存储装置中的数据将写入命令发送到一个或更多个其他存储装置,其中,所述一个或更多个其他存储装置是所述多个镜像存储装置中的未被设置为快速存储装置的存储装置。
13.如权利要求5所述的数据镜像控制设备,其中,
所述多个镜像存储装置包括至少一个硬盘驱动器HDD,
所述设备被构造为使得当HDD是由快速存储装置设置单元设置为快速存储装置的镜像存储装置时,命令分发单元将随机写入命令转换为顺序写入命令,并将顺序写入命令发送到HDD,其中,随机写入命令包括用于主机请求随机地写入的数据的指令,顺序写入命令包括用于主机请求顺序地写入的数据的指令。
14.一种数据镜像控制设备,包括:
命令分发单元,被构造为将主机所请求写入的数据的写入命令发送到多个镜像存储装置,并在请求的数据被写入到所述多个镜像存储装置之一之后,发送请求的数据的写入完成消息;
修剪命令发送单元,被构造为基于与将请求的数据写入到所述多个镜像存储装置之一的写入有关的信息,将修剪命令发送到未接收到请求的数据的写入命令的存储装置。
15.如权利要求14所述的数据镜像控制设备,还包括:
快速存储装置设置单元,被构造为将所述多个镜像存储装置中的至少一个设置为快速存储装置,并被构造为周期性地或非周期性地改变快速存储装置,其中,命令分发单元被构造为将主机所请求写入的数据的写入命令发送到快速存储装置。
16.如权利要求15所述的数据镜像控制设备,其中,所述设备被构造为使得当快速存储装置从所述多个镜像存储装置中的第一镜像存储装置改变为所述多个镜像存储装置中的不同的镜像存储装置时,修剪命令发送单元基于与将请求的数据写入到先前快速存储装置的写入有关的信息,将修剪命令发送到新的快速存储装置。
17.如权利要求15所述的数据镜像控制设备,还包括:
垃圾回收命令发送单元,被构造为使得当快速存储装置从所述多个镜像存储装置中的第一镜像存储装置改变为所述多个镜像存储装置中的不同的镜像存储装置时,垃圾回收命令发送单元将垃圾回收命令发送到不再是快速存储装置的存储装置。
18.一种数据镜像控制设备,包括:
命令分发单元,被构造为响应于来自主机的写入请求将第一写入命令发送到多个镜像存储装置,其中,第一写入命令指示所述多个镜像存储装置存储请求的数据,请求的数据是在主机存储的第一数据,写入请求表示第一数据被写入到所述多个镜像存储装置中的至少一个镜像存储装置的请求;
内存锁定设置单元,被构造为响应于写入请求对位于主机中的第一数据设置内存锁定,并被构造为响应于第一数据被写入到所述多个镜像存储装置,解除对位于主机中的第一数据的内存锁定。
19.如权利要求18所述的数据镜像控制设备,其中,命令分发单元被构造为在接收到表示所述多个镜像存储装置中的第一镜像存储装置完成第一数据的写入的写入完成消息之后,将第二写入命令发送到第一镜像存储装置,其中,第一镜像存储装置是所述多个镜像存储装置中的相对于所述多个镜像存储装置中的其余存储装置在最早的时间点完成第一数据的写入的存储装置。
20.如权利要求18所述的数据镜像控制设备,其中,内存锁定设置单元被构造为响应于确定所述多个镜像存储装置中的接收到第一写入命令且未被禁用的每个装置已经完成第一数据的写入,解除对位于主机中的第一数据的内存锁定。
CN201410509938.6A 2013-09-27 2014-09-28 数据镜像控制设备和方法 Active CN104516793B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020130115579A KR102116702B1 (ko) 2013-09-27 2013-09-27 데이터 미러링 제어 장치 및 방법
KR10-2013-0115579 2013-09-27

Publications (2)

Publication Number Publication Date
CN104516793A true CN104516793A (zh) 2015-04-15
CN104516793B CN104516793B (zh) 2020-06-09

Family

ID=51687798

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410509938.6A Active CN104516793B (zh) 2013-09-27 2014-09-28 数据镜像控制设备和方法

Country Status (5)

Country Link
US (2) US9983824B2 (zh)
EP (1) EP2854034B1 (zh)
JP (1) JP6690891B2 (zh)
KR (1) KR102116702B1 (zh)
CN (1) CN104516793B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107515827A (zh) * 2017-08-21 2017-12-26 湖南国科微电子股份有限公司 Pcie ssd自定义日志的存储方法、装置及ssd
CN107992383A (zh) * 2016-10-26 2018-05-04 佳能株式会社 信息处理装置、其控制方法以及存储介质
WO2018107772A1 (zh) * 2016-12-14 2018-06-21 华为技术有限公司 写入请求处理方法、装置及设备
CN109658867A (zh) * 2018-12-10 2019-04-19 北京欧徕德微电子技术有限公司 数据读写方法及其装置
CN109683807A (zh) * 2018-10-18 2019-04-26 张德辉 带备份的冷数据安全存储系统及其存储方法
CN109976792A (zh) * 2019-02-28 2019-07-05 国云科技股份有限公司 一种镜像延迟更新方法
CN113342480A (zh) * 2021-06-23 2021-09-03 海光信息技术股份有限公司 一种事务处理系统、事务处理方法及主机系统

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701021B (zh) * 2014-12-10 2021-03-02 慧荣科技股份有限公司 数据储存装置及其数据写入方法
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US10977260B2 (en) 2016-09-26 2021-04-13 Splunk Inc. Task distribution in an execution node of a distributed execution environment
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11250056B1 (en) 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US10726009B2 (en) 2016-09-26 2020-07-28 Splunk Inc. Query processing using query-resource usage and node utilization data
US11003714B1 (en) 2016-09-26 2021-05-11 Splunk Inc. Search node and bucket identification using a search node catalog and a data store catalog
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11620336B1 (en) * 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11023463B2 (en) 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US10776355B1 (en) 2016-09-26 2020-09-15 Splunk Inc. Managing, storing, and caching query results and partial query results for combination with additional query results
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US10795884B2 (en) 2016-09-26 2020-10-06 Splunk Inc. Dynamic resource allocation for common storage query
US10984044B1 (en) 2016-09-26 2021-04-20 Splunk Inc. Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US11151137B2 (en) 2017-09-25 2021-10-19 Splunk Inc. Multi-partition operation in combination operations
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
CN107807790B (zh) * 2017-10-13 2020-09-01 记忆科技(深圳)有限公司 一种固态硬盘数据写入的方法
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11301138B2 (en) * 2019-07-19 2022-04-12 EMC IP Holding Company LLC Dynamic balancing of input/output (IO) operations for a storage system
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
JP2021082003A (ja) * 2019-11-19 2021-05-27 キヤノン株式会社 情報処理装置
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098128A (en) * 1995-09-18 2000-08-01 Cyberstorage Systems Corporation Universal storage management system
US20020152339A1 (en) * 2001-04-09 2002-10-17 Akira Yamamoto Direct access storage system with combined block interface and file interface access
US20030079083A1 (en) * 2001-10-22 2003-04-24 Lubbers Clark E. High performance multi-controller processing
CN1708742A (zh) * 2002-01-23 2005-12-14 思科技术公司 在存储区域网中实现存储虚拟化的方法与装置
US7013379B1 (en) * 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US20110126045A1 (en) * 2007-03-29 2011-05-26 Bennett Jon C R Memory system with multiple striping of raid groups and method for performing the same
CN102696010A (zh) * 2009-09-08 2012-09-26 弗森-艾奥公司 用于将数据高速缓存在固态存储设备上的装置、系统和方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0232419A (ja) * 1988-07-22 1990-02-02 Nippon Telegr & Teleph Corp <Ntt> 磁気ディスク記憶装置のアクセス制御方式
US6324654B1 (en) 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
US6122685A (en) 1998-05-06 2000-09-19 Emc Corporation System for improving the performance of a disk storage device by reconfiguring a logical volume of data in response to the type of operations being performed
JP2000276304A (ja) 1999-03-26 2000-10-06 Nec Corp データ移行方法と情報処理システム
US6795850B2 (en) * 2002-12-13 2004-09-21 Sun Microsystems, Inc. System and method for sharing memory among multiple storage device controllers
US20050149683A1 (en) 2003-12-29 2005-07-07 Chong Fay Jr. Methods and systems for data backups
TW200937190A (en) 2008-02-22 2009-09-01 Jmicron Technology Corp Raid1 system and reading method for enhancing read performance
JP2010061591A (ja) 2008-09-05 2010-03-18 Oki Electric Ind Co Ltd Raid装置およびその制御方法
KR101067018B1 (ko) 2009-04-17 2011-09-22 서울대학교산학협력단 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치
JP2011003094A (ja) * 2009-06-19 2011-01-06 Toshiba Corp 二重化処理装置および二重化処理制御方法
JP2011070365A (ja) * 2009-09-25 2011-04-07 Toshiba Corp メモリシステム
US8954669B2 (en) * 2010-07-07 2015-02-10 Nexenta System, Inc Method and system for heterogeneous data volume
JP2012252638A (ja) 2011-06-06 2012-12-20 Nec Corp ディスクアレイ装置及びその制御方法
JP5611909B2 (ja) * 2011-08-19 2014-10-22 株式会社東芝 情報処理装置、性能評価ツール、外部記憶装置の性能評価方法
KR20140006299A (ko) * 2012-07-03 2014-01-16 삼성전자주식회사 낸드 플래시 메모리 기반의 저장부에 데이터 기록을 제어하는 방법 및 장치

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098128A (en) * 1995-09-18 2000-08-01 Cyberstorage Systems Corporation Universal storage management system
US20020152339A1 (en) * 2001-04-09 2002-10-17 Akira Yamamoto Direct access storage system with combined block interface and file interface access
US20030079083A1 (en) * 2001-10-22 2003-04-24 Lubbers Clark E. High performance multi-controller processing
US7013379B1 (en) * 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
CN1708742A (zh) * 2002-01-23 2005-12-14 思科技术公司 在存储区域网中实现存储虚拟化的方法与装置
US20110126045A1 (en) * 2007-03-29 2011-05-26 Bennett Jon C R Memory system with multiple striping of raid groups and method for performing the same
CN102696010A (zh) * 2009-09-08 2012-09-26 弗森-艾奥公司 用于将数据高速缓存在固态存储设备上的装置、系统和方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107992383A (zh) * 2016-10-26 2018-05-04 佳能株式会社 信息处理装置、其控制方法以及存储介质
CN107992383B (zh) * 2016-10-26 2021-09-28 佳能株式会社 信息处理装置、其控制方法以及存储介质
WO2018107772A1 (zh) * 2016-12-14 2018-06-21 华为技术有限公司 写入请求处理方法、装置及设备
CN107515827A (zh) * 2017-08-21 2017-12-26 湖南国科微电子股份有限公司 Pcie ssd自定义日志的存储方法、装置及ssd
CN107515827B (zh) * 2017-08-21 2021-07-27 湖南国科微电子股份有限公司 Pcie ssd自定义日志的存储方法、装置及ssd
CN109683807A (zh) * 2018-10-18 2019-04-26 张德辉 带备份的冷数据安全存储系统及其存储方法
CN109658867A (zh) * 2018-12-10 2019-04-19 北京欧徕德微电子技术有限公司 数据读写方法及其装置
CN109976792A (zh) * 2019-02-28 2019-07-05 国云科技股份有限公司 一种镜像延迟更新方法
CN113342480A (zh) * 2021-06-23 2021-09-03 海光信息技术股份有限公司 一种事务处理系统、事务处理方法及主机系统
CN113342480B (zh) * 2021-06-23 2022-02-22 海光信息技术股份有限公司 一种事务处理系统、事务处理方法及主机系统

Also Published As

Publication number Publication date
KR20150035250A (ko) 2015-04-06
US10152272B2 (en) 2018-12-11
US20180232150A1 (en) 2018-08-16
US9983824B2 (en) 2018-05-29
EP2854034A3 (en) 2015-09-23
EP2854034A2 (en) 2015-04-01
CN104516793B (zh) 2020-06-09
KR102116702B1 (ko) 2020-05-29
US20150095570A1 (en) 2015-04-02
EP2854034B1 (en) 2017-03-29
JP2015069651A (ja) 2015-04-13
JP6690891B2 (ja) 2020-04-28

Similar Documents

Publication Publication Date Title
CN104516793A (zh) 数据镜像控制设备和方法
CN107111453B (zh) 跨存储装置执行原子写入操作的系统和方法以及存储装置
KR100701563B1 (ko) 스토리지 제어 장치 및 방법
US6898669B2 (en) Disk array apparatus and data backup method used therein
JP3682256B2 (ja) ディスクアレイ装置及び同装置におけるパリティ処理方法
US8438332B2 (en) Apparatus and method to maintain write operation atomicity where a data transfer operation crosses a data storage medium track boundary
KR101250574B1 (ko) 네트워크 부트 시스템
US11487663B2 (en) Method of operating storage device, storage device performing the same and storage system including the same
CN101140542A (zh) 一种缩短写时拷贝快照写响应时间的方法
WO2018113322A1 (zh) 数据读取方法及设备
JP4461089B2 (ja) ストレージ制御装置およびストレージ制御方法
JP2006072435A (ja) ストレージシステムおよびデータ記録方法
US10339020B2 (en) Object storage system, controller and storage medium
US10409690B2 (en) Storage utilizing a distributed cache chain and a checkpoint drive in response to a data drive corruption
KR100981064B1 (ko) 저널링 파일 시스템을 이용한 소프트웨어 레이드에서의 일관성 유지방법
US20100325373A1 (en) Duplexing Apparatus and Duplexing Control Method
US20180307427A1 (en) Storage control apparatus and storage control method
US20090138656A1 (en) Method of skipping synchronization process for initialization of RAID1 device
JP4936088B2 (ja) ディスクアレイ装置、ディスクアレイシステム、及びキャッシュ制御方法
US20140040349A1 (en) Server computer, server computer system, and server computer control method
US10209926B2 (en) Storage system and control method therefor
JP2002288014A (ja) ファイル管理システム及びファイルデータ書込方法
WO2016175762A1 (en) Storage cache management
JP2016157186A (ja) データ管理装置およびプログラム
JP3798773B2 (ja) ディスク制御装置及び冗長化論理ディスクドライブの一貫性回復方法

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