CN102099792A - 用于分布式raid实现的方法和系统 - Google Patents
用于分布式raid实现的方法和系统 Download PDFInfo
- Publication number
- CN102099792A CN102099792A CN2009801275899A CN200980127589A CN102099792A CN 102099792 A CN102099792 A CN 102099792A CN 2009801275899 A CN2009801275899 A CN 2009801275899A CN 200980127589 A CN200980127589 A CN 200980127589A CN 102099792 A CN102099792 A CN 102099792A
- Authority
- CN
- China
- Prior art keywords
- database
- section
- order
- databases
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
-
- 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
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1028—Distributed, i.e. distributed RAID systems with parity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
所公开的系统和方法的实施例提供包括一组数据库的分布式RAID系统。更具体地,在分布式RAID系统的某些实施例中,每个数据库具有一组相关联的存储介质,并且执行类似的分布式RAID应用。在每个数据库上的分布式RAID应用在它们之间进行协调,以便分布和控制与结合被存储在数据库的相关联的存储介质上的数据实现RAID的级别相关联的数据流。
Description
技术领域
本发明总的涉及存储设备的使用。更具体地,本发明的实施例涉及在存储设备上实现RAID。甚至更具体地,本发明的某些实施例涉及RAID的分布式实现。
背景技术
数据表示用于许多实体的重要的资产。因此,数据丢失,不管是偶然的还是由于恶意的活动造成的,都会是在浪费的人力、来自客户的商业信誉的丢失、时间的损失以及潜在的法定义务等方面代价昂贵的。为了确保用于商业、法律或其它目的的数据的适当的保护,许多实体可能希望通过使用各种各样的技术,包括数据存储、冗余性、安全性等等,来保护它们的数据。然而,这些技术可能与由被使用来处理或存储这个数据的计算设备的状态或配置所施加的其它竞争性约束条件或要求相冲突。
用于处理这些紧张状态的一个方法是实现冗余磁盘阵列(RAID)。通常,RAID系统划分和复制在多个硬盘驱动器(或其它类型的存储介质)上的数据,统称为阵列,以增加可靠性,以及在某些情形下通过使用这些RAID系统用于存储而提高计算设备(被称为主机)的吞吐量。然后对于主机,RAID阵列可以表现为一个或多个单片存储区域。当主机希望与RAID系统通信(读出、写入等等)时,主机就好像RAID阵列是单个盘那样进行通信。RAID系统本身又处理这些通信,与这样的通信相结合地实现某个RAID级别。这些RAID级别可被设计成达到在各种各样的折衷,诸如可靠度、容量、速度等等之间的某个期望的平衡。例如,RAID(级别)0把数据分布在几个盘上,以使得它给出提高的速度和几乎利用盘的全部容量,但如果盘发生故障,则在盘上的所有的数据将丢失;RAID(级别)1使用两个盘(或更多的盘),每个盘存储相同的数据,以使得只要一个盘不出问题数据就不丢失。阵列的全部容量基本上是单个盘的容量,以及RAID(级别)5组合三个或更多的盘,这样它保护数据免遭任何一个盘的丢失;阵列存储容量被减小一个盘。
RAID的当前的实现可能有各种各样的问题。这些问题可来自于由这些RAID系统的结构体系所施加的限制条件,诸如,在许多情形下,与RAID系统的所有的通信必须被寻址到控制和管理RAID系统的单个服务器。其它问题可能是由于在包括RAID系统的盘上数据的配置或布局引起的。例如,在某些情形下,在可以利用RAID系统之前,必须选择RAID级别,以及在RAID系统内对存储进行分配。因此,初始选择的RAID级别可以结合被存储在RAID系统中的数据被实现,不管该RAID级别是否是期望或需要的。在许多情形下,这些现在存在的问题由于需要使用定制的硬件或软件来实现这些解决方案而加重,从而增加与实现这样的解决方案相关联的花费。
因此,希望大大地改善这些问题。
发明内容
所公开的系统和方法的实施例提供包括一组数据库的分布式RAID系统。更具体地,在分布式RAID系统的某些实施例中,每个数据库具有一组相关联的存储介质,并且执行类似的分布式RAID应用。在每个数据库上的分布式RAID应用在它们之间协调,来分配和控制与结合被存储在数据库的相关联的存储介质上的数据实现RAID的级别相关联的数据流。
具体地,在一个实施例中,可以通过使用分布式RAID系统创建具有相关联的RAID级别的卷(volume)。每个分布式RAID应用然后可以协调与该卷的数据相关联的操作,以使得与该卷相关联的数据或结合该卷实现期望的RAID级别相关联的数据,可被存储在分布式RAID系统的多个数据库中。
通过使用在多个数据库的每个数据库上执行的类似的分布式RAID应用,把卷的数据和与RAID的实现相关联的数据存储在那些多个数据库上,通过协调结合该卷的RAID级别的实现,可以达到许多优点。即,可以分配不同的存储卷,一个或多个卷结合不同的RAID级别被实现。而且,由于在数据库上存储和RAID的实现的协调是通过使用基本上相同的分布式RAID应用而完成的,在许多情形下,可以利用标准的或现有的硬件,诸如基于标准x86的服务器和存储介质。
而且,通过在RAID系统的每个数据库上的进行分布控制,在每个数据库上的每个分布式RAID应用可以基本上自主地执行。另外,因为一个数据库会丢失,某个故障容忍度可以是在它的结构体系中固有的,并且RAID系统仍旧能够相对于利用RAID系统的每个主机以无缝方式运行。
再者,作为这里给出的系统和方法的实施例的附带的效果,因为有较少的性能瓶颈,可以达到改进的性能,增加的带宽是可提供的,因为每个主机可被耦合到交换机,每个数据库被耦合到该交换机,以及这样的分布式RAID系统的扩展或压缩可以相对无缝地完成。
本发明的这些和其它方面,在结合以下的说明和附图被考虑时将更好地被意识到和理解。以下的说明虽然指示本发明的各种实施例和本发明的许多具体的细节,但是作为说明而不是限制被给出的。在本发明的范围内可以作出许多替换、修改、添加、或重新安排,以及本发明包括所有的这样的替换、修改、添加、或重新安排。
附图说明
与说明书相伴随并作为本说明书的一部分的附图被包括来描绘本发明的某些方面。通过参考在附图上显示的示例性和因而非限制性的实施例,本发明和本发明所提供的系统的部件和运行的更清晰的印象将变得明显,其中相同的附图标记指相同的部件。应当指出,在附图上显示的特性不一定按比例画出。
图1是利用分布式RAID系统的结构体系的一个实施例的示意图。
图2A是数据库的一个实施例的示意图。
图2B是用于数据库的结构体系的一个实施例的示意图。
图3是由分布式RAID系统实现的方法的一个实施例的流程图。
图4是利用分布式RAID系统的结构体系的一个实施例的例子的示意图。
图5是表格的一个实施例的示意图。
图6是表格的一个实施例的示意图。
图7是表格的一个实施例的示意图。
图8是由分布式RAID系统实现的方法的一个实施例的流程图。
图9A是由分布式RAID系统实现的方法的一个实施例的流程图。
图9B是由分布式RAID系统实现的方法的一个实施例的流程图。
图10是写高速缓存器的一个实施例的示意图。
图11是由分布式RAID系统实现的方法的一个实施例的流程图。
图12是由分布式RAID系统实现的方法的一个实施例的流程图。
具体实施方式
本发明及其各种特性和有利的细节,将参照在附图上显示的和在以下的说明中详细阐述的非限制性实施例更全面地进行说明。熟知的起始材料、处理技术、部件和设备的说明被省略,以免用细节不必要地遮蔽本发明。然而,应当看到,详细说明和具体的例子,虽然指示本发明的优选实施例,但是作为说明而不是限制被给出的。在本发明概念的精神和/或范围内的各种替换、修改、添加、或重新安排,对于阅读本公开内容的本领域技术人员,将是显而易见。这里所讨论的实施例可以以位于计算机可读的介质(例如,HD)中的适当的计算机可执行的指令、硬件电路等等,或它们的任何组合被实现。
在讨论具体的实施例之前,这里先描述用于实现某些实施例的硬件结构体系的实施例。一个实施例可包括与网络通信地耦合的一个或多个计算机。正如本领域技术人员所熟知的,计算机可包括中央处理单元(“CPU”)、至少一个只读存储器(“ROM”)、至少一个随机存取存储器(“RAM”)、至少一个硬盘驱动器(“HD”)、和一个或多个输入/输出(“I/O”)设备。I/O设备可包括键盘、监视器、打印机、电子指向设备(诸如鼠标、跟踪球、指示笔等)等等。在各种实施例中,计算机通过网络至少接入到一个数据库。
ROM、RAM和HD是用于存储由CPU可执行的计算机可执行的指令的计算机存储器。在本公开内容内,术语“计算机可读的介质”并不限于ROM、RAM、和HD,而是可包括任何类型的、可以由处理器读出的数据存储介质。在某些实施例中,计算机可读的介质可以是指数据盒式磁带、数据备份磁带、软盘、快闪存储器驱动器、和光学数据存储驱动器、CD-ROM、ROM、RAM、HD等等。
这里描述的功能或处理的至少一部分可以以适当的计算机可执行的指令被实现。计算机可执行的指令可以作为软件代码部件或模块被存储在一个或多个计算机可读的介质上(诸如,非易失性存储器、易失性存储器、DASD阵列、磁带、软盘、硬盘驱动器、光学存储设备等等、或任何其它适当的计算机可读的介质或存储设备)。在一个实施例中,计算机可执行的指令可包括成行的、汇编的C++、Java、HTML、或任何其它编程或脚本代码。
另外,所公开的实施例的功能可以在一个计算机上被实现,或在网络上在两个或多个计算机之间被共享/分布。在实现本实施例的计算机之间的通信可以通过使用任何的电子的、光学的、射频的信号、或遵从已知的网络协议的其它适当的方法和工具而被完成。
正如这里使用的,术语“包括”、“具有”、或它们的其它变例,意在覆盖非排他的包括。例如,包括一系列单元的过程、处理、物体、设备不一定仅仅限于那些单元,而是可包括没有明显列出的,或对于这样的过程、处理、物体、设备来说是固有的其它单元。而且,除非明显地相反表示,“或”是指包括的或,而不是排他的或。例如,条件A或B通过以下的任一项而得以满足:A是正确(或存在)和B是谬误(或不存在);A是谬误(或不存在)和B是正确(或存在);以及A和B都是正确(或存在)。
另外,这里给出的例子或说明无论如何不看作为对于它们被利用的任何术语的约束条件、限制,或表达的定义。而是,这些例子或说明被看作为是对于一个特定的实施例描述的,以及仅仅作为说明性的。本领域技术人员将意识到,这些例子或说明利用的任何术语将包括在本说明书的此处或他处可能给出或没有给出的其他实施例,并且所有的这样的实施例意在被包括在该术语的范围内。指定这样的非限制性例子和说明的语言包括,但不限于:“例如”、“举例”、“在一个实施例中”。
本申请涉及到由Galloway等在2009年6月5日提交的、题目为“Method and System for Data Migration in a Distributed RAIDImplementation”的美国专利申请No.______(PIVOT1110-1);由Galloway等在2009年6月5日提交的、题目为“Method and System forDistributing Commands to Targets”的______(PIVOT1120-1);由Galloway等在2009年6月5日提交的、题目为“Method and System forInitializing Storage in a Storage System”的______(PIVOT1130-1);由Galloway等在2009年6月5日提交的、题目为“Method and System for Rebuilding Data in a DistributedRAID System”的______(PIVOT1140-1);和由Galloway等在2009年6月5日提交的、题目为“Method and System for Placement of Data on aStorage Device”的______(PIVOT1150-1),所有这些专利申请在此引用以供参考。
具体地,对于数据存储的上下文的概略的讨论可以是有帮助的。正如以上讨论的,RAID系统划分和复制在多个硬盘驱动器(或其它类型的存储介质)上的数据,统称为阵列,以便通过使用这些RAID系统用于存储而增加可靠度,并在某些情形下,提高计算设备(称为主机)的吞吐量。然而,RAID的当前的实现可能有各种各样的问题。这些问题是来自于由这些RAID系统的结构体系所施加的限制条件,来自于在包括RAID系统的盘上数据的配置或布局,或来自于对于使用定制的硬件或软件来实现这些解决方案的需要,提高与实现这样的解决方案相关联的花费。因此,尤其希望基本上改善这些问题。
为此,现在把注意力指向本发明的系统和方法。这些系统和方法的实施例提供包括一组数据库的分布式RAID系统。更具体地,在分布式RAID系统的某些实施例中,每个数据库具有一组相关联的存储介质,并且执行类似的分布式RAID应用。在每个数据库上的分布式RAID应用结合被存储在数据库的相关的存储介质上的数据,在分布式RAID应用之间进行协调,以分布和控制与实现RAID级别相关联的数据流。
具体地,在某些实施例中,可以通过使用分布式RAID系统创建具有相关的RAID级别的卷。然后每个分布式RAID应用可以协调与该卷的数据相关联的操作,以使得与该卷相关联的数据或与该卷相结合的、期望的RAID级别的实现相关联的数据可被存储在分布式RAID系统的多个数据库上。
通过使用在多个数据库的每个数据库上执行的类似的分布式RAID应用,把卷的数据和与RAID的实现相关联的数据存储在那些多个数据库上,通过协调结合该卷的RAID级别的实现,可以达到许多优点。即,可以分配不同的存储卷,一个或多个卷结合不同的RAID级别被实现。而且,由于在数据库上的存储和RAID的实现的协调是通过使用基本上相同的分布式RAID应用而完成的,在许多情形下,可以利用标准的或现有的硬件,诸如基于标准x86的服务器和存储介质。通过利用这里给出的实施例或其它实施例,也可以实现许多其它优点,并且在阅读本公开内容后,将认识到这样的优点,这些优点可以或可能没有以具体的细节被指出。
现在转到图1,图上显示利用分布式RAID系统的一个实施例的系统的结构体系的示意图。分布式RAID系统100包括一组数据库110,每个数据库110通信地耦合到两个交换机120。每个交换机120还通信地耦合到每个主机102,以使得主机102可以通过对应于特定的数据库110的一组路径与每个数据库110进行通信,每条路径包括一个交换机120。
在数据库110,交换机120和主机102之间的通信耦合可以通过使用几乎任何期望的输送介质(有线或无线),包括以太网、SCSI、iSCSI、光纤信道、串行附属SCSI(“SAS”)、先进技术附件(“ATA”)、串行ATA(“SATA”)、或在技术上已知的其它协议,而被完成。而且,通信的耦合可以结合诸如互联网、LAN、WAN、无线网或在技术上已知的任何其它通信网那样的通信网被实现。
在一个实施例中,然后,通过使用诸如iSCSI、SCSI等那样的命令协议,主机102可以与数据库110通信,以便操控数据。更具体地,每个数据库110包括存储介质(正如将在后面更详细地说明的)。总的来说,在数据库110中的存储介质可被虚拟化,并呈现给主机102作为一个或多个邻接的存储块、存储设备等等。例如,当利用iSCSI协议时,在数据库110中的存储介质可被呈现给主机102作为SCSI目标,在一个实施例中,其具有多个端口。
因此,在运行期间,在一个实施例中,主机102(或在主机102处或与数据库110相接口的用户)可以请求创建一个卷,并规定要结合该卷实现的RAID的级别。与该卷相关联的数据和与该卷相关联的期望的级别RAID的实现相关联的数据被存储在数据库110。主机102然后可以通过使用对应于该卷或该卷的一部分的逻辑地址而存取这个卷。这样,主机102可以利用所创建的存储的卷,以及可以结合这些卷达到对于主机102基本上觉察不到的故障容忍度。
通过参考图2A可以更好地理解存储的虚拟化和利用数据库110的RAID的实现,在图2A上显示用来实现分布式RAID的数据库110的计算机的一个实施例的示意图。这里,数据库110包括数据存储器250和用来执行被存储在计算机可读的介质中的指令的处理器202,其中指令用来实现分布式RAID应用210。分布式RAID应用210可以周期地发布心跳通信到其它的数据库110上的分布式RAID应用210,以确定对于该数据库110是否有故障。如果分布式RAID应用210确定另一个数据库110正有故障,则它可以设置对应于该数据库110的一个或多个各种故障标记。通过使用这些故障标记用于在每个数据库110上的每个分布式RAID应用210,特定的分布式RAID应用210可以确定某个数据库110是否有故障。
分布式RAID应用210还可以存取(例如,读出、写入、发布命令等等)包括一个或多个存储介质的数据存储器250,该存储介质例如可以是按照几乎任何已知的协议,诸如SATA、PATA、FC等等运行的盘252,其中每个盘252可以,或可能不一定,具有相等的尺寸。在每个数据库110上执行的分布式RAID应用210可以允许通过使用在数据库110上的数据存储器250而分配和使用卷,以及通过利用在数据库110之间共享的一组全局表格、一组本地表格245和写高速缓存器260而结合这些卷实现RAID,所有这些表格可被存储在存储器230(它可以是数据存储器250或合在一起的另外的存储器)。
图2B显示可被使用来实现用来实现分布式RAID的数据库110计算机的硬件结构体系的一个实施例的示意图。在这个结构体系例子中,数据库110包括一个或多个处理器202,其可以一起附着到Intelx86结构体系或某个其它结构体系,以及存储器230,通过总线被耦合到I/O控制器中心212,其在一个实施例中可以是南桥芯片等等。I/O控制器中心212又可以被耦合到和控制诸如PCI-X总线、PC-串行总线等等那样的总线272。被耦合到这个总线的是一个或多个盘控制器262,诸如,例如LSI 1068 SATA/SAS控制器。这些盘控制器262的每个盘控制器被耦合到一个或多个盘252,其中总的来说,这些盘252可包括数据存储器250。另外,一个或多个网络接口282也可以被耦合到总线272。这些网络接口282可以是被包括在主板上的网络接口(诸如,以太网等等),它可包括被配置成经由诸如以太网、光纤信道等那样的一个或多个协议进行接口的一个或多个网络接口卡,或可以是某些其它类型的网络接口,以使得数据库110可以通过这些网络接口282与交换机120通信。
现在移到图3,图上显示用于在数据库110上的数据存储器250中进行卷的分配和与这些卷相关联的数据的布局的方法的一个实施例。一开始,在这些卷在数据存储器250的盘252上进行分配之前,可以在步骤305对盘252进行格式化。正如以上讨论的,为了具有从任何故障中容易和简单地进行恢复的能力,需要冗余性数据相对于任何对应的存储的数据是精确的。在许多情形下,这可以使得盘252被利用来存储通过从盘252上的区域中的当前的数据计算冗余性数据而被格式化的卷,其中该卷的某些部分是要被存储的,即使被存储在这些区域中的数据当前也可能是垃圾数值。这些计算可能耗费不希望的大量时间。
而且,在诸如对于图1详细说明的那样的分布式RAID环境下,可能出现其它问题。更具体地,因为卷的不同的部分可被存储在不同的数据库110,以及对应于卷的冗余性数据也可以被存储在各种不同的数据库110,完成这种类型的格式化另外还需要在数据库110上的分布式RAID应用210之间大量通信,这消耗处理器周期和通信带宽。
因此,在一个实施例中,为了保证对应于在其中要存储卷的数据的盘的区域的冗余性数据相对于在其中要存储卷的数据的盘252的区域是精确的,可以把零数值写入到在其中要存储对应于卷的数据的盘252的区域以及在其中要存储冗余性数据的盘252的区域。通过使得在其中要存储卷的数据的盘252的区域和在其中要存储冗余性数据的盘252的区域零化,可以保证卷的任何数据可以从它的对应的冗余性数据被重新创建。
使得盘252零化,可以具有其它优点。即,为了可以不需要执行复杂的计算来确定冗余性数据,并且可以不需要在分布式RAID应用210之间的通信达到在要存储卷的区域与对应于那些区域的冗余性数据之间的相对精度。
重要地,通过使得用于卷及其对应的冗余性数据的盘252的区域零化,可以避免RAID系统100的使用性能的重大的延时。通过使用在运行期间基本上连续地使得盘252的未分配的区域零化的过程,这是例如由于分布式RAID系统100的初始使用、新盘252的安装、和卷的删除等等引起的,可以实现这些优点。在这些事例中,可以向每个数据库110上的盘252的当前未分配的(即,当前没有被分配的)区域写入零(称为“零化”该区域)。
被零化的盘252的未分配的区域可被跟踪,以使得当对应于卷的一部分或与卷的一部分相关联的冗余性数据的命令在该部分被分配到的数据库110处被接收时,分布式RAID应用210可以检验以确定该部分是否已被分配以在该部分被分配到的数据库110上的盘252的对应的区域。如果在数据库110上的盘252的对应的区域还没有被分配,则分布式RAID应用210可以选择已被零化的盘252的区域,并把盘252的这个区域分配给卷的部分或对应的冗余性数据。
通过同时零化以前未被零化的任何未分配的区域并且等待直至接收到对应于卷的一部分或冗余性数据的命令把盘252的零化的区域分配给该部分为止,分布式RAID系统100可以基本上立即运行而不用长的所牵涉到的格式化过程,并且可以对于分布式RAID系统100的运行相对地不引人注意地加上新的盘252和删除或释放卷。
所以,在阅读以上内容后将指出,其中对盘252进行格式化的步骤305可以在卷创建之前、期间、或之后,相对于分布式RAID系统100被完成,以及步骤305(和在这里的所有的流程图中所有的其它步骤)的设置没有对于步骤暗示次序。正如在透彻地考察图3的步骤的其余部分和本公开内容的其余部分后将指出的,卷可被创建,以及所述卷的部分和对应于卷的冗余性数据在这些数据库110上的盘252的物理区域被分配来存储该卷的部分或冗余性数据之前被分配到数据库110,而且,用来存储对应于这样的部分的数据的盘252上的物理区域的零化,可以在卷创建之前或在卷创建之后但在这些物理区域被分配给卷的对应的部分或冗余性数据之前进行(正如将在下文中更详细地讨论的)。
这些位置可以参照可以由分布式RAID应用210的实施例所利用的段的概念更好地进行说明,其中段可以是2048个逻辑块地址(LBA)的尺寸(或某个其它尺寸),以及逻辑块地址的尺寸对应于盘252的扇区尺寸。所以,在每个数据库110上的数据存储器250中的盘252可以在步骤310被分割成相等尺寸的段(例如,1MB)。这些段可以对应于盘驱动器252的一个或多个邻接的数据块。所以,当用户或主机102在步骤320请求从分布式RAID应用210创建卷并且在步骤330规定将与该卷结合使用的RAID的级别时,对应于所请求的该卷的尺寸的这些段的数目加上期望结合该卷实现期望的RAID级别的段的数目,可以在步骤340被分配给该卷。
因此,卷包括许多段(也称为逻辑段),其中这些段的每个段可以与特定的数据库110相关联,以使得数据库110可被分配来管理卷的该段。这个段例如可以是2048个逻辑块地址(LBA)的尺寸,其中逻辑块地址的尺寸对应于盘252的扇区尺寸(其它安排和尺寸也是可能的)。在大多数情形下,包括卷的该段的物理存储将被存储在管理该段的数据库110的数据存储器250中,然而,在其它情形下,对应于该段的数据可被存储在不同的数据库110的数据存储器250中(换句话说,在某些情形下,包括管理该段的分布式RAID应用的数据库110可以与包括存储对应于该段的数据的数据存储器250的数据库110不同)。
在一个实施例中,把段分配给对应于特定的卷的数据库110,可以通过确定对应于分布式RAID系统100的数据库组110的随机排列(permutation)来完成。因此,如果有六个数据库,则可以确定大小为六的随机排列,其中随机排列包括每个数据库,以使得段可以连续地以随机排列的次序被分配给每个数据库。
例如,假设在分布式RAID系统中有四个数据库110(把它们称为数据库1、数据库2等等)。可以确定数据库2、数据库4、数据库1和数据库3的随机排列。在这种情形下,对应于卷的第一段是在数据库2上,第二段可以是在数据库4上,第三段是在数据库1上,第四段是在数据库3上,以及第五段再次在数据库4上。这样,如果对应于卷的随机排列是已知的,则与卷对应的特定的段的位置可以在数学上被确定。
如上所述,用户可以规定:在步骤330结合卷实现RAID级别。在这种情形下,分布式RAID应用210可以保证对应于结合卷的RAID的实现的任何数据在步骤350被存储在适当的位置,以使得RAID信息被适当地分布在数据库110,以保证达到期望的级别的RAID。
例如,如果期望结合卷实现RAID 5,则分布式RAID应用210可以确定期望的RAID奇偶校验组尺寸(例如,根据用户配置的RAID组或以其他方式确定)。这个确定可以是基于在分布式RAID系统中数据库110的数目,以及在一个实施例中,这个数目可以是小于数据库110的数目(考虑到奇偶校验数据,加上另一个数目)。
为了说明,如果有五个数据库110,对于用来存储与卷相关联的数据的每四个段(被称为数据段),一个段被专用于奇偶校验,以及对于这四个段的奇偶校验被计算,并被存储在这个奇偶校验段,其中奇偶校验段在数据库110中被专用,其数据存储器250不包括该数据段,由此计算奇偶校验段的奇偶校验数据。
在这时,对应于逻辑卷的每个段被分配到特定的数据库110,以及要被利用来存储对应于卷的RAID数据的任何段100(在这里可互换地称为冗余性段或奇偶校验段,不失去对于段使用的一般应用性,用来存储与结合卷实现任何的RAID级别相关联的任何类型的冗余性数据)也被分配给数据库110,然而,数据库的数据存储器250的盘252的物理扇区还没有被分配来存储对应于那些段的数据。因此,在步骤360,可以确定在数据库110上的盘252的物理段,其中把它分配给卷的逻辑段。这个段映射可被存储在每个数据库110的逻辑表245中。正如较早先提到的,这种分配可以在以后的某个时间点进行,例如,当命令首次试图写逻辑段时。
在一个实施例中,当进行这样的分配时,可以对于所存取的逻辑段考虑盘252的区域不同的性能特征。换句话说,盘252可具有一些段,它比起同一个盘的其它段更有效地被存取。所以,在一个实施例中,可能希望根据与逻辑段相关联的准则来分配盘252的物理段。所述特征例如可包括诸如与对应于逻辑段的卷相关联的服务质量指定、对于包括逻辑段的卷的存取次数等等那样的事物。
然后,在步骤370,对应于卷的信息可被存储,以使得可以从这个存储的信息确定对应于卷的段或对应于结合该卷的RAID的实现的段的位置。这个存储的信息(统称为映射数据)因此可包括卷的标识、对应于卷的随机排列(例如,指示段被置于数据库110的次序)、以及任何的RAID实现的奇偶校验组尺寸(例如,如果该卷对应于4+1RAID组,7+1RAID组,如果RAID 1被实现等等)。这个数据可被存储在例如全局表格240中,以使得它可以被传送到其他数据库110上的另外的分布式RAID应用210,以保证与每个分布式RAID应用210相关联的表格组240的至少一个部分基本上保持一致和位置。
参照图4可以更好地理解以上说明,图4上显示具有五个数据库110的分布式RAID系统的一个实施例的例子。这里,每个数据库110的每个数据存储器250被布置为一组相等尺寸的段402,对于本例的目的,该段被假设为具有1MB的尺寸。现在假设,主机102从在数据库110b上的分布式RAID应用210b中请求RAID级别5的8MB的卷。在这种情形下,分布式RAID应用210b可以确定,对于卷的数据部分需要八个段402,而需要两个段402用来存储结合对于卷的期望的RAID级别的实现的对于卷的冗余性数据。然后分布式RAID应用210可以确定对于卷的随机排列。对于本例的目的,假设随机排列是:数据库110b、数据库110d、数据库110a、数据库110c、和数据库110e。因此,数据库110b可被分配给段402a,所请求的卷的第一个段;数据库110d可被分配给段402b,所请求的卷的第二个段;数据库110a可被分配给段402c,所请求的卷的第三个段;数据库110c可被分配给段402d,所请求的卷的第四个段;以及数据库110e可被分配给段402e,所请求的卷的第五个段。然后,分配再次从随机次序的第一数据库110开始,这样,数据库110b可被分配给段402f,所请求的卷的第六个段;数据库110d可被分配给段402g,所请求的卷的第七个段;以及数据库110a可被分配给段402h,所请求的卷的第八个段。
一旦用于存储与卷相关联的数据的数据段402a-402h都已分配,分布式RAID应用210b就可以分配段402,用于与该RAID级别的实现相关联的任何数据。在本例中,因为RAID 5是对于所述卷所期望的,分布式RAID应用210b可以确定,因为五个数据库110正在被利用,可期望(4+1)奇偶校验组。分布式RAID应用210b然后可以确定,为了存储奇偶校验以便结合八个段402实现RAID 5,可能需要另外两个段402。
而且,可能希望通过利用特定的数据段组402而被创建的奇偶校验不被存储在其数据存储器已具有那些数据段组402的任何数据段组的数据库110上。因此,分布式RAID应用210b还可以确定其中每个奇偶校验段根据所确定的RAID奇偶校验组尺寸而被分配到的位置,第一数据段402a的位置等等。这里,将存储对应于被存储在数据段402a、402b、402c和402d中的数据的奇偶校验数据的奇偶校验段402i,将被分配在数据库110c的数据存储器250c中,而将存储对应于被存储在数据段402e、402f、402g和402h中的数据的奇偶校验数据的奇偶校验段402j,将被分配在数据库110e的数据存储器250e中。这里应当指出,将存储与RAID结合包括数据段402a-402h的实现相关联的奇偶校验信息的奇偶校验段402i、402j被布置和被做成同存储与卷相关联的数据的那些段402a-402h基本上相同的尺寸。
因此,当主机102存取卷时,对于对应于卷的第一数据段的逻辑地址的请求可以对应于在数据库110b上的数据段402a,对于对应于卷的第二数据段的逻辑地址的请求可以对应于在数据库110d上的数据段402b,等等。这里应当指出,分配的数据段402a-402h可以处在不同的数据库110上,以及任何被分配的数据段402a-402h的位置可以通过使用与该卷相关联的随机排列(例如,如被存储在数据库110处的全局表格240中)来确定。然而,正如以上讨论的,在数据库110上的数据存储器250已被虚拟化,因此请求的主机不知道数据段402在数据存储器250中的位置,存在多个数据存储器250,数据存储器250被布置在多个数据库110上,等等。主机相信它正在寻址单个相邻的卷。
将会看到,在本例中,数据段402在数据库110上的位置(和数据库110的对应的随机排列)是用于示例说明,以及卷的数据段402可以按照几乎任何随机的或其它的排列,被放置在任何的数据库110的任何的数据存储器250上。而且,将会指出,虽然每个段402在本例中是1MB,但这些段可以具有任何尺寸而不失一般性,以及1MB尺寸仅仅被选择来用于易于示例说明。
正如从以上的说明中可以看到的,特定的数据段402或奇偶校验段402的位置可以在算法上通过使用与卷和RAID奇偶校验组尺寸相关联的随机排列(例如,使用被使用来分配用于卷的段、定位用于卷的奇偶校验段等的相同的随机排列)来确定。因此,所述信息可以结合对应于卷的标识被存储在例如全局表格组240中。而且,这些全局表格240可以在数据库110之间被传送,或以其他方式被更新,以使得在每个数据库110中的全局表格组240的至少一部分可以基本上保持一致。
在这里概略地深入研究关于与分布式RAID应用210相关联的全局表格240的更多的细节是有帮助的。正如所讨论的,在一个实施例中,全局表格240可以存储与由分布式RAID应用210创建的卷相关联的信息,其中那些表格240可被使用来确定与在该卷内的数据段相关联的数据库110,或在其中放置与对应于该卷的数据段相关联的奇偶校验段。全局表格240因此可包括一组表格,每个表格对应于相对于数据库110实现的卷。具体地,这些表格240中的一个表格可包含可被使用来标识其数据存储器250包括卷的某个段的数据库110的数据。具体地,这个表格可被使用来将与卷相关联的逻辑地址与其中存储对应于该逻辑地址的段(数据、冗余性等等)的数据库110相联系。
图5显示这种类型的表格的一个实施例的图形表示,其中每个卷可以与这样的表格的相关联的实例相联系。表格550包括以下项:逻辑卷号码504、段尺寸508、段计数512、服务质量(QOS)514、范围计数518、用于范围项的信息,在所描述的实施例中包括第一范围524a、和第二范围524b以及任何附加范围项524n。
逻辑卷号码504是被使用来标识特定的卷的唯一的号码,段尺寸508对应于被使用来实现卷的段的尺寸,段计数512对应于与逻辑卷对应的段的数目(例如,数据段与冗余性段的数目、仅仅数据段的数目等等),QOS 514表示期望相对于卷实现的服务的质量(应当指出,这个QOS指示符指示被给予该卷的、相对于被存储在数据库110的其它卷的优先级),以及范围计数518指示与卷相关联的范围的数目,而范围项524每个对应于那些范围中的一个范围。
范围可以对应于特定的数据库110次序和RAID实现。多个范围可以因为各种各样原因被利用来实现卷。具体地,例如,多个范围可以结合卷被利用,因为在不同的数据库110处的不同的数据存储器250可以具有可供使用的、在数据存储器250中不同的存储量。这可导致一种情形,其中例如对于卷的第一范围,全部数据库110可以结合第一RAID实现被利用,而在卷的第二范围中,少于全部可供使用的数据库110可以结合第二RAID实现被利用(其中第一和第二RAID实现事实上可以是互相不同的级别)。这些范围的每个范围所以可对应于按照不同的数据库110次序(例如,随机排列等等)被布置的段,具有可供使用的、不同的数目的数据库110、不同的类型的RAID等等。
为了使用具体的例子进行说明,概略地考察图4。假设具有RAID级别5的8MB的卷被如图所示的那样布置,其中数据段按照数据库110b、数据库110d、数据库110a、数据库110c、和数据库110e的次序被布置,以及RAID 5结合卷被实现,利用具有在数据库110c的数据存储器250c和数据库110e的数据存储器250e中所分配的奇偶校验段的(4+1)奇偶校验组可能是希望的。
现在假设请求给这个卷加上附加的3MB。然而,在本例中假设数据库110e、110c、和110d的数据存储器250没有更多的空间。因此,在这种情形下,唯一的解决方案可以是在其数据存储器250中具有剩余的存储量的数据库110a与110b之间分配附加的期望的3MB。而且,因为仅仅两个数据库110是可供使用的,仅仅有可能利用RAID级别1,而不是如对于卷的头8MB所利用的RAID级别5。因此,在这种情形下,卷的头8MB可以对应于第一范围,并在对应于具有第一组数值的卷的表格中具有第一范围项,而卷的接着的3MB可以对应于第二范围,并在对应于具有第二组数值的卷的表格中具有第二范围项。正如在阅读本公开内容后可以看到的,这种类型的现象可以以某个频率出现。
回到图5,尤其是,为了处理这些类型的情形,卷的每个范围可以具有在表格550中的项,以使得在该特定的范围中段的位置可以从对应于该范围的范围项来确定。对于对应于表格550的卷的每个范围的项524是与范围计数518相关联的。在一个实施例中,范围计数518可以对应于卷的范围的数目,这样,范围项524的数目对应于范围计数518。虽然仅仅显示范围项524a和524b,但应当指出,在表格中的范围项524的数目将依赖于对应于由该表格所对应的卷的范围的数目。因此,如果卷被划分成三个范围,则在表格550中将有三个范围项524,这样,存在范围项524包括对于对应于表格550的卷的每个范围的信息。
对于范围项524的信息包括类型526、开始530、结束534、网络RAID 538、网络RAID尺寸542、盘RAID 546、盘RAID尺寸550、数据库计数554、数据库次序558、和被使用来存储与范围524相关联的段的每个数据库110对应的盘计数562和盘次序566(换句话说,将有等于该范围项524的数据库计数554的盘计数562和盘次序566)。类型526描述对应于对于范围项524的信息的范围的类型:例如,正常的、源(SRC)、目的地(DST)、或其它类型的范围。开始230是对应于范围项524的卷的范围的第一逻辑段地址。结束234是对应于与范围项524对应的卷的范围的信息的该范围的最后的逻辑段地址。其它安排也是可能的,例如,结束524可以是作为在范围中的段或块的最大数目的计数值,等等。
数据库计数554可以对应于其上存在对应于范围项的范围的数据库110的数目,数据库次序558可以是在该范围中的段被分配给数据库110的次序,而网络RAID 538、网络RAID尺寸542、盘RAID 546和盘RAID尺寸552可以对应于结合与范围项524对应的卷的范围被实现的RAID的类型。
网络RAID 538是与对应于表格550的卷相关联地实现的RAID的类型,例如,RAID 0、RAID 1或RAID 5或其它RAID类型。网络RAID尺寸542是在范围中使用的RAID类型的奇偶校验组尺寸。网络RAID尺寸542可以由在范围中的数据库110的数目被限制为小于或等于在范围中对应于对于范围524的信息的数据库的数目。盘RAID 546是在范围中在数据库中的盘上实现的RAID的类型。盘RAID尺寸552可以是在每个数据库110的数据存储器250中的盘252上所使用的RAID类型的奇偶校验组尺寸,以及它可被限制为小于或等于在数据库中的盘的数目。在实施例中,在范围中的数据库110中的盘上的RAID是任选的,它可以或可以不被使用。在这样的实施例中,或者盘RAID 546、盘RAID尺寸552,或者二者可以不被使用,或可以被省略。
数据库计数554是在范围中的数据库的数目,数据库次序558是在范围中的数据库110上RAID被实现(例如,剥除)的次序。例如,数据库110可以具有对应于以某个次序被保存的卷的逻辑地址的数据,数据库次序558对应于这个次序。盘计数562是在范围的数据库110内的盘的数目,盘次序566是在特定的数据库110的盘上RAID被实现的次序。例如,盘252可以具有以某个次序被保存在其上的段,盘次序566是在数据库110中的盘252上段被存储的次序。因此,对于被使用来存储与范围项524相关联的范围的段的每个数据库110,将有对应的盘计数562和盘次序566(换句话说,盘计数562和盘次序566的数目,在一个实施例中,将等于该范围项524的数据库计数554)。在实施例中,在数据库110中的盘252上的RAID是任选的,并且可以不被使用。将会指出,虽然表格550已具体地描述,但这个描述是作为例子而不是限制,也可以利用表格550的其它形式。例如,可以使用虚拟表格而不是表格550,它可以清楚地列出对应于每个逻辑地址的段402和数据库110。
因此,正如早先讨论的,在表格550中的信息可被使用来标识包括对应于逻辑地址的数据段402的数据库110(由主机102在命令中或在任何其它上下文中标出)。例如,在知道段402的尺寸和使用开始530、结束534、对应于地址的范围项524等等后,可以确定对应于卷的逻辑地址的特定的数据库110。
虽然表格240的一个或多个部分在所有的数据库110上可以是基本上相同的,并且可以描述如上所述的跨一个或多个数据库110的一个或多个逻辑卷,但在数据库110上的其它表格245对于它所对应的数据库110可以是不同的(例如,表格245可以是对于所对应的分布式RAID应用210在其上执行的数据库110唯一的)。这个表格245可包括与被包含在对应的数据库110的数据存储器250中的每个盘252有关的数据,以及可包括关于信息被存储在数据存储器的盘252上或在其之间的哪个地方的信息,例如,被分配给数据库110的段402在数据存储器250中所处的盘252的扇区。
在图6上,显示这种类型的表格的一个实施例的图形表示。表格660可被存储在特定的数据库110,它包括多个盘表格670,每个盘表格670对应于在该数据库110内的数据存储器250的盘252,并列出被存储在该盘252内的段的位置。更具体地,在大多数情形下,盘252被划分成物理扇区,每个物理扇区具有对应的地址或地址范围。
盘表格670可以是映射表,它可被利用来确定其中存储卷的段的数据库110的盘252的扇区的位置。因此,通过使用表格670,可以确定对应于卷的段的、在盘252上的扇区的地址。而且,该表格可以包含一个或多个标记,或对应于盘的段或扇区的、每项的描述性位,描述在该扇区中存储的扇区或段。
现在参照图7,图上显示盘表格670的一个实施例的图形表示。盘表格670具有多个项,每个项对应于相应的盘的物理段,这样,盘表格670的项描述盘252的物理段。在盘表格670中的每个项还可包括一个或多个标记或位字段,描述被存储在对应的扇区中的卷的物理段。更具体地,如图7所示,在一个实施例中,在盘表格670中的项包括用于逻辑卷号、逻辑段号、地址空间和扇区状态的字段。逻辑卷号标识对应于存储在该物理段处的数据的逻辑卷。逻辑段号标识对应于该数据的逻辑卷的段。地址空间标识存储为‘数据’或‘冗余性’的段。‘数据’的数值可以指示数据被存储在由该项表示的扇区,而‘冗余性’的数值指示被存储在扇区的信息可被使用于RAID数据保护,根据RAID级别,该信息可以是冗余的数据、镜像的数据或奇偶校验信息。扇区状态指示段的状态为“分配的”、“零化的”、或“脏的(dirty)”。“分配的”表示段已被分配,它可包括有效的数据。“零化的”表示段已通过把零写入到段而被零化,以及“脏的”表示段可能包括垃圾,或是无用的或不期望的数值,例如因为段还没有被零化或被分配,段可正存储随机位或数据。在一个实施例中,例如,对于新的盘,该盘的所有的段在对应于新的或新加上的盘的盘表格中被标记为脏的。
在阅读以上的、对于表格的说明后,将明白分布式RAID应用210可以利用全局表格240来确定哪个段对应于卷的逻辑地址,对应于卷的段(数据段或奇偶校验段)处在哪个数据库110上,卷的哪个段对应于卷的逻辑地址,与卷的段相关联的RAID数据(奇偶校验数据、镜像数据、其它类型的冗余性数据等等)处在哪个地方,特定的数据库110的哪个盘252包括段或关于对应于该特定的数据库110的卷、段或盘252的其它信息,或关于卷、段402、数据库110、RAID数据等等的其它信息。
类似地,在每个单独的数据库110上的分布式RAID应用210可以使用在该数据库110上的本地表格245来确定特定的段处在该数据库110上哪个地方(例如,盘252的哪个扇区等等),或关于对应于该特定的数据库110的卷、段或盘252的其它信息。
使用在数据库110之间共享的全局表格240和对应于每个单独的数据库110的本地表格245的组合后,某些操作可以由在数据库110上的分布式RAID应用210互相合作地执行。现在将更详细地讨论这些类型的操作。具体地,现在更详细地讨论其中结合卷实现RAID级别5的、在卷上实现读命令和写命令的一个实施例,随后是关于示例性分布式RAID系统的这些命令的实现的具体的例子。在透彻考察本公开内容后,将会指出可以如何实现其它类型的实施例、命令、RAID级别等等。
首先查看图8,图上显示用于在分布式RAID系统中实现读命令的方法的一个实施例的流程图。这个读命令可以由主机102通过交换机120发送到数据库110,或从一个数据库110发送到另一个数据库110。在某些实施例中,主机102可包括一个或多个应用和相关的路由信息,以使得读命令从发布命令的主机102沿在发布的主机102与适当的数据库110之间的路径被路由到适当的数据库110。然而,在其它情形下,在主机102上可以没有给出这样的应用或路由信息,因此从主机102发布的读命令可被路由到任何数据库110。在本实施例中将显示后者的情形。然而,在考察本实施例的描述后,本领域技术人员将会看到哪些步骤是也可应用于前者的情形。
在步骤810,然后,读命令可以在数据库110处被接收。在步骤820,在数据库110上的分布式RAID应用210可以确定对应于在接收的读命令中标注的逻辑地址的卷的段,以及在步骤830,确定卷的段被存储在哪个数据库110。正如以上讨论的,这个信息可以通过使用与分布式RAID应用210相关联的全局表格240来确定。如果正在存储段的数据库110是与接收读命令的数据库110相同的(正如在步骤832确定的),则请求的数据可以在步骤840从在接收数据库110上的数据存储器250的适当的盘252被得到,以及在步骤850,对于读命令作出应答。正如以上讨论的,其上存储段的数据库110的数据存储器250的特定的盘252,可以通过使用全局表格240来确定,而在该盘252上存储对应于段的数据的位置,可以通过使用本地表格245来确定,该本地表格245可被使用来把卷的段映射到盘252上的物理地址。如果接收数据库110接收来自主机102的读命令,则主机102可以得到应答,而如果接收数据库110接收来自另一个数据库110的读命令,则应答可被发送到发布读命令的数据库110上的分布式RAID应用210。
然而,如果段被存储在远程数据库110(不同于接收命令的那个数据库的数据库110),则在步骤860,读命令可被发送到远程数据库110处的分布式RAID应用210。在一个实施例中,这个读命令可以通过使用由分布式RAID应用210所利用的命令格式而被传送到远程数据库110处的分布式RAID应用210。这个命令在提供原先的读命令的有关的信息的同时,也可以指令分布式RAID应用把读命令的结果返还到原先接收该读命令的数据库110,或执行其它功能。因此,在读命令被发送到远程数据库110后,在步骤870,可以从远程数据库110接收包括请求的数据的应答,以及在步骤880,通过使用在该应答中接收的数据而应答所接收的读命令。
现在移到图9A和9B,图上显示用于在分布式RAID系统中实现写命令的方法的一个实施例的流程图。这个写命令可以由主机102通过交换机120发送到数据库110,或从一个数据库110发送到另一个数据库110。在某些实施例中,主机102可包括一个或多个应用和相关的路由信息,以使得写命令从发布命令的主机102沿在发布的主机102与适当的数据库110之间的路径被路由到适当的数据库110。然而,在其它情形下,在主机102上可以没有给出这样的应用或路由信息,因此从主机102发布的写命令可被路由到任何数据库110。在本实施例中将说明后者的情形。然而,在考察本实施例的描述后,本领域技术人员将会看到哪些步骤也可应用于前者的情形。
在步骤910,然后,写命令可以在接收数据库110处被接收。然后,在接收数据库110上的分布式RAID应用210可以在步骤920、930和940确定对应于由写命令标注的逻辑地址的卷的段,该段的位置(例如,哪个数据库110正在存储对应于该段的数据),和对应于该段的奇偶校验的位置(例如,哪个数据库110正在存储其中存储从对应于该段的数据产生的奇偶校验数据的段)。正如以上讨论的,数据段和奇偶校验段的位置都可以通过使用被存储在接收数据库110上的全局表格240来确定。
如果在接收数据库110上既没有存储数据段(存储数据的段)也没有存储冗余性段(换句话说,其中从数据段创建的奇偶校验或其它类型的冗余性数据)(正如在步骤950和960确定的),则写命令可以在步骤964被传送到其上存储数据段的远程数据库110上的分布式RAID应用210,和在步骤966被传送到其上存储奇偶校验段的远程奇偶校验数据库110上的分布式RAID应用210。在一个实施例中,这个写命令可以通过使用由分布式RAID应用210利用的命令格式被传送到在远程数据库110和远程奇偶校验数据库110处的分布式RAID应用210。这个命令在提供原先的写命令的有关信息的同时,也可以指令分布式RAID应用210执行其它期望的功能。
因此,在写命令被发送到远程数据库110和远程奇偶校验数据库后,在步骤968和970,可以从在远程数据库110和远程奇偶校验数据库110处的分布式RAID应用210接收完成通知。一旦接收到这些确认,就可以由接收数据库110上的分布式RAID应用210对写命令作出应答。
回到步骤950,然而,如果在接收数据库110处存储有数据段,则在步骤952,确定是否从主机102或另一个数据库110接收到写命令。如果从主机102接收到写命令,则在步骤976,把写命令传送到远程奇偶校验数据库110的分布式RAID应用210,并在步骤974,把写命令放置在接收数据库110的写高速缓存器。在步骤978接收来自在远程奇偶校验数据库110处的分布式RAID应用210的完成通知后,在步骤980,可以由在接收数据库110处的分布式RAID应用210对于写命令作出应答(例如,被发送到主机102的应答)。而且,写命令本身可以在步骤982被处理。这个过程可能需要把与写命令相关联的数据存储到被存储在接收数据库110中的数据段,或其它功能。
另一方面,如果在步骤952没有从主机102接收到写命令,则这可能表示,写命令从另一个数据库110(在许多情形下,它可以是原先从主机102接收写命令的数据库110)被接收。在这种情形下,数据库110可以在步骤984把接收的写命令放置在它的写高速缓存器,并且在步骤986,把完成通知发送到发布的数据库110。然后,在以后的某个时间点,写命令本身可以在步骤988被处理。
再次回到步骤950,如果在接收数据库110处没有存储数据段,但在接收数据库110处存储有奇偶校验段,正如在步骤960确定的,则可以在步骤962确定写命令是从主机102还是从另一个数据库110接收的。如果写命令是从主机102接收的,则在步骤1002,写命令可被传送到其中存储对应于写的数据段的远程数据库110的分布式RAID应用210,并且在步骤1000,写命令被放置在接收数据库110的写高速缓存器。在步骤1004接收到来自远程数据库110的分布式RAID应用210的完成通知后,在步骤1006,可以由在接收数据库110处的分布式RAID应用210对于写命令作出应答,以及在步骤1008,由接收数据库110处理写命令。
这里,处理写命令可能要求被存储在接收数据库110处的奇偶校验段可以根据写命令被更新。奇偶校验段的更新可以以各种各样方式完成,这里并不详细说明所有的方式,但本领域技术人员将知道这些方式。例如,在奇偶校验数据库110上的分布式RAID应用210可以执行逆(back out)写入,以便更新奇偶校验段。执行这种逆写入,可能需要得到从其产生奇偶校验段的数据段和通过使用所得到的数据段和与写命令相关联的、要被写入的数据而执行逻辑运算(诸如,异或(XOR)运算)。替换地,如果在接收数据库110上的分布式RAID应用210具有对应于从其产生奇偶校验段的每个数据段的多个写命令,则可以计算新的奇偶校验段,以及原先的奇偶校验段可以通过用新计算的奇偶校验段替代它而被更新。通过考察这里的公开内容,可以认识到用于更新奇偶校验段的其它方法,被分布式RAID应用利用来更新奇偶校验段的具体的方法可以依赖于各种各样因素,包括配置参数、某些数据的可提供性(例如,对应于用来产生奇偶校验的所有的数据段的写命令等等)或任何的许多其它因素。
现在回到步骤962,如果没有从主机接收到写命令,则这可能表示写命令是从另一个数据库110(在许多情形下,它可以是原先从主机102接收写命令的数据库110)接收的。在这种情形下,写命令可以在步骤990被放置在接收数据库110的写高速缓存器中,以及在步骤992,把完成通知发送到发布数据库。然后可以在步骤994处理写命令(例如,奇偶校验段可以如以上讨论的那样被更新)。
在考察以上的讨论后,将会指出,在许多情形下,在特定的数据库110处的分布式RAID应用210在接收到来自奇偶校验数据库110的通知之前不能处理所接收的写命令,奇偶校验数据库可能需要评估多个接收的写命令来确定或实现当期望存储一个或多个写命令或评估这些存储的写命令组时用于更新奇偶校验或任何的许多其它实例的方法。为了易于存储和评估写(或其它)命令,每个分布式RAID应用210可以具有相关联的写高速缓存器260。
写高速缓存器的一个实施例的表示显示于图10。当写命令被分布式RAID应用210接收时,它们被放置在写高速缓存器1100。每个这些写命令1160可以具有指示何时接收到写命令的相关联的时间戳。因此,在一个实施例中,写高速缓存器1100可包括加时间戳的写命令1160的队列。在某个时间点,时间戳标记可以由分布式RAID应用210发布。这个时间戳标记可包括时间,并且可被传送到每个分布式RAID应用210。何时发布时间戳标记,可以以各种各样的方式被确定,诸如当写高速缓存器1100是某个百分数的充满度时,或当接收到某个数目的写命令1160时,以某个时间间隔,或各种各样的其它方式。
无论如何,这个时间戳标记1110将把与每个分布式RAID应用210相关联的每个写高速缓存器分成至少两个段:封闭的标记1150,包括在时间戳标记1110之前接收的写命令1160(在本例中,写命令1160a,1160b,1160c,和1160d),和开放的标记1140,包括在时间戳标记1110之后接收的写命令1160(在本例中,写命令1160e,1160f,和1160g)。分布式RAID应用210然后可以评估在封闭的标记1150中的该组写命令1160(在本例中,写命令1160a,1160b,1160c,和1160d),以确定这些写命令1160如何被处理,而同时接收的写命令仍旧可被加到开放标记1140。
相反,因为封闭标记1150包括不再改变的写命令组,分布式RAID应用可以互相(或按其它准则)评估这组写命令1160,以确定执行的次序(所以,可以重新排序在封闭标记1160中的写命令),更新奇偶校验段的方法(例如,如果在封闭标记1150中有对应于被使用来产生奇偶校验的每个数据段的写命令),或作出与写命令1160的处理相关联的其它决定。将会指出,因为时间戳标记1110可以由在每个数据库110上的任何的分布式RAID应用210由于多种原因被发布,多个封闭标记可以出现在任何时间点,例如,当多个时间戳标记1110由分布式RAID应用210在写高速缓存器被任何一个分布式RAID应用210评估的时间之间被发布时。
在考察以上说明后,读者现在可以明白,数据库110上的分布式RAID应用210如何相互合作地运行,达到虚拟化的存储和RAID的实现。然而,讨论在故障出现后分布式RAID应用210的某些实施例的作用,对于了解某些实施例可能是进一步有帮助的。正如以上讨论的,分布式RAID应用210可以知道(例如,已存储)有故障的数据库(换句话说,数据库可能有硬件、软件、通信或其它故障,阻碍或损害数据库110操作或存取数据的能力)。分布式RAID应用210能够考虑这样的故障同时满足来自主机102的命令。
为了说明,图11显示用于在分布式RAID系统中实现读命令的方法的一个实施例的流程图。将会看到,这个方法应用到其中结合一系列卷实现RAID 5的实施例,以及在实现RAID的其它级别(或没有级别)的情形下,也可以很好地同样应用到其它实施例。读命令可以由主机102通过交换机120被发送到数据库110,或从另一个数据库110发送到接收数据库110。在步骤1110,然后读命令可以在数据库110处被接收。在数据库110上的分布式RAID应用210可以在步骤1220确定对应于在接收的读命令中标注的逻辑地址的数据段,以及在步骤1230,确定数据段存储在哪个数据库110上。如果正在存储数据段的数据库110是与接收读命令的数据库110相同的(如在步骤1240确定的),则在步骤1250,可以从接收数据库110上的数据存储器250的适当的盘252得到请求的数据,以及在步骤1252,通过使用所得到的数据应答接收的读命令。如果接收数据库110接收到来自主机102的读命令,则可以对于主机102作出应答,而如果接收数据库110接收到来自另一个数据库110的读命令,则可以把应答发送到发布读命令的数据库110上的分布式RAID应用210。
然而,如果在步骤1254,数据段被存储在远程数据库110(与接收命令的数据库不同的数据库110),则可以确定要在其上存储要被读出的数据段的远程数据库110是否有故障。如果没有故障,则读命令可被发送到在远程数据库110处的分布式RAID应用210。在步骤1258,从远程数据库110接收到包括请求的数据的应答后,在步骤1260,可以使用该数据来应答所接收的读命令。
然而,如果远程数据库110有故障,则在步骤1254,可以确定接收数据库110是否保持对应于与读命令相关联的数据段的奇偶校验段。如果奇偶校验段被存储在接收数据库110,则可以通过使用在接收数据库110处存储的奇偶校验段而得到对应于读命令的数据段。从奇偶校验数据得到数据段可以以各种各样的方式完成,这些方式不再更详细地阐述,包括从其它数据库110得到其它数据段(与对应于读命令的数据段不同的数据段)和通过在其它数据段与奇偶校验段之间执行逻辑运算而得到期望的数据段。一旦在步骤1268通过使用奇偶校验数据而得到请求的数据段,就在步骤1270对于接收的读命令作出应答。如果接收数据库110从主机102接收读命令,则可以对于主机102作出应答,而如果接收数据库110从另一个数据库110接收读命令,则应答可被发送到发布读命令的数据库110上的分布式RAID应用210。
如果接收数据库110不是存储奇偶校验块的数据库110,则在步骤1262,读命令可被发送到其上存储对应于在读命令中标注的数据段的奇偶校验段的远程数据库110。在步骤1264从远程奇偶校验数据可110接收包括请求的数据的应答后,在步骤1266,所接收的读命令可以通过使用该数据被应答。
移到图12,图上显示用于在分布式RAID系统中实现写命令的方法的一个实施例的流程图。这个写命令可以由主机102通过交换机120被发送到数据库110,或从一个数据库110发送到另一个数据库110。在步骤1310,然后写命令可以在接收数据库110处被接收。在接收数据库110上的分布式RAID应用210然后可以在步骤1312,1314和1320确定对应于由写命令所标注的逻辑地址的数据段,该数据段的位置(例如,哪个数据库110正在存储对应于该段的数据),和对应于该数据段的奇偶校验段的位置(例如,哪个数据库110正在存储其中存储从对应于该段的数据产生的奇偶校验数据的段)。正如以上讨论的,数据段和奇偶校验段的位置可以通过使用被存储在接收数据库110上的表格组240来确定。
然后可以确定其上存储的数据段的数据库110或其上存储的奇偶校验段的数据库110是否有故障。如果这两个数据库110都没有故障,则可以在步骤1324由分布式RAID应用210实行正常的写操作。正常的写操作先前已参照图9A和9B被讨论过,所以不再讨论。
然而,如果这两个数据库110的任一个数据库有故障,则在步骤1326,可以进行考虑有故障的数据库110的写操作。这个写操作可以基本上相同地类似于参照图9A和9B描述的写操作,除了在写命令被发送到数据库110之前确定写命令要被发送到的数据库110是否有故障,以及如果有故障,则不把写命令发送到有故障的数据库110。在所有的其它方面,写操作基本上是相同的。
在考察上述的流程图后,参照在运行的分布式RAID系统的一个实施例的具体的例子,可以更好地了解某些实施例的运行。为此,注意点回到图4,图上显示具有五个数据库110的分布式RAID系统的一个实施例。从第一例开始,假设主机102b发布读命令到数据库110c,其中读命令标注在数据库110a上对应于数据段“2”402c的逻辑地址。这里,数据库110c上的分布式RAID应用210c可以确定:接收的读命令的逻辑地址是指数据段“2”402c,以及数据段“2”402c被存储在数据库110a上。分布式RAID应用210c然后把对应的读命令发送到数据库110a。
数据库110a上的分布式RAID应用210a可以接收这个读命令,确定读命令标注对应于数据段“2”402c的逻辑地址,以及数据段“2”402c位于在其上运行的数据库110a上。分布式RAID应用210a然后可以存取数据存储器250a,以便从数据段“2”402c得到请求的数据,和把这个得到的数据返回到在发布的数据库110c处的分布式RAID应用210c。在数据库110c上的分布式RAID应用210c可以接收来自数据库110a上的分布式RAID应用210a的这个应答,并使用来自这个应答的数据,对于从主机102b发布的原先的读命令作出应答。
现在假设主机102b发布读命令到数据库110c,其中读命令标注在数据库110a上对应于数据段“2”402c的逻辑地址,但该数据库110a有故障,不再运行。在这种情形下,在数据库110c上的分布式RAID应用210c可以确定:接收的读命令的逻辑地址是指数据段“2”402c,以及数据段“2”402c被存储在数据库110a上。另外,在数据库110c上的分布式RAID应用210c也可以确定数据库110a有故障。
因此,分布式RAID应用210c可以确定对应于数据段“2”402c的奇偶校验段402j的位置是数据库110e。分布式RAID应用210c然后可以发送读命令到数据库110e。在数据库110e上的分布式RAID应用210e可以接收这个命令,确定读命令标注对应于数据段“2”402c的逻辑地址,以及对应于数据段“2”402c的奇偶校验段402j位于在其上执行的数据库110e。分布式RAID应用210e然后可以存取数据存储器250e,以便存取奇偶校验段402j,和通过使用奇偶校验段402j得到来自数据段“2”402c的请求的数据。这个得到的数据可被返回到在发布的数据库110c处的分布式RAID应用210c。将会指出,分布式RAID应用210e可能需要其它数据来确定对于数据段“2”402c的请求的数据。因此,分布式RAID应用210e可以确定:被使用来结合数据段“2”402c产生奇偶校验段402j的数据段“0”402a、数据段“1”402b和数据段“3”402d的位置分别位于数据库110b、110d和110c。分布式RAID应用210e因此可以通过发送读请求到这些数据库110b、110d和110c而得到数据段“0”402a、数据段“1”402b和数据段“3”402d,并结合奇偶校验段402j使用数据段“0”402a、数据段“1”402b和数据段“3”402d来得到来自数据段“2”402c的请求的数据。
在数据库110c上的分布式RAID应用210c可以接收来自数据库110e上的分布式RAID应用210e的应答,并使用来自这个应答的数据,以便对于从主机102b发布的原先的读命令作出应答。这样,对应于数据段的数据仍旧可被主机读出,而不管在分布式RAID系统中出现故障。
继续进行写命令,假设主机102b发布写命令到数据库110c,其中写命令标注在数据库110a上对应于数据段“2”402c的逻辑地址。这里,在数据库110c上的分布式RAID应用210c可以确定接收的写命令的逻辑地址是指数据段“2”402c以及数据段“2”402c被存储在数据库110a上。而且,分布式RAID应用210c可以确定对应于数据段“2”402c的奇偶校验段402j位于数据库110e上。分布式RAID应用210c然后可以发送对应的写命令到数据库110a和110e。在接收到来自分布式RAID应用210a和210e的完成通知后,分布式RAID应用210c可以对于原先接收的写命令作出应答。
在数据库110e上的分布式RAID应用210e可以接收它的对应的写命令,确定写命令标注对应于数据段“2”402c的逻辑地址,以及对应于数据段“2”402c的奇偶校验段402j位于在其上执行的数据库110e。分布式RAID应用210e可以把写命令放置在它的写高速缓存器,并把完成通知发送到数据库110c。分布式RAID应用210e然后可以存取数据存储器250e,以便存取奇偶校验段402j,和通过使用在接收的写命令中标注的数据来更新奇偶校验段402j。
在数据库110a上的分布式RAID应用210a可以接收它的对应的写命令,确定写命令标注对应于数据段“2”402c的逻辑地址,以及数据段“2”402c位于在其上执行的数据库110a。分布式RAID应用210a可以把写命令放置在它的写高速缓存器,并把完成通知发送到数据库110c。分布式RAID应用210a然后可以存取数据存储器250a,以便通过使用在接收的写命令中标注的数据来更新数据段“2”402c。
现在再次假设主机102b发布写命令到数据库110c,其中写命令标注在数据库110a上对应于数据段“2”402c的逻辑地址,但该数据库110a有故障,不再运行。在这种情形下,在数据库110c上的分布式RAID应用210c可以确定接收的写命令的逻辑地址是指数据段“2”402c以及数据段“2”402c被存储在数据库110a上。另外,在数据库110c上的分布式RAID应用210c也可以确定数据库110a有故障。而且,分布式RAID应用210c可以确定对应于数据段“2”402c的奇偶校验段402j位于数据库110e。分布式RAID应用210c然后可以发送对应的写命令到数据库110e。在接收到来自分布式RAID应用210e的完成通知后,分布式RAID应用210c可以对于原先接收的写命令作出应答。
数据库110e上的分布式RAID应用210e可以接收对应的写命令,确定写命令标注对应于数据段“2”402c的逻辑地址,以及对应于数据段“2”402c的奇偶校验段402j位于在其上执行的数据库110e上。分布式RAID应用210e可以把写命令放置在它的写高速缓存器,并把完成通知发送到数据库110c。分布式RAID应用210e然后可以存取数据存储器250e,以便存取奇偶校验段402j,和通过使用在接收的写命令中标注的数据来更新奇偶校验段402j。这样,对应于数据段的数据仍旧可以由主机写入,而不管在分布式RAID系统中故障的出现。
在以上的技术说明书中,本发明是参照具体的实施例描述的。然而,本领域技术人员将会看到,可以作出各种不同的修改和改变,而不背离如在所附权利要求中阐述的本发明的范围。因此,技术说明书和附图应当在说明的意义而不是在限制的意义下考虑的,以及所有的这样的修改意在被包括在本发明的范围内。
在上面对于具体的实施例描述了益处、其它优点和对于问题的解决方案。然而,益处、优点和对于问题的解决方案以及可以使得任何益处、优点或解决方案出现或变为更明确的任何部件,不应当被看作为任何或所有的权利要求的关键的、需要的、或本质的特性或部件。
Claims (20)
1.一种用于实现分布式RAID的系统,包括:
一个或多个主机;
多个数据库计算机,每个数据库被耦合到每个主机和另外的多个数据库的每个数据库,每个数据库包括:
处理器;
数据存储器;
计算机可读的介质,包括可执行以下步骤的指令:
从一个或多个主机的第一主机接收对应于卷的第一段的命令,其中卷和对应于结合卷被实现的RAID级别的冗余性数据被存储在多个数据库的每个数据库,以使得对于卷的每个段,包括与该段相关联的冗余性数据的对应的冗余性段不处在与所述段相同的数据库上;
确定多个数据库的第一数据库,其中第一数据库对应于第一段;以及
如果第一数据库是接收命令的数据库,则对于第一段执行第一命令,而如果不是,则把第一命令转发到第一数据库。
2.根据权利要求1的系统,其中卷的每个段对应于多个数据库的一个数据库,每个段按照多个数据库的排列被分配到多个数据库的一个数据库,以及每个冗余性段被分配到同对应于与该冗余性段相关联的卷的任何段的多个数据库的每个数据库不同的多个数据库的一个数据库。
3.根据权利要求2的系统,其中计算机指令还可执行以下步骤:确定第一命令是否为写命令,以及如果第一命令是写命令,则确定多个数据库的第二数据库,其中第二数据库对应于与第一段相关联的第一冗余性段,以及如果第二数据库是接收所述命令的数据库,则对于第一冗余性段执行第一命令,而如果不是,则把第一命令转发到第二数据库。
4.根据权利要求3的系统,其中确定第一数据库和确定第二数据库包括存取在数据存储器中的全局表格,全局表格包括数据库的排列和RAID级别。
5.一种用于在具有处理器的计算设备上实现分布式RAID的方法,包括:
在多个数据库上建立卷,其中卷包括段组,所述段组被存储在多个数据库上;
结合所述卷实现RAID级别,其中实现RAID级别包括存储一组冗余性段,每个冗余性段对应于所述段组的一个或多个段,以使得每个冗余性段不与所述段组的对应的一个或多个段处在相同的数据库上;
接收对应于卷的所述段组的第一段的命令;
确定多个数据库的第一数据库,其中第一数据库对应于第一段;以及
对于第一段执行第一命令,其中第一命令在第一数据库上被执行。
6.根据权利要求5的方法,其中卷的段组的每个段对应于多个数据库的一个数据库,每个段按照多个数据库的排列被分配到数据库,以及所述冗余性段组的每个冗余性段被分配到同对应于与该冗余性段的一个或多个段的任何段相对应的多个数据库的每个数据库不同的数据库。
7.根据权利要求6的方法,还包括确定第一命令是否为写命令,以及如果第一命令是写命令,则确定多个数据库的第二数据库,其中第二数据库对应于与第一段相关联的第一冗余性段,以及对于第一冗余性段执行第一命令,其中第一命令在第二数据库上被执行。
8.根据权利要求7的方法,其中确定第一数据库和确定第二数据库包括存取全局表格,全局表格包括数据库的排列和RAID级别。
9.一种用于在一个或多个数据库计算机上实现分布式RAID的方法,每个数据库计算机被耦合到一个或多个主机和另外的多个数据库的每个数据库,所述方法包括:
从主机接收对应于卷的第一段的命令,其中卷和对应于结合卷被实现的RAID级别的冗余性数据被存储在多个数据库的每个数据库,以使得对于卷的每个段,包括与该段相关联的冗余性数据的对应的冗余性段不与所述段处在相同的数据库上;
确定多个数据库的第一数据库,其中第一数据库对应于第一段;
对于第一段执行第一命令,其中第一命令在第一数据库上被执行。
10.根据权利要求9的方法,其中卷的每个段对应于多个数据库的一个数据库,以及每个段按照多个数据库的排列被分配到数据库,以及每个冗余性段被分配到同对应于与该冗余性段相关联的卷的任何段的多个数据库的每个数据库不同的数据库。
11.根据权利要求10的方法,还包括确定第一命令是否为写命令,以及如果第一命令是写命令,则确定多个数据库的第二数据库,其中第二数据库对应于与第一段相关联的第一冗余性段,以及对于冗余性段执行第一命令,其中第一命令在第二数据库上被执行。
12.根据权利要求11的方法,其中确定第一数据库和确定第二数据库包括存取全局表格,全局表格包括数据库的排列和RAID级别。
13.一种计算机可读的介质,包括用于实现分布式RAID的计算机可执行的指令,计算机指令可执行以下步骤:
在多个数据库上建立卷,其中卷包括段组,所述段组被存储在多个数据库上;
结合所述卷实现RAID级别,其中实现RAID级别包括存储一组冗余性段,每个冗余性段对应于所述段组的一个或多个段,以使得每个冗余性段不与所述段组的一个或多个对应的段处在相同的数据库上;
接收对应于卷的所述段组的第一段的命令;
确定多个数据库的第一数据库,其中第一数据库对应于第一段;以及
对于第一段执行第一命令,其中第一命令在第一数据库上被执行。
14.根据权利要求13的计算机可读的介质,其中卷的所述段组的每个段对应于多个数据库的一个数据库,并且每个段按照多个数据库的排列被分配到数据库,以及所述冗余性段组的每个冗余性段被分配到同对应于与该冗余性段的一个或多个段的任何段相对应的多个数据库的每个数据库不同的数据库。
15.根据权利要求14的计算机可读的介质,其中指令还可执行以下步骤:确定第一命令是否为写命令,以及如果第一命令是写命令,则确定多个数据库的第二数据库,其中第二数据库对应于与第一段相关联的第一冗余性段,以及对于第一冗余性段执行第一命令,其中第一命令在第二数据库上被执行。
16.根据权利要求15的计算机可读的介质,其中确定第一数据库和确定第二数据库包括存取全局表格,全局表格包括数据库的排列和RAID级别。
17.一种计算机可读的介质,包括用于由多个数据库计算机实现分布式RAID的计算机可执行的指令,所述计算机指令可执行以下步骤:
从主机接收对应于卷的第一段的命令,其中卷和对应于结合卷被实现的RAID级别的冗余性数据被存储在多个数据库的每个数据库上,以使得对于卷的每个段,包括与该段相关联的冗余性数据的对应的冗余性段不与所述段处在相同的数据库上;
确定多个数据库的第一数据库,其中第一数据库对应于第一段;
对于第一段执行第一命令,其中第一命令在第一数据库上被执行。
18.根据权利要求17的计算机可读的介质,其中卷的每个段对应于多个数据库的一个数据库,每个段按照多个数据库的排列被分配到数据库,以及每个冗余性段被分配到同对应于与该冗余性段相关联的卷的任何段的多个数据库的每个数据库不同的数据库。
19.根据权利要求18的计算机可读的介质,其中指令还可执行以下步骤:确定第一命令是否为写命令,以及如果第一命令是写命令,则确定多个数据库的第二数据库,其中第二数据库对应于与第一段相关联的第一冗余性段,以及对于冗余性段执行第一命令,其中第一命令在第二数据库上被执行。
20.根据权利要求19的计算机可读的介质,其中确定第一数据库和确定第二数据库包括存取全局表格,全局表格包括数据库的排列和RAID级别。
Applications Claiming Priority (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13127008P | 2008-06-06 | 2008-06-06 | |
US13131208P | 2008-06-06 | 2008-06-06 | |
US13129108P | 2008-06-06 | 2008-06-06 | |
US13131408P | 2008-06-06 | 2008-06-06 | |
US13129008P | 2008-06-06 | 2008-06-06 | |
US13137908P | 2008-06-06 | 2008-06-06 | |
US61/131,379 | 2008-06-06 | ||
US61/131,312 | 2008-06-06 | ||
US61/131,314 | 2008-06-06 | ||
US61/131,290 | 2008-06-06 | ||
US61/131,270 | 2008-06-06 | ||
US61/131,291 | 2008-06-06 | ||
PCT/US2009/046470 WO2009149386A1 (en) | 2008-06-06 | 2009-06-05 | Method and system for distributed raid implementation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102099792A true CN102099792A (zh) | 2011-06-15 |
Family
ID=41398559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801275899A Pending CN102099792A (zh) | 2008-06-06 | 2009-06-05 | 用于分布式raid实现的方法和系统 |
Country Status (9)
Country | Link |
---|---|
US (16) | US8090909B2 (zh) |
EP (2) | EP2304568B1 (zh) |
JP (2) | JP2011523144A (zh) |
KR (1) | KR20110031441A (zh) |
CN (1) | CN102099792A (zh) |
DK (1) | DK2304568T3 (zh) |
HK (1) | HK1154969A1 (zh) |
IL (1) | IL209571A (zh) |
WO (3) | WO2010011428A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013026287A1 (zh) * | 2011-08-25 | 2013-02-28 | 中兴通讯股份有限公司 | 基于分布式数据库系统的数据控制方法及系统 |
CN105389265A (zh) * | 2014-08-25 | 2016-03-09 | Hgst荷兰公司 | 当加密参数改变时在垃圾数据上生成零内容的方法和装置 |
CN105408871A (zh) * | 2013-07-24 | 2016-03-16 | 阿尔卡特朗讯公司 | 用于提供冗余数据访问的方法和装置 |
CN105739909A (zh) * | 2014-12-11 | 2016-07-06 | 国际商业机器公司 | 分布式存储系统中基于时间的数据放置方法和装置 |
CN106569728A (zh) * | 2015-10-09 | 2017-04-19 | 中兴通讯股份有限公司 | 多磁盘阵列raid共享写缓存的处理方法及装置 |
US10372627B2 (en) | 2014-08-25 | 2019-08-06 | Western Digital Technologies, Inc. | Method to generate pattern data over garbage data when encryption parameters are changed |
Families Citing this family (312)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9632722B2 (en) * | 2010-05-19 | 2017-04-25 | International Business Machines Corporation | Balancing storage unit utilization within a dispersed storage network |
US9026758B2 (en) * | 2005-09-30 | 2015-05-05 | Cleversafe, Inc. | Memory device utilization in a dispersed storage network |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US20080140724A1 (en) | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
US8719501B2 (en) | 2009-09-08 | 2014-05-06 | Fusion-Io | Apparatus, system, and method for caching data on a solid-state storage device |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US8886909B1 (en) | 2008-03-31 | 2014-11-11 | Emc Corporation | Methods, systems, and computer readable medium for allocating portions of physical storage in a storage array based on current or anticipated utilization of storage array resources |
US8090909B2 (en) * | 2008-06-06 | 2012-01-03 | Pivot3 | Method and system for distributed raid implementation |
US8219750B2 (en) * | 2008-06-30 | 2012-07-10 | Pivot3 | Method and system for execution of applications in conjunction with distributed RAID |
US8176247B2 (en) * | 2008-10-28 | 2012-05-08 | Pivot3 | Method and system for protecting against multiple failures in a RAID system |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
WO2011031903A2 (en) * | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for allocating storage |
US8473677B2 (en) * | 2009-09-29 | 2013-06-25 | Cleversafe, Inc. | Distributed storage network memory access based on memory state |
US8880843B2 (en) * | 2010-02-10 | 2014-11-04 | International Business Machines Corporation | Providing redundancy in a virtualized storage system for a computer system |
US9792181B2 (en) * | 2010-02-22 | 2017-10-17 | International Business Machines Corporation | Pool of devices providing operating system redundancy |
US8484536B1 (en) * | 2010-03-26 | 2013-07-09 | Google Inc. | Techniques for data storage, access, and maintenance |
US8924681B1 (en) * | 2010-03-31 | 2014-12-30 | Emc Corporation | Systems, methods, and computer readable media for an adaptative block allocation mechanism |
US9330105B1 (en) | 2010-05-07 | 2016-05-03 | Emc Corporation | Systems, methods, and computer readable media for lazy compression of data incoming to a data storage entity |
WO2011145137A1 (en) * | 2010-05-18 | 2011-11-24 | Hitachi, Ltd. | Storage apparatus and control method thereof for dynamic migration of small storage areas |
US8719675B1 (en) | 2010-06-16 | 2014-05-06 | Google Inc. | Orthogonal coding for data storage, access, and maintenance |
US9311002B1 (en) | 2010-06-29 | 2016-04-12 | Emc Corporation | Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity |
US8621271B2 (en) * | 2010-08-26 | 2013-12-31 | Cleversafe, Inc. | Reprovisioning a memory device into a dispersed storage network memory |
US8402230B2 (en) * | 2010-09-10 | 2013-03-19 | International Business Machines Corporation | Recoverability while adding storage to a redirect-on-write storage pool |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
JP5614213B2 (ja) * | 2010-10-01 | 2014-10-29 | 日本電気株式会社 | 記憶領域提供装置、記憶領域提供方法、及び、記憶領域提供プログラム |
WO2012083308A2 (en) | 2010-12-17 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US9348515B2 (en) * | 2011-01-17 | 2016-05-24 | Hitachi, Ltd. | Computer system, management computer and storage management method for managing data configuration based on statistical information |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US9141527B2 (en) | 2011-02-25 | 2015-09-22 | Intelligent Intellectual Property Holdings 2 Llc | Managing cache pools |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
WO2012129191A2 (en) | 2011-03-18 | 2012-09-27 | Fusion-Io, Inc. | Logical interfaces for contextual storage |
US8527699B2 (en) | 2011-04-25 | 2013-09-03 | Pivot3, Inc. | Method and system for distributed RAID implementation |
US20120278552A1 (en) * | 2011-04-28 | 2012-11-01 | Lsi Corporation | Remote execution of raid in large topologies |
US9003101B1 (en) * | 2011-06-29 | 2015-04-07 | Western Digital Technologies, Inc. | Prioritized access for media with heterogeneous access rates |
US9417823B2 (en) | 2011-07-12 | 2016-08-16 | Violin Memory Inc. | Memory system management |
US9335939B2 (en) * | 2011-07-12 | 2016-05-10 | Violin Memory Inc. | RAIDed memory system |
GB2492981B (en) * | 2011-07-18 | 2014-03-26 | Qando Service Inc | Data reconstruction |
US8621317B1 (en) | 2011-07-25 | 2013-12-31 | Google Inc. | Modified orthogonal coding techniques for storing data |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US8615698B1 (en) | 2011-09-28 | 2013-12-24 | Google Inc. | Skewed orthogonal coding techniques |
WO2013057764A1 (en) * | 2011-10-19 | 2013-04-25 | Hitachi, Ltd. | Storage system |
CA3019048A1 (en) | 2011-11-07 | 2013-05-16 | Nexgen Storage, Inc. | Primary data storage system with quality of service |
US9274937B2 (en) | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US9098200B2 (en) * | 2012-02-10 | 2015-08-04 | Hitachi, Ltd. | Storage system with virtual volume having data arranged astride storage devices, and volume management method |
US8856619B1 (en) | 2012-03-09 | 2014-10-07 | Google Inc. | Storing data across groups of storage nodes |
WO2013140492A1 (ja) * | 2012-03-19 | 2013-09-26 | 富士通株式会社 | データアクセス方法およびプログラム |
US9110600B1 (en) | 2012-03-19 | 2015-08-18 | Amazon Technologies, Inc. | Triggered data shelving to a different storage system and storage deallocation |
US8954706B2 (en) * | 2012-03-21 | 2015-02-10 | Hitachi, Ltd. | Storage apparatus, computer system, and control method for storage apparatus |
US8930745B2 (en) * | 2012-04-16 | 2015-01-06 | Hitachi, Ltd. | Storage subsystem and data management method of storage subsystem |
US9823840B1 (en) * | 2012-05-07 | 2017-11-21 | Amazon Technologies, Inc. | Data volume placement techniques |
US9804993B1 (en) | 2012-05-07 | 2017-10-31 | Amazon Technologies, Inc. | Data volume placement techniques |
US9348769B2 (en) * | 2012-05-24 | 2016-05-24 | Red Hat, Inc. | Managing zeroed logical volume |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US10346095B2 (en) | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
TWI471241B (zh) * | 2012-09-14 | 2015-02-01 | Automotive Res & Testing Ct | Brake back to charge control learning module, controller and controlled brake back to the car |
US10318495B2 (en) | 2012-09-24 | 2019-06-11 | Sandisk Technologies Llc | Snapshots for a non-volatile device |
US10509776B2 (en) | 2012-09-24 | 2019-12-17 | Sandisk Technologies Llc | Time sequence data management |
US9177177B1 (en) * | 2012-10-04 | 2015-11-03 | Symantec Corporation | Systems and methods for securing storage space |
US8782292B2 (en) * | 2012-10-31 | 2014-07-15 | Lsi Corporation | Methods and structure for performing a rebuild of a logical volume with a serial attached SCSI expander |
US8904119B2 (en) | 2012-10-31 | 2014-12-02 | Lsi Corporation | Method and structures for performing a migration of a logical volume with a serial attached SCSI expander |
US9135198B2 (en) | 2012-10-31 | 2015-09-15 | Avago Technologies General Ip (Singapore) Pte Ltd | Methods and structure for serial attached SCSI expanders that self-configure by setting routing attributes of their ports based on SMP requests |
US8904108B2 (en) | 2012-10-31 | 2014-12-02 | Lsi Corporation | Methods and structure establishing nested Redundant Array of Independent Disks volumes with an expander |
US9632889B2 (en) * | 2012-11-12 | 2017-04-25 | Oracle International Corporation | Method for the optimization of performance, capacity and redundancy in digital data storage systems |
CN103023992A (zh) * | 2012-11-28 | 2013-04-03 | 江苏乐买到网络科技有限公司 | 海量数据的分布式存储方法 |
US9286163B2 (en) | 2013-01-14 | 2016-03-15 | International Business Machines Corporation | Data recovery scheme based on data backup status |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9235355B2 (en) | 2013-04-04 | 2016-01-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Reverse mirroring in raid level 1 |
US9423981B2 (en) | 2013-04-16 | 2016-08-23 | International Business Machines Corporation | Logical region allocation with immediate availability |
US9104332B2 (en) | 2013-04-16 | 2015-08-11 | International Business Machines Corporation | Managing metadata and data for a logical volume in a distributed and declustered system |
US10102144B2 (en) | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
US9329938B2 (en) | 2013-04-16 | 2016-05-03 | International Business Machines Corporation | Essential metadata replication |
US10558561B2 (en) | 2013-04-16 | 2020-02-11 | Sandisk Technologies Llc | Systems and methods for storage metadata management |
US9104597B2 (en) * | 2013-04-16 | 2015-08-11 | International Business Machines Corporation | Destaging cache data using a distributed freezer |
US9619404B2 (en) | 2013-04-16 | 2017-04-11 | International Business Machines Corporation | Backup cache with immediate availability |
US9298398B2 (en) | 2013-04-16 | 2016-03-29 | International Business Machines Corporation | Fine-grained control of data placement |
US9298617B2 (en) | 2013-04-16 | 2016-03-29 | International Business Machines Corporation | Parallel destaging with replicated cache pinning |
US9542126B2 (en) | 2013-04-22 | 2017-01-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Redundant array of independent disks systems that utilize spans with different storage device counts for a logical volume |
US10331375B1 (en) * | 2013-06-21 | 2019-06-25 | Amazon Technologies, Inc. | Data storage area cleaner |
US9842128B2 (en) | 2013-08-01 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for atomic storage operations |
US10019320B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for distributed atomic storage operations |
GB2519815A (en) | 2013-10-31 | 2015-05-06 | Ibm | Writing data cross storage devices in an erasure-coded system |
US10073630B2 (en) | 2013-11-08 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for log coordination |
US9274901B2 (en) | 2013-11-20 | 2016-03-01 | Avago Technologies General Ip (Singapore) Pte. Ltd. | I/O request mirroring in a clustered storage system |
CN103605484B (zh) * | 2013-11-26 | 2016-10-26 | 华为技术有限公司 | 一种数据存储的方法和存储服务器 |
US9612745B2 (en) * | 2014-01-24 | 2017-04-04 | Silicon Graphics International Corp. | Raid set initialization |
WO2015116197A1 (en) * | 2014-01-31 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Storing data based on a write allocation policy |
US9547448B2 (en) | 2014-02-24 | 2017-01-17 | Netapp, Inc. | System and method for transposed storage in raid arrays |
KR102318478B1 (ko) * | 2014-04-21 | 2021-10-27 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US9612952B2 (en) * | 2014-06-04 | 2017-04-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9372630B2 (en) | 2014-07-09 | 2016-06-21 | International Business Machines Corporation | Migration of newly allocated data to a storage tier |
US9588843B2 (en) | 2014-07-14 | 2017-03-07 | International Business Machines Corporation | System and method for transferring traditional RAID to distributed array |
WO2016018383A1 (en) | 2014-07-31 | 2016-02-04 | Hewlett-Packard Development Company | Live migration of data |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US10540109B2 (en) | 2014-09-02 | 2020-01-21 | Hewlett Packard Enterprise Development Lp | Serializing access to fault tolerant memory |
WO2016064417A1 (en) | 2014-10-24 | 2016-04-28 | Hewlett Packard Enterprise Development Lp | End-to-end negative acknowledgment |
WO2016098202A1 (ja) * | 2014-12-17 | 2016-06-23 | 株式会社日立製作所 | ストレージ装置およびその制御方法 |
WO2016122610A1 (en) | 2015-01-30 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Preventing data corruption and single point of failure in a fault-tolerant memory |
WO2016122637A1 (en) | 2015-01-30 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Non-idempotent primitives in fault-tolerant memory |
WO2016122642A1 (en) | 2015-01-30 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Determine failed components in fault-tolerant memory |
US9946607B2 (en) | 2015-03-04 | 2018-04-17 | Sandisk Technologies Llc | Systems and methods for storage error management |
US9678665B2 (en) * | 2015-03-06 | 2017-06-13 | Western Digital Technologies, Inc. | Methods and systems for memory page allocation |
US10715460B2 (en) | 2015-03-09 | 2020-07-14 | Amazon Technologies, Inc. | Opportunistic resource migration to optimize resource placement |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
WO2016159996A1 (en) | 2015-03-31 | 2016-10-06 | Hewlett Packard Enterprise Development Lp | Preventing data corruption and single point of failure in fault-tolerant memory fabrics |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10482071B1 (en) * | 2016-01-26 | 2019-11-19 | Pure Storage, Inc. | Systems and methods for providing metrics for a plurality of storage entities of a multi-array data storage system |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11231858B2 (en) | 2016-05-19 | 2022-01-25 | Pure Storage, Inc. | Dynamically configuring a storage system to facilitate independent scaling of resources |
US10691567B2 (en) | 2016-06-03 | 2020-06-23 | Pure Storage, Inc. | Dynamically forming a failure domain in a storage system that includes a plurality of blades |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US11706895B2 (en) | 2016-07-19 | 2023-07-18 | Pure Storage, Inc. | Independent scaling of compute resources and storage resources in a storage system |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
WO2018051505A1 (ja) * | 2016-09-16 | 2018-03-22 | 株式会社日立製作所 | ストレージシステム |
US10193634B2 (en) | 2016-09-19 | 2019-01-29 | Hewlett Packard Enterprise Development Lp | Optical driver circuits |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10545861B2 (en) | 2016-10-04 | 2020-01-28 | Pure Storage, Inc. | Distributed integrated high-speed solid-state non-volatile random-access memory |
US12039165B2 (en) | 2016-10-04 | 2024-07-16 | Pure Storage, Inc. | Utilizing allocation shares to improve parallelism in a zoned drive storage system |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
KR102631351B1 (ko) | 2016-10-07 | 2024-01-31 | 삼성전자주식회사 | 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템 |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
CN108228647B (zh) | 2016-12-21 | 2022-05-24 | 伊姆西Ip控股有限责任公司 | 用于数据拷贝的方法和设备 |
US10089015B1 (en) * | 2016-12-28 | 2018-10-02 | EMC IP Holding Company LLC | Per-drive memory resident zeroing maps for drive zeroing in a data storage system |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US10162531B2 (en) | 2017-01-21 | 2018-12-25 | International Business Machines Corporation | Physical allocation unit optimization |
US10459663B2 (en) | 2017-01-23 | 2019-10-29 | International Business Machines Corporation | Thin provisioning of raid storage |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
US10210063B2 (en) | 2017-02-05 | 2019-02-19 | International Business Machines Corporation | Disk array storage controller |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10409521B1 (en) * | 2017-04-28 | 2019-09-10 | EMC IP Holding Company LLC | Block-based backups for large-scale volumes |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US10389342B2 (en) | 2017-06-28 | 2019-08-20 | Hewlett Packard Enterprise Development Lp | Comparator |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US12032848B2 (en) | 2021-06-21 | 2024-07-09 | Pure Storage, Inc. | Intelligent block allocation in a heterogeneous storage system |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US12067274B2 (en) | 2018-09-06 | 2024-08-20 | Pure Storage, Inc. | Writing segments and erase blocks based on ordering |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US12001688B2 (en) | 2019-04-29 | 2024-06-04 | Pure Storage, Inc. | Utilizing data views to optimize secure data access in a storage system |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US12079494B2 (en) | 2018-04-27 | 2024-09-03 | Pure Storage, Inc. | Optimizing storage system upgrades to preserve resources |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
WO2020000136A1 (en) | 2018-06-25 | 2020-01-02 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of i/o requests |
US11121981B1 (en) | 2018-06-29 | 2021-09-14 | Amazon Technologies, Inc. | Optimistically granting permission to host computing resources |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US10831603B2 (en) | 2018-08-03 | 2020-11-10 | Western Digital Technologies, Inc. | Rebuild assist using failed storage device |
US10649843B2 (en) | 2018-08-03 | 2020-05-12 | Western Digital Technologies, Inc. | Storage systems with peer data scrub |
US10824526B2 (en) | 2018-08-03 | 2020-11-03 | Western Digital Technologies, Inc. | Using failed storage device in peer-to-peer storage system to perform storage-centric task |
US10901848B2 (en) | 2018-08-03 | 2021-01-26 | Western Digital Technologies, Inc. | Storage systems with peer data recovery |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US10891066B2 (en) | 2018-12-28 | 2021-01-12 | Intelliflash By Ddn, Inc. | Data redundancy reconfiguration using logical subunits |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11182258B2 (en) | 2019-01-04 | 2021-11-23 | Western Digital Technologies, Inc. | Data rebuild using dynamic peer work allocation |
US11003559B2 (en) | 2019-03-26 | 2021-05-11 | International Business Machines Corporation | Underperforming drive handling in redundant arrays |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US12087382B2 (en) | 2019-04-11 | 2024-09-10 | Pure Storage, Inc. | Adaptive threshold for bad flash memory blocks |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
CN110333823B (zh) * | 2019-05-31 | 2023-07-07 | 平安科技(深圳)有限公司 | 基于nbd设备的数据迁移方法、装置、设备及存储介质 |
CN110321075B (zh) * | 2019-05-31 | 2023-05-23 | 平安科技(深圳)有限公司 | 基于nbd设备的数据迁移方法、装置、设备及存储介质 |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11620233B1 (en) * | 2019-09-30 | 2023-04-04 | Amazon Technologies, Inc. | Memory data migration hardware |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11055190B1 (en) * | 2020-01-03 | 2021-07-06 | Alibaba Group Holding Limited | System and method for facilitating storage system operation with global mapping to provide maintenance without a service interrupt |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11379447B2 (en) | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11316917B2 (en) * | 2020-03-04 | 2022-04-26 | Samsung Electronics Co., Ltd. | Methods and apparatus for peer-to-peer data channels for storage devices |
US11449386B2 (en) | 2020-03-20 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11301173B2 (en) | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US12056365B2 (en) | 2020-04-24 | 2024-08-06 | Pure Storage, Inc. | Resiliency for a storage system |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US12093545B2 (en) | 2020-12-31 | 2024-09-17 | Pure Storage, Inc. | Storage system with selectable write modes |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US12067282B2 (en) | 2020-12-31 | 2024-08-20 | Pure Storage, Inc. | Write path selection |
US12061814B2 (en) | 2021-01-25 | 2024-08-13 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US12099742B2 (en) | 2021-03-15 | 2024-09-24 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030159001A1 (en) * | 2002-02-19 | 2003-08-21 | Chalmer Steven R. | Distributed, scalable data storage facility with cache memory |
CN1747385A (zh) * | 2004-09-07 | 2006-03-15 | 北京邦诺存储科技有限公司 | 写一次读多次磁盘存储系统和设计方法 |
US20060129559A1 (en) * | 2004-12-15 | 2006-06-15 | Dell Products L.P. | Concurrent access to RAID data in shared storage |
US20060271734A1 (en) * | 2003-03-21 | 2006-11-30 | Strange Stephen H | Location-independent RAID group virtual block management |
Family Cites Families (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3160106B2 (ja) | 1991-12-23 | 2001-04-23 | ヒュンダイ エレクトロニクス アメリカ | ディスクアレーの区分け方法 |
JPH05324579A (ja) * | 1992-05-25 | 1993-12-07 | Hitachi Ltd | 分散ファイルシステム及び記憶装置 |
JP2766424B2 (ja) | 1992-06-04 | 1998-06-18 | 三菱電機株式会社 | 論理ボリューム装置 |
JPH07261945A (ja) * | 1994-03-17 | 1995-10-13 | Hitachi Ltd | ディスクアレイ装置およびディスクアレイの区分け方法 |
US6449730B2 (en) * | 1995-10-24 | 2002-09-10 | Seachange Technology, Inc. | Loosely coupled mass storage computer cluster |
AU4334099A (en) | 1998-06-05 | 1999-12-20 | Mylex Corporation | Apparatus, system and method for n-way raid controller |
JP3736134B2 (ja) | 1998-08-28 | 2006-01-18 | 日本電信電話株式会社 | 分散記憶方法及び分散記憶システム及び分散記憶プログラムを記録した記録媒体 |
US6370605B1 (en) | 1999-03-04 | 2002-04-09 | Sun Microsystems, Inc. | Switch based scalable performance storage architecture |
US7000069B2 (en) * | 1999-04-05 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | Apparatus and method for providing very large virtual storage volumes using redundant arrays of disks |
US6304942B1 (en) * | 1999-08-09 | 2001-10-16 | Lsi Logic Corporation | Providing an upgrade path for an existing data storage system |
US20010044879A1 (en) * | 2000-02-18 | 2001-11-22 | Moulton Gregory Hagan | System and method for distributed management of data storage |
US6745310B2 (en) * | 2000-12-01 | 2004-06-01 | Yan Chiew Chow | Real time local and remote management of data files and directories and method of operating the same |
US6895485B1 (en) * | 2000-12-07 | 2005-05-17 | Lsi Logic Corporation | Configuring and monitoring data volumes in a consolidated storage array using one storage array to configure the other storage arrays |
US7058788B2 (en) * | 2001-02-23 | 2006-06-06 | Falconstor Software, Inc. | Dynamic allocation of computer memory |
US7076510B2 (en) * | 2001-07-12 | 2006-07-11 | Brown William P | Software raid methods and apparatuses including server usage based write delegation |
US7644136B2 (en) | 2001-11-28 | 2010-01-05 | Interactive Content Engines, Llc. | Virtual file system |
US7096328B2 (en) * | 2002-01-25 | 2006-08-22 | University Of Southern California | Pseudorandom data storage |
US6901499B2 (en) * | 2002-02-27 | 2005-05-31 | Microsoft Corp. | System and method for tracking data stored in a flash memory device |
US20040177218A1 (en) * | 2002-11-06 | 2004-09-09 | Meehan Thomas F. | Multiple level raid architecture |
CN1692356B (zh) | 2002-11-14 | 2014-06-04 | 易斯龙系统公司 | 用于对现存文件重新条带化的方法 |
US7032086B2 (en) | 2003-02-28 | 2006-04-18 | Hewlett-Packard Development Company, L.P. | System and method for adjusting storage device layout with at least one status for the adjusting |
US6952743B2 (en) | 2003-03-07 | 2005-10-04 | Ivivity, Inc. | Interface for distributed processing of SCSI tasks |
US7096316B1 (en) | 2003-06-30 | 2006-08-22 | Veritas Operating Corporation | Multi-host environment with coordinated distributed logging for writes to a raid storage volume |
US7254754B2 (en) * | 2003-07-14 | 2007-08-07 | International Business Machines Corporation | Raid 3+3 |
US7523257B2 (en) | 2003-08-27 | 2009-04-21 | Adaptec, Inc. | Method of managing raid level bad blocks in a networked storage system |
US7366837B2 (en) * | 2003-11-24 | 2008-04-29 | Network Appliance, Inc. | Data placement technique for striping data containers across volumes of a storage system cluster |
JP2005316762A (ja) * | 2004-04-28 | 2005-11-10 | Toshiba Corp | ディスク記憶装置及びraid構築方法 |
US8055745B2 (en) | 2004-06-01 | 2011-11-08 | Inmage Systems, Inc. | Methods and apparatus for accessing data from a primary data storage system for secondary storage |
US7516354B2 (en) * | 2004-08-25 | 2009-04-07 | International Business Machines Corporation | Storing parity information for data recovery |
JP4555036B2 (ja) | 2004-09-16 | 2010-09-29 | 株式会社日立製作所 | ストレージ装置及びストレージ装置のデバイス切替制御方法 |
US7389393B1 (en) * | 2004-10-21 | 2008-06-17 | Symantec Operating Corporation | System and method for write forwarding in a storage environment employing distributed virtualization |
GB2419702A (en) | 2004-10-29 | 2006-05-03 | Hewlett Packard Development Co | Virtual overlay infrastructures which can be suspended and later reactivated |
US20070094348A1 (en) * | 2005-01-07 | 2007-04-26 | Microsoft Corporation | BITS/RDC integration and BITS enhancements |
US7130960B1 (en) | 2005-04-21 | 2006-10-31 | Hitachi, Ltd. | System and method for managing disk space in a thin-provisioned storage subsystem |
JP4690765B2 (ja) * | 2005-04-26 | 2011-06-01 | 株式会社日立製作所 | ストレージ管理システム、ストレージ管理サーバ、データ再配置制御方法およびデータ再配置制御プログラム |
US7617370B2 (en) * | 2005-04-29 | 2009-11-10 | Netapp, Inc. | Data allocation within a storage system architecture |
US7904649B2 (en) | 2005-04-29 | 2011-03-08 | Netapp, Inc. | System and method for restriping data across a plurality of volumes |
JP2006331076A (ja) * | 2005-05-26 | 2006-12-07 | Hitachi Ltd | データ記憶システム及び記憶方法 |
US7529816B2 (en) | 2005-06-03 | 2009-05-05 | Hewlett-Packard Development Company, L.P. | System for providing multi-path input/output in a clustered data storage network |
US7437507B2 (en) | 2005-06-06 | 2008-10-14 | Cisco Technology, Inc. | Online restriping technique for distributed network based virtualization |
US7418550B2 (en) | 2005-07-30 | 2008-08-26 | Lsi Corporation | Methods and structure for improved import/export of raid level 6 volumes |
US7844775B2 (en) | 2005-09-23 | 2010-11-30 | Avid Technology, Inc. | Distribution of data in a distributed shared storage system |
WO2007058617A1 (en) | 2005-11-17 | 2007-05-24 | Chee Keng Chang | A controller for non-volatile memories, and methods of operating the memory controller |
US20070143541A1 (en) | 2005-12-19 | 2007-06-21 | Lsi Logic Corporation | Methods and structure for improved migration of raid logical volumes |
US8321377B2 (en) | 2006-04-17 | 2012-11-27 | Microsoft Corporation | Creating host-level application-consistent backups of virtual machines |
JP5124103B2 (ja) * | 2006-05-16 | 2013-01-23 | 株式会社日立製作所 | 計算機システム |
US7886111B2 (en) * | 2006-05-24 | 2011-02-08 | Compellent Technologies | System and method for raid management, reallocation, and restriping |
US7546398B2 (en) | 2006-08-01 | 2009-06-09 | International Business Machines Corporation | System and method for distributing virtual input/output operations across multiple logical partitions |
JP2008107896A (ja) | 2006-10-23 | 2008-05-08 | Nec Corp | 物理資源制御管理システム、物理資源制御管理方法および物理資源制御管理用プログラム |
JP5244332B2 (ja) * | 2006-10-30 | 2013-07-24 | 株式会社日立製作所 | 情報システム、データ転送方法及びデータ保護方法 |
US20080140724A1 (en) | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
US8706968B2 (en) | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
US20080155191A1 (en) * | 2006-12-21 | 2008-06-26 | Anderson Robert J | Systems and methods for providing heterogeneous storage systems |
JP5246388B2 (ja) | 2007-03-08 | 2013-07-24 | 日本電気株式会社 | 仮想装置構成システム、及びその方法 |
US8117495B2 (en) | 2007-11-26 | 2012-02-14 | Stratus Technologies Bermuda Ltd | Systems and methods of high availability cluster environment failover protection |
US20090172335A1 (en) | 2007-12-31 | 2009-07-02 | Anand Krishnamurthi Kulkarni | Flash devices with raid |
US8370833B2 (en) | 2008-02-20 | 2013-02-05 | Hewlett-Packard Development Company, L.P. | Method and system for implementing a virtual storage pool in a virtual environment |
US8090909B2 (en) | 2008-06-06 | 2012-01-03 | Pivot3 | Method and system for distributed raid implementation |
US8219750B2 (en) | 2008-06-30 | 2012-07-10 | Pivot3 | Method and system for execution of applications in conjunction with distributed RAID |
US8176247B2 (en) * | 2008-10-28 | 2012-05-08 | Pivot3 | Method and system for protecting against multiple failures in a RAID system |
US8850114B2 (en) | 2010-09-07 | 2014-09-30 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
US8527699B2 (en) | 2011-04-25 | 2013-09-03 | Pivot3, Inc. | Method and system for distributed RAID implementation |
-
2009
- 2009-06-05 US US12/479,319 patent/US8090909B2/en active Active
- 2009-06-05 WO PCT/US2009/046471 patent/WO2010011428A1/en active Application Filing
- 2009-06-05 JP JP2011512708A patent/JP2011523144A/ja active Pending
- 2009-06-05 EP EP09759544.1A patent/EP2304568B1/en active Active
- 2009-06-05 US US12/479,377 patent/US8145841B2/en active Active
- 2009-06-05 WO PCT/US2009/046470 patent/WO2009149386A1/en active Application Filing
- 2009-06-05 CN CN2009801275899A patent/CN102099792A/zh active Pending
- 2009-06-05 US US12/479,403 patent/US8086797B2/en active Active
- 2009-06-05 KR KR1020107029904A patent/KR20110031441A/ko not_active Application Discontinuation
- 2009-06-05 DK DK09759544.1T patent/DK2304568T3/da active
- 2009-06-05 WO PCT/US2009/046473 patent/WO2009149388A1/en active Application Filing
- 2009-06-05 EP EP13167831.0A patent/EP2645251A1/en not_active Withdrawn
- 2009-06-05 US US12/479,360 patent/US8239624B2/en not_active Expired - Fee Related
- 2009-06-05 US US12/479,434 patent/US8082393B2/en active Active
- 2009-06-05 US US12/479,394 patent/US8127076B2/en active Active
-
2010
- 2010-11-25 IL IL209571A patent/IL209571A/en active IP Right Grant
-
2011
- 2011-05-12 JP JP2011107699A patent/JP2011165212A/ja active Pending
- 2011-08-30 HK HK11109154.0A patent/HK1154969A1/xx unknown
- 2011-09-02 US US13/224,936 patent/US8140753B2/en active Active
- 2011-11-08 US US13/291,311 patent/US8271727B2/en active Active
- 2011-11-08 US US13/291,309 patent/US8261017B2/en active Active
- 2011-11-09 US US13/292,388 patent/US8255625B2/en not_active Expired - Fee Related
-
2012
- 2012-01-25 US US13/358,306 patent/US8316180B2/en active Active
- 2012-02-03 US US13/366,069 patent/US8316181B2/en active Active
- 2012-07-06 US US13/543,565 patent/US9465560B2/en active Active
- 2012-07-06 US US13/543,561 patent/US8621147B2/en active Active
-
2013
- 2013-09-16 US US14/028,286 patent/US9146695B2/en active Active
-
2015
- 2015-08-20 US US14/831,601 patent/US9535632B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030159001A1 (en) * | 2002-02-19 | 2003-08-21 | Chalmer Steven R. | Distributed, scalable data storage facility with cache memory |
US20060271734A1 (en) * | 2003-03-21 | 2006-11-30 | Strange Stephen H | Location-independent RAID group virtual block management |
CN1747385A (zh) * | 2004-09-07 | 2006-03-15 | 北京邦诺存储科技有限公司 | 写一次读多次磁盘存储系统和设计方法 |
US20060129559A1 (en) * | 2004-12-15 | 2006-06-15 | Dell Products L.P. | Concurrent access to RAID data in shared storage |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013026287A1 (zh) * | 2011-08-25 | 2013-02-28 | 中兴通讯股份有限公司 | 基于分布式数据库系统的数据控制方法及系统 |
CN105408871A (zh) * | 2013-07-24 | 2016-03-16 | 阿尔卡特朗讯公司 | 用于提供冗余数据访问的方法和装置 |
CN105389265A (zh) * | 2014-08-25 | 2016-03-09 | Hgst荷兰公司 | 当加密参数改变时在垃圾数据上生成零内容的方法和装置 |
US9959218B2 (en) | 2014-08-25 | 2018-05-01 | Western Digital Technologies, Inc. | Method and apparatus to generate zero content over garbage data when encryption parameters are changed |
CN105389265B (zh) * | 2014-08-25 | 2019-01-04 | Hgst荷兰公司 | 当加密参数改变时在垃圾数据上生成零内容的方法和装置 |
US10372627B2 (en) | 2014-08-25 | 2019-08-06 | Western Digital Technologies, Inc. | Method to generate pattern data over garbage data when encryption parameters are changed |
US10698840B2 (en) | 2014-08-25 | 2020-06-30 | Western Digital Technologies, Inc. | Method and apparatus to generate zero content over garbage data when encryption parameters are changed |
US11416417B2 (en) | 2014-08-25 | 2022-08-16 | Western Digital Technologies, Inc. | Method and apparatus to generate zero content over garbage data when encryption parameters are changed |
CN105739909A (zh) * | 2014-12-11 | 2016-07-06 | 国际商业机器公司 | 分布式存储系统中基于时间的数据放置方法和装置 |
US11057465B2 (en) | 2014-12-11 | 2021-07-06 | International Business Machines Corporation | Time-based data placement in a distributed storage system |
CN106569728A (zh) * | 2015-10-09 | 2017-04-19 | 中兴通讯股份有限公司 | 多磁盘阵列raid共享写缓存的处理方法及装置 |
CN106569728B (zh) * | 2015-10-09 | 2021-02-23 | 中兴通讯股份有限公司 | 多磁盘阵列raid共享写缓存的处理方法及装置 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102099792A (zh) | 用于分布式raid实现的方法和系统 | |
CN102265265A (zh) | 针对raid系统中的多种故障进行保护的方法和系统 | |
CN101799742B (zh) | 用于在存储系统之间转移精简配置卷的方法和装置 | |
US20120271998A1 (en) | Method and system for distributed raid implementation | |
CN100361064C (zh) | 写入过程管理方法和系统 | |
CN101770413A (zh) | 冗余磁盘阵列重建的方法及设备 | |
US20100251267A1 (en) | Caching of SCSI I/O referrals |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110615 |