CN111124262B - 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 - Google Patents
独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 Download PDFInfo
- Publication number
- CN111124262B CN111124262B CN201811288792.1A CN201811288792A CN111124262B CN 111124262 B CN111124262 B CN 111124262B CN 201811288792 A CN201811288792 A CN 201811288792A CN 111124262 B CN111124262 B CN 111124262B
- Authority
- CN
- China
- Prior art keywords
- mapping information
- stripe
- information unit
- storage
- storage space
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- 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/061—Improving I/O performance
-
- 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/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
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2053—Error 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/2094—Redundant storage or storage space
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
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)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例涉及一种用于管理独立盘冗余阵列(RAID)的方法。该方法包括:响应于所述RAID中的条带被创建,为所述条带分配用于存储预定数目的映射信息单元的存储空间;创建所述条带的一个或多个映射信息单元;将所述一个或多个映射信息单元存储在所述存储空间中;向存储到所述存储空间中的所述一个或多个映射信息单元分配相应存储序列号;以及响应于接收到针对所述条带的I/O请求并且所指示的相应存储序列号之一,基于所述存储空间中与所述I/O请求所指示的所述存储序列号相对应的映射信息单元来访问所述条带。根据本公开的管理独立盘冗余阵列(RAID)的方法,可以克服在极端情况下多个盘同时“闪断”的问题,并且有效地提高存储系统的I/O读写性能。
Description
技术领域
本公开的实施例涉及计算机领域,并且更具体地涉及用于独立冗余盘阵列(RAID)的管理方法、设备和计算机可读介质。
背景技术
RAID是将多个物理驱动组件(例如盘)合并成单个逻辑单元的数据存储虚拟化技术,用于数据冗余、性能改进或这两者的目的。取决于所需的冗余和性能的水平,数据以被称为RAID级别的若干方式之一跨物理驱动组件而分布。RAID中的条带是基于跨多个盘分布的多个区段而建立的,并且所述条带具有对应的映射信息单元,以记录所述条带所包括的区段在所述多个盘上的相应位置。存储系统将根据上述映射信息单元所提供的位置映射信息来进行I/O读写操作。
已有的基于RAID技术的存储系统通常仅具有用于存储上述映射信息单元的有限存储空间。然而,在多个盘同时发生“闪断(glitch issue)”的情况下,该有限的存储空间可能是不够用的,从而导致存储系统无法进行正常的I/O读写操作。期望提供改进的方案来改善或优化这种情况下的I/O读写性能。
发明内容
本公开的示例实施例提供了一种用于管理RAID的方案。
在本公开实施例的第一方面中,其提供了一种用于管理独立盘冗余阵列(RAID)的方法。该方法包括:响应于所述RAID中的条带被创建,为所述条带分配用于存储预定数目的映射信息单元的存储空间,所述RAID建立在由多个盘划分而来的多个区段上,所述条带包括所述多个区段中的一部分,并且所述条带的映射信息单元记录所述条带所包括的区段在所述多个盘上的相应位置;创建所述条带的一个或多个映射信息单元;将所述一个或多个映射信息单元存储在所述存储空间中;向存储到所述存储空间中的所述一个或多个映射信息单元分配相应存储序列号,以记录所述一个或多个映射信息单元中的每个映射信息单元被存储到所述存储空间中的顺序;以及响应于接收到针对所述条带的I/O请求并且所述I/O请求指示所述相应存储序列号之一,基于所述存储空间中与所述I/O请求所指示的所述存储序列号相对应的映射信息单元来访问所述条带。
在本公开实施例的第二方面中,其提供了一种用于管理独立盘冗余阵列(RAID)的设备。该设备包括处理单元;以及存储器,所述存储器存储有指令,所述指令在被所述处理单元执行时使得所述设备:响应于所述RAID中的条带被创建,为所述条带分配用于存储预定数目的映射信息单元的存储空间,所述RAID建立在由多个盘划分而来的多个区段上,所述条带包括所述多个区段中的一部分,并且所述条带的映射信息单元记录所述条带所包括的区段在所述多个盘上的相应位置;创建所述条带的一个或多个映射信息单元;将所述一个或多个映射信息单元存储在所述存储空间中;向存储到所述存储空间中的所述一个或多个映射信息单元分配相应存储序列号,以记录所述一个或多个映射信息单元中的每个映射信息单元被存储到所述存储空间中的顺序;以及响应于接收到针对所述条带的I/O请求并且所述I/O请求指示所述相应存储序列号之一,基于所述存储空间中与所述I/O请求所指示的所述存储序列号相对应的映射信息单元来访问所述条带。
在本公开实施例的第三方面中,其提供了一种计算机可读介质。该介质上存储有计算机程序,所述程序被处理器执行时实现如上述第一方面中所述的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开实施例的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了根据本公开的实施例的存储系统的示意性架构图;
图2示出了根据本公开的实施例的RAID的示例性布局的示意图;
图3示出了传统方案中在条带中的区段所对应的盘接连发生闪断时如何存储映射信息单元的示意图;
图4示出了根据本公开的实施例在条带中的区段所对应的盘接连发生闪断时如何存储映射信息单元的示意图;
图5示出了根据本公开的实施例的用于管理独立盘冗余阵列的方法的流程图;
图6示出了根据本公开的实施例的响应于I/O读请求从盘中读取数据的方法的流程图;以及
图7示出了可以实施本公开实施例的设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。下文还可能包括其他明确的和隐含的定义。另外,在本公开的实施例的描述中,为方便起见,术语“I/O”、“I/O请求”和“I/O操作”可互换使用。
如上所述,RAID中的条带是基于跨多个盘分布的多个区段而建立的,并且所述条带具有对应的映射信息单元,以记录所述条带所包括的区段在所述多个盘上的相应位置。存储系统将根据上述映射信息单元所提供的位置映射信息来进行I/O读写操作。传统的基于RAID技术的存储系统通常仅具有用于存储上述映射信息单元的有限存储空间。然而,在多个盘同时发生“闪断(glitch issue)”的情况下,该有限的存储空间可能是不够用的,从而导致存储系统无法进行正常的I/O读写操作。
本公开的实施例提出了一种管理RAID的方案。该方案通过覆盖存储空间中的已存储的映射信息单元来存储新创建的映射信息单元,以及向每个存储的映射信息单元分配存储序列号,来克服传统存储系统中在某些情况下映射信息的存储空间可能不够的问题。此外,该方案能够基于I/O请求所指示的存储序列号所对应的映射信息单元以及其有关信息来对RAID条带中的数据进行访问。以此方式,当RAID条带涉及的某些盘发生短暂故障而又很快恢复时,该方案能够实现针对该条带的正常访问,而非“降级访问”(“降级访问”指代基于非故障盘中的数据来计算发生故障的盘中的数据从而实现对条带中的数据的访问)。显然,该方案能够有效地提高了系统的访问性能。
图1示出了根据本公开的实施例的存储系统100的架构图。如图1所示,存储系统100可以包括多个存储盘130-1、130-2……130-N(统称为“存储盘130”,其中N为正整数)。在此所述的“存储盘”可以指代任何目前已知或者将来开发的非易失性存储介质,例如磁盘、光盘或固态盘(SSD)等等。在本文的描述中,将以磁盘作为存储盘的示例。然而,应当理解,这仅仅是出于便于描述的目的,而不暗示对本公开的范围的任何限制。
每个存储盘130可以被划分为多个区段。应当理解,可以根据需求来确定区段的大小。例如,可以将区段的大小设置为GB的量级(例如,将一个区段设置为4GB)。多个区段中的至少部分区段被组织成盘阵列。盘阵列例如可以是独立盘冗余阵列(RAID),其通常出于数据冗余备份和/或性能改进的目的而将多个物理存储单元组合成逻辑存储单元。根据所要求的冗余度和性能的级别,其可以具有不同的类型,诸如RAID 0、RAID 1、……、RAID 5等。
存储系统100还可以包括存储处理器150,用于管理存储盘130。存储处理器150例如可以进一步包括命名空间110、映射器120和RAID 200。映射器120用于提供被RAID所占用的物理存储位置和命名空间110所使用的逻辑存储位置之间的映射关系。命名空间110通过调用映射器120的API来实现从逻辑位置到物理位置的映射。
在存储系统100的用户写入数据或读取数据时,用户通过主机(未示出)向命名空间110发送写入数据或读取数据的指令。命名空间110将该指令经处理后发送至映射器120。映射器120利用内部的映射关系来查找数据应当被写入或读取的位置,并且将位置信息发送至RAID 200。RAID 200利用该位置信息来处理用户写入数据或读取数据指令。
图2示出了根据本公开的实施例的示例映射RAID 200的示意图,其图示了在如图1所示的多个盘130上构建的映射RAID的示例。如图2所示,例如,在N个盘130-1~130-N上构建了具有4D+1P布局的RAID 5,其中N大于5。在图2所示的示例中,D0~D3分别表示用于存储用户数据的数据区段,并且P表示用于存储校验信息的校验区段。当创建一个RAID条带(其包括D0~D3以及P)时,可以随机地从5个不同的盘中选择5个区段。因此,用户数据和校验信息将被均匀地分布到所有盘中。例如,在图2的示例中,在盘130上创建有RAID组210和RAID组220。RAID组310可以包括RAID条带211、212和213,而RAID组220可以包括RAID条带221、222和223。此外,为了保证映射RAID的可靠性,在盘130上预留有一些备用区段,例如由R来表示。当盘130中的某个盘发生故障时,这些备用区段可以被用于重建与故障相关联的RAID条带,从而避免数据丢失的发生。
在一些实施例中,针对存储设备的I/O请求可以是针对如图2所示的某个RAID条带(例如,RAID条带211、212、213、221、222或223)的I/O请求。例如,存储处理器150可以维护RAID条带与盘130之间的映射关系,并且可以基于该映射关系来确定I/O请求所涉及的一个或多个盘130。以RAID条带211为例,针对RAID条带211的请求将涉及盘130-1、130-2、130-3、130-5和130-6。以RAID条带221为例,针对该RAID条带221的请求将涉及盘130-6、130-7、130-N、130-2和130-5。
如上所述,RAID中的条带是基于跨多个盘分布的多个区段而建立的,并且每个条带可以具有对应的映射信息单元,以记录所述条带所包括的区段在所述多个盘上的相应位置。该映射信息单元例如可以被存储在如图1所示的存储系统100内的预定存储空间(例如,内存)内。响应于I/O的读写请求,映射器120可以从该预定存储空间调用该映射信息单元,从而实现对该映射信息单元所映射的盘的访问。
为了更加地清楚地理解本公开的实施例是如何在多个盘连续发生“闪断”的情况下对上述映射信息单元进行管理,下面将首先通过图3来描述传统方案中对上述映射信息单元的管理方式。
图3示出了传统方案中在条带中的区段所对应的盘接连发生闪断时如何存储映射信息单元的示意图,其中映射信息单元用于记录所述条带所包括的区段在所述多个盘上的相应位置。进一步地,映射信息单元可以包括多个映射信息项,每个映射信息项分别映射对应的区段所在盘的相应位置。
为了清楚地示出如何存储RAID条带对应的映射信息单元的过程,图3中以4D+1P布局的RAID 5为例来进行描述。将会理解,下面描述的4D+1P布局的RAID 5的示例仅仅是示例性的,其不构成对本公开的任何限制。
如图3中的(a)所示,针对每个所创建的条带,系统将初始地创建与该条带中的区段对应的第一映射信息单元310,并且将第一映射信息单元310存储在存储空间300的第一空间内。在例如以4D+1P布局的RAID 5的情形下,该映射信息单元310将包括与条带中的5个区段(视为“第一组区段”)一一对应的5个映射信息项D0、D1、D2、D3、D4,每个映射信息项分别映射对应的区段所在盘的相应位置。
在各个盘正常运转的情况下,系统可以仅依据第一映射信息单元310来进行I/O的读写操作。然而,在一些情况下,由于软件或硬件的各种原因,存储系统中的运转的盘可能会发生“闪断(glitch issue)”的情况(此时,“闪断”的盘可能发生掉线或故障),此时存储系统将无法在“闪断”的盘上实现正常的I/O读写操作。这对于旨在实现高性能的存储系统而言,是不期望的。
考虑到这个情况,传统方案的设计是:针对每个创建的条带,分配可用于存储多个映射信息单元的存储空间300。例如,在图3的示例中,针对每个创建的条带,分配可用于存储例如3个映射信息单元的存储空间300。将会理解,在其他实施例中,系统可以分配用于存储更多或更少数目的映射信息单元的存储空间300。
基于这种设计,在例如以4D+1P布局的RAID 5的情况下,一旦条带中的5个区段(可视为“第一组区段”)中的一个区段(假设其对应的映射信息项为D2)所映射的盘发生故障(这例如可能是由于磁盘柜中的该磁盘被误拔的缘故),如图3中的(b)所示,系统将创建第二映射信息单元311,其中第二映射信息单元311将拷贝第一映射信息单元310中的映射信息项,并且将发生故障的盘的区段所对应的映射信息项D2替换为其他盘的保留区段所对应的映射信息项S1。进一步地,将第二映射信息单元311存储在存储空间300中的剩余空间中。此时,存储系统将进一步基于第二映射信息单元311而不是第一映射信息单元310继续进行I/O写操作。将会理解,第二映射信息单元311实际上是作为第一映射信息单元310的备用映射信息单元而创建的。此时,基于第二映射信息单元311的I/O写操作不会受到第一映射信息单元310中所映射的盘发生故障的影响,而能够继续保持正常的I/O读写操作性能。
然而,由于一些原因(譬如磁盘柜中的同一列中的多个磁盘同时掉电的情况),第二映射信息单元311上的映射信息项S1所对应的盘仍然可能会发生故障。在这种情况下,在一些实施例,如图3中的(c)所示,系统将创建第三映射信息单元312,其中第三映射信息单元312将拷贝第二映射信息单元311中的映射信息项,并且将发生故障的盘所对应的映射信息项S1替换为其他盘的保留区段所对应的映射信息项S2。进一步地,将第三映射信息单元312存储在存储空间300中的剩余空间中。将会理解,第三映射信息单元312实际上是作为第二映射信息单元311的备用映射信息单元而创建的。此时,基于第三映射信息单元312的I/O写操作不会受到前面第一映射信息单元310、第二映射信息单元311所映射的盘发生故障的影响,而能够继续保持正常的I/O读写操作性能。
在大部分情况下,创建第二映射信息单元311作为第一映射信息单元310的备用映射信息单元以及创建第三映射信息单元312作为第二映射信息单元311的备用映射信息单元是足够的。然而,在一些情况(譬如磁盘柜中的同一列中的多个磁盘同时掉线的情况)下,第三映射信息单元311所映射的盘之一也可能会发生故障,这也就是图3中的(d)所示的情况。此时,尽管系统可以创建新的映射信息单元,但针对每个条带所分配的存储空间300已经没有可用的空间来存储新的映射信息单元。在这种情况下,系统要么只能以性能降级的方式将数据写入盘中,要么只能暂停I/O写操作,以等待系统故障盘的修复或更换。
需要注意的是:在上面图3的描述中,尽管以映射信息项D2、S1、S2位于图3的表格中的同一列上的情形(这种情形的出现可能是由于D2、S1、S2所映射的多个盘都位于磁盘柜的同一列上且该列的磁盘同时掉线的缘故)作为示例来进行描述,但将会理解,在其他实施例中,也可能发生闪断的多个盘所对应的映射信息项位于图3的表格中的不同列上的情形。
显然,在传统方案中,不管是闪断的多个盘所对应的映射信息项位于表格中的同一列的情形,还是位于不同列的情形,一旦发生多个磁盘同时闪断,则存储空间300可能被耗尽而无法存储新创建的映射信息单元。在此情况下,存储系统将无法实现针对RAID条带的正常访问而仅能实现降级访问,从而影响存储系统的访问性能。
为了解决上述问题,在一些实施例中,在对新创建的映射信息单元进行存储时,可以首先确定存储空间中是否存在足够的用于存储新创建的映射单元的空白剩余空间。如果存储空间不够,则通过将新创建的映射信息单元覆盖所述存储空间中最先存入的那条映射信息单元来存入所述新创建的映射信息单元;同时向存储到所述存储空间中的每个所述映射信息单元分配对应的存储序列号,来记录每个所述映射信息单元被存储到所述存储空间中的顺序。以此方式,能够克服传统存储系统中在某些情况下映射信息的存储空间可能不够的问题。
图4示出了根据本公开的实施例在条带中的区段所对应的盘接连发生闪断时如何存储映射信息单元的示意图。
图4所示的操作和图3所示的操作的不同之处在于:在每次存储新创建的映射信息单元时,需要确定存储空间300中是否有足够的存储空间;如果存在足够的存储空间,则在存储空间300的剩余空间中存入新创建的映射信息单元;如果不存在足够的存储空间,则将新创建的映射信息单元覆盖所述存储空间中最先存入的那条映射信息单元来存入所述新创建的映射信息单元。同时,记录在存储空间300中存入的每个映射信息单元所对应的存储序列号,并将最后一个记录的存储序列号标记为当前存储序列号(current_plan)。
具体地,例如,在存储第一映射信息单元310时,将首先确定存储空间300中是否有足够的用于存储第一映射信息单元310的存储空间,如果存在足够的存储空间,则在存储空间300的剩余空间中存入所述第一映射信息单元310;同时,记录第一映射信息单元310所对应的存储序列号0,此时该存储序列号0指向第一映射信息单元310并且其所记录的映射信息项是D0、D1、D2、D3和D4。当前存储序列号current_plan可标记为0。
响应于第一映射信息单元310中的映射信息项D2所映射的盘发生故障,则创建第二映射信息单元311,并确定存储空间300中是否有足够的用于存储第二映射信息单元311的存储空间,如果存在足够的存储空间,则在存储空间300的剩余空间中存入所述第二映射信息单元311,其中将第一映射信息单元310的对应于发生故障的盘的映射信息项D2替换为映射其他盘的映射信息项S1,同时记录第二映射信息单元311所对应的存储序列号1,此时该存储序列号1指向第二映射信息单元311并且所记录的映射信息项是D0、D1、S1、D3和D4。当前存储序列号current_plan可递增至1。
响应于第二映射信息单元311的映射信息项S1所映射的盘发生故障,则创建第三映射信息单元312,并确定存储空间300中是否有足够的用于存储第三映射信息单元312的存储空间,如果存在足够的存储空间,则在存储空间300的剩余空间中存入所述第三映射信息单元312,其中将第二映射信息单元311的对应于发生故障的盘的映射信息项S1替换为映射其他盘的映射信息项S2,同时记录第三映射信息单元312所对应的存储序列号2,此时该存储序列号2指向第三映射信息单元312并且所记录的映射信息项是D0、D1、S2、D3和D4。当前存储序列号current_plan可递增至2。
响应于第三映射信息单元312的映射信息项S2所映射的盘发生故障,则创建第四映射信息单元313,并确定存储空间300中是否有足够的用于存储第四映射信息单元313的存储空间。假设此时确定不存在足够的存储空间,则存储系统将新创建的第四映射信息单元313覆盖所述存储空间中最先存入的那条映射信息单元(即第一映射信息单元310),来存储所述第四映射信息单元313;其中将第三映射信息单元312的对应于发生故障的盘的映射信息项S2替换为映射其他盘的映射信息项S3,同时记录第四映射信息单元313所对应的存储序列号3,此时该存储序列号3指向第四映射信息单元314并且所记录的映射信息项是D0、D1、S3、D3和D4。当前存储序列号current_plan可递增至3。
进一步地,如果第四映射信息单元314的映射信息项S3所映射的盘发生故障,则可以重复类似于创建和存储第四映射信息单元313的操作,从而可以创建并且存储第五映射信息单元(未示出),该第五映射信息单元将覆盖第二映射信息单元311,并且将第二映射信息单元311中与故障盘所对应的映射信息项S1换成映射其他盘的映射信息项,并且记录第五映射信息单元所对应的存储序列号。此时,还可以相应地继续递增当前存储序列号current_plan至4。依此类推。因此,根据本公开的实施例,使得即便存储空间有限的情况下也有可能在有限的存储空间中继续存储新创建的映射信息单元,并且通过记录存储序列号,可以获知每个存储序列号所对应的映射信息单元。
注意:为了帮助理解,图4中以虚线绘出了每个存储序列号所对应的映射信息单元的内容400。但应当理解,这些虚线绘出的内容400的存储并不是真实存在的。
图5示出了根据本公开的实施例的用于管理独立盘冗余阵列(RAID)的方法500的流程图。方法500例如可以由如图1所示的存储处理器150来执行。该图5中的方法500是基于图4的构思实现的。下面将结合图4和图5来描述图5所示的方法500中的各个步骤的实现。
如图5所示,在框510处,响应于所述RAID中的条带被创建,为所述条带分配用于存储预定数目的映射信息单元的存储空间,所述RAID建立在由多个盘划分而来的多个区段上,所述条带包括所述多个区段中的一部分,并且所述条带的映射信息单元记录所述条带所包括的区段在所述多个盘上的相应位置。
作为示例,例如参照图4可知,可以为每个RAID中的条带分配用于存储预定数目个(例如,3个)的映射信息单元的存储空间300。在其他实施例中,该存储空间300可以是更大或更小的,从而可以容纳更多或更少数目的映射信息单元。此外,将会理解,为每个RAID中的条带分配更大的存储空间以容纳更多数目的映射信息单元意味着占用更多的内存。这对于一些存储系统而言,可能是不期望的。因此,在存储系统中,通常针对每个RAID中的条带,仅分配用于存储有限数目(通常小于或等于3)的映射信息单元的存储空间。
接下来,在框520处,创建所述条带的一个或多个映射信息单元(例如,图4中的310、311、312、313)。在一些实施例中,例如当该条带被创建时,可以创建该条带的第一映射信息单元(例如,图4中所示的映射信息单元310),所述第一映射信息单元用于记录所述条带所包括的多个区段在所述多个盘上的相应位置,所述第一映射信息单元所映射的多个区段可以标记为第一组区段。
附加地或备选地,在一些实施例中,响应于所述第一组区段中的第一区段所在的盘发生故障,通过利用所述多个区段中的第二区段替代所述第一组区段中的所述第一区段,来获得对应于所述条带的第二组区段;以及,创建所述条带的第二映射信息单元(例如,图4中的映射信息单元311),以记录所述第二组区段在所述多个盘上的相应位置。
在框530处,将所述一个或多个映射信息单元存储在所述存储空间中。
在一些实施例中,例如响应于确定存储空间300中存在足够存储空间,可以将创建的所述映射信息单元存储在所述存储空间300中的剩余空间内。
例如,在一些实施例中,针对创建的第一映射信息单元(例如,图4中的310),响应于确定存储空间300中存在足够存储空间的情况下,可以将第一映射信息单元(例如,图4中的310)存储在存储空间300的第一空间中。进一步地,针对创建的第二映射信息单元(例如图4中的311),响应于确定存储空间300中存在足够存储空间的情况下,可以将第二映射信息单元((例如图4中的311)存储在存储空间300的第二空间中。
在一些实施例中,例如响应于确定存储空间300中不存在足够存储空间,可以通过将创建的所述映射信息单元覆盖所述存储空间中最先存入的那条映射信息单元,来存储所创建的映射信息单元。
例如,在一些实施例中,在确定存储空间300中不存在足够的用于存储所创建的映射信息单元(例如,图4中的313)的存储空间时,系统可以将所创建的映射信息单元(例如,图4中的313)覆盖存储空间300中最先存入的那条映射信息单元(例如,图4中的映射信息单元310),来存储映射信息单元(例如,313)。如果进一步确定例如图4中的映射信息单元313所映射的盘之一也发生故障,系统可以继续将新创建的映射信息单元覆盖存储空间300中最先存入的那条映射信息单元,此时将为映射信息单元311。在这种情况下,将会理解,本公开的存储系统在需要覆盖地存储映射信息单元时,可以通过依次地覆盖之前存储的映射信息单元310、311、312、313、314、……,来实现新创建的映射信息单元在存储空间中的存储。
在框540处,向存储到所述存储空间中的所述一个或多个映射信息单元分配相应存储序列号,以记录所述一个或多个映射信息单元中的每个映射信息单元被存储到所述存储空间中的顺序。该步骤540的作用是利用存储序列号来确定存储序列号所对应的映射信息单元在存储空间300的存储位置,以便后续进行I/O的读写操作,特别是I/O读操作。
在一些实施例中,可以将存储到所述存储空间中的最后一个映射信息单元对应的存储序列号记录为当前存储序列号(current_plan)。
在一些实施例中,可以用I/O读请求所指示的存储序列号相对于存储空间内所允许存储的映射信息单元的预定数量进行取模运算,来确定存储序列号所指示的映射信息单元在存储空间300的存储位置;在进一步的一些实施例中,还可以进一步结合当前存储序列号来判断I/O读请求所指示的存储序列号所指示的映射信息单元在存储空间300是否被其他的映射信息单元所覆盖。
在框550处,响应于接收到针对所述条带的I/O请求并且所述I/O请求指示所述相应存储序列号之一,基于所述存储空间中与所述I/O请求所指示的所述存储序列号相对应的映射信息单元来访问所述条带。
在一些实施例中,所述I/O请求可以为写请求,其中访问所述条带可以包括:获取所述当前存储序列号;从所述存储空间中获取与所述当前存储序列号相对应的映射信息单元;以及基于获取的所述映射信息单元,向所述条带写入数据。
例如,参照图4,当前存储序列号为3,存储系统可以从所述存储空间中获取与所述当前存储序列号3相对应的映射信息单元;以及基于获取的所述映射信息单元,向所述条带写入数据。
在一些实施例中,所述I/O请求可以为读请求,其中I/O读请求将指示所要读取的相应存储序列号之一,其中访问所述条带包括:从所述存储空间中获取与所述读请求所指示的所述存储序列号相对应的映射信息单元;以及基于获取的所述映射信息单元,从所述条带读取数据。
将会理解,映射信息单元所映射的盘的历史故障状态和当前故障状态对于I/O读请求是有影响的。例如,在历史故障盘尚未恢复、或者当前盘存在故障的情况下,存储系统不可能可以直接从故障的盘中读出数据。
为了更清楚地描述如何基于历史故障状态和当前故障状态来进行I/O读操作,图6示出了根据本公开的实施例的响应于I/O读请求从盘中读取数据的方法600的流程图。
如图6所示,在框610处,响应于接收针对所述条带的I/O读请求并且所述I/O读请求指示相应存储序列号之一,从所述存储空间中获取与所述读请求所指示的所述存储序列号相对应的映射信息单元。
接着,在在框620处,确定所述映射信息单元所涉及的各个区段所在的相应盘的当前故障状态。执行该步骤620的目的是为了确定故障盘在执行I/O读操作时是否已经恢复。
在一些实施例中,为了获得映射信息单元所涉及的各个区段所在的相应盘的当前故障状态,可以通过扫描所述映射信息单元所映射的各个区段所在的多个盘,来获得指示所述多个盘的当前状态的盘状态掩码(dead_bitmask)。将理解,上述盘状态掩码可以用于标记盘的当前故障状态。
尽管上面考虑了应盘的当前故障状态,还将理解的是I/O读请求所指示的存储序列号对应的映射信息单元可能存在被覆盖的情况,在这种情况下,根据盘的当前故障状态并不能获得被覆盖的映射信息单元所映射的盘的真实状态。
因此,在框630处,将确定所述读请求所指示的所述存储序列号相对应的映射信息单元是否被覆盖。
在一些实施例中,在该框630处,可以通过计算I/O所指示的存储序列号是否小于(当前存储序列号-所述映射信息单元的所述预定数目+1)来判断该映射信息单元是否被覆盖。
如果I/O读请求所指示的存储序列号<(当前存储序列号-所述映射信息单元的所述预定数目+1),则判断I/O读请求所指示的存储序列号所对应的映射信息单元被覆盖,否则判断未被覆盖。
仅作为示例,例如参照图4,当前存储序列号为3,所述映射信息单元的所述预定数目为3,如果I/O读请求所指示的存储序列号为0,那么可以确定I/O读请求所指示的存储序列号为0所对应的映射信息单元被覆盖;而对于其他I/O读请求所指示的存储序列号为1、2,可以确定为它们对应的映射信息单元未被覆盖。
响应于被覆盖,可以在框640处,至少基于历史故障状态和所述映射信息单元从所述条带中读取数据,其中可以通过区段位置掩码(degrade_bitmask)来标记所记录的映射信息单元所映射的相应盘的历史故障状态。
例如,针对图4中的映射信息单元310、311、312,可创建每个映射信息单元对应的区段位置掩码degrade_bitmask。仅作为示例,在图4中的例如D2、S1和S2所映射的区段所在的盘发生故障的情况下,将有映射信息单元310、311、312对应的区段位置掩码degrade_bitmask=0x04。将会理解,在上述D2、S1和S2处于同一列的情况下,只需要创建一个区段位置掩码degrade_bitmask即可标识RAID的条带中区段所对应的故障盘的位置;然而,在D2、S1和S2不处于同一列的情况下,可能需要创建不同的区段位置掩码degrade_bitmask来标识映射信息单元310、311、312中对应的故障盘的位置。
将会理解,基于该历史故障状态,存储处理器可以确定映射信息单元中的哪个盘曾经发生故障。进一步地,利用所指示的存储序列号所对应的映射信息单元中映射的其他盘,基于RAID技术,存储系统可以恢复出该故障盘上存储的数据,由此实现数据的读取。尽管这种数据的读取与从正常盘中的数据读取相比,效率有所降低,但毕竟保证了数据的读出,因此可以称为“降级读取(degraded read)”。
例如,针对图4中例如存储序列号为0的I/O读请求而言,存储处理器例如可以基于存储序列号0所指示的映射信息单元310以及相应的区段位置掩码从盘中读出数据。这里,虽然由于映射信息单元310的区段位置掩码degrade_bitmask=0x04指示映射项D2所映射的盘存在故障,存储处理器无法直接从映射信息单元310映射的各个盘读出数据,但是存储处理器可以根据RAID技术从映射信息单元310中的其他映射信息项D0、D1、D3和D4所映射的盘中恢复出D2所映射的故障盘上所存储的数据,从而实现对I/O读请求的数据的“降级读取”。
响应于未被覆盖,在框650,至少基于当前故障状态和映射信息单元,从所述条带中读取数据。
在一些实施例中,可以通过前面描述的盘状态掩码来标记盘的当前故障状态。如果盘状态掩码为0,则表示I/O读请求所指示的存储序列号所对应的映射信息单元所映射的盘现在不存在故障,则可以基于I/O读请求所指示的存储序列号所对应的映射信息单元来从盘中正常读取数据;如果盘状态掩码为1,则表示I/O读请求所指示的存储序列号所对应的映射信息单元所映射的盘现在存在故障,那么基于该盘状态掩码和I/O读请求所指示的存储序列号所对应的映射信息单元来从盘中降级地读取数据。
例如,参照图4,对于存储序列号为1、2、3和4的I/O读请求而言,存储序列号为1、2、3和4所对应的映射单元并未被覆盖,因此,存储处理器也可以基于存储序列号1、2、3和4所对应的映射信息单元,以及所述盘状态掩码来从盘中读取数据。
以上已经详细描述了本公开的实施例,其中描述了如何通过覆盖存储空间中的已存储的映射信息单元来存储新创建的映射信息单元,以及向每个存储的映射信息单元分配存储序列号,来克服已有的存储系统可能发生“闪断”的问题;以及在这种RAID的管理方案下如何进行I/O的读写操作。将会理解,在这种存储管理方案下,不仅可以有效地避免存储系统可能发生“闪断”的问题,同时可以基于对I/O请求所指示的存储序列号所指示的映射信息单元以及其他的诸如区段位置掩码和盘状态掩码等的信息,来尽可能地正常地(而不是降级地)对盘进行准确的I/O读写操作。显然,本公开的存储管理方案有效地提高了已有的存储系统的存储性能。
图7示出了可以用来实施本公开实施例的示例性计算设备700的示意性框图。设备700可以用于实现如图1所示的存储处理器150。如图7所示,设备700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的计算机程序指令或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序指令,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如存储、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元701执行上文所描述的各个方法和处理,例如方法500。例如,在一些实施例中,方法500或600可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由CPU 701执行时,可以执行上文描述的方法500、600的一个或多个步骤。备选地,在其他实施例中,CPU 701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法500、600。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在对端机器上执行或完全在对端机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (19)
1.一种用于管理独立盘冗余阵列(RAID)的方法,包括:
响应于所述RAID中的条带被创建,为所述条带分配用于存储预定数目的映射信息单元的存储空间,所述RAID建立在由多个盘划分而来的多个区段上,所述条带包括所述多个区段中的一部分,并且所述条带的映射信息单元记录所述条带所包括的区段在所述多个盘上的相应位置;
创建所述条带的一个或多个映射信息单元;
将所述一个或多个映射信息单元存储在所述存储空间中;
向存储到所述存储空间中的所述一个或多个映射信息单元分配相应存储序列号,以记录所述一个或多个映射信息单元中的每个映射信息单元被存储到所述存储空间中的顺序;
响应于接收到针对所述条带的I/O请求并且所述I/O请求指示所述相应存储序列号之一,基于所述存储空间中与所述I/O请求所指示的所述存储序列号相对应的映射信息单元来访问所述条带;以及
将向存储到所述存储空间中的最后一个映射信息单元分配的存储序列号记录为当前存储序列号。
2.根据权利要求1所述的方法,其中创建所述条带的一个或多个映射信息单元包括:
创建所述条带的第一映射信息单元,所述条带包括所述多个区段中的第一组区段,所述第一映射信息单元记录所述第一组区段在所述多个盘上的相应位置。
3.根据权利要求2所述的方法,其中存储所述一个或多个映射信息单元包括:
确定所述存储空间中是否存在用于存储创建的所述第一映射信息单元的第一空间;以及
响应于确定存在所述第一空间,将所述第一映射信息单元存储在所述第一空间中。
4.根据权利要求2所述的方法,其中创建所述条带的一个或多个映射信息单元还包括:
响应于所述第一组区段中的第一区段所在的盘发生故障,通过利用所述多个区段中的第二区段替代所述第一组区段中的所述第一区段,来获得对应于所述条带的第二组区段;
创建所述条带的第二映射信息单元,以记录所述第二组区段在所述多个盘上的相应位置。
5.根据权利要求4所述的方法,其中存储所述一个或多个映射信息单元还包括:
确定所述存储空间中是否存在用于存储创建的所述第二映射信息单元的第二空间;
响应于确定存在所述第二空间,将所述第二映射信息单元存储在所述第二空间中;以及
响应于确定不存在所述第二空间,通过利用所述第二映射信息单元覆盖所述第一映射信息单元来将所述第二映射信息单元存储在第一空间中。
6.根据权利要求1所述的方法,其中所述I/O请求为写请求,并且访问所述条带包括:
获取所述当前存储序列号;
从所述存储空间中获取与所述当前存储序列号相对应的映射信息单元;以及
基于获取的所述映射信息单元,向所述条带写入数据。
7.根据权利要求1所述的方法,其中所述I/O请求为读请求,并且所述读请求指示所述相应存储序列号之一,其中访问所述条带包括:
从所述存储空间中获取与所述读请求所指示的所述存储序列号相对应的映射信息单元;以及
基于获取的所述映射信息单元,从所述条带读取数据。
8.根据权利要求7所述的方法,其中从所述条带读取数据包括:
确定所述映射信息单元所涉及的各个区段所在的相应盘的历史故障状态;
确定所述相应盘的当前故障状态;以及
至少基于所述历史故障状态和所述当前故障状态,从所述条带读取所述数据。
9.根据权利要求8所述的方法,其中从所述条带读取所述数据包括:
基于所述预定数目、所述当前存储序列号、所述读请求所指示的所述存储序列号、所述历史故障状态和所述当前故障状态,从所述条带读取所述数目。
10.一种用于管理独立盘冗余阵列(RAID)的设备,包括:
处理单元;以及
存储器,所述存储器存储有指令,所述指令在被所述处理单元执行时使得所述设备:
响应于所述RAID中的条带被创建,为所述条带分配用于存储预定数目的映射信息单元的存储空间,所述RAID建立在由多个盘划分而来的多个区段上,所述条带包括所述多个区段中的一部分,并且所述条带的映射信息单元记录所述条带所包括的区段在所述多个盘上的相应位置;
创建所述条带的一个或多个映射信息单元;
将所述一个或多个映射信息单元存储在所述存储空间中;
向存储到所述存储空间中的所述一个或多个映射信息单元分配相应存储序列号,以记录所述一个或多个映射信息单元中的每个映射信息单元被存储到所述存储空间中的顺序;
响应于接收到针对所述条带的I/O请求并且所述I/O请求指示所述相应存储序列号之一,基于所述存储空间中与所述I/O请求所指示的所述存储序列号相对应的映射信息单元来访问所述条带;以及
将向存储到所述存储空间中的最后一个映射信息单元分配的存储序列号记录为当前存储序列号。
11.根据权利要求10所述的设备,其中创建所述条带的一个或多个映射信息单元包括:
创建所述条带的第一映射信息单元,所述条带包括所述多个区段中的第一组区段,所述第一映射信息单元记录所述第一组区段在所述多个盘上的相应位置。
12.根据权利要求11所述的设备,其中存储所述一个或多个映射信息单元包括:
确定所述存储空间中是否存在用于存储创建的所述第一映射信息单元的第一空间;以及
响应于确定存在所述第一空间,将所述第一映射信息单元存储在所述第一空间中。
13.根据权利要求11所述的设备,其中创建所述条带的一个或多个映射信息单元还包括:
响应于所述第一组区段中的第一区段所在的盘发生故障,通过利用所述多个区段中的第二区段替代所述第一组区段中的所述第一区段,来获得对应于所述条带的第二组区段;
创建所述条带的第二映射信息单元,以记录所述第二组区段在所述多个盘上的相应位置。
14.根据权利要求13所述的设备,其中存储所述一个或多个映射信息单元还包括:
针对创建的第二映射信息单元,确定所述存储空间中是否存在用于存储所述第二映射信息单元的第二空间;
响应于确定存在所述第二空间,将所述第二映射信息单元存储在所述第二空间中;以及
响应于确定不存在所述第二空间,通过利用所述第二映射信息单元覆盖所述第一映射信息单元来将所述第二映射信息单元存储在第一空间中。
15.根据权利要求11所述的设备,其中所述I/O请求为写请求,并且访问所述条带包括:
获取所述当前存储序列号;
从所述存储空间中获取与所述当前存储序列号相对应的映射信息单元;以及
基于获取的所述映射信息单元,向所述条带写入数据。
16.根据权利要求11所述的设备,其中所述I/O请求为读请求,并且所述读请求指示所述相应存储序列号之一,其中访问所述条带包括:
从所述存储空间中获取与所述读请求所指示的所述存储序列号相对应的映射信息单元;以及
基于获取的所述映射信息单元,从所述条带读取数据。
17.根据权利要求16所述的设备,其中从所述条带读取数据包括:
确定所述映射信息单元所涉及的各个区段所在的相应盘的历史故障状态;
确定所述相应盘的当前故障状态;以及
至少基于所述历史故障状态和所述当前故障状态,从所述条带读取所述数据。
18.根据权利要求17所述的设备,其中从所述条带读取所述数据包括:
基于所述预定数目、所述当前存储序列号、所述读请求所指示的所述存储序列号、所述历史故障状态和所述当前故障状态,从所述条带读取所述数目。
19.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1-9中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811288792.1A CN111124262B (zh) | 2018-10-31 | 2018-10-31 | 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 |
US16/655,401 US11442636B2 (en) | 2018-10-31 | 2019-10-17 | Method, apparatus for managing the redundant array of independent disks (RAID) and related computer readable medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811288792.1A CN111124262B (zh) | 2018-10-31 | 2018-10-31 | 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124262A CN111124262A (zh) | 2020-05-08 |
CN111124262B true CN111124262B (zh) | 2023-08-22 |
Family
ID=70327016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811288792.1A Active CN111124262B (zh) | 2018-10-31 | 2018-10-31 | 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11442636B2 (zh) |
CN (1) | CN111124262B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110058791B (zh) * | 2018-01-18 | 2022-05-10 | 伊姆西Ip控股有限责任公司 | 存储系统以及相应的方法和计算机可读介质 |
CN112732167B (zh) | 2019-10-28 | 2024-04-16 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备 |
CN112948323A (zh) * | 2021-04-16 | 2021-06-11 | 山东高云半导体科技有限公司 | 存储器映射处理方法、装置及fpga芯片 |
CN113805799B (zh) * | 2021-08-08 | 2023-08-11 | 苏州浪潮智能科技有限公司 | Raid阵列最近写记录管理的方法、装置、设备及可读介质 |
CN113986149B (zh) * | 2021-12-27 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种系统故障处理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526478B1 (en) * | 2000-02-02 | 2003-02-25 | Lsi Logic Corporation | Raid LUN creation using proportional disk mapping |
CN107220148A (zh) * | 2016-03-21 | 2017-09-29 | 伊姆西公司 | 针对独立磁盘冗余阵列的重建方法和设备 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266367B2 (en) * | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory 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 |
US7185222B2 (en) * | 2003-11-14 | 2007-02-27 | International Business Machines Corporation | Apparatus, system, and method for maintaining data in a storage array |
US7328307B2 (en) * | 2004-01-22 | 2008-02-05 | Tquist, Llc | Method and apparatus for improving update performance of non-uniform access time persistent storage media |
US7386758B2 (en) * | 2005-01-13 | 2008-06-10 | Hitachi, Ltd. | Method and apparatus for reconstructing data in object-based storage arrays |
KR20160083762A (ko) * | 2015-01-02 | 2016-07-12 | 삼성전자주식회사 | 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템 |
US9766837B2 (en) * | 2015-06-10 | 2017-09-19 | Micron Technology, Inc. | Stripe mapping in memory |
US10365827B1 (en) * | 2017-01-10 | 2019-07-30 | Pavilion Data Systems, Inc. | Spread space tracking |
KR20180090422A (ko) | 2017-02-02 | 2018-08-13 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN107239234B (zh) * | 2017-05-27 | 2020-08-04 | 苏州浪潮智能科技有限公司 | 一种基于全闪存阵列的随机io顺序化方法及装置 |
CN109213430B (zh) | 2017-06-30 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 存储管理方法和系统 |
US10452471B2 (en) | 2017-10-11 | 2019-10-22 | Western Digital Technologies, Inc. | Non-volatile memory with dynamic write abort detection and recovery |
CN109725831B (zh) * | 2017-10-27 | 2022-06-10 | 伊姆西Ip控股有限责任公司 | 管理存储系统的方法、系统和计算机可读介质 |
US10671494B1 (en) * | 2017-11-01 | 2020-06-02 | Pure Storage, Inc. | Consistent selection of replicated datasets during storage system recovery |
US10379950B2 (en) | 2017-11-30 | 2019-08-13 | Western Digital Technologies, Inc. | Updating write-in-place storage devices |
-
2018
- 2018-10-31 CN CN201811288792.1A patent/CN111124262B/zh active Active
-
2019
- 2019-10-17 US US16/655,401 patent/US11442636B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526478B1 (en) * | 2000-02-02 | 2003-02-25 | Lsi Logic Corporation | Raid LUN creation using proportional disk mapping |
CN107220148A (zh) * | 2016-03-21 | 2017-09-29 | 伊姆西公司 | 针对独立磁盘冗余阵列的重建方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US20200133536A1 (en) | 2020-04-30 |
US11442636B2 (en) | 2022-09-13 |
CN111124262A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124262B (zh) | 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 | |
US10606491B2 (en) | Providing redundancy in a virtualized storage system for a computer system | |
US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
US9378093B2 (en) | Controlling data storage in an array of storage devices | |
US10365983B1 (en) | Repairing raid systems at per-stripe granularity | |
US7831764B2 (en) | Storage system having plural flash memory drives and method for controlling data storage | |
US7386758B2 (en) | Method and apparatus for reconstructing data in object-based storage arrays | |
US8069301B2 (en) | Apparatus, storage system, and computer program product for prevention of data loss | |
US7281089B2 (en) | System and method for reorganizing data in a raid storage system | |
US8386709B2 (en) | Method and system for protecting against multiple failures in a raid system | |
US20180275894A1 (en) | Storage system | |
US20100229033A1 (en) | Storage management device, storage management method, and storage system | |
US7991952B2 (en) | Method of extension of storage capacity and storage system using the method | |
CN102799533B (zh) | 一种磁盘损坏扇区屏蔽方法及装置 | |
KR20110087272A (ko) | 볼륨 조각 할당 방법, 볼륨 조각 할당 시스템 및 raid | |
CN111124251B (zh) | 用于i/o控制的方法、装置以及计算机可读介质 | |
US20140173337A1 (en) | Storage apparatus, control method, and control program | |
JP2006114008A (ja) | システム構成を更新するための回復記録を構成するための方法および装置 | |
US8935488B2 (en) | Storage system and storage control method | |
US20150199236A1 (en) | Multi-level disk failure protection | |
US8667218B2 (en) | Storage apparatus comprising RAID groups of RAID 1 series and control method of writing to RAID group of RAID 1 series | |
CN109814810A (zh) | 一种raid阵列中硬盘故障扇区的处理方法及装置 | |
US9620165B2 (en) | Banded allocation of device address ranges in distributed parity schemes | |
US11544005B2 (en) | Storage system and processing method | |
JP7056874B2 (ja) | 制御装置、ディスクアレイ装置、制御方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |