CN1950801A - 利用附加和自发保护在存储设备阵列中存储数据的方法和系统 - Google Patents

利用附加和自发保护在存储设备阵列中存储数据的方法和系统 Download PDF

Info

Publication number
CN1950801A
CN1950801A CNA2005800143790A CN200580014379A CN1950801A CN 1950801 A CN1950801 A CN 1950801A CN A2005800143790 A CNA2005800143790 A CN A2005800143790A CN 200580014379 A CN200580014379 A CN 200580014379A CN 1950801 A CN1950801 A CN 1950801A
Authority
CN
China
Prior art keywords
band
memory device
lba
written
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005800143790A
Other languages
English (en)
Other versions
CN100530116C (zh
Inventor
阿米尼·哈吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1950801A publication Critical patent/CN1950801A/zh
Application granted granted Critical
Publication of CN100530116C publication Critical patent/CN100530116C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/103Hybrid, i.e. RAID systems with parity comprising a mix of RAID types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本发明的一个方面是一种用于在存储设备阵列中存储数据的方法。所述方法的示例包括将第一带写入到第一存储设备和第二存储设备中。这个示例还包括将第二带写入到第二存储设备和第三存储设备中。这个示例还包括将第三带写入到第三存储设备和第四存储设备中。

Description

利用附加和自发保护 在存储设备阵列中存储数据的方法和系统
技术领域
本发明涉及在计算系统中存储数据。更具体而言,本发明的一些示例涉及以提供防止数据丢失的正确保护的方式在存储设备阵列中存储数据。
背景技术
重要数据经常存储在计算系统的存储设备中。因为存储设备会发生故障并且在发生故障的存储设备中的数据会丢失,因此已经开发了用于防止数据丢失并且当一个或多个存储设备发生故障时恢复数据的技术。
用于防止数据丢失的一种技术包括在作为存储阵列的一员的存储设备(诸如盘驱动器)上存储奇偶校验信息,并且在所述阵列中的一个或多个其它剩余的存储设备上存储客户数据。(在此可以将盘驱动器称为“盘”,它是通常使用中的简化)。利用这种技术,如果存储设备发生故障,则可以使用奇偶校验信息来重建在发生故障的存储设备上的数据。此外,如果向其它存储设备添加了足够的奇偶校验信息,则可以使用另外的奇偶校验信息来重建超过一个发生故障的存储设备中的数据。用于防止数据丢失的、称为数据镜像的另一种技术包括:在分离的存储设备上进行数据的重复复制。如果存储设备发生故障,则可以根据该数据副本恢复数据。
可以使用便宜(或独立)盘的冗余阵列(RAID)来提供具有增强的性能和容量的数据存储系统,可以在RAID阵列上实现数据镜像和奇偶校验信息存储、或两者的组合以提供数据保护。此外,可以使用被称为带化(striping)的技术,其中,将数据记录和奇偶校验信息划分为带(strip)以便带的数量等于阵列中盘的数量。每个带被写入或“带化”到RAID阵列中的每个不同的盘中以平衡在所述盘上的负荷以及改善性能。组成跨越RAID中的所有驱动器的一条道的一组带被称为一个带幅(stride)。已经设计了几个RAID协议,其中采用了不同的镜像、奇偶校验和带化布置。作为示例,在包括6个盘的RAID 5阵列中,在所述6个盘上带化5个数据带和一个奇偶校验带,并且让奇偶校验信息在所述盘上循环。奇偶校验信息在盘上的循环确保在这些盘上共享对阵列的奇偶校验更新。RAID 5提供了冗余度一,这意指如果在该阵列中有且仅有一个盘发生了故障的话,则可以恢复所有的数据。
虽然已知有用于提供更大的存储设备冗余度以允许在超过一个存储设备发生故障后进行数据恢复的多种技术,但是这些技术一般要求在另外的存储设备上存储另外的奇偶校验信息(例如通过使用较高的汉明码),或要求在另外的存储设备上的另外镜像。RAID 6具有类似于RAID 5的布置,但是要求在每个带幅中有两个奇偶校验带。以提供冗余度二。对于相同的数据存储容量,RAID 6阵列的存储效率低于RAID 5阵列的效率,这是因为RAID 6需要另外的盘。此外,根据奇偶校验信息重建丢失数据会是耗时的。因此,已知技术具有相对于增加容错和快速数据恢复的需要而必须权衡的、所不期望的容量和性能折中。
发明内容
按照一个方面,提供了一种用于在存储设备阵列中存储数据的方法,所述方法包括步骤:将第一带写入到第一存储设备和第二存储设备中;将第二带写入到第二存储设备和第三存储设备中;并且将第三带写入到第三存储设备和第四存储设备中。
优选为,至少一个带是奇偶校验带。在一个优选实施例中,所述方法还包括步骤:设置参数N的值,其中,在所述存储设备阵列中的每个存储设备具有至少N个带LBA;识别要存储的带幅的编号j;确定3j是否小于N-1;并且如果是的话,则将带s1j写入到在所述阵列中的第一存储设备中的LBA、在所述阵列中的第二存储设备中的LBA和在所述阵列中的第三存储设备中的LBA中;将带s2j写入到所述第二存储设备中的LBA、所述第三存储设备中的LBA和在所述阵列中的第四存储设备中的LBA中;并且将带s3j写入到所述第三存储设备中的LBA、所述第四存储设备中的LBA和在所述阵列中的第五存储设备中的LBA中。优选为,如果确定3j不小于N-1,则所述操作还包括:将带s1j写入到所述第一存储设备中的LBA中;将带s2j写入到所述第二存储设备中的LBA中;并且将带s3j写入到所述第三存储设备中的LBA中。更为优选的是,所述操作还包括:对于所述存储设备阵列中的每个存储设备,确定所述存储设备中的带LBA的总数;并且识别带LBA的最小总数;而且其中,设置参数N的值的操作包括将N设置为等于带LBA的所述最小总数。
优选为,如果确定3j小于N-1,则所述操作还包括:将带s4j写入到所述第四存储设备中的LBA、所述第五存储设备中的LBA和所述阵列中的第六存储设备中的LBA中;将带s5j写入到所述第五存储设备中的LBA、所述第六存储设备中的LBA和所述第一存储设备中的LBA中;并且将带s6j写入到所述第六存储设备中的LBA、所述第一存储设备中的LBA和所述第二存储设备中的LBA中。更为优选的是,如果确定3j不小于N-1,则所述操作还包括:将带s4j写入到所述第四存储设备中的LBA中;将带s5j写入到所述第五存储设备中的LBA中;将带s6j写入到所述第六存储设备中的LBA中。
在一个优选实施例中,所述方法还包括步骤:设置参数N的值,其中,在所述存储设备阵列中的每个存储设备具有至少N个带LBA;识别要存储的带幅的编号j;确定3j是否小于N-1;并且如果是的话,则将带s1j写入到所述阵列中的第一存储设备中的LBAj、在所述阵列中的第二存储设备中的LBAj+2和在所述阵列中的第三存储设备中的LBAj+1中;将带s2j写入到所述第二存储设备中的LBAj、所述第三存储设备中的LBAj+2和在所述阵列中的第四存储设备中的LBAj+1中;并且将带s3j写入到所述第三存储设备中的LBAj、所述第四存储设备中的LBAj+2和在所述阵列中的第五存储设备中的LBAj+1中。
优选为,如果确定3j不小于N-1,则所述操作还包括:将带s1j写入到所述第一存储设备中的LBA(3j-N+2)中;将带s2j写入到所述第二存储设备中的LBA(3j-N+2)中;并且将带s3j写入到所述第三存储设备中的LBA(3j-N+2)中。更为优选的是,所述操作还包括:对于所述存储设备阵列中的每个存储设备,确定在所述存储设备中的带LBA的总数;并且识别带LBA的最小总数;以及其中,设置参数N的值的操作包括将N设置为等于带LBA的所述最小总数。
优选为,如果确定3j小于N-1,则所述操作还包括:将带s4j写入到所述第四存储设备中的LBAj、所述第五存储设备中的LBAj+2、和在所述阵列中的第六存储设备中的LBAj+1中;将带s5j写入到所述第五存储设备中的LBAj、所述第六存储设备中的LBAj+2、和在所述阵列的所述第一存储设备中的LBAj+1中;并且将带s6j写入到所述第六存储设备中的LBAj、所述第一存储设备中的LBAj+2、和所述第二存储设备中的LBAj+1写入带s6j。更为优选的是,如果确定3j不小于N-1,则所述操作还包括:将带s4j写入到所述第四存储设备中的LBA(3j-N+2)中;将带s5j写入到在所述第五存储设备中的LBA(3j-N+2)中;将带s6j写入到第六存储设备中的LBA(3j-N+2)中。
按照第二方面,提供了一种在存储设备阵列中存储数据的存储系统,所述系统包括:用于向第一存储设备和第二存储设备写入第一带的装置;用于向所述第二存储设备和第三存储设备写入第二带的装置;以及,用于向第三存储设备和第四存储设备写入第三带的装置。
按照第三方面,提供了一种包括程序代码装置的计算机程序,该程序代码装置适于当在计算机上运行所述程序时、执行上述方法的所有步骤。
本发明的一个方面是一种用于在存储设备阵列中存储数据的方法。所述方法的一个示例包括:向第一存储设备和第二存储设备写入第一带。这个示例还包括:向所述第二存储设备和第三存储设备写入第二带。这个示例还包括向第三存储设备和第四存储设备写入第三带。
本发明的所述方法方面的一些替代示例包括:在盘阵列上将数据带幅带化,在所述阵列的第一盘上写入或更新带幅中的第一带,在第二盘上写入或更新第二带,并且对于另外的带或盘执行诸如此类的处理。所述方法另外包括:建立由一个盘循环的每个带的副本,以便第一个盘具有所述阵列中的最后一个盘中的带的副本,并且第二盘具有第一盘上的所述带的副本等。
在下面的部分中描述了本发明的其它方面,并且所述本发明的所述其它方面包括例如存储系统和信号承载介质,所述信号承载介质有形地包括了机器可读指令程序,该指令程序可由数字处理装置执行以便执行用于在存储设备阵列中存储数据的操作。
本发明的一些示例在不使用除了在基本RAID配置中的存储设备之外的存储设备的情况下,有益地提供了比由基本RAID配置提供的容错性更高的存储设备容错性。因此,本发明的一些示例通过仅仅使用RAID中的可用盘空间而在给定数量的盘的基本RAID码之上增加了另外的冗余。另外,本发明的一些示例有益地在作为以高故障率为特征的使用时段的、存储设备的早期使用期间提供了较高的容错性。此外,本发明的一些示例允许迅速恢复数据。本发明也提供了多个其它优点和益处,它们通过下面的说明而变得显而易见。
附图说明
图1是根据本发明的一个示例的存储系统的硬件装置和互连的框图。
图2是根据本发明的一个示例的计算装置的硬件装置和互连的框图。
图3是根据本发明的一个示例的信号承载介质的示例。
图4是根据本发明的一个示例的、用于备份数据的操作序列的流程图。
图5是根据本发明的一个示例、用于在带幅内提供带的一个循环副本的映射算法。
图6是根据本发明的一个示例、用于在带幅内提供带的一个循环副本的映射表。
图7是根据本发明的一个示例、用于在带幅内提供带的两个循环副本的映射算法。
图8是根据本发明的一个示例、用于在带幅内提供带的两个循环副本的映射表。
图9是根据本发明的一个示例的保留LBA区映射的示例。
图10是根据本发明的一个示例、使用保留区和用于在带幅内提供带的一个循环副本的先入先出(FIFO)算法的映射表。
图11A-11B是根据本发明的一个示例、用于备份数据的操作序列的流程图。
图12是根据本发明的一个示例、在盘阵列中存储数据和数据副本的表示。
图13是根据本发明的一个示例、重建盘阵列中的数据的表示。
图14是根据本发明的一个示例、重建盘阵列中的数据的表示。
图15是根据本发明的一个示例、重建盘阵列中的数据的表示。
图16是示出在具有一个循环副本的情况下,根据本发明的一个示例、受保护以防止任何两个硬盘驱动器出故障的数据百分比的图。
图17是示出在具有两个循环副本的情况下,根据本发明的一个示例、受保护防止任何三个硬盘驱动器出故障的数据百分比的图。
具体实施方式
在结合附图考虑了下面的详细说明之后,对于本领域的技术人员而言,本发明的特性、目的和优点将变得更清楚。
I.硬件装置和互连
本发明的一个方面是一种用于在存储设备阵列中存储数据的存储系统。作为示例,所述存储系统可以由图1中所示的存储系统100的全部或者一部分实现。作为示例,可以主要使用由国际商业机器公司制造的型号800的企业存储服务器(Enterprise Storage Server,ESS)来实现存储系统100。
所述存储系统100包括第一集群102和第二集群104。在替代实施例中,存储系统100可以具有单个集群或者两个以上的集群。每个集群具有至少一个处理器。作为示例,每个集群可以具有四个或六个处理器。在图1所示的示例中,第一集群102具有6个处理器106a、106b、106c、106d、106e和106f,而第二集群104也具有6个处理器108a、108b、108c、108d、108e和108f。可以使用任何具有足够计算能力的处理器。作为示例,每个处理器106a-f、108a-f可以是由国际商业机器公司制造的PowerPC RISC处理器。第一集群102还包括第一存储器110,并且类似地,第二集群104包括第二存储器112。作为示例,存储器110、112可以是RAM。可以使用存储器110、112来存储例如数据,以及由处理器106a-f、108a-f执行的应用程序和其它编程指令。这两个集群102、104可以位于单个外壳中或分离的外壳中。在替代实施例中,每个集群102、104可以被替代为超级计算机、大型计算机、计算机工作站和/或个人计算机。
第一集群102耦接到NVRAM 114(非易失性随机存取存储器),NVRAM114包括第一组设备适配器DA1、DA3、DA5、DA7(如下文所述)。类似地,第二集群104耦接到NVRAM 116,NVRAM 116包括第二组设备适配器DA2、DA4、DA6、DA8(如下文所述)。另外,第一集群102耦接到NVRAM 116,且第二集群104耦接到NVRAM 114。作为示例,由集群102操作的数据存储在存储器110中,并且也存储在NVRAM 116中,以便如果集群102变得不可操作,则数据将不会丢失并且可以由集群104操作。类似地,作为示例,由集群104操作的数据存储在存储器112中,并且也存储在NVRAM 114中,以便如果集群104变得不可操作,则数据将不会丢失并且可以由集群102操作。NVRAM 114、116可以例如能够在没有电的情况下保留数据长达大约48小时。
在第一集群102中,处理器106a-f中的两个或多个处理器可以汇集在一起以便在相同的任务上工作。但是,可以在处理器106a-f之间划分任务。类似地,在第二集群104中,处理器108a-f中的两个或多个处理器可以汇集在一起以便在相同的任务工作。作为选择,可以在处理器108a-f之间划分任务。对于两个集群102、104之间的交互,集群102、104可以独立地对任务起作用。但是,可以由不同集群102、104中的处理器106a-f共享任务。
第一集群102耦接到第一引导(boot)设备如第一硬盘驱动器118。类似地,第二集群104耦接到第二引导设备如第二硬盘驱动器120。
每个集群102、104都耦接到共享适配器122,共享适配器122由集群102、104共享。所述共享适配器122也可以称为主机适配器。所述共享适配器122可以是例如PCI插槽以及钩联到PCI插槽的机架,它们可以由集群102、104中的任何一个进行操作。作为示例,共享适配器122可以是SCSI、ESCON、FICON或光纤信道适配器,并且可以便于与一个或多个PC和/或诸如主机124之类的其它主机的通信。作为示例,主机124可以是可从IBM公司获得的zSeries服务器或Netfinity服务器。
另外,第一集群102耦接到第一组设备适配器DA1、DA3、DA5、DA7(它们也可以称为专用适配器),且第二集群104耦接到第二组设备适配器DA2、DA4、DA6、DA8。设备适配器DA1、DA3、DA5、DA7中的每一个是在第一集群102和存储设备组126a、126b、126c、126d之一之间的接口,并且类似地,设备适配器DA2、DA4、DA6、DA8中的每一个都是在第二集群104和存储设备组126a、126b、126c、126d之一之间的接口。更具体而言,设备适配器DA1和DA2耦接到存储设备组126a,设备适配器DA3和DA4耦接到存储设备组126b,设备适配器DA5和DA6耦接到存储设备组126c,而且设备适配器DA7和DA8耦接到存储设备组126d。在其它实施例中,可以使用或多或少数量的设备适配器DA1-8和存储设备组126a-d。存储设备组126a-d由集群102、104共享。在一个替代实施例中,一个或多个存储设备组可以位于与第一集群102和第二集群104不同的位置处。
作为示例,每个(存储)设备适配器DA1-8可以是串行存储体系结构(SSA)适配器。作为选择,可以使用其它类型的适配器、例如SCSI或光纤信道适配器来实现设备适配器DA1-8中的一个或多个。每个适配器DA1-8可以包括用于执行本发明的一个或多个示例或本发明中的部分的软件、固件和/或微码。作为示例,可以使用公共装置互连(CPI)来将每个设备适配器DA1-8耦接到相应的集群102、104。
每对设备适配器(DA1和DA2、DA3和DA4、DA5和DA6、DA7和DA8)耦接到存储设备的两个回路。例如,设备适配器DA1和DA2耦接到存储设备的第一回路,该第一回路包括第一串存储设备A1、A2、A3、A4、A5、A6、A7、A8和第二串存储设备B1、B2、B3、B4、B5、B6、B7、B8。在回路中的第一和第二串存储设备通常具有相同数量的存储设备,以保持所述回路平衡。类似地,设备适配器DA1和DA2还耦接到存储设备的第二回路,该第二回路包括第一串存储设备C1、C2、C3、C4、C5、C6、C7、C8和第二串存储设备D1、D2、D3、D4、D5、D6、D7、D8。诸如存储设备A1、A2、A3、A4、A5、A6、A7、A8之类的8个存储设备的集合可以称为8盘组(8-pack)。虽然未要求,但是一个回路通常将具有最少16个存储设备。在替代实施例中,可以在每个回路中包括更多或更少数目的存储设备。例如,可以在每个回路中包括32个、48个或其它数量的存储设备。通常,在回路中的存储设备串具有相同数量的存储设备。每个存储设备回路与该存储设备回路所耦接到的每个设备适配器形成串行回路。例如,包括存储设备A1、A2、A3、A4、A5、A6、A7、A8和B1、B2、B3、B4、B5、B6、B7、B8在内的存储设备回路与设备适配器DA1形成串行回路,并且还与设备适配器DA2形成串行回路。这种布置提高了可靠性,这是因为每个串行回路在该回路中的每个存储设备和耦接到该回路的每个设备适配器之间提供了冗余的通信路径。
在每组存储设备126a、126b1、26c、126d内的存储设备可以分组为一个或多个存储设备阵列,其中的每个阵列可以是例如便宜(或独立)盘冗余阵列(RAID)。RAID阵列也可被称为RAID排列(rank)。响应于从第一和第二集群102、104(或从主机124)接收的读取和写入请求,(存储)设备适配器DA1-8能够单独地寻址在它们所耦接到的RAID阵列中的每个存储设备。在特定RAID阵列中的存储设备可以处于一对设备适配器之间的同一回路中或在不同回路中。作为其中RAID阵列由处于单个回路中的存储设备构成的示例,第一RAID阵列可以包括存储设备A1、A2、A3、A4、B1、B2和B3,而第二RAID阵列可以包括存储设备A6、A7、A8、B5、B6、B7和B8,并将存储设备B4和A5指定为可以由任何一个RAID阵列使用的备用装置。在这个示例中,每个RAID阵列包括来自A1、A2、A3、A4、A5、A6、A7、A8这个8盘组和来自B1、B2、B3、B4、B5、B6、B7、B8这个8盘组的存储设备,以便每个RAID阵列接近设备适配器DA1、DA2之一。作为其中RAID由在不同回路中的存储设备构成的示例,第一RAID阵列可以包括存储设备A1、A2、B1、B2、C1、C2和D1,第二RAID阵列可以包括存储设备A3、A4、B3、B4、C3、D3和D4,第三RAID阵列可以包括存储设备A5、A6、B6、C5、C6、D5和D6,第四RAID阵列可以包括存储设备A8、B7、B8、C7、C8、D7和D8,并且将存储设备D2、C4、B5和A7指定为可以由这四个RAID阵列的任何一个使用的备用装置。在这些示例中,RAID阵列和这些RAID阵列可获得的备用存储设备耦接到同一对设备适配器。但是,RAID阵列、以及该RAID阵列可获得的备用存储设备可耦接到不同对设备适配器。此外,RAID阵列和该RAID阵列可获得的备用存储设备可以处于单个回路中或处于不同的回路中。
数据和根据需要的奇偶校验信息可以任何期望的布置存储在RAID阵列中的存储设备上,所述布置可以包括在RAID阵列中的存储设备的全部或一些上的带化和/或镜像。作为示例,RAID阵列中的6个存储设备可以用于存储数据,而在该RAID阵列中的第七个存储设备可以用于存储奇偶校验信息。在另一个示例中,RAID阵列中的7个存储设备可以用于存储数据,而在该RAID阵列中的第八个存储设备可以用于存储奇偶校验信息。作为另一个示例,数据和奇偶校验信息二者可以存储在RAID阵列中的所有存储设备上。在其它实施例中,RAID阵列可以具有少于7个或多个8个的存储设备。例如,RAID阵列可以包括5个或6个存储设备,每个存储设备都用于存储数据和奇偶校验信息。此外,可以存储双奇偶校验信息以便可以在第一存储设备出故障后完成重建之前发生的第二存储设备故障中恢复。例如,RAID阵列可以包括用于存储数据的6个存储设备和用于存储奇偶校验信息的2个存储设备。作为另一个示例,可以使用7个存储设备用于数据,可以使用另外7个存储设备来镜像在前7个存储设备上的数据,并且可以使用另外2个存储设备来存储奇偶校验信息,它们全部一起可以提供从9个存储设备故障中的恢复(故障容错度9)。
在存储设备组126a-d中的存储设备一般可以是用于存储数据的任何适当设备,并且可以使用磁、光、磁光、电或用于存储数据的任何其它适当技术。例如,该存储设备可以是硬盘驱动器、光盘或盘(例如CD-R、CD-RW、WORM、DVD-R、DVD+R、DVD-RW或DVD+RW)、软盘、磁数据存储盘或磁盘、磁带、数字光带、EPROM、EEPROM或闪速存储器。这些存储设备不是每个都必需具有相同的设备类型或使用相同类型的技术。作为示例,每个存储设备可以是具有例如146千兆字节容量的硬盘驱动器。在一个示例中,每个存储设备组126a-d可以是在由国际商业机器公司制造的型号2105的企业存储服务器中的存储外壳。
第一集群102和/或第二集群104以及至少一个设备适配器DA1-8和至少一个存储设备组126a-d中的至少一部分可以被称为存储系统或存储装置。具有或不具有至少一个存储设备组126a-d的一部分的一个或多个设备适配器DA1-8也可以被称为存储系统或存储装置。
在图2中示出了示范计算装置200。作为示例,可以使用计算装置200的一个实施例来实现主机124、(以及在替代实施例中的)集群102和/或集群104。计算装置200包括处理器202(它可以被称为处理设备),并且在一些示例中可以具有超过一个处理器202。作为示例,该处理器可以是可从国际商业机器公司获得的PowerPC RISC处理器或由英特尔公司制造的处理器。处理器202可以运行任何适当的操作系统,如Windows 2000、AIX、SolarisTM、Linux、UNIX或HP-UXTM。计算装置200可以在任何适当计算机如个人计算机、工作站、大型计算机或超级计算机实现。计算装置200还包括存储设备204、网络接口206和输入/输出208,它们都耦接到处理器202。存储设备204可以包括例如可以是RAM的主存储器210和非易失性存储器212。该非易失性存储器212可以是例如硬盘驱动器、用于对光或磁光介质读取和写入的驱动器、磁带驱动器、非易失性RAM(NVRAM)、或任何其它适当类型的存储设备。存储设备204可以用于存储数据和由处理器执行的应用程序和/或其它编程指令。网络接口206可以提供对于任何适当的有线或无线网络或通信链路的访问。
II.操作
除了上述硬件实施例之外,本发明的其它方面涉及用于在存储设备阵列中存储数据的操作。
A.信号承载介质
在图1和2的上下文中,本发明的方法方面可以例如通过让一个或多个设备适配器DA1-8、集群102和/或集群104(和/或主机124)执行也可以被称为代码的机器可读指令的序列来实现。这些指令可以驻留在各种类型的信号承载介质中。在这个方面,本发明的一些方面涉及程序产品,其中包括有形地包括机器可读指令程序的一个或者多个信号承载介质,该机器可读指令程序可由数字处理装置执行来执行用于在存储设备阵列中存储数据的操作。
这种信号承载介质可以包括例如RAM 110、RAM 112、NVRAM 114、NVRAM 116、主存储器210、非易失性存储器212和/或在设备适配器DA1-8中的固件。作为选择,这些指令可以被包括在诸如图3所示的光数据存储盘300之类的信号承载介质中。该光盘可以是任何类型的信号承载盘(或者多个),如CD-ROM、CD-R、CD-RW、WORM、DVD-R、DVD+R、DVD-RW或DVD+RW。另外,无论是包括在存储系统100中或其它地方,这些指令可以存储在各种机器可读数据存储介质(或者多个)的任何一种上,这些机器可读数据存储介质可以包括例如“硬盘驱动器”、RAID阵列、磁数据存储盘(诸如软盘)、磁带、数字光带、RAM、ROM、EPROM、EEPROM、闪速存储器、可编程逻辑、任何其它类型的固件、磁光存储器、纸穿孔卡、或包括诸如可以是电、光和/或无线的数字和/或模拟通信链路之类的传输媒体在内的任何其它适当的信号承载介质。例如,在一些实施例中,可以通过网络从文件服务器或从其它传输介质访问这些指令或代码,并且包括这些指令或代码的信号承载介质可以包括传输媒体,诸如网络传输线、无线传输介质、通过空间传播的信号、无线电波和/或红外线信号之类。作为选择,可以以硬件逻辑如集成电路芯片、可编程门阵列(PGA)或特定用途集成电路(ASIC)来实现所述信号承载介质。作为示例,这些机器可读指令可以包括微码或从诸如“C++”之类的语言编译得到的软件对象代码。
B.操作的总体序列
1.操作序列的第一示例
为了便于说明,但不具有任何限定地参见图1示出并且如上所述的存储系统100来描述本发明的示范方法方面。图4中说明了本发明的方法方面示例,它示出了用于在存储设备阵列中存储数据的方法的序列400。
可以由一个或多个设备适配器DA1-8、集群102和/或集群104(和/或主机104)来执行序列400的操作。参见图4,序列400可以包括并且可以开始于操作402。操作402包括:确定阵列的值“N”,它是可以由带的相关联逻辑块地址(LBA)所标识的、存储在该阵列的每个存储设备上的带的最大数量。作为示例,该存储设备阵列可以包括在一个或多个存储设备组126a-d中的一些或全部存储设备。如上所述,在一些示例中,所述存储设备可以是硬盘驱动器。
为了确定可以写入到存储设备阵列的存储设备中的带的最大数量N,存储适配器可以查询该阵列中的每个设备,然后将带的数量N设置为等于该阵列中的最小容量存储设备可以支持的最大值。但是,在其它示例中,存储适配器可以将该最大值限制到更小的值,在大多数情况下,RAID阵列中的所有存储设备都将具有相同的存储容量,并因此将具有相同数量的可用带LBA。
每个带通常包括多个数据块,其中,每个数据块存储在对应的LBA处。带中的第一块的LBA被称为带LBA。例如,每个带可以包括64个块,其中,每个块包括例如512字节的数据。可以在对应的带LBA外加块偏移处寻址带中每个数据块,其中,该带LBA是带中的第一数据块的地址,偏移是从带LBA到目标数据块LBA的块数量。因为带通常具有相同长度,所以对于阵列中的每个存储设备,在带幅中的每个带的开始LBA通常具有相同的值。因此,可以通过识别目标存储设备(例如盘)、带LBA和偏移来寻址一个带幅的所有数据块。短语“向带LBA写入”可以用作描述向与在给定带LBA处开始的带相关联的任何或所有块写入的简写。
序列400还可以包括操作404,它包括将计数器设置为诸如1之类的初始值,以便在存储设备阵列中保持对到新LBA的写入的数量的计数。
序列400还可以包括操作406,它包括在随机进入的写入LBA和写入到阵列的存储设备中的有序LBA之间建立一一映射。操作406可以包括基于映射算法建立映射表。建立映射表也可以被称为指定映射表,并且可以包括在高速缓存中保留空间。作为示例,映射表可以存储在适配器存储器中。该适配器存储器可以是非易失性存储器,以便如果复位所述存储设备(例如盘),映射表不会丢失。
在随机进入的写入LBA和写入到阵列中的存储设备的有序LBA之间建立一一映射可以包括使用保留相邻LBA用于循环副本的算法。图5所述的算法是用于在5盘阵列中写入数据和数据的单个循环副本的算法示例。使用其中保留相邻LBA用于循环副本这样的算法,提供了改善的读取和写入效率。但是通常可以使用任何一一映射算法。参见图5,s1j、s2j、s3j、s4j和s5j是带幅Sj的构成带,因此Sj=s1j+s2j+s3j+s4j+s5j。此外,LBAm是由映射算法和表(图6所示)确定的带幅Sj的映射LBA。参见图5,写入带幅Sj包括在每个盘中向两个带LBA写入,其中,向第二个LBA的写入是写入到另一个盘的数据的循环副本。例如,在盘1上,当写入带幅Sj时,在LBAm处开始写入带s1j,并且在LBAm+1处开始写入带s5j的副本。在盘2上,在LBAm处开始写入带s2j,并且在LBAm+1处开始写入带s1j的副本。在盘3上,在LBAm处开始写入带s3j,并且在LBAm+1处开始写入带s2j的副本。在盘4上,在LBAm处开始写入带S4j,并且向LBAm+1写入带s3j的副本。在盘5上,在LBAm处开始写入带s5j,并且向LBAm+1写入带s4j的副本。开始LBA是在每个带中的块的数量的函数。作为示例,带幅1可以从LBA 0开始,带幅2可以LBA 128开始。图6示出了基于图5所述算法、用于存储每个带幅中的每个带的单个循环副本的LBA映射表,,它使用先入先出(FIFO)方法用于所有可获得的带LBA。
作为另一个示例,图7示出了映射算法,且图8示出了对应的映射表,其中使用FIFO方法来实现在5盘阵列中的两个数据循环副本的存储(在其它实施例中,可以存储超过两个的循环副本。)。参见图7,s1j、s2j、s3j、s4j和s5j是带幅Sj的构成带,因此Sj=s1j+s2j+s3j+s4j+s5j。此外,LBAm是由该映射算法和表确定的带幅Sj的映射LBA。参见图8,写入带幅Sj包括在每个盘中的三个LBA写入,其中,向第二和第三个LBA的写入是写入到其它盘的数据的循环副本。例如,当写入带幅Sj时,在盘1上,在LBAm处开始写入带s1j,并且在LBAm+1处开始写入带s5j的副本,在LBAm+2处开始写入带s4j的副本。在盘2上,在LBAm处开始写入带s2j,并且在LBAm+1处开始写入带s1j的副本,在LBAm+2处开始写入带s5j的副本。在盘3上,在LBAm处开始写入带s3j,并且在LBAm+1处开始写入带s2j的副本,在LBAm+2处开始写入带s1j的副本。在盘4上,在LBAm处开始写入带S4j,并且向LBAm+1写入带s3j的副本,在LBAm+2处开始写入带s2j的副本。在盘5上,在LBAm处开始写入带s5j,并且向LBAm+1写入带s4j的副本,在LBAm+2处开始写入带s3j的副本。
在另一个示例中,该映射算法可以保留被映射的LBA集用于进入的写入LBA的一个区(band)或区集的。作为示例,可以这样的方式保留LBA以使得进入的写入LBA在逻辑上保持彼此靠近。在一些示例中,可以修改所述算法以便与特定应用和/或操作系统一起操作。在这个其中保留了一个LBA区的示例中,未在保留区中的LBA可以使用例如FIFO方法。图9示出了为前10个LBA映射的保留LBA区的示例。图10示出了用于一个循环副本的映射表,其中组合了图10所述的10个LBA区的保留映射和FIFO映射。在这个示例中,仅仅当进入的写入LBA还未在所述表中时更新映射表。FIFO算法用于在保留区之外的LBA。使用保留区的思想可以被一般化和扩展到包括超过一个区。
对于其中存储了每个带幅的原件和一份副本的实施例,操作还可以包括保留可用LBA的一半用于主数据,并且保留可用LBA的一半用于数据的循环副本。对于其中存储每个带幅的原件和两份副本的实施例,操作还可以包括:保留可用LBA的三分之一用于主数据,并且保留可用LBA的三分之二用于数据的循环副本。可以由存储设备适配器DA1-8使用诸如图5-10中所示的算法和表之类的一一映射算法和表来隐含执行存储空间的保留。响应于从集群102、104接收的写入数据的请求,存储设备适配器DA1-8可以执行数据的主要副本和任何辅助副本的写入,并且还可以使用所述映射表来跟踪写入了什么和写入到哪里。
再次参见图4,序列400还可以包括操作408,它包括确定是否已经接收到写入命令。如果还没有接收到写入命令,则可以重复操作408直到接收到写入命令为止。如果接收到写入命令,则序列400还可以包括操作410,它包括确定该写入是否是到先前还未被写入的LBA的写入(新LBA)。如果确定该写入是到先前已经写入的LBA的写入,则序列400还可以包括操作412和操作413,其中操作412包括查看映射表,而且操作413包括按照所述映射表来执行写入以写入带。执行写入包括对于在带幅中的每个带,向在映射表中指示的LBA写入该带,并且如果对应的复制标记的值是“是”,则所述执行写入还包括如映射表指示、写入每个带的一个或多个循环副本。
如果在步骤410确定所述写入是到先前未被写入的LBA的写入,则序列400还可以包括递增计数器的操作414。序列400还可以包括操作416,其包括更新映射表以指示在进入的带LBA和映射的带LBA之间的映射,操作416还可以包括对在映射表中的对应项目的复制标记设置“是”或“否”值。设置“是”或“否”值可以包括确定要设置哪个值。作为示例,确定是否应当将复制标记设置为“否”值可以包括确定计数器是否具有大于或等于(也可以描述为“不小于”)不复制阈值的值。作为示例,所述不复制阈值可以是N的百分比,其中,所述百分比是映射算法的一个函数。例如,对于图6中的映射表,当计数器达到值N/2+1时,所述复制标记将被设置为“否”。序列400还可以包括操作418,其包括确定对于计数器的对应值,复制标记是“是”还是“否”。如果复制标记的值是“是”,则序列400还可以包括操作420,其包括对于在带幅中的每个带,向映射表中指示的LBA写入带和所述带的循环副本。序列400还可以包括操作422,其包括确定是否计数器具有等于N的值,如果是如此,则可以结束所述序列,如果不是,则可以在操作408处继续所述序列。
如果在操作418确定对于计数器的对应值、所述复制标记具有值“否”,则序列400还可以包括操作424,其包括对于在带幅中的每个带,向在映射表中指示的LBA写入带,当不写入带的任何副本。序列400还可以包括操作426,它包括确定计数器是否具有等于N的值,如果是如此,则可以结束所述序列,如果不是如此,则可以在操作408处继续所述序列。
2.操作序列的第二示例
图11是用于在存储设备阵列中存储数据的方法的序列1100的流程图。可以由一个或多个存储设备适配器DA1-8、集群102和/或集群104(和/或主机104)执行所述序列1100的操作。参见图11A,序列1100可以包括并且可以开始于操作1102,操作1102包括:对于在存储设备阵列中的每个存储设备,确定由与带相关联的逻辑块地址(LBA)标识的、可以在存储设备中存储的带的总数。这也可以描述为确定在阵列中的每个存储设备上的带LBA的总数。作为示例,存储设备阵列可以包括在一个或多个存储设备组126a-d中的一些或所有存储设备。
序列1100还可以包括操作1104,其包括识别可以在阵列中具有最小容量的存储设备(多个)中存储的带的最大数量。这也可以描述为:识别阵列中具有最小容量的存储设备上的带LBA的数量。序列1100还可以包括操作1106,其包括:将参数N数字为等于可以在所述阵列中最小容量的存储设备中存储的带的最大数量,这也可以描述为将N设置为等于带LBA的数量。
对于其中存储了每个带幅的原件和一个副本的实施例,所述操作还可以包括:保留可用LBA的一半用于主数据的,并且保留可用带LBA的一半用于数据的循环副本。对于其中存储每个带幅的原件和两个副本的实施例,所述操作还可以包括:保留可用LBA的三分之一用于主数据,保留可用带LBA的三分之二用于数据的循环副本。可以由存储设备适配器DA1-8例如使用诸如图5-10中所示的算法和表之类的一一映射算法和表来隐含地执行存储空间的保留。一般,响应于从集群102、104(或主机124)接收的写入数据的请求,存储设备适配器DA1-8执行数据的主副本和任何辅助副本的写入,并且也可以例如使用映射表来跟踪写入了什么和写入在哪里。
序列1100还可以包括操作1108,其包括:识别要存储的带幅Sj的数量j。序列1100还可以包括操作1110,其包括:对于其中存储每个带的原件和单个副本的示例,确定2j是否小于或等于N-1。如果在操作1110确定2j小于或者等于N-1,则序列1100可以包括操作1112、1114、1116和1118的一个或多个。操作1112包括:将带s1j写入到阵列的第一存储设备中的一个LBA如LBAj中,以及该阵列的第二存储设备中的一个LBA如LBAj+1中。作为示例,第一和第二存储设备可以包括在存储设备组126a-d中。操作1114包括:将带s2j写入到第二存储设备中的LBA如LBAj+1中,以及该阵列的第三存储设备中的LBA如LBAj+1中。操作1116包括:将带s3j写入到第三存储设备中的LBA如LBAj中,以及该阵列的第四存储设备中的LBA如LBAj+1中。带s1j、s2j、s3j可以是在操作1108中识别的带幅j的成员。带s1j、s2j、s3j中的一个或多个可以是奇偶校验带。此外,如果带幅j具有另外的带,则可以存储该带幅j中的另外的带。例如,可以将带s4j写入到该阵列中的第四存储设备中的LBA如LBAj中,以及该阵列中的第五存储设备中的LBA如LBAj+1中;可以将带s5j写入到第五存储设备中的LBA如LBAj中,以及该阵列中的第六存储设备中的LBA如LBAj+1中;可以将带s6j写入到第六存储设备中的LBA如LBAj中,以及第一存储设备中的LBA如LBAj+1中。带s1j、s2j、s3j、s4j、s5j、s6j中的一个或多个可以是奇偶校验带。在其它实施例中,可以类似的方式将带幅j中的大于或小于3个带或带幅j中的大于或小于6个带写入到存储设备中,其中,将每个带写入到两个或更多存储设备中。
操作1118包括:确定是否有另外的带幅要存储在阵列中,如果有,则可以再次执行操作1108-1118的一个或多个。如果在操作1118中确定没有另外的带幅要存储,则可以结束序列1100。
在一个替代实施例中,操作1110可以包括确定3j是否小于N-1。在这个替换实施例中,如果在操作1110确定3j小于N-1,则序列1100可以包括操作1112、1114、1116和1118的替代实施例,例如,操作1112可以包括:将带s1j写入到该阵列的第一存储设备中的LBA如LBAj中、该阵列的第二存储设备中的LBA如LBAj+2中,以及该阵列的第三存储设备中的LBA如LBAj+1中。在这个替代实施例中,操作1114可以包括:将带s2j写入到第二存储设备中的LBA如LBAj中、第三存储设备中的LBA如LBAj+2中、以及该阵列的第四存储设备中的LBA如LBAj+1中。在这个替代实施例中,操作1116可以包括:将带s3j写入到第三存储设备中的LBA如LBAj中、第四存储设备中的LBA如LBAj+2中、以及该阵列的第五存储设备中的LBA如LBAj+1中。在这个替代实施例中,可以类似的方式存储带幅j中的另外的带。例如,可以将带s4j写入到该阵列的第四存储设备中的LBA如LBAj中、该阵列的第五存储设备中的LBA如LBAj+2中,以及该阵列的第六存储设备中的LBA如LBAj+1中;可以将带s5j写入第五存储设备中的LBA如LBAj中、该阵列的第六存储设备中的LBA如LBAj+2中,以及该阵列的第一存储设备中的LBA如LBAj+1中;以及可以将带s6j写入到第六存储设备中的LBA如LBAj中、第一存储设备中的LBA如LBAj+2中,以及第二存储设备中的LBA如LBAj+1中。在其它实施例中,带幅j可以具有大于或小于3(或大于或小于6)的带数量,并且在这些实施例中,带幅j的带可以操作1112、1114、1116中所述的方式(其中,将每个带写入到三个存储设备中)写入到存储设备中。在其它替代实施例中,可以类似的方式存储每个带幅中的另外的副本。操作1118包括确定是否存在另外的带幅要在该阵列中存储,如果存在,则可以如上对这个替代实施例所述、再次执行操作1108-1118的一个或多个。如果在操作1118中确定没有另外的带幅要存储,则序列1100可以结束。
再次参见图11A-B所述、其中写入每个带幅的原件和一个另外的副本的主要实施例,如果在操作1110确定2j不小于或等于N-1,则序列1100可以包括操作1120、1122、1124和1126中的一个或多个,参见图11B,操作1120包括:将带s1j写入到第一存储设备中的LBA如LBA(2j-N+1)中。操作1122包括:将带s2j写入到第二存储设备中的LBA如LBA(2j-N+1)中。操作1124包括:将带s3j写入到第三存储设备中的LBA如LBA(2j-N+1)中。如果在带幅j中存在另外的带,则可以类似的方式存储它们。例如,可以将带s4j写入到第四存储设备中的LBA如LBA(2j-N+1)中,以及可以将带s5j写入到第五存储设备中的LBA如LBA(2j-N+1)中,可以将带s6j写入到第六存储设备中的LBA如LBA(2j-N+1)中。在其它实施例中,带幅j可以具有大于或小于3(或大于或小于6)的带数量,而且在这些实施例中,可以操作1120、1122和1124所述的方式将带幅j中的带写入到存储设备中。操作1126包括:确定是否有另外的带要在该阵列中存储,如果有的话,则可以再次执行操作1108-1126的一个或多个。如果没有另外的带幅要存储,则序列1100可以结束。
在其中操作1110包括确定3j是否小于N-1的替代实施例中,如果3j不小于3N-1,则序列1100可以包括操作1120、1122、1124和1126的替代实施例。例如,参见图11B,操作1120可以包括:将带s1j写入到第一存储设备中的LBA如LBA(3j-N+2)中。在这个替代实施例中,操作1122可以包括:将带s2j写入到第二存储设备中的LBA如LBA(3j-N+2)中。此外,在这个替代实施例中,操作1124可以包括:将带s3j写入到第三存储设备中的LBA如LBA(3j-N+2)中。如果带幅j中存在另外的带,则可以类似的方式来存储它们。例如,可以将带s4j写入到第四存储设备中的LBA如LBA(3j-N+2)中,可以将带s5j写入到第五存储设备中的LBA如LBA(3j-N+2)中,以及可以将带s6j写入到第六存储设备中的LBA如LBA(3j-N+2)中。在其它实施例中,带幅j可以具有大于或小于3(大于或小于6)的带数量,而且在这些实施例中,可以这个替代实施例中的操作1120、1122和1124所述的方式将带幅j的带写入到存储设备中。操作1126包括确定是否存在另外的带幅要在该阵列中存储,如果存在,则如这个替代实施例所述再次执行操作1108-1126的一个或多个。如果没有另外的带幅要存储,则序列1100可以结束。
上述序列的一个示例可以概括为下述:可以在具有N个可用LBA的m个盘驱动器的阵列上执行处理,其中,每个带幅S由包括奇偶校验带的m个带(s1、s2、...、sm)构成:Sj=(s1j+s2j+...+smj)。在LBAj处开始写入新的带幅Sj,其中j=0,1,2,...,N-1,其中N=包括元数据在内、用于记录的可用LBA的数量。可以将变量n设置为等于2j。为了以期望的模式存储数据,如果n小于或等于N-1,则在LBAn处开始,将s1j和smj写入盘1中,然后将s2j和s1j写入盘2中,...以及将smj和s(m-1)j写入盘m中。如果n大于N-1,则在LBA(n-N+1)处开始,将s1j写入盘1中,将s2j写入盘2中,...,以及将smj写入盘m中。前面的处理仅仅是一个示例,可以也具有一一映射的其它存储模式来一般化用于写入数据和数据副本的模式。
C.另外的讨论
可以使用各种技术来写入在本发明的不同示例中使用的辅助副本。例如,可以使用附加到RAID阵列的设备适配器DA1-8中的一个或多个来以实时模式构造阵列副本。实时地,该设备适配器缓存可以用于保存先前的数据带,并且将其与目标为该阵列成员的原有数据带成对地离台(destage)。当没有剩余空间来建立新数据的双重副本时,新的主要数据带幅可以写在最老的副本带上。每个新的带幅还以顺序FIFO的方式侵占先前分配到这些副本的空间。其副本已被重写的旧数据的主带幅保持未被触及,以便仍然保证由基本RAID代码提供的RAID保护。其副本还未被重写的主带幅继续具有较高的冗余保护。最后,所有的副本带幅将被重写,而剩下最小的基本RAID保护。
而不是实时地写入数据的副本,可以使用附到RAID阵列的一个或多个存储设备适配器DA1-8来以后台模式建立阵列副本。在后台模式中,存储设备适配器DA1-8可以从每个阵列成员中读取带,并且以相对于原始带幅的移位次序写入它们。
本发明的一些示例包括在给定数量的盘上带化双组或更多组的RAID带幅副本,每个主带幅包括m个顺序带,并且将每个带写入到在该阵列中的m个驱动器之一中。这些带的至少一个可以是例如通过异或剩余的带而构成的奇偶校验带。在主带幅中的带的辅助副本相对于阵列中的盘循环,以提供在该阵列中的盘的辅助准物理镜像。
图12示出了本发明的实现方式的示例,其中,为6盘阵列建立每个带幅的单个副本,以及其中RAID 5是基础阵列。也可以使用这种冗余增加(或利用诸如本发明其它实施例中的双重或三重镜像之类的进一步冗余)来增强其它奇偶校验RAID方案(RAID 51、双奇偶校验等)。主存储带幅被指定为A、B、C、...,而副本,即已经循环一个驱动器(等于1的伸展)的带幅的辅助组被指定为A’、B’、C’、...。因此,A’、B’和C’是作为它们的未装填的相对方A、B、C的镜像映像的辅助数据带幅。如上所述,可以使用另外的副本来提供更高的冗余,诸如也循环一个驱动器(或循环其它数量的驱动器)的第二(或第三)副本。在这个示例中的每个带幅具有诸如Ap之类的奇偶校验带,其表示与数据带A1、A2、A3、A4和A5相关联的奇偶校验带。因此,对于i=1、2、3、4、5的A1、B1、C1、...是主数据带,而Ap、Bp、Cp是相关联的奇偶带。在这个示例中,主和辅助带都具有相应的伸展1(每个后续带幅循环一个盘)。但是,可以使用其它的伸展如2、3、4或5。
图13示出了不使用丢失数据的奇偶校验重建(奇偶校验恢复)的、在一个盘出故障后的重建示例。通过从辅助带A’2、B’1、C’p、...重建主带A2、B1、Cp、...开始,从相邻的驱动器复制在备用驱动器上重建每个丢失的带。
图14示出了不使用奇偶校验重建的、在两个非相邻盘出现故障后的重建示例。这个图说明了从任何两个非相邻故障中恢复的能力,这是比基本RAID5更高的容错度。通过从相邻驱动器复制而在备用驱动器上重建每个带。例如,根据辅助带A’2、B’1、C’p,...重建第一基本带A2、B1、Cp,...,继之以在第二备用A4、B3、C2、...上重建主带。在这个示例中,不需要使用奇偶校验带Ap、Bp、Cp、...的数据重建,这是因为出故障的驱动器非相邻。
图15示出了在两个相邻盘出故障之后的重建示例,其中使用了奇偶校验重建。这个图说明了即使当故障是相邻时、从任何两个故障恢复的能力,这是比基本RAID 5更高的容错度。该重建使用最小化到一个备用盘驱动器的主带的奇偶校验重建。在图15中,描述(a)标识在阵列中的两个出故障驱动器。描述(b)示出了通过从相邻驱动器复制来恢复主带。描述(c)示出了使用奇偶校验重建来重建主带A2、B1、Cp、...。描述(d)示出了通过从在相邻硬盘驱动器上的相邻备用辅助带A1、Bp、C5、...的复制来恢复辅助带A’1、B’p、C’5,以及通过从在相邻硬盘驱动器上的相邻备用辅助带A2、B1、Cp、...的复制来恢复辅助带A’2、B’1、C’p、...。
如此处对本发明的一些示例的描述,对于在RAID阵列中给定数量的盘,主RAID带幅的循环副本的使用提供了比基本RAID更高的驱动器故障容错度(冗余)。本发明的一些示例还提供了优化冗余的自调节处理,其随着主RAID存储重叠辅助副本(或在其它实施例中的三个或其它数量的副本)时而逐渐将驱动器故障容错度降低到不差于基本RAID阵列的水平的。本发明的一些示例提供了自发RAID系统,其中,给定数量的盘提供了比基本RAID系统中更大的、对于客户数据的自保护,并且随着所使用的盘空间数量的增长而调节所述自保护,并且提供了当一个或多个驱动器出现故障时的有效自恢复。
对于在RAID阵列中给定数量的盘驱动器,本发明的一些示例利用空闲盘空间来通过冗余记录而提高RAID阵列的有效驱动器故障容错度以超过由基本RAID代码提供的容错度。对于设置数量的阵列驱动器。每个RAID副本提供了比基本RAID多1的驱动器故障容错度。例如,对于具有RAID 5基本代码的6成员阵列,当不使用本发明时,只有当不超过一个驱动器成员出故障时,才可以恢复数据。相反,利用其中有循环RAID带的单个副本的本发明的一些示例,即使当两个驱动器成员出故障时,也可以恢复数据。对于其中保存了循环RAID带的两个副本的本发明示例,即使当同时发生3个盘故障时也可以恢复数据。
本发明的一些示例在为最需要保护并且可获得最多空闲空间时期、RAID阵列的早期使用期间提供了较高的RAID保护。新盘阵列的早期使用有数据丢失的可能,这是因为新硬盘驱动器(HDD)的初期故障率大于在驱动器已经运行了许多上电小时(POH)之后的HDD故障率。
本发明的一些示例允许对于阵列中的给定数量的盘,可以100%地使用基本RAID阵列的有效数据容量。其代价是逐渐使较老的(客户)数据具有基本RAID代码的故障容错度。所述阵列盘故障容错度随着附加盘空间的使用而单调降低,但是从不低于基本RAID的故障容错度。因此,数据的保护总是至少为基本RAID代码的数据保护。
利用本发明的一些示例,从最老数据开始,数据的循环副本最终将被新的(客户)数据覆盖,并因此最终仅保留主数据。对于仅保留主数据的数据子集如RAID 5,对于数据恢复将仅仅允许1个盘故障。在循环副本还没有被新数据覆盖的阵列中的数据仍然具有较高的盘故障容错度。仅保留主数据的数据子集将随着在阵列中存储另外的客户数据时而增大,直到已经使用了阵列的所有数据容量为止。在一些示例中,如果操作系统要向现有的辅助副本的位置写入,并且如果盘不满,则存储设备适配器DA1-8可以将现有的辅助副本移动到另一个位置,或者可用重新分配存储位置,而不读取和恢复先前存储的辅助副本。
图16中示出了RAID 5的“单个镜像”(每个带一个循环副本)的保护。更具体而言,图16示出了根据其中使用单个镜像的本发明示例、用于“自发RAID 5”的、受保护以防任何两个硬盘驱动器故障的数据百分比。通常,本发明的一些示例可以被称为“自发客户数据保护的RAID存储”。当用于RAID5时,本发明的一些示例可以被称为“自发RAID 5”。如图16所示,在已经使用了50%的可用盘空间之前,所有数据都存在两个盘故障容错度。相反,基本RAID 5的故障保护由在图16底部的百分之零水平线表示。因此,这个单镜像示例提供了最大两个盘的故障容错度,这相对于基本RAID 5的单个盘故障容错度是大的改进。
图17中示出了“双镜像”(每个带两个循环副本)的保护。更具体而言,图17示出了根据其中使用双镜像的本发明示例,用于“自发RAID 5”的、受保护以防任何三个硬盘驱动器故障的数据百分比。如图17所示,在已经使用了大约33.3%的可用盘空间之前,所有数据都存在三个盘故障容错度。相反,基本RAID 5的故障保护由图17底部的百分之零水平线表示。因此,这个双镜像示例提供了最大三个盘的故障容错度,这相对于基本RAID 5的单个盘故障容错度是大的改进。
本发明的一些示例通过显著降低在一个或多个驱动器出故障时的重建时间而提供了防止在重建期间(客户)数据丢失的另外RAID强壮性。作为示例,数据丢失可能作为阵列丢失或一个或多个带丢失(可以被称为杀带(killstrip))的结果而发生。取决于故障的数量和故障是否发生在相邻的驱动器上,由本发明示例提供的辅助副本要么消除了经由奇偶校验恢复来恢复丢失的主数据,要么实质地减少了奇偶校验恢复需要用于恢复基本数据的时间量。本发明的一些示例减少了重建时间,这是因为从无故障的盘向热备用区复制带所需要的时间远远小于经由奇偶校验重建来重建每个丢失的带所需要的时间,其中通过读取在带幅中在每个无故障驱动器上的带,然后异或这些数据以恢复丢失的带来进行奇偶校验重建。
本发明的一些示例在驱动器之一在响应读取请求缓慢的情况下,在读取数据上也比先占重建更快。可以更快地读取数据是因为可以与主带一起,从相邻驱动器读取在丢失带中的数据副本,而不是读取在带幅中的所有剩余数据带、并且利用奇偶校验带来异或它们以重建在缓慢响应带中的数据。
III.其它实施例
虽然上述公开示出了本发明的多个说明性实施例,但是对于本领域的技术人员而言,显然,在不脱离所附权利要求所定义的本发明范围的情况下,可以进行各种改变和修改。而且,虽然可以单数来描述或声明本发明中的元件,但是除非明确地声明了限于单数,否则也考虑复数。

Claims (39)

1.一种用于在存储设备阵列中存储数据的方法,所述方法包括步骤:将第一带写入到第一存储设备和第二存储设备中;将第二带写入到第二存储设备和第三存储设备中;以及将第三带写入到第三存储设备和第四存储设备中。
2.如权利要求1所述的方法,其中,所述第一带、第二带和第三带是带幅的成员。
3.如权利要求1或权利要求2所述的方法,还包括步骤:确定所述存储设备阵列的最大带LBA;保留可用带LBA的一半用于主数据;以及保留可用带LBA的一半用于数据的循环副本。
4.如权利要求1或权利要求2所述的方法,还包括步骤:将第一带写入到第一存储设备、第二存储设备和第三存储设备中;将第二带写入到第二存储设备、第三存储设备和第四存储设备中;以及将第三带写入到第三存储设备、第四存储设备和第五存储设备中。
5.如权利要求4所述的方法,还包括步骤:确定所述存储设备阵列的最大带LBA;保留可用带LBA的至少33%用于主数据;以及保留可用带LBA的至少66%用于数据的循环副本。
6.如权利要求1或权利要求2所述的方法,还包括步骤:设置参数N的值,其中,在所述存储设备阵列中的每个存储设备具有至少N个带LBA;识别要存储的带幅的编号j;确定2j是否小于或等于N-1;如果是的话,则将带s1j写入到所述阵列的第一存储设备中的LBA、所述阵列的第二存储设备中的LBA中;将带s2j写入到所述第二存储设备中的LBA、所述阵列的第三存储设备中的LBA中;以及将带s3j写入到所述第三存储设备中的LBA、所述阵列的第四存储设备中的LBA中。
7.如权利要求6所述的方法,其中,如果确定2j不小于和等于N-1,则包括步骤:将带s1j写入到所述第一存储设备中的LBA中;将带s2j写入到所述第二存储设备中的LBA中;以及将带s3j写入到所述第三存储设备中的LBA中。
8.如权利要求6或7所述的方法,还包括步骤:对于所述存储设备阵列中的每个存储设备,确定在所述存储设备中的带LBA的总数;并且识别带LBA的最小总数;以及其中,所述设置参数N的值的操作包括将N设置等于带LBA的所述最小总数。
9.如权利要求6-8任何一个所述的方法,其中,如果确定2j小于或等于N-1,则包括步骤:将带s4j写入到所述第四存储设备中的LBA、和所述阵列的第五存储设备中的LBA中;将带s5j写入到所述第五存储设备中的LBA、和所述阵列的第六存储设备中的LBA中;以及将带s6j写入到所述第六存储设备中的LBA、和所述第一存储设备中的LBA中。
10.如权利要求6-8任何一个所述的方法,其中,如果确定2j不小于或等于N-1,则还包括步骤:将带s4j写入到所述第四存储设备中的LBA中;将带s5j写入到所述第五存储设备中的LBA中;将带s6j写入到所述第六存储设备中的LBA中。
11.如权利要求6-10任何一个所述的方法,还包括步骤:将带s1j写入到所述阵列的第一存储设备中的带LBAj、和所述阵列的第二存储设备中的带LBAj+1中;将带s2j写入到所述第二存储设备中的带LBAj、和所述阵列的第三存储设备中的带L’BAj+1中;以及将带s3j写入到所述第三存储设备中的带LBAj、和所述阵列的第四存储设备中的带LBAj+1。
12.如权利要求11所述的方法,其中,如果确定2j不小于或等于N-1,则还包括步骤:将带s1j写入到所述第一存储设备中的带LBA(2j-N+1)中;将带s2j写入到所述第二存储设备中的带LBA(2j-N+1)中;以及将带s3j写入到所述第三存储设备中的LBA(2j-N+1)中。
13.如权利要求11所述的方法,其中,如果确定2j小于或等于N-1,则还包括步骤:将带s4j写入到所述阵列的第四存储设备中的带LBAj和所述阵列的第五存储设备中的LBAj+1中;将带s5j写入到所述第五存储设备中的带LBAj和所述阵列的第六存储设备中的带LBAj+1中;以及将带s6j写入到所述第六存储设备中的带LBAj和所述第一存储设备中的带LBAj+1中。
14.如权利要求11所述的方法,其中,如果确定2j不小于或等于N-1,则所述操作还包括:将带s4j写入到所述第四存储设备中的带LBA(2j-N+1)中;将带s5j写入到所述第五存储设备中的LBA(2j-N+1)中;以及将带s6j写入到所述第六存储设备中的LBA(2j-N+1)中。
15.如权利要求6-14任何一个所述的方法,包括步骤:建立映射表;接收写入命令;确定是否复制标记具有“是”值;如果是的话:则根据所述映射表、将带幅的每个带写入到所述存储设备阵列中的相应存储设备中;以及根据所述映射表、将所述带幅的每个带的至少一个副本写入到所述存储设备阵列中的至少一个相应存储设备中;如果不是的话:则根据映射表、将所述带幅的每个带写入到所述存储设备阵列中的相应存储设备中。
16.如权利要求15所述的方法,其中,还包括步骤:更新映射表,其中所述更新步骤还包括步骤:确定是否应当将复制标记设置为“否”值。
17.如权利要求15或权利要求16所述的方法,还包括步骤:将计数器设置为初始值;并且在接收到所述写入命令后递增所述计数器。
18.如权利要求17所述的方法,其中,所述确定是否应当将复制标记设置为“否”值的步骤包括步骤:确定所述计数器的值是否不小于不复制阈值。
19.如权利要求15-17任何一个所述的方法,其中,所述不复制阈值是为映射算法的函数的N的百分比。
20.一种在存储设备阵列中存储数据的存储系统,所述系统包括:用于将第一带写入到第一存储设备和第二存储设备中的装置;用于将第二带写入到所述第二存储设备和第三存储设备中的装置;以及用于将第三带写入到第三存储设备和第四存储设备中的装置。
21.如权利要求20所述的系统,其中,所述第一带、第二带和第三带是带幅的成员。
22.如权利要求20或权利要求21所述的系统,还包括:用于确定存储设备阵列的最大带LBA的装置;用于保留可用带LBA的一半用于主数据的装置;以及用于保留可用带LBA的一半用于数据的循环副本的装置。
23.如权利要求20或权利要求21所述的系统,还包括:用于将第一带写入到第一存储设备、第二存储设备和第三存储设备中的装置;用于将第二带写入到向第二存储设备、第三存储设备和第四存储设备中的装置;以及用于将第三带写入到向第三存储设备、第四存储设备和第五存储设备中的装置。
24.如权利要求23所述的系统,还包括装置:用于确定存储设备阵列的最大带LBA;保留可用带LBA的至少33%用于主数据;以及保留可用带LBA的至少66%用于数据的循环副本。
25.如权利要求20或权利要求21所述的系统,还包括:用于设置参数N的值的装置,其中在所述存储设备阵列中的每个存储设备具有至少N个带LBA;用于识别要存储的带幅的编号j的装置;用于确定2j是否小于或等于N-1的装置;以及如果是的话:用于将带s1j写入到所述阵列的第一存储设备中的LBA和所述阵列的第二存储设备中的LBA中的装置;用于将带s2j写入到所述第二存储设备中的LBA和所述阵列的第三存储设备中的LBA中的装置;以及用于将带s3j写入到所述第三存储设备中的LBA和所述阵列的第四存储设备中的LBA中的装置。
26.如权利要求25所述的系统,其中,如果确定2j不小于和等于N-1,则包括:用于将带s1j写入到所述第一存储设备中的LBA中的装置;用于将带s2j写入到所述第二存储设备中的LBA中的装置;以及用于将带s3j写入到所述第三存储设备中的LBA中的装置。
27.如权利要求25或26所述的系统,还包括:用于为所述存储设备阵列中的每个存储设备、确定在所述存储设备中的带LBA的总数的装置;以及用于识别带LBA的最小总数的装置;并且其中,用于设置参数N的值的装置包括用于将N设置等于带LBA的所述最小总数的装置。
28.如权利要求25-27任何一个所述的系统,其中,如果确定2j小于或等于N-1,则包括:用于将带s4j写入到所述第四存储设备中的LBA和所述阵列的第五存储设备中的LBA中的装置;用于将带s5j写入到所述第五存储设备中的LBA和所述阵列的第六存储设备中的LBA中的装置;以及用于将带s6j写入到所述第六存储设备中的LBA和所述第一存储设备中的LBA中的装置。
29.如权利要求25-27任何一个所述的系统,其中,如果确定2j不小于或等于N-1,则还包括:用于将带s4j写入到所述第四存储设备中的LBA中的装置;用于将带s5j写入到所述第五存储设备中的LBA中的装置;用于将带s6j写入到所述第六存储设备中的LBA中的装置。
30.如权利要求25-29任何一个所述的系统,还包括:用于将带s1j写入到所述阵列的第一存储设备中的带LBAj、和所述阵列的第二存储设备中的带LBAj+1中的装置;用于将带s2j写入到所述第二存储设备中的带LBAj、和所述阵列的第三存储设备中的带LBAj+1中的装置;以及用于将带s3j写入到所述第三存储设备中的带LBAj、和所述阵列的第四存储设备中的带LBAj+1中的装置。
31.如权利要求30所述的系统,其中,如果确定2j不小于或等于N-1,则还包括:用于将带s1j写入到所述第一存储设备中的带LBA(2j-N+1)中的装置;用于将带s2j写入到所述第二存储设备中的带LBA(2j-N+1)中的装置;以及用于将带s3j写入到所述第三存储设备中的LBA(2j-N+1)中的装置。
32.如权利要求30所述的系统,其中,如果确定2j小于或等于N-1,则还包括:用于将带s4j写入到所述阵列的第四存储设备中的带LBAj和所述阵列的第五存储设备中的LBAj+1中的装置;用于将带s5j写入到所述第五存储设备中的带LBAj和所述阵列的第六存储设备中的带LBAj+1中的装置;以及用于将带s6j写入到所述第六存储设备中的带LBAj和所述第一存储设备中的带LBAj+1中的装置。
33.如权利要求30所述的系统,其中,如果确定2j不小于或等于N-1,则所述系统还包括:用于将带s4j写入到所述第四存储设备中的带LBA(2j-N+1)中的装置;用于将带s5j写入到所述第五存储设备中的带LBA(2j-N+1)中的装置;以及用于将带s6j写入到所述第六存储设备中的带LBA(2j-N+1)中的装置。
34.如权利要求25-33任何一个所述的系统,包括:用于建立映射表的装置;用于接收写入命令的装置;用于确定复制标记是否具有值“是”的装置;如果是这样:用于根据所述映射表、将带幅中的每个带写入到存储设备阵列中的相应存储设备中的装置;以及用于根据所述映射表、将所述带幅中的每个带的至少一个副本写入到存储设备阵列中的至少一个相应存储设备中的装置;如果不是:用于根据映射表、将所述带幅中的每个带写入到存储设备阵列中的相应存储设备中的装置。
35.如权利要求34所述的系统,其中,还包括:用于更新映射表的装置,其中,所述更新装置还包括:用于确定是否应当将复制标记设置为值“否”的装置。
36.如权利要求34或权利要求35所述的系统,还包括:用于将计数器设置为初始值的装置;以及用于在接收到所述写入命令之后递增所述计数器的装置。
37.如权利要求36所述的系统,其中,所述用于确定是否应当将复制标记设置为值“否”的装置包括:用于确定计数器值是否不小于不复制阈值的装置。
38.如权利要求34-37任何一个所述的系统,其中,所述不复制阈值是作为映射算法的函数的N的百分比。
39.一种计算机程序,包括当在计算机上运行所述程序时,适用于执行权利要求1-19任何一个中的步骤的程序代码装置。
CNB2005800143790A 2004-05-06 2005-04-26 在存储设备阵列中存储数据的方法和系统 Expired - Fee Related CN100530116C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/842,047 2004-05-06
US10/842,047 US7188212B2 (en) 2004-05-06 2004-05-06 Method and system for storing data in an array of storage devices with additional and autonomic protection

Publications (2)

Publication Number Publication Date
CN1950801A true CN1950801A (zh) 2007-04-18
CN100530116C CN100530116C (zh) 2009-08-19

Family

ID=35159873

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800143790A Expired - Fee Related CN100530116C (zh) 2004-05-06 2005-04-26 在存储设备阵列中存储数据的方法和系统

Country Status (6)

Country Link
US (2) US7188212B2 (zh)
EP (1) EP1754151A2 (zh)
JP (1) JP4521443B2 (zh)
KR (1) KR100992024B1 (zh)
CN (1) CN100530116C (zh)
WO (1) WO2005109167A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106446095A (zh) * 2009-06-25 2017-02-22 Emc公司 用于提供数据的长期存储的系统和方法

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7188212B2 (en) * 2004-05-06 2007-03-06 International Business Machines Corporation Method and system for storing data in an array of storage devices with additional and autonomic protection
US7350102B2 (en) * 2004-08-26 2008-03-25 International Business Machine Corporation Cost reduction schema for advanced raid algorithms
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
JP5055125B2 (ja) * 2004-11-05 2012-10-24 ドロボ, インコーポレイテッド 種々のサイズの格納デバイスを許容する動的にアップグレード可能な故障許容格納システムおよび方法
US20060117132A1 (en) * 2004-11-30 2006-06-01 Microsoft Corporation Self-configuration and automatic disk balancing of network attached storage devices
US20070103671A1 (en) * 2005-11-08 2007-05-10 Honeywell International Inc. Passive-optical locator
JP2008097053A (ja) * 2006-10-05 2008-04-24 Hitachi Global Storage Technologies Netherlands Bv ネットワークを介して接続された複数のデータ記憶装置を含むシステム及びそれに使用されるデータ記憶装置
JP5214474B2 (ja) 2007-02-16 2013-06-19 パナソニック株式会社 分散情報配布装置、保持装置、認証局装置及びシステム
US7827434B2 (en) * 2007-09-18 2010-11-02 International Business Machines Corporation Method for managing a data storage system
US8234444B2 (en) * 2008-03-11 2012-07-31 International Business Machines Corporation Apparatus and method to select a deduplication protocol for a data storage library
US8402213B2 (en) * 2008-12-30 2013-03-19 Lsi Corporation Data redundancy using two distributed mirror sets
US8560879B1 (en) * 2009-04-22 2013-10-15 Netapp Inc. Data recovery for failed memory device of memory device array
US8639877B2 (en) * 2009-06-30 2014-01-28 International Business Machines Corporation Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks
US8234520B2 (en) 2009-09-16 2012-07-31 International Business Machines Corporation Wear leveling of solid state disks based on usage information of data and parity received from a raid controller
US8230189B1 (en) * 2010-03-17 2012-07-24 Symantec Corporation Systems and methods for off-host backups of striped volumes
US8417989B2 (en) * 2010-10-15 2013-04-09 Lsi Corporation Method and system for extra redundancy in a raid system
KR101778782B1 (ko) * 2011-04-08 2017-09-27 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
US8806296B1 (en) 2012-06-27 2014-08-12 Amazon Technologies, Inc. Scheduled or gradual redundancy encoding schemes for data storage
US8850288B1 (en) 2012-06-27 2014-09-30 Amazon Technologies, Inc. Throughput-sensitive redundancy encoding schemes for data storage
US8869001B1 (en) 2012-06-27 2014-10-21 Amazon Technologies, Inc. Layered redundancy encoding schemes for data storage
US9110797B1 (en) * 2012-06-27 2015-08-18 Amazon Technologies, Inc. Correlated failure zones for data storage
US20140208005A1 (en) * 2013-01-22 2014-07-24 Lsi Corporation System, Method and Computer-Readable Medium for Providing Selective Protection and Endurance Improvements in Flash-Based Cache
US9477679B2 (en) * 2013-09-20 2016-10-25 Google Inc. Programmatically choosing preferred storage parameters for files in large-scale distributed storage systems
US9411817B2 (en) * 2013-09-23 2016-08-09 Google Inc. Programmatically choosing preferred storage parameters for files in large-scale distributed storage systems based on desired file reliability or availability
CN104007936B (zh) * 2014-01-07 2017-09-29 华为技术有限公司 访问数据的方法及装置
US9575853B2 (en) 2014-12-12 2017-02-21 Intel Corporation Accelerated data recovery in a storage system

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265098A (en) 1990-08-03 1993-11-23 International Business Machines Corporation Method and means for managing DASD array accesses when operating in degraded mode
US5392290A (en) 1992-07-30 1995-02-21 International Business Machines Corporation System and method for preventing direct access data storage system data loss from mechanical shock during write operation
US5537567A (en) 1994-03-14 1996-07-16 International Business Machines Corporation Parity block configuration in an array of storage devices
US5666512A (en) 1995-02-10 1997-09-09 Hewlett-Packard Company Disk array having hot spare resources and methods for using hot spare resources to store user data
US5737344A (en) 1995-05-25 1998-04-07 International Business Machines Corporation Digital data storage with increased robustness against data loss
JPH09265359A (ja) * 1996-03-28 1997-10-07 Hitachi Ltd ディスクアレイシステムおよびディスクアレイシステムの制御方法
JPH09305328A (ja) 1996-05-13 1997-11-28 Fujitsu Ltd ディスクアレイ装置
US5991411A (en) 1996-10-08 1999-11-23 International Business Machines Corporation Method and means for limiting adverse use of counterfeit credit cards, access badges, electronic accounts or the like
US5896493A (en) 1997-01-17 1999-04-20 Dell Usa, L.P. Raid algorithm using a multimedia functional unit
US5974503A (en) 1997-04-25 1999-10-26 Emc Corporation Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names
US5991804A (en) 1997-06-20 1999-11-23 Microsoft Corporation Continuous media file server for cold restriping following capacity change by repositioning data blocks in the multiple data servers
JPH1153235A (ja) 1997-08-08 1999-02-26 Toshiba Corp ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム
JP3548529B2 (ja) 1997-08-20 2004-07-28 パワークエスト・コーポレーション イメージ形成中のコンピュータ・パーティション操作
US6353895B1 (en) 1998-02-19 2002-03-05 Adaptec, Inc. RAID architecture with two-drive fault tolerance
US6138125A (en) 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
US6101615A (en) 1998-04-08 2000-08-08 International Business Machines Corporation Method and apparatus for improving sequential writes to RAID-6 devices
JP2000039970A (ja) 1998-07-24 2000-02-08 Nec Software Kobe Ltd ディスクアレイシステムの二重障害防止制御方式
US6799283B1 (en) 1998-12-04 2004-09-28 Matsushita Electric Industrial Co., Ltd. Disk array device
US6321345B1 (en) 1999-03-01 2001-11-20 Seachange Systems, Inc. Slow response in redundant arrays of inexpensive disks
JP4040797B2 (ja) * 1999-07-19 2008-01-30 株式会社東芝 ディスク制御装置および記録媒体
US6513093B1 (en) 1999-08-11 2003-01-28 International Business Machines Corporation High reliability, high performance disk array storage system
US6546499B1 (en) * 1999-10-14 2003-04-08 International Business Machines Corporation Redundant array of inexpensive platters (RAIP)
US6526478B1 (en) 2000-02-02 2003-02-25 Lsi Logic Corporation Raid LUN creation using proportional disk mapping
US7155569B2 (en) * 2001-02-28 2006-12-26 Lsi Logic Corporation Method for raid striped I/O request generation using a shared scatter gather list
US6961727B2 (en) 2001-03-15 2005-11-01 International Business Machines Corporation Method of automatically generating and disbanding data mirrors according to workload conditions
US6954824B2 (en) * 2001-10-15 2005-10-11 International Business Machines Corporation Method, system, and program for determining a configuration of a logical array including a plurality of storage devices
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
DE10159902C2 (de) * 2001-12-06 2003-12-18 Bt Baubedarf Magdeburg Gmbh Positionierhilfe
US20030120869A1 (en) 2001-12-26 2003-06-26 Lee Edward K. Write-back disk cache management
US6934803B2 (en) * 2002-05-29 2005-08-23 Lsi Logic Corporation Methods and structure for multi-drive mirroring in a resource constrained raid controller
US6771271B2 (en) 2002-06-13 2004-08-03 Analog Devices, Inc. Apparatus and method of processing image data
US6898668B2 (en) 2002-06-24 2005-05-24 Hewlett-Packard Development Company, L.P. System and method for reorganizing data in a raid storage system
US6848022B2 (en) * 2002-10-02 2005-01-25 Adaptec, Inc. Disk array fault tolerant method and system using two-dimensional parity
US6792391B1 (en) 2002-11-15 2004-09-14 Adeptec, Inc. Method and system for three disk fault tolerance in a disk array
US7188270B1 (en) * 2002-11-21 2007-03-06 Adaptec, Inc. Method and system for a disk fault tolerance in a disk array using rotating parity
US7093159B1 (en) * 2002-12-12 2006-08-15 Adaptec, Inc. Method and system for four disk fault tolerance in a disk array
US7231493B2 (en) 2004-01-09 2007-06-12 Dell Products L.P. System and method for updating firmware of a storage drive in a storage network
US7188212B2 (en) * 2004-05-06 2007-03-06 International Business Machines Corporation Method and system for storing data in an array of storage devices with additional and autonomic protection
JP4428202B2 (ja) * 2004-11-02 2010-03-10 日本電気株式会社 ディスクアレイ・サブシステム、ディスクアレイ・サブシステムにおける分散配置方法、制御方法、プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106446095A (zh) * 2009-06-25 2017-02-22 Emc公司 用于提供数据的长期存储的系统和方法
CN106446095B (zh) * 2009-06-25 2020-01-21 Emc公司 用于提供数据的长期存储的系统和方法

Also Published As

Publication number Publication date
JP4521443B2 (ja) 2010-08-11
US20070083709A1 (en) 2007-04-12
EP1754151A2 (en) 2007-02-21
US7437508B2 (en) 2008-10-14
WO2005109167A3 (en) 2006-07-20
KR20070009660A (ko) 2007-01-18
CN100530116C (zh) 2009-08-19
US20050251619A1 (en) 2005-11-10
KR100992024B1 (ko) 2010-11-05
US7188212B2 (en) 2007-03-06
WO2005109167A2 (en) 2005-11-17
JP2007536658A (ja) 2007-12-13

Similar Documents

Publication Publication Date Title
CN1950801A (zh) 利用附加和自发保护在存储设备阵列中存储数据的方法和系统
US10198197B2 (en) Method and apparatus for flexible RAID in SSD
JP4950897B2 (ja) 種々のサイズの格納デバイスを可能にする動的に拡張可能かつ縮小可能な故障許容格納システム、および方法
US8839028B1 (en) Managing data availability in storage systems
US7093157B2 (en) Method and system for autonomic protection against data strip loss
US20140304469A1 (en) Data storage
CN1779649A (zh) 在处理数据时检验数据完整性的装置及方法
CN1503224A (zh) 5级独立冗余磁盘阵列中多盘失败情况下的读写操作方法
CN1324474C (zh) 检测用于存储系统中写错误的设备与方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090819