CN103339609B - Raid阵列中的装置内数据保护 - Google Patents
Raid阵列中的装置内数据保护 Download PDFInfo
- Publication number
- CN103339609B CN103339609B CN201180053510.XA CN201180053510A CN103339609B CN 103339609 B CN103339609 B CN 103339609B CN 201180053510 A CN201180053510 A CN 201180053510A CN 103339609 B CN103339609 B CN 103339609B
- Authority
- CN
- China
- Prior art keywords
- data
- memory storage
- storage
- memory
- raid
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000005055 memory storage Effects 0.000 claims abstract description 268
- 238000013500 data storage Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 43
- 230000008859 change Effects 0.000 claims abstract description 22
- 238000003860 storage Methods 0.000 claims description 61
- 230000008569 process Effects 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 7
- 239000012634 fragment Substances 0.000 description 66
- 238000010586 diagram Methods 0.000 description 27
- 238000004422 calculation algorithm Methods 0.000 description 25
- 238000005516 engineering process Methods 0.000 description 22
- 230000006399 behavior Effects 0.000 description 12
- 238000009826 distribution Methods 0.000 description 12
- 238000011084 recovery Methods 0.000 description 11
- 238000012937 correction Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 230000008672 reprogramming Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000032683 aging Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000004087 circulation Effects 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000006984 memory degeneration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000000746 purification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- 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
-
- 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
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- 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
-
- 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
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage 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/0653—Monitoring 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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
- 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/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
-
- 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/1059—Parity-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)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供用于RAID阵列中的装置内数据保护的系统和方法。计算机系统包括通过网络相互耦合的客户机计算机和数据存储阵列。数据存储阵列利用用于数据存储的固态驱动和快擦写存储器单元。数据存储阵列内的存储控制器被配置为:识别存储于数据存储子系统中的数据的单元,其中,所述数据的单元至少跨着多个存储装置中的第一存储装置和第二存储装置被存储,第一存储装置和第二存储装置中的每一个存储与数据的单元对应的装置内冗余数据;和仅在第一存储装置上改变与数据的单元对应的装置内冗余数据的量。
Description
技术领域
本发明涉及计算机网络,更特别地,涉及在多个固态存储装置之间有效地分布数据。
背景技术
随着计算机存储器存储和数据带宽的增加,商业日常管理的数据的量和复杂性增加。诸如数据中心的大规模分布式存储系统一般运行许多商业运算。分布式存储系统可与通过一个或多个网络互连的客户机计算机耦合。如果分布式存储系统的任意部分具有不良的性能或者变得不可用,那么公司运算会受损或者完全停止。因此,期望分布式存储系统对于数据可用性保持高的标准并保持高性能功能。如这里使用的那样,由于存储技术中的一些类型不包含盘,因此,存储盘可被称为存储装置。
为了防止数据损失,存储装置常常包含错误检测和校正机制。这些机制常采取由装置产生并存储于装置自身内的错误校正代码的形式。另外,分布式存储系统还可利用分散算法,以在存储装置的集合之间分布数据。这些算法一般在不依赖于中心目录的情况下将数据映射到存储装置。这种算法的例子包括可缩放散列(RUSH)和受控可缩放散列复制(CRUSH)。当没有中心目录时,分布式存储系统中的多个客户机可同时访问多个服务器上的数据对象。另外,存储的元数据的量会减少。但是,在具有改变的容量、输入输出(I/O)特性和可靠性问题的多个存储盘之间分布数据仍然存在困难的任务。与存储装置自身类似,这些算法也可包括诸如RAID类型算法(例如,RAID5和RAID6)或Reed-Solomon代码的错误检测和校正算法。
与选择的存储装置相关的技术和机制确定用于在可动态添加和去除的多个存储装置之间分布数据的方法。例如,以上描述的算法是针对利用硬盘驱动(HDD)的系统开发的。HDD包括一个或多个旋转的盘,每个盘涂有磁介质。这些盘日常以每分钟几千转的速度旋转几个小时。另外,电磁致动器负责在旋转的盘上定位磁读取/写入装置。这些致动器经受摩擦、磨损、振动和机械不对准,这导致可靠性问题。上述的数据分布算法基于HDD的特性和行为。
另一种类型的存储介质的一个例子是固态盘(SSD)。固态盘也可称为固态驱动器。SSD可模仿HDD接口,但SSD利用用于存储永久数据的固态存储器而不是在HDD中见到的电气机械装置。例如,SSD可包含快擦写存储器的组。SSD可在没有移动部分或机械延迟的情况下具有比HDD低的访问时间和等待时间。但是,SSD一般具有明显的写入等待时间。除了不同的输入/输出(I/O)特性以外,SSD经受与HDD不同的失效模式。因此,不能在包含用于存储的SSD、同时利用对于HDD开发的分布数据旋转算法的系统中实现高的性能和高的可靠性。
鉴于以上的情况,希望用于有效地分布数据并在多个固态存储装置之间检测和校正错误的系统和方法。
发明内容
公开了用于有效地在多个固态存储装置之间分布和管理数据的计算机系统和方法的各种实施例。
在一个实施例中,计算机系统包括被配置为在网络上向通过网络耦合为接收读取和写入请求的一个或多个数据存储阵列传输读取和写入请求的多个客户机计算机。设想包括多个存储装置上的多个存储位置的数据存储阵列。在各种实施例中,在用于数据存储和保护的独立驱动配置的冗余阵列(RAID)中配置存储装置。数据存储装置可包含用于数据存储的固态存储器技术,诸如快擦写存储器单元。数据存储子系统还包括存储控制器,该存储控制器被配置为:识别存储于数据存储子系统中的数据的单元,其中,所述数据的单元至少跨着多个存储装置中的第一存储装置和第二存储装置被存储,第一存储装置和第二存储装置中的每一个存储与数据的单元对应的装置内冗余数据;仅在第一存储装置上改变与数据的单元对应的装置内冗余数据的量。在各种实施例中,数据的单元是RAID条带。
还设想存储控制器被配置为响应检测第一存储装置的可靠性的变化的指示改变存储于第一存储装置上的装置内冗余数据的量的实施例。另外,控制器可被配置为存储指示多个存储装置的特性的数据。在这种实施例中,检测的可靠性的变化可至少部分地基于这些特性。这种特性可包含错误率、存取速率、年龄、占有水平或存储数据的年龄等中的一个或多个。
考虑以下的描述和附图,这些和其它的实施例将变得十分明显。
附图说明
图1是示出网络结构的一个实施例的一般化框图。
图2是动态装置内冗余方案的一个实施例的一般化框图。
图3是示出用于调整数据存储子系统中的装置内保护的方法的一个实施例的一般化流程图。
图4是存储子系统的一个实施例的一般化框图。
图5是装置单元的一个实施例的一般化框图。
图6是示出状态表的一个实施例的一般化框图。
图7是示出柔性RAID数据布局结构的一个实施例的一般化框图。
图8是示出柔性RAID数据布局结构的另一实施例的一般化框图。
图9是示出用于动态确定数据存储子系统中的布局的方法的一个实施例的一般化流程图。
图10是柔性RAID数据布局结构的又一实施例的一般化框图。
图11A示出装置布局的一个实施例。
图11B示出段的一个实施例。
图11C是示出不同的页类型内的数据存储配置的一个实施例的一般化框图。
图12是示出混合RAID数据布局的一个实施例的一般化框图。
图13是示出用于选择数据存储子系统中的交替的RAID几何关系的方法的一个实施例的一般化流程图。
虽然能够对于本发明提出各种修改和替代形式,但在附图中作为例子表示并且在这里详细描述特定的实施例。但应理解,其附图和详细的描述不是要将本发明限于特定的公开的形式,相反,本发明要覆盖落入由所附的权利要求限定的本发明的精神和范围内的所有的变更方案、等同方案和替代方案。
具体实施方式
在以下的描述中,阐述大量的特定的细节以使得能够彻底理解本发明。但是,本领域技术人员可以想到,可以在没有这些特定的细节的情况下实现本发明。在一些情况下,为了避免混淆本发明,没有详细表示公知的电路、结构、信号、计算机程序指令和技术。
参照图1,表示网络结构100的一个实施例的一般化框图。如后面进一步描述的那样,网络结构100的一个实施例包含通过网络180相互连接并与数据存储阵列120a~120b连接的客户机计算机系统110a~110b。网络180可通过交换机140与第二网络190耦合。客户机计算机系统110c通过网络190与客户机计算机系统110a~110b和数据存储阵列120a~120b耦合。另外,网络190可通过交换机150与因特网160或其它的外部网络耦合。
注意,在替代性实施例中,客户机计算机和服务器、交换机、网络、数据存储阵列和数据存储装置的数量和类型不限于图1所示的那些。在各种时间,一个或多个客户机可离线操作。另外,在操作中,当用户连接、断开和重新连接网络结构100时,各单个客户机计算机连接类型可改变。简要提供图1所示的部件中的每一个的进一步的描述。首先,描述由数据存储阵列120a~120b提供的特征中的一些的概要。
在网络结构100中,数据存储阵列120a~120b中的每一个可用于在诸如客户机计算机系统110a~110c的不同的服务器和计算机之间共享数据。另外,数据存储阵列120a~120b可被用于盘镜像、备份和恢复、存档和存档数据的检索和从一个存储装置到另一个的数据迁移。在替代性实施例中,为了形成群,一个或多个客户机计算机系统110a~110c可通过快速局域网络(LAN)相互链接。相互链接的一个或多个节点形成群,该群可共享诸如驻留于数据存储阵列120a~120b中的一个内的群共享容量的存储资源。
数据存储阵列120a~120b中的每一个包含用于数据存储的存储子系统170。存储子系统170可包含多个存储装置176a~176m。这些存储装置176a~176m可向客户机计算机系统110a~110b提供数据存储服务。存储装置176a~176m中的每一个可被配置为接收读取和写入请求,并包含多个数据存储位置,每个数据存储位置可作为阵列中的行和列被寻址。在一个实施例中,存储装置176a~176m内的数据存储位置可被配置成逻辑、冗余存储容器或RAID阵列(便宜/独立盘的冗余阵列)。但是,存储装置176a-176m可以不包括磁盘。在一个实施例中,存储装置176a~176m中的每一个可利用与常规的硬盘驱动(HDD)不同的数据存储的技术。例如,存储装置176a~176m中的一个或多个可包含由固态存储器构成的存储装置或者进一步与其耦合以存储永久数据。在其它的实施例中,存储装置176a~176m中的一个或多个可包含使用旋转扭矩传输技术、磁阻随机存取存储器(MRAM)技术或其它存储技术的存储器,或者进一步与其耦合。这些不同的存储技术可导致存储装置之间的不同的可靠性特性。
在存储装置176a~176m中的每一个中使用的技术和机构的类型可确定用于数据对象映射和错误检测和校正的算法。在这些算法中使用的逻辑可包含于基本操作系统(OS)116、文件系统140、存储子系统控制器174内的一个或多个全局I/O调度器178和存储装置176a~176m中的每一个内的控制逻辑中的一个或多个中。
在一个实施例中,包含的固态存储器包含固态驱动(SSD)技术。一般地,SSD技术利用快擦写存储器单元。在本领域中,众所周知,快擦写存储器单元基于在浮动门中捕获和存储的电子的范围保持二进制值。完全擦除快擦写存储器单元在浮动门中不存储或者存在最少量的电子。特定的二进制值,诸如用于单级单元(SLC)快擦写的二进制值1,与擦除的快擦写存储器单元相关。多级单元(MLC)快擦写具有与擦除的快擦写存储器单元相关的二进制值11。在向快擦写存储器单元内的控制门施加比给定的阈值电压高的电压之后,快擦写存储器单元在浮动门中捕获给定范围的电子。因此,另一特定的二进制值,诸如用于SLC快擦写的二进制0,与编程(写入)快擦写存储器单元相关。MLC快擦写单元可根据向控制门施加的电压具有与编程的存储器单元相关的多个二进制值中的一个。
一般而言,SSD技术提供的读取访问等待时间比HDD技术低。但是,SSD的写入性能明显受SSD内的自由可编程块的可用性影响。由于SSD的写入性能与SSD的读取性能相比明显较慢,因此,期望类似的等待时间的某些功能或操作会出现问题。另外,HDD技术和SSD技术之间的技术和机构的不同导致数据存储装置176a~176m的可靠性特性的不同。
在各种实施例中,SSD内的快擦写单元一般在写入新数据之前被擦除。另外,各种快擦写技术中的擦除操作也必须在块的基础上被执行。因此,块(擦除段或擦除块)内的所有快擦写存储器单元被一起擦除。快擦写擦除块可包含多个页。例如,页可具有4千字节(KB)的大小,并且,块可包含64页或256KB。与快擦写装置中的读取操作相比,擦除操作可具有相对较高的等待时间-这又会增加相应的写入操作的等待时间。可在比擦除块尺寸低的粒度水平上执行快擦写技术的编程或读取。例如,可在字节、字或其它的尺寸上编程或读取快擦写单元。
快擦写单元在重复的擦除和编程操作之后出现磨损。这种情况下的磨损是由于在基板与MLC快擦写单元的浮动门之间的电介质氧化物层中注入和捕获的电荷。在一个例子中,MLC快擦写单元会具有有限的经受擦除和编程操作的次数,该次数诸如处于从10000到100000循环的范围中。另外,SSD可经历导致相邻或相近的快擦写单元在另一快擦写单元被擦除或编程时经历偶然的状态变化的程序干扰错误。并且,SSD包含读取干扰错误,其中,当另一快擦写单元被读取时,出现附近的快擦写单元的偶然的状态变化。
已知一个或多个存储装置176a~176m中的每一个的特性会导致更有效的数据对象映射和错误检测和校正。在一个实施例中,存储控制器174内的全局RAID引擎178可对于存储装置176a~176m检测以下方面中的至少一个或多个:对于I/O请求的不一致响应时间、用于相应的访问的不正确的数据、错误率和存取速率。至少响应这些特性,全局RAID引擎178可确定哪个RAID数据布局结构要利用存储装置176a~176m内的相应的一组存储装置。另外,全局RAID引擎178可基于存储装置176a~176m的特性动态地改变装置内冗余方案和装置间RAID数据布局。
图1示出根据一个实施例的能够描述特征的系统的一个例子。以下提供更多的细节。参照图1,提供网络结构100的部件的进一步的描述。
网络结构的部件
并且,如图所示,网络结构100包含通过网络180和190互连并与数据存储阵列120a~120b连接的客户机计算机系统110a~110c。网络180和190可包括包含无线连接、直接局域网络(LAN)连接、存储区域网(SAN)、广域网络(WAN)连接的各种技术,诸如因特网和路由器等。网络180和190可包含一个或多个LAN,这些LAN也可以是无线的。网络180和190还可包含远程直接存储器存取(RDMA)硬件和/或软件、传输控制协议/内部协议(TCP/IP)硬件和/或软件、路由器、中继器、交换机和/或网格等。可以在网络180和190中使用诸如以太网、光纤通道、以太网光纤通道(FCoE)和iSCSI等的协议。交换机140可利用与网络180和190相关的协议。网络190可与用于因特网160的诸如传送控制协议(TCP)和因特网协议(IP)或TCP/IP的一组通信协议连接。交换机150可以是TCP/IP交换机。
客户机计算机系统110a~110b可代表任意数量的静止或移动计算机,诸如桌面个人计算机(PC)、工作站、膝上型计算机、手持计算机、服务器、服务器农场、个人数字助理(PDA)和智能电话等。一般而言,客户机计算机系统110a~110b包括包含一个或多个处理器芯的一个或多个处理器。各处理器芯包含用于根据预定的通用指令集执行指令的电路。例如,可以选择x86指令集构架。作为替代方案,可以选择或任何其它通用指令集构架。处理器芯可对于数据和计算机程序指令访问高速缓存存储器子系统。高速缓存子系统可与包含随机存取存储器(RAM)和存储装置的存储器层次耦合。
客户机计算机系统内的各处理器芯和存储器层次可与网络接口连接。除了硬件部件以外,客户机计算机系统110a~110c中的每一个可包含存储于计算机层次内的基本操作系统(OS)。基本OS可代表各种特定操作系统中的任一种,诸如,例如, 或其它已知的操作系统。因而,基本OS可操作为向最终用户提供各种服务,并提供可操作为支持各种程序的执行的软件框架。另外,客户机计算机系统110a~110c中的每一个可包含用于支持高级虚拟机(VM)的管理程序。本领域技术人员公知,可在桌面和服务器中使用虚拟化,以完全或部分地从系统的硬件将诸如OS的软件去耦合。虚拟化可向最终用户提供多个OS在同一机器上运行的假象,每个OS具有其自身的资源,这种逻辑存储实体(例如,逻辑单元数量,LUN)与数据存储阵列120a~120b中的每一个内的存储装置176a~176m对应。
数据存储阵列120a~120b中的每一个可被用于在诸如客户机计算机系统110a~110c的不同的服务器之间共享数据。数据存储阵列120a~120b中的每一个包含用于数据存储的存储子系统170。存储子系统170可包含多个存储装置176a~176m。这些存储装置176a~176m中的每一个可以是SSD。控制器174可包含用于操作接收的读取/写入请求的逻辑。例如,可至少在控制器174中执行以上简要描述的算法。随机存取存储器(RAM)712可被用于批处理操作,诸如接收的写入请求。
基本OS132、文件系统134、任何OS驱动程序(未示出)和存储于存储器介质130中的其它软件可提供访问文件的功能和这些功能的管理。基本OS134和OS驱动程序可包含存储于计算机介质130上并且可通过处理器122执行以在与接收的请求对应中的存储子系统170中执行一个或多个存储器访问操作的程序指令。
数据存储阵列120a~120b中的每一个可使用网络接口124以与网络180连接。与客户机计算机系统110a~110c类似,在一个实施例中,可在网络适配器卡上包含网络接口124的功能。可通过使用硬件和软件实现网络接口124的功能。可在网络接口124的网络卡实现上包含随机存取存储器(RAM)和只读存储器(ROM)。可以使用一个或多个应用特定集成电路(ASIC)以提供网络接口124的功能。
在一个实施例中,可以开发寻求对于用户数据和相应的错误校正代码(ECC)信息最优化数据布局的数据存储模型。在一个实施例中,模型至少部分地基于存储系统内的存储装置的特性。例如,在利用固态存储技术的存储系统中,可以利用特定的装置的特性以开发用于存储系统的模型,这些模型又用于通知相应的数据存储配置算法。例如,如果使用的特定的存储装置表现随时间的可靠性的变化,那么可在动态改变数据存储配置时考虑这种特性。
一般而言,对于计算系统开发的任何模型是不完整的。在真实世界中经常存在太多的需要应对的变量以完全将给定的系统模型化。在一些情况下,可能能够开发不完整但仍然有价值的模型。如下面更完整地讨论的那样,描述基于下面的装置的特性将存储系统模型化的实施例。在各种实施例中,关于系统会如何表现基于某些预测执行数据存储配置的选择。基于装置的特性的理解,某些装置行为比其它行为更容易预测。但是,装置行为会随时间改变,并且,作为响应,选择的数据布局也会改变。如这里使用的那样,装置的特性可指的是装置的总体特性、诸如芯片或其它部件的装置的子部分的特性、擦除块的特性或者与装置有关的任何其它特性。
装置内冗余
现在转到图2,表示示出动态装置内冗余方案的一个实施例的一般化框图。本领域技术人员公知,几个装置内冗余方案中的一个可被选择,以减少存储装置中的潜在扇区错误的影响。术语“扇区”一般指的是HDD上的存储的基本单元,诸如盘上的给定轨道内的区段。这里,术语“扇区”也可指的是SSD上的分配的基本单元。
SSD内的分配单元可包含SSD内的一个或多个擦除块。参照图2,用户数据210可指的是由最终用户修改和访问的存储数据和装置间错误校正代码(ECC)数据。装置间ECC数据可以是从保持用户数据的其它存储装置上的一个或多个页产生的奇偶信息。例如,装置间ECC数据可以是在RAID数据布局结构中使用的奇偶信息。用户数据210可被存储于包含于存储装置176a~176k中的一个或多个内的一个或多个页内。在一个实施例中,存储装置176a~176k中的每一个是SSD。
SSD内的擦除块可包含几个页。如上所述,在一个实施例中,页可包含4KB的数据存储空间。擦除块可包含64页或256KB。在其它的实施例中,擦除块可大到1兆字节(MB),并包含256页。可以以提供足够大尺寸单元和相对较少的单元的方式选择分配单元尺寸,以减少分配单元的经费跟踪。在一个实施例中,一个或多个状态表可保持分配单元的状态(分配、空闲、擦除、错误)、磨损水平和在分配单元内出现的错误(可校正和/或不可校正)的数量的计数。在各种实施例中,分配单元的尺寸可被选择,以平衡给定装置可用的分配单元的数量与分配单元的维护经费。例如,在一个实施例中,分配单元的尺寸可被选择为SSD的总存储容量的百分之一的约1/100。页、擦除块和其它单元配置的数据存储空间的其它量是可能的,并且被设想。
当不可访问存储装置内的给定扇区或其它存储单元时,出现潜在扇区错误(LSE)。对于给定的扇区,可能不能完成读取或写入操作。另外,可存在不可校正错误校正代码(ECC)错误。LSE是在访问给定的扇区之前未被检测的错误。因此,事先存储于给定的扇区中的任何数据会丢失。在存储装置失效之后,当在RAID重构中遇到时,单个LSE可导致数据丢失。对于SSD,另一LSE的出现的可能性的增加可能源自以下统计中的至少一个:装置年龄、装置尺寸、访问速率、存储致密性和先前的可校正和不可校正错误的出现。为了防止给定存储装置内的LSE和数据丢失,可以在给定的存储装置内使用多个装置内冗余方案中的一个。
装置内冗余方案利用给定存储装置内的ECC信息,诸如奇偶信息。该装置内冗余方案及其ECC信息与给定装置对应,并且,可保持于给定装置内,但与可在内部由装置自身产生和保持的ECC相异。一般而言,装置的在内部产生和保持的ECC对于包含装置的系统是不可见的。包含于给定存储装置内的装置内ECC信息可被用于增加给定存储装置内的数据存储可靠性。该装置内ECC信息被添加到可包含于另一存储装置内的其它ECC信息,诸如在RAID数据布局结构中利用的奇偶信息。
高度有效的装置内冗余方案可充分地增强给定RAID数据布局的可靠性,以导致用于保持奇偶信息的装置的数量的减少。例如,如果存在附加的装置内冗余以保护各装置上的数据,那么双重奇偶RAID布局可被单个奇偶RAID布局替代。对于固定程度的存储效率,增加装置内冗余方案的冗余性会增加给定存储装置的可靠性。但是,以这种方式增加冗余性也可增加给定存储装置的输入/输出(I/O)性能的损失。
在一个实施例中,装置内冗余方案将装置分成用于存储用户数据的多组位置。例如,分割可以是与由条带250a~250c表示的RAID布局内的条带对应的装置内的一组位置。如数据210所示,用户数据或装置间RAID冗余信息可被存储于存储装置176a~176k中的每一个内的一个或多个页内。在各存储装置内,装置内错误恢复数据220可被存储于一个或多个页内。如这里使用的那样,装置内错误恢复数据220可被称为装置内冗余数据220。本领域技术人员公知,可通过在数据210内的信息的选择的位上执行功能,获得装置内冗余数据220。也可使用基于XOR的操作以导出奇偶信息以存储于装置内冗余数据中。装置内冗余方案的其它例子包含单奇偶检查(SPC)、最大距离可分离(MDS)擦除代码、交错奇偶检查代码(IPC)、混合SPC和MDS代码(MDS+SPC)和列对角奇偶(CDP)。方案根据计算数据220的方式关于传输可靠性和经费改变。除了上述的冗余信息以外,系统可被配置为计算装置上的区域的校验和值。例如,可在信息被写入到装置时计算校验和。该校验和被系统存储。当从装置读回信息时,系统可重新计算校验和并将其与原存储的值相比较。如果两个校验和不同,那么信息不被适当地读取,并且,系统可使用其它的方案以恢复数据。校验和功能的例子包括循环冗余检查(CRC)、MD5和SHA-1。
如条带250a~250c所示,在存储装置176a~176k中的每一个中,用于存储给定条带内的数据210的页的宽度或数量可以相同。但是,如条带250b~250c所示,在存储装置176a~176k中的每一个中,用于存储给定条带内的装置内冗余数据220的页的宽度或数量可以不相同。在一个实施例中,改变给定存储装置的特性或行为可至少部分地确定用于存储相应的装置内冗余数据220的宽度。例如,如上所述,快擦写单元经历程序干扰错误和读取干扰错误,其中,编程或读取页可干扰附近的页并在这些附近页附近导致错误。当存储装置老化并产生更多的错误时,相应的装置内冗余数据220的量会增加。例如,在用于条带250b的写入操作之前,存储装置176a~176k中的每一个的特性可被监视并被用于预测增加的错误比率。预测的存储装置176c和176j的错误的增加可被检测。作为响应,装置内冗余数据220的量对于存储装置176c和176j会增加。在图2的条带250a和250b的例子中,可对于条带250a和250b的存储装置176c和176j看到存储的保护数据的量。例如,现在,不是用单一奇偶保护存储装置176c和176j,而是可用双重奇偶或三重奇偶保护这些装置。注意,增加装置176c和176j的装置内保护的量不必需相应地增加同一条带的其它装置。而是,条带的数据可如希望的那样在各装置中具有不同的保护水平。
在各种实施例中,在选择的基础上,可出现给定的数据保护的水平的增加或减小。例如,在一个实施例中,保护的增加可仅对于被检测为产生更多的错误的存储装置,诸如以上的例子中的存储装置176c和176j出现。在另一实施例中,当存储装置176c和176j被检测为产生更多的错误时,保护的增加可对于存储装置176a~176k中的每一个出现。在一个实施例中,诸如装置176k的奇偶装置上的装置内保护的量的增加可能需要减少在条带内保护的数据的量。例如,增加存储于给定条带的奇偶装置上的装置内数据的量必须对于由条带内的数据减少由该装置存储的奇偶数据的量。如果该奇偶数据的量减少到小于保护条带内的所有数据所需要的量,那么,如果希望连续的奇偶保护,则必须减少带内的数据。作为减少存储于条带内的数据的量的替代方案,可对于存储奇偶数据选择不同的装置。各种选项是可能的,并且被设想。还应注意,虽然这里描述的图2和其它的示图可示出相异的奇偶装置(例如,176k),但是,在各种实施例中,奇偶可跨着多个装置分布,而不是存储于单个装置内。因此,为了便于讨论,图中的单独的奇偶装置的示图一般可被视为逻辑示图。
现在参照图3,表示用于调整数据存储子系统内的装置内保护的方法300的一个实施例。在上述的网络结构100和数据存储阵列120a~120b中体现的部件可一般根据方法300操作。本实施例中的步骤以依次的方式被表示。但是,一些步骤可以以与所示的次序不同的次序出现,一些步骤可同时被执行,一些步骤可与其它的步骤组合,并且,在另一实施例中可缺少一些步骤。
在块302中,确定用于在存储装置中存储用户数据的第一空间量。如上面关于数据210描述的那样,该用户数据可以是在最终用户应用中使用的数据或在RAID结构中使用的装置间奇偶信息。该第一空间量可包含上述的存储装置内的一个或多个页。在一个实施例中,存储控制器174内的全局RAID引擎178从存储装置176a~176m中的每一个接收行为统计。对于包含存储装置176a~176m中的两个或更多个的给定装置组,全局RAID引擎178可确定RAID数据布局和装置内冗余的初始量,以在两个或更多个存储装置中的每一个内保持。在块304中,RAID引擎178可确定用于在存储装置内存储相应的装置内保护数据的第二空间量。该第二空间量可包含存储装置内的一个或多个页。装置内保护数据可与上述的装置内冗余数据220对应。
在块306中,数据被写入包含于给定装置组内的各存储装置内的第一空间量中。在一个实施例中,用户数据和装置间奇偶信息作为单个RAID条带跨着包含于给定装置内的多个存储装置被写入。重新参照图2,用于被写入的相应的数据的宽度在各存储装置内相同。在块308中,通过ECC算法、基于XOR的算法或任何其它适当的算法产生装置内保护数据。另外,系统可产生校验和以帮助识别还没有适当地检索的数据。在块310中,产生的装置内保护数据被写入存储装置中的第二空间量中。
在块312中,RAID引擎178可监视一个或多个存储装置的行为。在一个实施例中,RAID引擎178可包含相应的存储装置的模型,并且从存储装置接收行为统计以输入到模型。模型可通过利用存储装置的已知的特性预测存储装置的行为。例如,模型可预测给定的存储装置的即将到来的增加的错误率。如果RAID引擎178检测影响可靠性的给定的存储装置的特性(条件块314),那么在块316中,RAID引擎可调整用于存储数据和相应装置内冗余数据的第一空间和第二空间量。例如,RAID引擎可监视上述的统计,诸如至少装置年龄、存取速率和错误率。重新参照图2,RAID引擎178可检测存储装置176c和176j具有错误数量的增加。作为替代方案,RAID引擎可预测存储装置176c和176j的错误的数量的增加。因此,在写入第二条带250b之前,RAID引擎178可调整用于在存储装置176a~176k中的每一个中存储数据210和数据220的页的数量。类似地,RAID引擎178可检测存储装置176b具有更低的可靠性。因此,在写入第三条带250c之前,RAID引擎178可重新调整用于在存储装置176a~176k中的每一个中存储数据210和数据220的页的数量。
监视存储装置特性
现在参照图4,表示存储子系统的一个实施例的一般化框图。一个或多个存储装置176a~176m中的每一个可在一个或多个装置组173a~173m中的一个中被分割。也可存在具有其它装置的其它装置组。用于各存储装置的一个或多个相应的操作队列和状态表可包含于装置单元400a~400w中的一个中。这些装置单元可存储于RAM172中。可对于装置组173a~173m中的每一个包括相应的RAID引擎178a~178m。各RAID引擎178可包含跟踪包含于相应装置组内的存储装置中的每一个的统计的监视器410。数据布局逻辑420可确定在相应的存储装置内对于用户数据、装置间冗余数据和装置内冗余数据分配的空间量。存储控制器174可包含用于执行以下的任务中的至少一个的其它控制逻辑430:磨损水准测量、废物收集、I/O调度、用于到来和外出的信息包的去复制和协议转换。
现在转到图5,表示装置单元的一个实施例的一般化框图。装置单元可包含装置队列510和表520。装置队列510可包含读取队列512、写入队列514和诸如其它操作队列516的一个或多个其它队列。各队列可包含用于存储一个或多个相应的请求530a~530d的多个条目。例如,用于相应的SSD的装置单元可包含用于至少存储读取请求、写入请求、修整请求和擦除请求等的队列。表520可包含一个或多个状态表522a~522b,每个包含用于存储状态数据或统计的多个条目530。还应注意,虽然队列和表在该图和其它的图中被示为包括特定数量的条目,但是,条目本身未必相互对应。另外,队列、表和条目的数量可能与图所示的情况不同并且可相互不同。
现在转到图6,表示示出与给定装置对应的状态表的一个实施例的一般化框图。在一个实施例中,这种表可包含与诸如SSD的给定存储装置的状态、错误和磨损水平信息对应的数据。相应的RAID引擎能够访问该信息,这允许RAID引擎动态地改变对于数据存储分配的空间和用于装置间保护和装置内保护的方案。在一个实施例中,信息可至少包含装置年龄602、错误率604、在装置606上检测的错误的总数、可恢复错误的数量608、不可恢复错误的数量610、装置的访问速率612、存储的数据的年龄614和用于分配空间的一个或多个分配状态616a~616n。分配状态可包含填充、空置和错误等。
灵活RAID布局
现在转到图7,表示示出灵活RAID数据布局结构的一个实施例的一般化框图。RAID引擎可确定用于存储装置176a~176k的保护水平。例如,RAID引擎可确定对于存储装置176a~176k利用RAID双重奇偶。装置间冗余数据240可代表从相应的用户数据产生的RAID双重奇偶值。在一个实施例中,存储装置176j和176k可存储双重奇偶信息。应当注意,RAID奇偶保护的其它水平是可能的并被设想。另外,在其它的实施例中,双重奇偶信息的存储可在存储装置之间旋转,而不是存储于各RAID条带的存储装置176j和176k内。为了便于解释和描述,双重奇偶信息的存储被示为存储于存储装置176j和176k内。
现在参照图8,表示示出灵活RAID数据布局结构的另一实施例的一般化框图。与图7所示的例子类似,可对于存储装置176a~176k使用双重奇偶。虽然在本例子中描述RAID双重奇偶,但是,可以选择RAID数据布局结构中的任意冗余量。
在操作中,RAID引擎178可监视存储装置176a~176k的特性并确定装置表现比初始或其它给定可靠性水平高的可靠性水平。作为响应,RAID引擎178可将RAID保护从RAID双重奇偶变为RAID单一奇偶。在其它的RAID数据布局结构中,可以使用支持的冗余量的另一种减少。在其它的实施例中,可由存储控制器174内的其它的逻辑执行存储装置176a~176k的监视和保护水平的改变。
继续以上的例子,可以只产生单一奇偶信息,并对于在给定的RAID条带上执行的随后的写入操作存储它。例如,在改变支持冗余量的变化之后,可以不在用于写入操作的随后的RAID条带中使用存储装置176k。另外,存储于存储装置176k中的数据可被无效化,由此释放存储。然后可对于其它的用途重新分配与存储装置176k中的释放数据对应的页。减少奇偶保护的量并释放以前对于存储奇偶保护数据信号的空间可被称为“奇偶击碎”。另外,在存储装置176k是SSD的实施例中,可在在条带250a内重新写入页之前在存储装置176k内出现一个或多个擦除操作。
继续奇偶击碎的以上的例子,在奇偶击碎之后存储于条带250a内的存储装置176k的重新分配页内的数据可保持用户数据或不与条带250a对应的其它RAID条带的相应的RAID单一奇偶信息。例如,存储于条带250a内的存储装置176a~176j中的数据可与在奇偶击碎之前执行的一个或多个写入操作对应。存储于条带250a中的存储装置176k中的数据可与在奇偶击碎之后执行的一个或多个写入操作对应。类似地,存储于条带250b内的存储装置176a~176j中的数据可与在奇偶击碎之前执行的一个或多个写入操作对应。条带250b内的存储装置176k中的页可被释放,在以后被擦除,并且在以后通过与在改变支持冗余量之后执行的一个或多个写入操作对应的数据被重新写入。应当注意,当跨着存储装置旋转冗余信息时,该方案期望甚至会更有效。在这种实施例中,通过击碎释放的空间类似地跨着存储装置分布。
重新参照图8,在条带250c内的存储装置176k中表示的去分配的页代表在奇偶击碎之前事先存储了RAID双重奇偶信息的存储位置。但是,现在,这些页是无效的,并且还没有被重新分配。在以上的例子中,SSD的特定的特性确定在存储装置176k中释放和重新分配页的方式和定时。这些特性的例子至少包括在重新编程(重新写入)一个或多个页之前擦除整个擦除块。从图8可以看出,当奇偶被击碎时,不必击碎整个装置。而是,可以如希望的那样对于各单个条带击碎奇偶。类似地,可通过向条带添加存储于附加的装置上的保护数据增加条带的奇偶保护。
现在参照图9,表示用于动态确定RAID布局的方法的一个实施例。在上述的网络结构100和数据存储阵列120a~120b中体现的部件可一般根据方法900操作。在图9中,表示两个处理910和920。处理中的每一个可同时或者以给定的次序操作。并且,本实施例中的步骤以依次的方式被表示。但是,一些步骤可以以与所示的次序不同的次序出现,一些步骤可同时被执行,一些步骤可与其它的步骤组合,并且,在另一实施例中可缺少一些步骤。块910示出存储控制系统监视系统内的存储装置的特性和行为的处理(块912)。例如,可以观察和/或记录诸如图6描述的特性。如果检测特定的条件,诸如可靠性的变化(决定块914),那么可改变用于存储数据的保护的量(块916)。例如,当给定的装置的年龄相对年轻时,装置的可靠性可能是未知的(例如,装置可能在相对年轻的年龄上遭受“夭折”和失败)。因此,可以对于每个RAID条带使用一个或多个额外存储装置,以存储奇偶信息。在以后,当时间证明装置可靠时,该额外保护可被去除。在各种实施例中,可对于装置保持关于错误率的特性。例如,关于可校正和/或不可校正错误的特性可被保持和使用,以关于给定装置的可靠性做出决定。基于该信息,存储控制器可动态改变装置或条带的各种保护水平。
图9的块920一般示出在要分配存储的条带或其它部分时(决定块922)时可进行关于用于数据的布局和保护水平的决定(块924)的处理。注意,可在此时执行块910的处理。作为替代方案,保护水平可能由处理910确定并被存储。块924的确定可然后基于存储的数据。在一个实施例中,一旦确定了给定的布局,就可从一组装置选择用于布局的特定的装置(块925)。例如,在一个实施例中,一组20个装置可用。如果确定5+2的布局,那么可从20的组选择使用任何七个装置。另外,注意,具有选择的5+2布局的随后的写入不需要使用相同的7个装置。在确定布局、保护水平和用于条带的装置之后,条带被写入(块926)。
在各种实施例中,可以利用RUSH算法以确定给定条带的数据和冗余信息驻留于哪些装置上。例如,RUSH算法可被用于选择特定的装置,以对于存储装置176a~176k中的给定的条带利用8+2RAID布局。一般而言,如这里使用的那样,对于给定的数据条带,M+N布局可一般描述包括M个数据装置和N个奇偶装置的布局。另外,如上所述,奇偶可跨着装置分布而不是完全位于特定的装置内。因此,8+2布局可包含跨着10个装置条带化的数据和奇偶-其中的8个装置存储数据,2个装置存储奇偶。在随后的情况下,可以选择12+2布局。以这种方式,可在要写入写入(例如,条带)时动态确定希望的布局和保护特性。在一个实施例中,存储装置176a~176k可包含多于10的存储装置,诸如30、50或更多个存储装置。但是,对于具有8+2布局的条带,只使用存储装置中的10个。注意,可以选择装置中的任意的10个,并且,可对于选择用于存储条带的10个装置使用任何适当的算法。例如,可以使用CRUSH算法,以选择对于给定的8+2个RAID布局利用存储装置176a~176k中的哪10个。
在存储装置176a~176k的选择的8+2RAID布局的一个例子中,可以使用存储装置中的2个以存储诸如奇偶信息的错误校正代码(ECC)信息。该信息可被用于执行重构读取请求。重新参照图8,在本例子中,可以选择存储装置176j和176k以存储RAID双重奇偶信息。并且,奇偶信息可以以旋转的方式存储于包含于RAID阵列中的存储装置176a~176k中的每一个之间而不是一致地存储于相同的存储装置中。为了便于解释和描述,存储装置176j和176k被描述为存储RAID双重奇偶。
在块926中,在执行写入操作时,可以跨着包含于RAID阵列中的多个存储装置中将元数据、用户数据、装置内奇偶信息和装置间奇偶信息写入为RAID条带。在块912中,RAID引擎178可监视RAID阵列中的一个或多个存储装置的行为。在一个实施例中,如图4所示,RAID引擎178可包含监视器410和数据布局逻辑420。RAID引擎178可至少监视给定的存储装置的年龄、错误的数量和类型、自数据的最后的分配的检测配置变化、给定数据的年龄和RAID阵列中的存储空间的当前使用等。
由RAID引擎178监视的数据可被存储于RAM172中,诸如存储于图4所示的装置单元400a~400w中的一个中。诸如图5和图6所示的例子,可以使用表以存储该数据。包含于相应的RAID引擎中的逻辑可通过监视存储装置的更新的统计检测和预测存储装置的行为。例如,模型可预测给定的存储装置的即将到来的增加的错误率。
如果检测到存储装置的增加的可靠性(条件块908),那么在块910中,RAID引擎可降低系统内的数据保护水平。例如,在一个实施例中,可以减少存储于存储子系统中的奇偶信息的量。关于以上的例子,RAID引擎可对于相应的8+2RAID阵列将RAID双重奇偶减少到RAID单一奇偶,从而将其转换成8+1RAID阵列。在另一例子中,给定的RAID阵列可在块916之前在RAID结构中利用N级冗余量或奇偶。在块916中,RAID引擎可确定利用(N-m)级冗余量,其中,N>1且1≤m≤N。因此,在给定的RAID条带的随后的写入操作中,将存在少m个的存储装置被写入到给定的RAID条带中。
为了减少系统内的数据保护的水平,RAID引擎(或另一部件)可执行上述的奇偶击碎。随后,存储控制器174可重新分配作为击碎操作的结果释放的那些页以将其用于随后的写入操作中。
当存储装置176a~176k中的每一个均老化并且填充数据时,如上所述,可以从RAID阵列去除额外的奇偶信息。保持元数据、用户数据、相应的装置内冗余信息和装置间冗余信息中的一些。关于以上具有8+2RAID阵列的例子,保持存储于存储装置176a~176j中的信息。但是,可从RAID阵列去除额外的装置间冗余信息或额外奇偶信息。例如,可从RAID条带去除存储于存储装置176k中的额外奇偶信息。
保持的信息,诸如以上的例子中的存储于存储装置176a~176j中的信息,可保持在适当的位置。可对于随后的写入操作重新使用和重新分配存储额外奇偶信息的存储空间,诸如以上的例子中的存储装置176k中的相应的页。在一个实施例中,各新的分配接收新的虚拟地址。各新分配可具有任意给定的尺寸、任意给定的对准或几何形式,并且可配合于任何给定的存储空间(虚拟或物理)中。在一个实施例中,存储装置176a~176k中的每一个和存储装置内的各分配页具有包含识别信息的标题。该识别信息可允许在不改变给定的配置的情况下对于释放的额外奇偶信息重新用户存储空间。
在存储装置176a~176k中的一个或多个是SSD的实施例中,擦除块在将擦除块内的一个或多个页重新编程之前被擦除。因此,在存储装置176k是SSD的实施例中,相应的擦除块在将存储装置176k中的释放页重新编程之前被擦除。关于以上的具有原8+2RAID阵列的例子,一个或多个擦除块在用数据210将页重新编程之前在条带250a~250b内的存储装置176k中被擦除。原8+2RAID阵列现在是8+1RAID阵列,使得存储装置176j对于在奇偶击碎之前写入的RAID条带提供单一奇偶信息。
本领域技术人员公知,在给定存储装置的读取或写入失效的过程中,可从相应的RAID条带中的支持的装置间奇偶信息重构数据。重构的数据可被写入到存储装置。但是,如果重构的数据无法被写入到存储装置,那么所有的存储于存储装置上的数据会从相应的奇偶信息重建。重建数据可被重新定位于另一位置。通过快擦写存储器,快擦写翻译层(FTL)重新映射数据的存储位置。另外,通过快擦写存储器,数据的重新定位包含在将擦除块内的相应的页重新编程之前擦除整个擦除块。相对于页以擦除块的粒度保持映射表允许重新映射表更紧凑。并且,在重新定位过程中,可以使用在奇偶击碎中释放的额外页。
偏移奇偶
现在转到图10,表示示出灵活RAID数据布局结构的又一实施例的一般化框图。与图8所示的一般化框图类似,可以使用灵活RAID数据布局结构。存储装置176a~176k包含跨着多个存储装置布局的多个RAID条带。虽然存储装置176a~176k中的每一个包含多个页,但是,为了便于解释,只标注页1010和页1020。在表示的例子中,选择双重奇偶RAID数据布局,其中,存储装置176j和176k存储双重奇偶信息。
存储装置176a~176k中的页中的每一个存储特定类型的数据。一些页存储用户数据210和相应的产生的装置间奇偶信息240。其它的页存储相应的产生的装置内奇偶信息220。又一些页存储元数据242。元数据242可包含页标题信息、RAID条带识别信息和一个或多个RAID条带的记录数据等。除了装置间奇偶保护和装置内奇偶保护以外,存储装置176a~176k中的页中的每一个可包含诸如存储于各给定页内的校验和的附加的保护。在各种实施例中,各条带开始时的单个元数据页可源自其它的条带标题。作为替代方案,该页可以在奇偶碎片中处于不同的偏移上,因此,可以通过装置间奇偶保护该数据。“碎片”代表装置的一部分。因此,奇偶碎片指的是装置的存储奇偶数据的部分。
物理层
在各种实施例中,这里描述的系统可包括使得系统的其它元件与存储装置通信的物理层。例如,调度逻辑、RAID逻辑和其它逻辑可通过包含软件和/或硬件的任意适当的组合的物理层与存储装置通信。一般地,物理层执行包括提供对于永久存储的访问和执行与数据存储的完整性有关的功能的各种功能。
图11A示出500GB装置的假定装置布局的一个实施例。在各种实施例中,这里描述的存储装置可通过装置的开始处的分区表1101和装置终了处的分区表的复制被格式化。另外,装置标题1103可被存储第一块和最后的块中。例如,在基于快擦写的存储装置中,装置标题可被存储于第一擦除块和最后的擦除块中。如上所述,擦除块是一般处于256KB~1MB的范围中的快擦写结构。第一擦除块中的附加的未使用空间可被保留(填充1105)。可对于写入记录和诊断信息1107保留各装置中的第二擦除块。其间的擦除块的剩余部分被分成多个擦除块的分配单元(AU)1109。AU尺寸可被选择,因此,为了得到良好的分配粒度,对于每个装置可存在合理数量的AU。在一个实施例中,在装置上可大概存在10000个AU,以允许在足够大的单元中分配以避免间接费用,但为了便于跟踪,单元的数量不能太多。可在AU状态表中保持AU的状态(分配/释放/擦除/坏)的跟踪。可在磨损水平表中保持AU的磨损水平,并且,可在AU错误表中保持错误的计数。
在各种实施例中,物理层跨着一组装置(可处于不同的节点上)在每个装置包含一个片段碎片的片段中分配空间。图11B示出片段和一个可能的片段布局中的该片段的各种可识别部分的一个实施例。在表示的实施例中,单个片段被示为存储于多个器件中。示出的是数据装置Data0~DataN和奇偶装置Parity P和Parity Q。在一个实施例中,各片段碎片在装置上包含一个或多个分配单元,使得碎片的尺寸在各装置上相等。片段碎片1123被调出,以示出片段碎片。在图11B中还示出在一个实施例中与页对应的I/O读取尺寸1127。还示出可包含用于I/O碎片的页奇偶的一个或多个页的I/O奇偶大块1129。
在一个实施例中,各片段将具有其自身的可包含以下参数中的一个或多个的几何:
(1)RAID水平-用于与片段中的装置保护相交的RAID水平。它可确定镜像、奇偶或ECC RAID以及片段碎片包含多少奇偶。
(2)装置布局I/O碎片尺寸-它代表用于在写入中跨着各装置条带的尺寸。它一般处于256KB~1MB的范围中,并且可能是各装置上的擦除块尺寸的倍数。出于解释的目的,图11B调出I/O碎片尺寸1125。
(3)I/O读取尺寸-这是逻辑读取尺寸。各I/O碎片可格式化为一系列的逻辑页。各页又可包含标题和页中的数据的校验和。当读取被发出时,它将用于一个或多个逻辑页,并且,可通过校验和确证各页中的数据。
(4)I/O碎片RAID水平-I/O碎片具有碎片内奇偶,以处理在重建中发现的潜在错误。该参数确定对于碎片内保护使用什么类型的奇偶并由此确定保持碎片内奇偶的多少复制。
(5)I/O奇偶大块-在各种实施例中,存储装置可在页的基础上完成ECC。因此,如果看到错误,那么可能指示整个物理页的失败。I/O奇偶大块是片段中的各装置上的物理页尺寸的最小公倍数,并且,通过剥掉I/O奇偶大块或I/O读取尺寸中的较大者中的I/O碎片,计算碎片内奇偶。可包括页奇偶的一个或多个页。在各种实施例中,在失败的校验和确证的情况下,该奇偶可被用于重建数据。
在各种实施例中,当写入各新片段时,选择片段的RAID几何。RAID几何的选择可基于诸如当前的活动节点和装置的组和片段中的数据的类型的因素。例如,如果10个节点或装置是可用的,那么可选择(8+2)RAID6几何,并且,跨着节点剥离以耐受两个装置或节点的片段失败。如果节点失败,那么下一片段可切换到(7+2)RAID6几何。在该片段内,片段碎片中的一些片段将包含数据并且一些包含ECC(例如,奇偶)。
在一个实施例中,存在五种类型的片段。这些片段中的三种与AU状态表、AU错误表和磨损水平表对应。在一些实施例中,出于附加的保护,这三种片段可被镜像化。除了这三种片段,存在也可通过镜像另外保护的元数据片段。最后,存在保持客户机块和记录信息的数据片段。记录信息包含与片段中的客户机块相关的更新信息。如具有奇偶P和奇偶Q碎片的图11B所示,数据片段可能通过RAID6被保护。此外,片段表保持为处于在开始被来自所有片段碎片的标题的信息占据的存储器数据结构中。在一些实施例中,表可在所有节点上被完全高速缓冲,因此,任何节点可将存储访问翻译成物理地址。但是,在其它的实施例中,可以使用对象存储模型,这里,各节点可具有可取得逻辑基准并识别存储数据的片段布局节点的片段表。然后,请求会被转送到节点以识别节点上的确切的存储位置。图11B还示出识别占据片段中的明显的量的空间的任何(体积、快照)组合的片段尾部数据。当快照被去除时,数据净化器可帮助基于该数据识别用于废物收集的片段。
在一个实施例中,在片段中,写入的基本单元是作为装置中的每一个上的一个I/O碎片的segio。segio中的各逻辑页通过包含页的校验和(可被称为“中间”校验和)的页标题被格式化,因此,数据的实际页尺寸比一个页稍大。对于片段的奇偶碎片中的页,页标题较小,使得数据页中的页校验和被奇偶页保护。各I/O碎片的最后的页是重新具有较小的标题并且针对页失败保护擦除块中的所有校验和和页数据的奇偶页。页尺寸在这里被称为可以是一个或多个物理快擦写页的I/O读取尺寸。对于一些片段,可以使用比物理页小的读取尺寸。对于查找表信息的读取可被指数驱动并且数据的较小的部分可被读取同时仍获得希望的数据的元数据,可能出现这一点。在这种情况下,读取物理页的一半意味着用更少的数据完全占用I/O总线(和网络)并确证(例如,校验和)更少的数据。为了支持比物理页小的读取尺寸,实施例可包括擦除块终了处的多个奇偶页,使得所有奇偶页的总尺寸等于快擦写页尺寸。
随着擦除块的磨损水平增加,错误的可能性增加。除了跟踪磨损水平,可关于以识别的错误的较高概率在擦除块上看到错误的频率保持观察数据。对于一些擦除块,可决定保持擦除块终了处的双重或三重错误校正奇偶而不是单个RAID5奇偶。在这种情况下,segio的数据负载可因此减少。仅需要减少segio内的不良擦除块而不是所有的擦除块。擦除块中的页标题可被用于识别哪些页是奇偶以及哪些是数据。
不管什么时候从存储器读取页,都可通过使用页校验和确证内容。如果确证失败,那么可尝试使用擦除块奇偶的数据的重建。如果失败,那么可使用用于片段的交叉装置ECC以重建数据。
在数据片段中,负载区域可被分成两个区域。存在格式化为可包含与存储的客户机块有关的更新的记录数据的页。负载区域的剩余部分可包含格式化为客户机块的页。客户机块数据可以以压缩的形式被存储。大量的压缩算法是可能的,并且被设想。另外,在各种实施例中,可对于产生校验和使用高级加密标准指令。另外,可存在用于驻留于数据的同一页中并包含读取客户机块所需要的信息的客户机块的标题,包括用于压缩数据的算法的识别。废物收集可利用客户机块标题和segio中的记录条目。另外,客户机块可具有可以是用于去复制并用于检查解压缩数据的正确性的未压缩数据的校验和的数据散列。
在一些实施例中,片段和segio可具有用于它们排序的单调增加的ID序号。作为写入segio的一部分,逻辑层可记录对于先前的刷新的依赖性。在开始,物理层可构建片段和segio的排序列表,并且,如果segio依赖于另一未完全segio,那么它可被退回并且不被视为被写入。
磨损水平表
各装置的磨损水平表(WLT)可被存储于各装置本地的片段中。该信息也可被存储于各片段碎片的标题中。在一个实施例中,磨损信息是代表擦除和重新使用分配单元的次数的整数。由于磨损信息可能不准确,因此,当存在一定量的活动时或者当系统空闲合理的周期时,可以执行对于装置的表的刷新。WLT在分配新WLT片段时可也负责清洗旧的WLT片段。为了增加保护的额外层,旧的复制可在释放之前被保持。例如,表管理器可确保随时保持WLT目录的先前的擦除块和当前的擦除块。当它分配新的片段时,在它被写入到新的片段的第二擦除块中之前,它不会释放旧的片段。
AU状态表
AU状态表(AST)跟踪各AU的状态。这些状态包含释放、分配、擦除和不良。AST可被存储于装置上的片段中。将状态变为分配或释放可以是同步的更新,而将状态变为不良或擦除可以是异步的更新。该表一般可足够小,并具有可在NVRAM中记录更新的足够的更新。AST在分配新的AST段时可负责清洗旧的AST段。由于可通过扫描驱动上的各AU的第一块完全恢复AST,因此,不需要保持AST的旧的复制。
AU错误表
AU错误表(AET)可被用于跟踪各AU内的可恢复错误和不可恢复错误的数量。AET被存储于装置上的片段上,并且,各字段可以是二字节整数。通过每AU四个字节,整个表可相对较小。
现在参照图11C,表示示出具有不同的页类型的数据存储配置的一个实施例的一般化框图。在表示的实施例中,虽然其它的类型是可能的并且被设想,但表示三个页类型。表示的页类型包括包含元数据1150的页1110、包含用户数据1160的页1120和包含奇偶信息1170(装置间或装置内)的页1130。页1110~1130中的每一个包含可包含标题和识别信息的元数据1140。另外,页1110~1130中的每一个可包含页内错误恢复数据1142,诸如相应的校验和或其它错误检测和/或校正代码。该校验和值可对于存储于给定装置组中的存储装置176a~176k中的数据提供更多的保护。
并且,页1130可包含页间错误恢复数据1144。数据1144可以是从存储于其它存储装置中的页内数据1142得出的ECC信息。例如,重新参照图10,存储装置间奇偶信息240的存储装置176j内的各页也可存储页间错误恢复数据1144。数据1144可以是从存储于存储装置176a~176i中的一个或多个中的页内错误恢复数据1142产生的奇偶、校验和或其它值。在一个实施例中,数据1144是从存储于其它的存储装置中的一个或多个其它校验和值1142产生的校验和值。为了使存储装置176j中的给定页中的数据1144与存储装置176a~176i中的一个或多个中的相应的页中的数据1142对准,可以向相应的页添加填充1146。
在一个实施例中,最终用户应用在扇区边界上执行I/O操作,其中,扇区是用于HDD的512字节。为了增加额外的保护,可以增加8字节校验和以形成520字节扇区。在各种实施例中,可在基于快擦写存储器的系统中使用压缩和重新映射,以允许在字节边界上而不是扇区边界上配置最终用户数据。另外,校验和(8字节、4字节或其它)可在标题之后或者在用户数据之前被放在页内,它可被压缩。在页1110~1130中的每一个中表示该放置。
当最终用户应用读取512字节扇区时,在一个实施例中尺寸可以为2KB~8KB的相应的页通过页开始处的8字节校验和具有额外的保护。在各种实施例中,页可能对于2扇区尺寸的非通电不能被格式化。如页1110~1120所示,校验和可以偏移几个字节进入页中。该偏移允许诸如页1130的奇偶页存储覆盖奇偶页的校验和和用于保护其它页的校验和的ECC。
对于另一保护水平,当计算校验和值时,可以包括数据位置信息。页1110~1130中的每一个中的数据1142可包含该信息。该信息可包含逻辑地址和物理地址。也可在该信息中包括扇区号码、数据大块和偏移号码、轨道号码和面数量等。
替代性几何
现在转到图12,表示示出混合RAID数据布局1200的一个实施例的一般化框图。虽然可以选择任何数量的分区,但是,表示三个分区。各分区与诸如图1所示的装置组713a~173b的单独的装置组对应。各分区包含多个存储装置。在一个实施例中,诸如CRUSH算法的算法可被利用,以选择在RAID数据布局结构中使用哪些装置以用于数据存储。
在表示的例子中,表示L+1RAID阵列、M+1RAID阵列和N+1RAID阵列。在各种实施例中,L、M和N可以不同、相同或者为两者的组合。例如,在分区1中表示RAID阵列1210。其它的存储装置1212是分区1中的其它RAID阵列的候选。类似地,RAID阵列1220示出分区2中的给定RAID阵列。其它的存储装置1222是分区2中的其它RAID阵列的候选。RAID阵列1230示出分区3中的给定RAID阵列。其它的存储装置1232是分区3中的其它RAID阵列的候选。
在RAID阵列1210、1220和1230中的每一个内,存储装置P1在各RAID阵列内提供RAID单一奇偶保护。存储装置D1~DN在各RAID阵列内存储用户数据。并且,用户数据和RAID单个奇偶信息的存储可在存储D1~DN与P1之间旋转。但是,用户数据的存储被描述为存储于装置D1~DN中。类似地,为了便于解释和描述,RAID单一奇偶信息的存储被描述为存储于装置P1中。
三个分区中的每一个之中的一个或多个存储装置可被选择,以对于一个或多个给定的RAID阵列提供附加的支持的冗余量。例如,分区3中的存储装置Q1可与RAID阵列1210、1220和1230中的每一个组合。存储装置Q1可对于RAID阵列1210、1220和1230中的每一个提供RAID双重奇偶信息。当条带被写入RAID阵列1210、1220或1230中的一个时,产生并存储该附加的奇偶信息。并且,该附加奇偶信息可覆盖阵列1210、1220和1230中的每一个中的条带。因此,存储RAID奇偶信息的存储装置的数量与存储装置的总数的比较低。例如,如果分区的每一个使用N+2个RAID阵列,那么存储RAID奇偶信息的存储装置的数量与存储装置的总数的比为3(2)/3(N+2))或2/(N+2)。相反,混合RAID布局1200的比为(3+1)/3(N+1))或4/(3(N+1))。
能够通过增加用于存储用户数据的存储装置的数量减小以上的比率。例如,不是利用存储装置Q1,而是分区中的每一个可利用3N+2RAID阵列。在这种情况下,存储RAID奇偶信息的存储装置的数量与存储装置的总数的比为2/(3N+2)。但是,在重构读取操作中,(3N+1)存储装置对于单一装置失败接收重构读取请求。相反,对于混合RAID布局1200,只有N个存储装置对于单一装置失败接收重构读取请求。
注意,三个分区中的每一个可利用不同的RAID数据布局结构。给定RAID数据布局结构的选择可基于存储RAID奇偶信息的存储装置的数量与存储装置的总数的给定比值。另外,选择可基于可在重构中接收重构读取请求的存储装置的给定数量。例如,RAID阵列1210、1220和1230可分别包含诸如L+a、M+b和N+c的几何。
另外,可基于以上的条件选择诸如存储装置Q1的一个或多个存储装置,以对于分区内的RAID阵列中的一个或多个提供附加的支持冗余量。在三个分区包含以上的RAID阵列并且数量Q的存储装置对于RAID阵列中的每一个提供额外的保护的例子中,存储RAID奇偶信息的存储装置的数量与存储装置的总数的比是(a+b+c+Q)/(L+a+M+b+N+c+Q)。对于单一装置失败,对于以上的例子中的分区1~3,用于接收重构读取请求的存储装置的数量是分别是L、M和N。注意,以上的讨论一般描述图12中的3个相异的分区。在这种实施例中,这种将给定的布局限于特定的装置组的“硬”分区的类型可保证一个分区中的重构读取不与另一分区中冲突。但是,在其它的实施例中,分区可没有上面描述的那样硬。而是,给定装置的池,可从装置的任一个选择布局。例如,将装置视为一个大的池,能够配置诸如(L+1、M+1、N+1)+1的布局。因此,存在几何重叠并且重构读取会冲突的机会。如果L、M和N相对于池的尺寸较小,那么重构读取相对于正常读取的百分比可保持较低。
现在参照图13,表示用于在数据存储子系统中选择替代性RAID几何的方法1300的一个实施例中。在上述的网络结构100和数据存储阵列120a~120b中体现的部件可一般根据方法1300操作。本实施例中的步骤以依次的方式被表示。但是,一些步骤可以以与所示的次序不同的次序出现,一些步骤可同时被执行,一些步骤可与其它的步骤组合,并且,在另一实施例中可缺少一些步骤。
在块1302中,RAID引擎178或存储控制器174中的其它逻辑确定使用给定数量的装置以在存储子系统的各分区内的RAID阵列中储存用户数据。然后可使用RUSH或其它算法以选择使用哪些装置。在一个实施例中,各分区利用相同数量的存储装置。在其它的实施例中,各分区可利用不同的唯一数量的存储装置以存储用户数据。在块1304中,存储控制器174可确定支持用于存储子系统的各分区内的相应的装置间错误恢复(奇偶)数据的存储装置的数量。并且,各分区可利用相同数量或不同唯一数量的用于存储RAID奇偶信息的存储装置。
在块1306中,存储控制器可确定支持数量Q的存储装置跨着子系统的分区存储额外装置间错误恢复(奇偶)数据。在块1308中,可在选择的存储装置中写入用户数据和相应的RAID奇偶数据。重新参照图12,当写入诸如分区1中的RAID阵列1210的给定的RAID阵列时,可产生并在分区3中的存储装置Q1中存储奇偶信息的一个或多个位。
如果存储控制器174检测用于在给定的分区中执行读取重构的条件(条件块1310),并且如果给定的分区具有足够数量的保持RAID奇偶信息的存储装置以处理大量的不可用的存储装置(条件块1312),那么在块1314中,通过给定的分区内的一个或多个相应的存储装置执行重构读取操作。条件可包括:由于装置失败或者装置在低于给定的性能水平下操作,给定的RAID阵列内的存储装置不可用。给定的RAID阵列能够用给定分区内的存储RAID奇偶信息的存储装置的数量处理最大数量的不可用存储装置。例如,如果以上的例子中的分区1中的RAID阵列1210是L+a RAID阵列,那么,当k个存储装置不可用时,RAID阵列1210能够仅通过使用分区1内的存储装置执行读取重构,这里,1<=k<=a。
如果给定的分区不具有足够的保持RAID阵列信息的数量的存储以处理大量的不可用的存储装置(条件块1312),并且,如果存在足够的数量的Q存储装置以处理大量的不可用的存储装置(条件块1316),那么在块1318中,通过一个或多个相应的Q存储装置执行重构读取操作。可在读取重构中访问存储用户数据的其它分区中的一个或多个存储装置。这些存储装置的选择可基于存储于一个或多个Q存储装置中的奇偶信息的导出的方式。例如,重新参照图12,可在读取重构中访问分区2中的存储装置D2,原因是可以使用该存储装置以产生存储于存储装置Q1中的相应的RAID奇偶信息。如果不存在足够的数量的Q存储装置以处理大量的不可用的存储装置(条件块1316),那么在块1320中,相应的用户数据可从另一来源被读取或者被视为丢失。
注意,上述的实施例可包含软件。在这种实施例中,实现方法和/或机构的程序指令可被传输或者被存储于计算机可读介质上。被配置为存储程序指令的大量的类型的介质是可用的,并且包含硬盘、软盘、CD-ROM、DVD、快擦写存储器、可编程ROM(PROM)、随机存取存储器(RAM)和各种其它形式的易失性或非易失性存储器。
在各种实施例中,这里描述的方法和机构的一个或多个部分可形成云计算环境的一部分。在这种实施例中,可根据一个或多个各种模型作为服务在因特网上提供资源。这种模型可包含基础构架即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。在IaaS中,计算机基础构架作为服务被传输。在这种情况下,计算设备一般被服务提供商拥有和操作。在PaaS模型中,开发人员使用以用于开发软件方案的软件工具和下层的设备可作为服务被提供,并被服务提供商托管。SaaS一般包含服务提供商许可服务作为按需服务。服务提供商可托管软件,或者可对于给定的时间周期将软件部署到顾客。以上的模型的大量的组合是可能的,并且被设想。
虽然以大量的细节描述了以上的实施例,但是,对于本领域技术人员来说,一旦完全理解以上的公开,大量的变更和修改将变得十分明显。以下的权利要求应被解释为包含所有这些变更和修改。
Claims (14)
1.一种计算机系统,包括:
被配置为在网络上发送读取和写入请求的客户机计算机;
被配置为接收读取和写入请求的与网络耦合的数据存储子系统,该数据存储子系统包含多个存储装置;
其中,数据存储子系统还包含被配置为完成以下的过程的存储控制器:
识别存储于数据存储子系统中的数据的单元,其中,所述数据的单元至少跨着多个存储装置中的第一存储装置和第二存储装置被存储,第一存储装置和第二存储装置中的每一个存储与数据的单元对应的装置内冗余数据;和
响应检测第一存储装置的可靠性的变化的指示仅在第一存储装置上改变与数据的单元对应的装置内冗余数据的量,其中当可靠性增加时减少所述装置内冗余数据的量,并且当可靠性减小时增加所述装置内冗余数据的量。
2.如权利要求1所述的计算机系统,其中,所述数据的单元是RAID条带。
3.如权利要求1所述的计算机系统,其中,第一存储装置和第二存储装置中的每一个还包含存储的数据的单元的用户数据的校验和,并且其中,响应读取到数据的单元的至少一部分,存储控制器被配置为:
利用所述校验和以确证相应的读取数据;和
利用装置内冗余数据以响应检测到校验和指示读取数据无效,重新构建相应的读取数据。
4.如权利要求1所述的计算机系统,其中,存储控制器进一步被配置为存储指示多个存储装置的特性的数据,并且其中,所述可靠性的变化至少部分地基于所述特性。
5.如权利要求1所述的计算机系统,其中,存储控制器被配置为响应检测第一存储装置的特性,改变存储于第一存储装置上的所述装置内冗余数据的量,所述特性是错误率、存取速率、年龄、占有水平、期望数据寿命和存储数据的年龄中的一个或多个。
6.如权利要求1所述的计算机系统,其中,在多个存储装置中的两个连续条带的两个连续的写入之间,存储控制器被配置为对于多个存储装置中的至少两个不同的存储装置确定用户数据和相应的装置内冗余数据的各存储空间量的新的相异值。
7.如权利要求2所述的计算机系统,其中,多个存储装置中的每一个包含固态存储器。
8.一种用于计算系统中的方法,该方法包括:
在数据存储子系统上接收读取和写入请求,数据存储子系统包含多个存储装置;
识别存储于数据存储子系统中的数据的单元,其中,所述数据的单元至少跨着多个存储装置中的第一存储装置和第二存储装置被存储,第一存储装置和第二存储装置中的每一个存储与数据的单元对应的装置内冗余数据;和
响应检测第一存储装置的可靠性的变化的指示仅在第一存储装置上改变与数据的单元对应的装置内冗余数据的量,当可靠性增加时减少所述装置内冗余数据的量,并且当可靠性减小时增加所述装置内冗余数据的量。
9.如权利要求8所述的方法,其中,所述数据的单元是RAID条带。
10.如权利要求8所述的方法,其中,第一存储装置和第二存储装置中的每一个还包含存储的数据的单元的用户数据的校验和,并且其中,响应读取到数据的单元的至少一部分,该方法还包括:
利用校验和以确证相应的读取数据;和
利用装置内冗余数据以响应检测到校验和指示读取数据无效,重新构建相应的读取数据。
11.如权利要求8所述的方法,还包括存储指示多个存储装置的特性的数据,并且其中,所述可靠性的变化至少部分地基于所述特性。
12.如权利要求8所述的方法,还包括响应检测第一存储装置的特性,改变存储于第一存储装置上的所述装置内冗余数据的量,所述特性是错误率、存取速率、年龄、占有水平、期望数据寿命和存储数据的年龄中的一个或多个。
13.如权利要求8所述的方法,其中,在多个存储装置中的两个连续条带的两个连续的写入之间,方法包括对于多个存储装置中的至少两个不同的存储装置确定用户数据和相应的装置内冗余数据的各存储空间量的新的相异值。
14.如权利要求9所述的方法,其中,多个存储装置中的每一个包含固态存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/892,535 US8463991B2 (en) | 2010-09-28 | 2010-09-28 | Intra-device data protection in a raid array |
US12/892,535 | 2010-09-28 | ||
PCT/US2011/052268 WO2012047500A1 (en) | 2010-09-28 | 2011-09-20 | Intra-device data protection in a raid array |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103339609A CN103339609A (zh) | 2013-10-02 |
CN103339609B true CN103339609B (zh) | 2015-09-23 |
Family
ID=44736062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180053510.XA Active CN103339609B (zh) | 2010-09-28 | 2011-09-20 | Raid阵列中的装置内数据保护 |
Country Status (6)
Country | Link |
---|---|
US (3) | US8463991B2 (zh) |
EP (2) | EP2622480B1 (zh) |
JP (1) | JP5848353B2 (zh) |
KR (1) | KR101821001B1 (zh) |
CN (1) | CN103339609B (zh) |
WO (1) | WO2012047500A1 (zh) |
Families Citing this family (160)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8281227B2 (en) * | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
US8671265B2 (en) | 2010-03-05 | 2014-03-11 | Solidfire, Inc. | Distributed data storage system providing de-duplication of data using block identifiers |
US8463991B2 (en) * | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US8689040B2 (en) * | 2010-10-01 | 2014-04-01 | Lsi Corporation | Method and system for data reconstruction after drive failures |
US8560772B1 (en) * | 2010-12-29 | 2013-10-15 | Datadirect Networks, Inc. | System and method for data migration between high-performance computing architectures and data storage devices |
WO2013048451A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Corporation | Presentation of direct accessed storage under a logical drive model |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US9021333B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for recovering data from failed portions of a flash drive |
US8788910B1 (en) | 2012-05-22 | 2014-07-22 | Pmc-Sierra, Inc. | Systems and methods for low latency, high reliability error correction in a flash drive |
US9645917B2 (en) * | 2012-05-22 | 2017-05-09 | Netapp, Inc. | Specializing I/O access patterns for flash storage |
US9021337B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive |
US9047214B1 (en) | 2012-05-22 | 2015-06-02 | Pmc-Sierra, Inc. | System and method for tolerating a failed page in a flash device |
US9021336B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages |
US8972824B1 (en) | 2012-05-22 | 2015-03-03 | Pmc-Sierra, Inc. | Systems and methods for transparently varying error correction code strength in a flash drive |
US9176812B1 (en) | 2012-05-22 | 2015-11-03 | Pmc-Sierra, Inc. | Systems and methods for storing data in page stripes of a flash drive |
US9183085B1 (en) | 2012-05-22 | 2015-11-10 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency |
US8793556B1 (en) | 2012-05-22 | 2014-07-29 | Pmc-Sierra, Inc. | Systems and methods for reclaiming flash blocks of a flash drive |
US8996957B1 (en) | 2012-05-22 | 2015-03-31 | Pmc-Sierra, Inc. | Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes |
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 |
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 |
CN102915212B (zh) * | 2012-09-19 | 2015-06-10 | 记忆科技(深圳)有限公司 | 一种固态硬盘的raid实现方法、固态硬盘及电子设备 |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9021339B2 (en) * | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US9135096B2 (en) * | 2012-12-06 | 2015-09-15 | Compellent Technologies | RAID surveyor |
US9214963B1 (en) | 2012-12-21 | 2015-12-15 | Western Digital Technologies, Inc. | Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system |
CN104040512B (zh) * | 2012-12-28 | 2017-09-19 | 华为技术有限公司 | 存储空间的处理方法及装置 |
US9372726B2 (en) | 2013-01-09 | 2016-06-21 | The Research Foundation For The State University Of New York | Gang migration of virtual machines using cluster-wide deduplication |
US9053012B1 (en) | 2013-03-15 | 2015-06-09 | Pmc-Sierra, Inc. | Systems and methods for storing data for solid-state memory |
US9026867B1 (en) | 2013-03-15 | 2015-05-05 | Pmc-Sierra, Inc. | Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory |
US9081701B1 (en) | 2013-03-15 | 2015-07-14 | Pmc-Sierra, Inc. | Systems and methods for decoding data for solid-state memory |
US9009565B1 (en) | 2013-03-15 | 2015-04-14 | Pmc-Sierra, Inc. | Systems and methods for mapping for solid-state memory |
US9208018B1 (en) | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
US9183086B2 (en) * | 2013-06-03 | 2015-11-10 | Sandisk Technologies Inc. | Selection of data for redundancy calculation in three dimensional nonvolatile memory |
WO2015017963A1 (en) | 2013-08-05 | 2015-02-12 | Intel Corporation | Storage systems with adaptive erasure code generation |
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 |
US9177673B2 (en) | 2013-10-28 | 2015-11-03 | Sandisk Technologies Inc. | Selection of data for redundancy calculation by likely error rate |
US9262268B2 (en) * | 2013-12-20 | 2016-02-16 | Seagate Technology Llc | Method to distribute user data and error correction data over different page types by leveraging error rate variations |
US9170746B2 (en) | 2014-01-07 | 2015-10-27 | Netapp, Inc. | Clustered raid assimilation management |
US20150199236A1 (en) * | 2014-01-13 | 2015-07-16 | Infinidat Ltd. | Multi-level disk failure protection |
US9454434B2 (en) | 2014-01-17 | 2016-09-27 | Netapp, Inc. | File system driven raid rebuild technique |
US9483349B2 (en) | 2014-01-17 | 2016-11-01 | Netapp, Inc. | Clustered raid data organization |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
IN2014CH01331A (zh) * | 2014-03-13 | 2015-09-18 | Infosys Ltd | |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US8850108B1 (en) * | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US9811546B1 (en) * | 2014-06-30 | 2017-11-07 | EMC IP Holding Company LLC | Storing data and metadata in respective virtual shards on sharded storage systems |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
WO2016051512A1 (ja) | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US10365836B1 (en) * | 2015-01-27 | 2019-07-30 | Western Digital Technologies, Inc. | Electronic system with declustered data protection by parity based on reliability and method of operation thereof |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US9762460B2 (en) | 2015-03-24 | 2017-09-12 | Netapp, Inc. | Providing continuous context for operational information of a storage system |
US9710317B2 (en) | 2015-03-30 | 2017-07-18 | Netapp, Inc. | Methods to identify, handle and recover from suspect SSDS in a clustered flash array |
US10466913B2 (en) * | 2015-04-29 | 2019-11-05 | EMC IP Holding Company LLC | Method and system for replicating and using grid level metadata in a storage system |
US9998150B1 (en) * | 2015-06-16 | 2018-06-12 | Amazon Technologies, Inc. | Layered data redundancy coding techniques for layer-local data recovery |
US10270476B1 (en) * | 2015-06-16 | 2019-04-23 | Amazon Technologies, Inc. | Failure mode-sensitive layered redundancy coding techniques |
US10977128B1 (en) | 2015-06-16 | 2021-04-13 | Amazon Technologies, Inc. | Adaptive data loss mitigation for redundancy coding systems |
US10270475B1 (en) * | 2015-06-16 | 2019-04-23 | Amazon Technologies, Inc. | Layered redundancy coding for encoded parity data |
US10298259B1 (en) * | 2015-06-16 | 2019-05-21 | Amazon Technologies, Inc. | Multi-layered data redundancy coding techniques |
US9838041B1 (en) * | 2015-06-17 | 2017-12-05 | Amazon Technologies, Inc. | Device type differentiation for redundancy coded data storage systems |
US9853662B1 (en) | 2015-06-17 | 2017-12-26 | Amazon Technologies, Inc. | Random access optimization for redundancy coded data storage systems |
US9838042B1 (en) | 2015-06-17 | 2017-12-05 | Amazon Technologies, Inc. | Data retrieval optimization for redundancy coded data storage systems with static redundancy ratios |
US10311020B1 (en) | 2015-06-17 | 2019-06-04 | Amazon Technologies, Inc. | Locality-sensitive data retrieval for redundancy coded data storage systems |
US9825652B1 (en) | 2015-06-17 | 2017-11-21 | Amazon Technologies, Inc. | Inter-facility network traffic optimization for redundancy coded data storage systems |
US9866242B1 (en) | 2015-06-17 | 2018-01-09 | Amazon Technologies, Inc. | Throughput optimization for redundancy coded data storage systems |
US10009044B1 (en) * | 2015-06-17 | 2018-06-26 | Amazon Technologies, Inc. | Device type differentiation for redundancy coded data storage systems |
US10089176B1 (en) | 2015-07-01 | 2018-10-02 | Amazon Technologies, Inc. | Incremental updates of grid encoded data storage systems |
US10162704B1 (en) | 2015-07-01 | 2018-12-25 | Amazon Technologies, Inc. | Grid encoded data storage systems for efficient data repair |
US9959167B1 (en) | 2015-07-01 | 2018-05-01 | Amazon Technologies, Inc. | Rebundling grid encoded data storage systems |
US10198311B1 (en) | 2015-07-01 | 2019-02-05 | Amazon Technologies, Inc. | Cross-datacenter validation of grid encoded data storage systems |
US9998539B1 (en) | 2015-07-01 | 2018-06-12 | Amazon Technologies, Inc. | Non-parity in grid encoded data storage systems |
US10394762B1 (en) | 2015-07-01 | 2019-08-27 | Amazon Technologies, Inc. | Determining data redundancy in grid encoded data storage systems |
US9904589B1 (en) | 2015-07-01 | 2018-02-27 | Amazon Technologies, Inc. | Incremental media size extension for grid encoded data storage systems |
US10108819B1 (en) | 2015-07-01 | 2018-10-23 | Amazon Technologies, Inc. | Cross-datacenter extension of grid encoded data storage systems |
US9760432B2 (en) * | 2015-07-28 | 2017-09-12 | Futurewei Technologies, Inc. | Intelligent code apparatus, method, and computer program for memory |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
US10089180B2 (en) * | 2015-07-31 | 2018-10-02 | International Business Machines Corporation | Unfavorable storage growth rate abatement |
US9928141B1 (en) | 2015-09-21 | 2018-03-27 | Amazon Technologies, Inc. | Exploiting variable media size in grid encoded data storage systems |
US9691473B2 (en) | 2015-09-22 | 2017-06-27 | Sandisk Technologies Llc | Adaptive operation of 3D memory |
US9401216B1 (en) | 2015-09-22 | 2016-07-26 | Sandisk Technologies Llc | Adaptive operation of 3D NAND memory |
US11386060B1 (en) | 2015-09-23 | 2022-07-12 | Amazon Technologies, Inc. | Techniques for verifiably processing data in distributed computing systems |
US9785525B2 (en) | 2015-09-24 | 2017-10-10 | Netapp, Inc. | High availability failover manager |
US9940474B1 (en) | 2015-09-29 | 2018-04-10 | Amazon Technologies, Inc. | Techniques and systems for data segregation in data storage systems |
US9836366B2 (en) | 2015-10-27 | 2017-12-05 | Netapp, Inc. | Third vote consensus in a cluster using shared storage devices |
US10437480B2 (en) | 2015-12-01 | 2019-10-08 | Futurewei Technologies, Inc. | Intelligent coded memory architecture with enhanced access scheduler |
US10235059B2 (en) | 2015-12-01 | 2019-03-19 | Netapp, Inc. | Technique for maintaining consistent I/O processing throughput in a storage system |
US10394789B1 (en) | 2015-12-07 | 2019-08-27 | Amazon Technologies, Inc. | Techniques and systems for scalable request handling in data processing systems |
US10642813B1 (en) | 2015-12-14 | 2020-05-05 | Amazon Technologies, Inc. | Techniques and systems for storage and processing of operational data |
US9785495B1 (en) | 2015-12-14 | 2017-10-10 | Amazon Technologies, Inc. | Techniques and systems for detecting anomalous operational data |
US10162835B2 (en) | 2015-12-15 | 2018-12-25 | Pure Storage, Inc. | Proactive management of a plurality of storage arrays in a multi-array system |
US10229009B2 (en) | 2015-12-16 | 2019-03-12 | Netapp, Inc. | Optimized file system layout for distributed consensus protocol |
US10248793B1 (en) | 2015-12-16 | 2019-04-02 | Amazon Technologies, Inc. | Techniques and systems for durable encryption and deletion in data storage systems |
US10180912B1 (en) | 2015-12-17 | 2019-01-15 | Amazon Technologies, Inc. | Techniques and systems for data segregation in redundancy coded data storage systems |
US10324790B1 (en) | 2015-12-17 | 2019-06-18 | Amazon Technologies, Inc. | Flexible data storage device mapping for data storage systems |
US10235402B1 (en) | 2015-12-17 | 2019-03-19 | Amazon Technologies, Inc. | Techniques for combining grid-encoded data storage systems |
US10102065B1 (en) | 2015-12-17 | 2018-10-16 | Amazon Technologies, Inc. | Localized failure mode decorrelation in redundancy encoded data storage systems |
US10127105B1 (en) | 2015-12-17 | 2018-11-13 | Amazon Technologies, Inc. | Techniques for extending grids in data storage systems |
US9569306B1 (en) * | 2015-12-18 | 2017-02-14 | International Business Machines Corporation | Recovery of multi-page failures in non-volatile memory system |
CN106933490A (zh) | 2015-12-29 | 2017-07-07 | 伊姆西公司 | 控制对磁盘阵列进行读写操作的方法和装置 |
WO2017131752A1 (en) | 2016-01-29 | 2017-08-03 | Hewlett Packard Enterprise Development Lp | Remote direct memory access |
EP3286631A4 (en) | 2016-01-29 | 2018-05-30 | Hewlett-Packard Enterprise Development LP | Remote direct memory access |
CN107430585B (zh) | 2016-01-29 | 2021-04-02 | 慧与发展有限责任合伙企业 | 用于远程直接存储器访问的系统和方法 |
US10001922B2 (en) * | 2016-02-19 | 2018-06-19 | International Business Machines Corporation | High performance optical storage system for protection against concurrent data loss |
US10592336B1 (en) | 2016-03-24 | 2020-03-17 | Amazon Technologies, Inc. | Layered indexing for asynchronous retrieval of redundancy coded data |
US10366062B1 (en) | 2016-03-28 | 2019-07-30 | Amazon Technologies, Inc. | Cycled clustering for redundancy coded data storage systems |
US10061668B1 (en) | 2016-03-28 | 2018-08-28 | Amazon Technologies, Inc. | Local storage clustering for redundancy coded data storage system |
US10678664B1 (en) | 2016-03-28 | 2020-06-09 | Amazon Technologies, Inc. | Hybridized storage operation for redundancy coded data storage systems |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US9952767B2 (en) | 2016-04-29 | 2018-04-24 | Netapp, Inc. | Consistency group management |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | 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 |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
US11137980B1 (en) | 2016-09-27 | 2021-10-05 | Amazon Technologies, Inc. | Monotonic time-based data storage |
US10437790B1 (en) | 2016-09-28 | 2019-10-08 | Amazon Technologies, Inc. | Contextual optimization for data storage systems |
US11281624B1 (en) | 2016-09-28 | 2022-03-22 | Amazon Technologies, Inc. | Client-based batching of data payload |
US10810157B1 (en) | 2016-09-28 | 2020-10-20 | Amazon Technologies, Inc. | Command aggregation for data storage operations |
US11204895B1 (en) | 2016-09-28 | 2021-12-21 | Amazon Technologies, Inc. | Data payload clustering for data storage systems |
US10496327B1 (en) | 2016-09-28 | 2019-12-03 | Amazon Technologies, Inc. | Command parallelization for data storage systems |
US10657097B1 (en) | 2016-09-28 | 2020-05-19 | Amazon Technologies, Inc. | Data payload aggregation for data storage systems |
US10614239B2 (en) | 2016-09-30 | 2020-04-07 | Amazon Technologies, Inc. | Immutable cryptographically secured ledger-backed databases |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US9996285B2 (en) * | 2016-11-08 | 2018-06-12 | SK Hynix Inc. | Cyclically interleaved XOR array for error recovery |
US10296764B1 (en) | 2016-11-18 | 2019-05-21 | Amazon Technologies, Inc. | Verifiable cryptographically secured ledgers for human resource systems |
US11269888B1 (en) | 2016-11-28 | 2022-03-08 | Amazon Technologies, Inc. | Archival data storage for structured data |
US10152379B1 (en) * | 2016-12-27 | 2018-12-11 | EMC IP Holding Company LLP | Efficient garbage collection for distributed storage with forward error correction |
KR20180078426A (ko) | 2016-12-29 | 2018-07-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치의 에러 정정 코드 처리 방법 |
US11356445B2 (en) | 2017-03-28 | 2022-06-07 | Amazon Technologies, Inc. | Data access interface for clustered devices |
US10530752B2 (en) | 2017-03-28 | 2020-01-07 | Amazon Technologies, Inc. | Efficient device provision |
US10621055B2 (en) | 2017-03-28 | 2020-04-14 | Amazon Technologies, Inc. | Adaptive data recovery for clustered data devices |
US10705911B2 (en) | 2017-04-24 | 2020-07-07 | Hewlett Packard Enterprise Development Lp | Storing data in a distributed storage system |
CN107391353B (zh) * | 2017-07-07 | 2020-07-28 | 西安电子科技大学 | 基于日志的复杂软件系统异常行为检测方法 |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US10740202B2 (en) * | 2018-02-07 | 2020-08-11 | Excelero Storage Ltd. | System and method for efficient comparison of mirrored storage devices |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11494107B2 (en) | 2019-04-11 | 2022-11-08 | Apple Inc. | Managing parity information for data stored on a storage device |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11789611B2 (en) | 2020-04-24 | 2023-10-17 | Netapp, Inc. | Methods for handling input-output operations in zoned storage systems and devices thereof |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11340987B1 (en) | 2021-03-04 | 2022-05-24 | Netapp, Inc. | Methods and systems for raid protection in zoned solid-state drives |
CN113703684B (zh) * | 2021-08-31 | 2024-06-11 | 长江存储科技有限责任公司 | 基于raid的数据存储方法、数据读取方法及存储器系统 |
US11797377B2 (en) | 2021-10-05 | 2023-10-24 | Netapp, Inc. | Efficient parity determination in zoned solid-state drives of a storage system |
US11803329B2 (en) | 2021-11-22 | 2023-10-31 | Netapp, Inc. | Methods and systems for processing write requests in a storage system |
US11816359B2 (en) | 2021-12-16 | 2023-11-14 | Netapp, Inc. | Scalable solid-state storage system and methods thereof |
US11940911B2 (en) | 2021-12-17 | 2024-03-26 | Netapp, Inc. | Persistent key-value store and journaling system |
US11966277B2 (en) * | 2022-01-25 | 2024-04-23 | Dell Products L.P. | Storage error identification/reduction system |
CN117234791B (zh) * | 2023-11-09 | 2024-01-26 | 联和存储科技(江苏)有限公司 | 存储芯片的数据丢失检测方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178942A (zh) * | 2007-12-05 | 2008-05-14 | 苏州壹世通科技有限公司 | 一种数据块的磨损处理方法和装置 |
CN101504625A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 实现独立磁盘冗余阵列的方法、固态硬盘和电子设备 |
CN101825994A (zh) * | 2010-04-16 | 2010-09-08 | 苏州壹世通科技有限公司 | 基于固件的非操作系统依赖的闪存阵列管理装置和方法 |
CN102023809A (zh) * | 2009-09-21 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 存储系统、从存储系统读取数据的方法及写入数据的方法 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822782A (en) | 1995-10-27 | 1998-10-13 | Symbios, Inc. | Methods and structure to maintain raid configuration information on disks of the array |
WO1998012621A1 (fr) * | 1996-09-20 | 1998-03-26 | Hitachi, Ltd. | Sous-systeme a piles de disques |
JPH10240453A (ja) * | 1997-02-28 | 1998-09-11 | Nec Corp | ディスクアレイ装置 |
US6275898B1 (en) | 1999-05-13 | 2001-08-14 | Lsi Logic Corporation | Methods and structure for RAID level migration within a logical unit |
US6681290B2 (en) | 2001-01-29 | 2004-01-20 | International Business Machines Corporation | Physical data layout to reduce seeks in a raid system |
US6854071B2 (en) | 2001-05-14 | 2005-02-08 | International Business Machines Corporation | Method and apparatus for providing write recovery of faulty data in a non-redundant raid system |
US7111117B2 (en) | 2001-12-19 | 2006-09-19 | Broadcom Corporation | Expansion of RAID subsystems using spare space with immediate access to new space |
US7200715B2 (en) | 2002-03-21 | 2007-04-03 | Network Appliance, Inc. | Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes |
US6938123B2 (en) | 2002-07-19 | 2005-08-30 | Storage Technology Corporation | System and method for raid striping |
GB0320494D0 (en) | 2003-09-02 | 2003-10-01 | Ibm | Methods apparatus and controllers for a raid storage system |
US7206991B2 (en) | 2003-10-15 | 2007-04-17 | Lsi Logic Corporation | Method, apparatus and program for migrating between striped storage and parity striped storage |
US8645622B2 (en) | 2003-11-18 | 2014-02-04 | International Business Machines Corporation | Method to protect data on a disk drive from uncorrectable media errors |
US7681072B1 (en) | 2004-08-13 | 2010-03-16 | Panasas, Inc. | Systems and methods for facilitating file reconstruction and restoration in data storage systems where a RAID-X format is implemented at a file level within a plurality of storage devices |
JP4324088B2 (ja) | 2004-12-17 | 2009-09-02 | 富士通株式会社 | データ複製制御装置 |
US7484137B2 (en) | 2005-03-31 | 2009-01-27 | Hitachi Global Storage Technologies Netherlands B.V. | RAID system using regional error statistics for redundancy grouping |
JP4718340B2 (ja) * | 2006-02-02 | 2011-07-06 | 富士通株式会社 | ストレージシステム、制御方法及びプログラム |
JP2008090372A (ja) * | 2006-09-29 | 2008-04-17 | Hitachi Ltd | ストレージ装置及び負荷分散方法 |
WO2008070803A1 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for managing data from a requesting device with an empty data token directive |
US7958303B2 (en) | 2007-04-27 | 2011-06-07 | Gary Stephen Shuster | Flexible data storage system |
US7788541B2 (en) * | 2008-04-15 | 2010-08-31 | Dot Hill Systems Corporation | Apparatus and method for identifying disk drives with unreported data corruption |
JP5268710B2 (ja) * | 2009-02-27 | 2013-08-21 | 株式会社東芝 | 半導体記憶装置 |
US8037391B1 (en) | 2009-05-22 | 2011-10-11 | Nvidia Corporation | Raid-6 computation system and method |
US8463991B2 (en) | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
-
2010
- 2010-09-28 US US12/892,535 patent/US8463991B2/en active Active
-
2011
- 2011-09-20 EP EP11764403.9A patent/EP2622480B1/en active Active
- 2011-09-20 EP EP18165225.6A patent/EP3373145A1/en active Pending
- 2011-09-20 KR KR1020137010870A patent/KR101821001B1/ko active IP Right Grant
- 2011-09-20 CN CN201180053510.XA patent/CN103339609B/zh active Active
- 2011-09-20 WO PCT/US2011/052268 patent/WO2012047500A1/en active Application Filing
- 2011-09-20 JP JP2013531647A patent/JP5848353B2/ja active Active
-
2013
- 2013-06-10 US US13/914,248 patent/US8832373B2/en active Active
-
2014
- 2014-08-04 US US14/450,666 patent/US9058116B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178942A (zh) * | 2007-12-05 | 2008-05-14 | 苏州壹世通科技有限公司 | 一种数据块的磨损处理方法和装置 |
CN101504625A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 实现独立磁盘冗余阵列的方法、固态硬盘和电子设备 |
CN102023809A (zh) * | 2009-09-21 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 存储系统、从存储系统读取数据的方法及写入数据的方法 |
CN101825994A (zh) * | 2010-04-16 | 2010-09-08 | 苏州壹世通科技有限公司 | 基于固件的非操作系统依赖的闪存阵列管理装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20140365717A1 (en) | 2014-12-11 |
WO2012047500A1 (en) | 2012-04-12 |
EP3373145A1 (en) | 2018-09-12 |
EP2622480B1 (en) | 2018-08-01 |
US8832373B2 (en) | 2014-09-09 |
US20120079189A1 (en) | 2012-03-29 |
US9058116B2 (en) | 2015-06-16 |
JP2013539133A (ja) | 2013-10-17 |
KR101821001B1 (ko) | 2018-01-22 |
KR20130105666A (ko) | 2013-09-25 |
US8463991B2 (en) | 2013-06-11 |
CN103339609A (zh) | 2013-10-02 |
JP5848353B2 (ja) | 2016-01-27 |
US20130346690A1 (en) | 2013-12-26 |
EP2622480A1 (en) | 2013-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103339609B (zh) | Raid阵列中的装置内数据保护 | |
CN103348326B (zh) | Ssd环境中的适配raid | |
CN103314361B (zh) | 具有动态几何的raid阵列中的重构读取 | |
US11579974B1 (en) | Data protection using intra-device parity and intra-device parity | |
US20210173741A1 (en) | Distributed multi-level protection in a hyper-converged infrastructure | |
US20120084504A1 (en) | Dynamic raid geometries in an ssd environment | |
US20120084507A1 (en) | Multi-level protection with intra-device protection in a raid array based storage system |
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 |