CN105302492A - 一种磁盘阵列raid重建方法及装置 - Google Patents

一种磁盘阵列raid重建方法及装置 Download PDF

Info

Publication number
CN105302492A
CN105302492A CN201510796256.2A CN201510796256A CN105302492A CN 105302492 A CN105302492 A CN 105302492A CN 201510796256 A CN201510796256 A CN 201510796256A CN 105302492 A CN105302492 A CN 105302492A
Authority
CN
China
Prior art keywords
data
band
write
raid
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510796256.2A
Other languages
English (en)
Inventor
罗心
范伟云
王欢
陈立力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN201510796256.2A priority Critical patent/CN105302492A/zh
Publication of CN105302492A publication Critical patent/CN105302492A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请涉及计算机技术领域,尤其涉及一种磁盘阵列RAID重建方法及装置,用以解决现有技术中存在的当既需要新硬盘重建,又需要大量读或写数据操作时,新硬盘重建速度非常慢而导致系统可靠性降低的技术问题,包括:确定RAID中需要进行操作的条带以及确定RAID中重建盘在条带中对应的重建块,若确定所述条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据条带在RAID中其他硬盘上的正常块对应的数据,确定实际写入的数据,然后将确定的所述实际写入的数据写入到所述条带中。该方法,在对RAID中的条带进行数据操作的同时,就可完成对该条带中重建盘的重建,因而节约了重建盘的重建时间,提高了系统的可靠性。

Description

一种磁盘阵列RAID重建方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种磁盘阵列RAID重建方法及装置。
背景技术
RAID(RedundantArraysofIndependentDisks,磁盘阵列)表示“独立磁盘构成的具有冗余能力的阵列”,Stripe(条带)是把连续的数据分割成相同大小的数据块,把每段数据块分别写入到RAID中的不同磁盘上的方法。
当RAID中的硬盘损坏时,则需要更换新的硬盘,当更换硬盘后需要对新的硬盘中的数据块进行重建,在新硬盘进行数据重建的过程中,可能又需要对磁盘阵列进行写数据或读数据操作,因此如何处理新硬盘数据重建与对磁盘阵列进行写数据或读数据操作之间的关系,成为了一个很重要的技术问题。
现有技术中,当对新硬盘进行数据重建时,若有对磁盘阵列进行写数据或读数据操作,一般会给与读或写数据操作更高的优先级,因此会先处理读或写数据操作,等系统资源空闲时再进行新硬盘的重建,因而导致新硬盘的重建的速度非常慢,尤其是在有大量数据进行读出或者写入的场景下,例如监控视频存储,新硬盘重建的速度更是下降的非常厉害,新硬盘的重建时间非常长,因而导致RAID系统的数据无法得到及时更新,降低了重建速度,以及降低了系统的可靠性。
综上所述,现有技术中存在当既需要新硬盘的重建,又需要大量的读出数据或者写入数据操作时,新硬盘重建速度非常慢而导致系统可靠性降低的问题。
发明内容
本申请提供一种磁盘阵列RAID重建方法及装置,用以解决现有技术中存在的当既需要新硬盘的重建,又需要大量的读出数据或者写入数据操作时,新硬盘重建速度非常慢而导致系统可靠性降低的技术问题。
一方面,本申请实施例提供一种磁盘阵列RAID重建方法,包括:
在确定需要对RAID中的条带进行写入操作或读出操作后,若所述条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;
将确定的所述实际写入的数据写入到所述条带中。
可选地,需要对RAID中的条带进行写入操作且写入操作为满写操作;
所述根据需要进行操作的条带对应的数据,确定实际写入的数据,包括:
根据需要写入所述条带的数据,确定所述条带中校验块对应的数据;
将所述校验块对应的数据以及需要写入所述条带的数据,确定为实际写入的数据。
可选地,需要对RAID中的条带进行写入操作且写入操作为非满写操作;
所述根据需要进行操作的条带对应的数据和根据所述条带在所述RAID中正常块对应的数据,包括:
根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据。
可选地,所述根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据,包括:
若所述条带包括的重建块为校验块,则确定所述条带上的第一覆盖数据,所述第一覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第一覆盖数据,确定所述条带上的第一目标数据,其中,所述第一目标数据为所述RAID中正常块对应的数据除所述第一覆盖数据之外的所有数据;
根据需要写入所述条带的数据及所述第一目标数据,确定所述重建块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据,包括:
将所述重建块对应的数据以及所述需要写入所述条带的数据确定为实际写入的数据。
可选地,所述根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据,包括:
若所述条带包括的重建块为数据块,则根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
根据所述非满写操作,确定所述条带上的第二覆盖数据,所述第二覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第二覆盖数据,确定所述条带上的第二目标数据,其中,所述第二目标数据为所述RAID中正常块对应的数据除所述第二覆盖数据和校验块数据之外的所有数据;
根据需要写入所述条带的数据,所述第二目标数据及所述重建块对应的数据,确定所述校验块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据,包括:
将所述重建块对应的数据,所述校验块对应的数据以及需要写入所述条带的数据确定为实际写入的数据。
可选地,所述操作为读出操作;
所述根据所述条带在所述RAID中其他硬盘上的正常块对应的数据,确定实际写入的数据,包括:
根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,其中所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
将所述重建块对应的数据确定为实际写入的数据;
可选地,根据下列方式确定所述条带的状态:
根据所述需要进行操作的条带在位图中对应的位的数值,确定所述条带的状态;
其中,所述位图中的一位对应一个条带的状态。
可选地,将确定的所述实际写入的数据写入到所述条带中之后,还包括:
将所述条带在所述位图中对应的位的状态设置为已重建。
另一方面,本申请实施例提供的一种磁盘阵列RAID重建装置,包括:
确定单元,用于在确定需要对RAID中的条带进行写入操作或读出操作后,若所述条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;
写入单元,用于将确定的所述实际写入的数据写入到所述条带中。
可选地,需要对RAID中的条带进行写入操作且写入操作为满写操作;
所述确定单元,具体用于:
根据需要写入所述条带的数据,确定所述条带中校验块对应的数据;
将所述校验块对应的数据以及需要写入所述条带的数据,确定为实际写入的数据。
可选地,需要对RAID中的条带进行写入操作且写入操作为非满写操作;
所述确定单元,还用于:
根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据。
可选地,所述确定单元,还用于:
若所述条带包括的重建块为校验块,则确定所述条带上的第一覆盖数据,所述第一覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第一覆盖数据,确定所述条带上的第一目标数据,其中,所述第一目标数据为所述RAID中正常块对应的数据除所述第一覆盖数据之外的所有数据;
根据需要写入所述条带的数据及所述第一目标数据,确定所述重建块对应的数据;
将所述重建块对应的数据以及所述需要写入所述条带的数据确定为实际写入的数据。
可选地,所述确定单元,还用于:
若所述条带包括的重建块为数据块,则根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
根据所述非满写操作,确定所述条带上的第二覆盖数据,所述第二覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第二覆盖数据,确定所述条带上的第二目标数据,其中,所述第二目标数据为所述RAID中正常块对应的数据除所述第二覆盖数据和校验块数据之外的所有数据;
根据需要写入所述条带的数据,所述第二目标数据及所述重建块对应的数据,确定所述校验块对应的数据;
将所述重建块对应的数据,所述校验块对应的数据以及需要写入所述条带的数据确定为实际写入的数据。
可选地,需要对RAID中的条带进行写入操作且读出操作;
所述确定单元,还用于:
根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,其中所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
将所述重建块对应的数据确定为实际写入的数据。
可选地,所述确定单元,还用于:
根据所述需要进行操作的条带在位图中对应的位的数值,确定所述条带的状态;
其中,所述位图中的一位对应一个条带的状态。
可选地,所述写入单元,还用于:
将所述条带在所述位图中对应的位的状态设置为已重建。
本申请实施例提供的方法,在确定需要对RAID中的条带进行操作后,若条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据条带在RAID中正常块对应的数据,确定实际写入的数据;将确定的实际写入的数据写入到条带中。该方法在对RAID中的条带进行数据操作的同时,就可完成对该条带中重建盘的重建,因而节约了重建盘的重建时间,提高了系统的可靠性,提高了实际应用能力。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术磁盘阵列中RAID5中条带示意图;
图2为本申请实施例提供的磁盘阵列RAID重建方法流程图;
图3为本申请实施例提供的重建盘替换RAID中硬盘4的示意图;
图4为本申请实施例提供的重建盘替换RAID中硬盘4的示意图;
图5为本申请实施例提供的磁盘阵列RAID重建方法详细流程图;
图6为本申请实施例提供的写入数据过程中磁盘阵列RAID重建方法详细流程图;
图7为本申请实施例提供的读取数据过程中磁盘阵列RAID重建方法详细流程图;
图8为本申请实施例提供的磁盘阵列RAID重建装置示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部份实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本申请实施例提供的方法,在确定需要对RAID中的条带进行操作后,若条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;将确定的实际写入的数据写入到条带中。该方法在对RAID中的条带进行数据操作的同时,就可完成对该条带中重建盘的重建,在后续正常重建过程中,对于在数据操作过程中已经做过重建的重建块,则可以直接跳过,不需要再进行重建,极大地减少了重建数据量,因而节约了重建盘的重建时间,提高了系统的可靠性,提高了实际应用能力。
磁盘阵列RAID是由很多价格较便宜的磁盘组合成的一个容量巨大的磁盘组,利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上,其中,条带是把连续的数据分割成相同大小的块,把每段数据分别写入到阵列中不同磁盘上的方法。
如图1所示,为现有技术磁盘阵列中RAID5中条带示意图。其中磁盘阵列中包含4个硬盘,分别为硬盘1,硬盘2,硬盘3和硬盘4,在一个条带中,分为3个数据块和一个校验块,如图1中的条带1,例如D1_1,D2_1,D3_1是数据块,P1是校验块,其中数据块用来存储数据,校验块用来存储同一条带中所有数据块对应的数据的校验值,其中校验块P1中存储的校验值是由数据块D1_1,D2_1,D3_1通过“异或运算”得到的,因而在一个条带中,任一个块(包括数据块和校验块)中的数据丢失或者损坏,都可以通过该条带中其它的块中的数据来恢复该块中的数据。
需要说明的是,本申请实施例提供的方法是以RAID5作为示例进行说明的,但本申请实施例提供的方法不限于RAID5,任何存在冗余磁盘的RAID级别,只要是适用于本申请实施例提供的方法即可,例如RAID6、RAID1、RAID10、RAID4、纠删码EC(Erasurecode,纠删码)等。
下面结合说明书附图对本申请实施例作进一步详细描述。
如图2所示,本申请实施例提供的磁盘阵列RAID重建方法,包括:
步骤201、在确定需要对RAID中的条带进行写入操作或读出操作后,若条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据条带在RAID中正常块对应的数据,确定实际写入的数据;
步骤202、将确定的所述实际写入的数据写入到所述条带中。
其中,条带的状态为未重建指的是该条带中有一个重建盘,并且该重建盘对应的重建块还未被重建。重建盘是指替代RAID中某块失效盘的硬盘,例如,如图1所示,如果硬盘4失效了,使用一块新的硬盘来替换硬盘4,则新的硬盘成为硬盘4的重建盘,相应的,重建盘中的块称之为重建块,重建块为数据块或者校验块。
步骤201中,在确定需要对RAID中的条带进行操作后,若条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据条带在RAID中正常块对应的数据,确定实际写入的数据。例如,需要对条带2中的某些或者全部数据块进行写入数据操作,则确定RAID中需要进行操作的条带为条带2,以及确定RAID中重建盘在所述条带中对应的重建块为重建盘在条带2上的块。
如果确定该条带未重建,则根据需要进行操作的条带对应的数据和/或根据条带在RAID中其他硬盘上的正常块对应的数据,确定实际写入的数据,例如,如图1所示,若确定需要对条带2中的硬盘1和硬盘2分别进行写数据操作,需要写入的新数据分别为D1_2_new,D2_2_new,重建盘用于替换失效的硬盘4,重建块为重建盘在条带2上的块,条带在RAID中其他硬盘上的正常块对应的数据分别为D1_2,D2_2,P,则根据D1_2_new,D2_2_new,和/或,根据D1_2,D2_2,P来确定实际需要写入条带2的数据。
此处,需要说明的是,本申请实施例中需要写入的数据以及实际写入的数据都是针对一个条带进行说明的,而实际应用中,需要写入的数据和实际写入的数据只在一个条带中,也有可能是针对多个条带需要写入,如果是针对多个条带需要写入数据,则可以将针对多个条带写入的数据进行一个条带一个条带的来处理,即使用本申请实施例提供的针对一个条带进行数据操作处理的方法,来确定实际需要写入条带的数据,对此,后续不再特意说明。
步骤202中,在确定了实际需要写入的数据之后,将确定的实际需要写入的数据写入到条带中。其中,当某个块中原来有数据并且已经写满时,则对该块进行覆盖写,例如,图1中数据块D1_2处已经写满了数据,此时若对数据块D1_2写入新的数据D1_2_new,则数据D1_2_new将会覆盖数据块D1_2中的原数据。
本申请实施例提供的方法,在确定需要对RAID中的条带进行操作后,若条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;将确定的实际写入的数据写入到条带中。该方法在对RAID中的条带进行数据操作的同时,就可完成对该条带中重建盘的重建,在后续正常重建过程中,对于在数据操作过程中已经做过重建的重建块,则可以直接跳过,不需要再进行重建,极大地减少了重建数据量,因而节约了重建盘的重建时间,提高了系统的可靠性,提高了实际应用能力。
具体地,在步骤201中,对条带进行的操作分为写入数据操作和读出数据操作,针对一个条带,满写操作是指对条带中的数据块进行写入数据操作,并且对数据块写入数据的大小总和等于条带中所有数据块的大小总和;非满写操作是指对条带中的数据块进行写入数据操作,并且对数据块写入数据的大小总和小于条带中所有数据块的大小总和;读数据操作是指对条带中的数据块进行读出数据的操作。
例如,参照图1,硬盘4为失效硬盘,使用新的硬盘替换硬盘4,然后需要对新硬盘中的数据进行重建,当需要对条带5中的数据块进行写入数据操作时,如果需要写入数据的块为D1_5,D2_5,D3_5,并且写入的数据总大小等于数据块D1_5,D2_5,D3_5的大小之和,则该写入数据操作为满写操作;
如果对只对D1_5,D2_5进行写入数据操作,则为非满写操作,或者对D1_5,D2_5,D3_5进行写入数据操作,但其中对D1_5写入的数据等于数据块D1_5的大小,对D2_5写入的数据等于数据块D2_5的大小,对D3_5写入的数据小于数据块D3_5的大小,则该写入数据操作也为非满写操作。
下面根据数据操作类型以及根据重建块的类型,来对本申请实施例提供的磁盘阵列RAID重建方法进行说明。
其中数据操作类型分为满写操作、非满写操作和读数据操作,重建块的类型分为数据块和校验块。
情形一、操作类型为满写操作
可选地,需要对RAID中的条带进行写入操作且写入操作为满写操作;
所述根据需要进行操作的条带对应的数据,确定实际写入的数据,包括:
根据需要写入所述条带的数据,确定所述条带中校验块对应的数据;
将所述校验块对应的数据以及需要写入所述条带的数据,确定为实际写入的数据。
上述方法,当操作类型为满写操作,可根据需要写入条带的数据,确定条带中校验块对应的数据。
如图1所示,例如硬盘4为失效盘,针对条带1,满写操作指的是对数据块D1_1,D2_1,D3_1进行数据满写,写入的新数据分别为D1_1_new,D2_1_new,D3_1_new,此时可根据D1_1_new,D2_1_new,D3_1_new确定条带中校验块对应的数据,即确定重建块P1的数据P1_new,然后根据P1_new及D1_1_new,D2_1_new,D3_1_new确定实际写入的数据。
再比如,硬盘4为失效盘,针对条带2,满写操作指的是对数据块D1_2,D2_2,D4_2进行数据满写,写入的新数据分别为D1_2_new,D2_2_new,D4_2_new,此时可根据D1_2_new,D2_2_new,D4_2_new确定条带中的校验块对应的数据,即确定校验块P3的数据P3_new,然后根据P3_new以及D1_2_new,D2_2_new,D4_2_new确定实际写入的数据。
具体地,若所述条带包括的重建块为校验块,则根据需要写入所述条带的数据,确定所述重建块对应的数据;或
若所述条带包括的重建块为数据块,则根据需要写入所述条带的数据,确定所述条带中校验块对应的数据;
将所述校验块对应的数据以及需要写入所述条带的数据确定为实际写入的数据。
参照图3,为本申请实施例提供的重建盘替换RAID中硬盘4的示意图。其中,硬盘4为失效盘,使用新的硬盘替换硬盘4,新硬盘成为重建盘,重建盘中的每个块称为重建块。重建块为数据块或者校验块。
上述方法,当操作类型为满写操作,重建块为校验块,则需要进行操作的条带对应的数据为需要写入的数据。
参考图3,对条带5进行满写操作,其中对条带5中的数据块D1_5,D2_5,D3_5需要写入的数据分别为D1_5_new,D2_5_new,D3_5_new,在情形一中,原硬盘4在条带5中的失效块为校验块,并且满写操作需要对条带5中的所有数据块的数据进行覆盖写入,即用新的数据D1_5_new,D2_5_new,D3_5_new覆盖数据块D1_5,D2_5,D3_5中的原有数据,因此只需要根据新数据D1_5_new,D2_5_new,D3_5_new进行异或运算,计算出新的校验值P5_new=D1_5_new异或D2_5_new异或D3_5_new,则重建块P5’中需要写入的新校验值为P5_new。
然后将重建块对应的数据以及需要写入的数据确定为实际写入的数据,即确定实际需要写入条带5中的数据为P5_new,D1_5_new,D2_5_new,D3_5_new。
接下来将确定的实际写入的数据写入到条带5中,具体地,将P5_new写入重建块P5‘中,将D1_5_new,D2_5_new,D3_5_new分别写入条带5中的数据块D1_5,D2_5,D3_5中,其中,数据块D1_5,D2_5,D3_5中的原有数据被新的数据D1_5_new,D2_5_new,D3_5_new完全覆盖。
因而上述方法,当对条带的操作类型为满写操作,重建块为校验块的情形下,可实现在对条带进行写入数据的同时,对该条带进行的时失效块进行重建,因而节约了重建的时间,提高了系统的可靠性。
上述方法,当操作类型为满写操作,重建块为数据块,则需要进行操作的条带对应的数据为需要写入的数据。
参考图3,对条带6进行满写操作,其中对条带6中的数据块D1_6,D2_6,D4_6’需要写入的数据分别为D1_6_new,D2_6_new,D4_6_new,其中数据块D4_6’为重建盘中的重建块,此时,重建块D4_6’中的原数据还没有得到恢复,情形二中又需要对重建块D4_6’写入新的数据,在情形二中,原硬盘4在条带6中的失效块为数据块,即为重建块D4_6’,并且满写操作需要对条带6中的所有数据块的数据进行覆盖写入,即用新的数据D1_6_new,D2_6_new,D4_6_new覆盖数据块D1_6,D2_6和重建块D4_6’中的原有数据,由于重建块D4_6’会被新的数据D4_6_new覆盖写,因此此时不需要对重建块D4_6’的原有数据进行恢复,而只需要直接新的数据D4_6_new写入重建块D4_6’中即可。
由于写入新数据之后需要重新计算条带6中的校验值,即需要重新计算校验块P6的校验值,即P6_new=D1_6_new异或D2_6_new异或D4_6_new,则校验块P6的新的校验值为P6_new。
然后将校验块对应的数据以及需要写入的数据确定为实际写入的数据,即确定实际需要写入条带6中的数据为P6_new,D1_6_new,D2_6_new,D4_6_new。
将所述校验块对应的数据写入所述条带中的校验块,将需要写入所述条带的数据写入对应的所述条带中的数据块;
接下来将确定的实际写入的数据写入到条带6中,具体地,将P6_new写入校验块P6中,将D1_6_new,D2_6_new,D4_6_new分别写入条带6中的数据块D1_6,D2_6和重建块D4_6’中,其中,数据块D1_6,D2_6中的原有数据被新的数据D1_6_new,D2_6_new完全覆盖,校验块P6中的校验值被新的校验值P6_new覆盖,重建块D4_6’则是直接被写入新的数据D4_6_new,并且不需要对重建块中的原有数据进行恢复。
因而上述方法,当对条带的操作类型为满写操作,重建块为数据块的情形下,可实现在对条带进行写入数据的同时,对该条带失效块进行重建,因而节约了重建的时间,提高了系统的可靠性。
情形二、操作类型为非满写操作
可选地,所述根据需要进行操作的条带对应的数据和根据所述条带在所述RAID中正常块对应的数据,包括:
根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据。
上述方法,当操作类型为非满写操作,可根据需要写入条带的数据和条带在RAID中正常块对应的数据,确定条带中校验块对应的数据。
如图4所示,为本申请实施例提供的重建盘替换RAID中硬盘4的示意图,硬盘4为失效盘,使用新的硬盘替换硬盘4,新硬盘成为重建盘,重建盘中的每个块称为重建块,重建块为数据块或者校验块。针对条带5,非满写操作指的是对数据块D2_5_2,D3_5_1进行数据写入,写入的新数据分别为D2_5_2_new,D3_5_1_new,此时可根据D2_5_2_new,D3_5_1_new及D1_5,D2_5,D3_5来确定校验块对应的数据,即P5’对应的数据P5_new,然后根据P5_new以及D2_5_2_new,D3_5_1_new确定实际写入的数据。
由于重建块可以是数据块也可以是校验块,因此可分为两种情况来说明:
情形A、操作类型为非满写操作,重建块为校验块
所述根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据,包括:
若所述条带包括的重建块为校验块,则确定所述条带上的第一覆盖数据,所述第一覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第一覆盖数据,确定所述条带上的第一目标数据,其中,所述第一目标数据为所述RAID中正常块对应的数据除所述第一覆盖数据之外的所有数据;
根据需要写入所述条带的数据及所述第一目标数据,确定所述重建块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据,包括:
将所述重建块对应的数据以及所述需要写入所述条带的数据确定为实际写入的数据。
上述方法为针对非满写且重建块是校验块的情形下的实际写入数据的确定方法,其中需要进行操作的条带对应的数据为需要写入的数据,其中,RAID中正常块对应的数据为目标硬盘对应的数据,目标硬盘为RAID中除重建盘之外的所有硬盘。
因此上述方法中,第一目标数据为所述RAID中正常块对应的数据除所述第一覆盖数据之外的所有数据,也可以表述为,第一目标数据为所述条带上目标硬盘中除所述第一覆盖数据之外的所有数据,所述目标硬盘为RAID中除重建盘之外的所有硬盘。
参考图4,为本申请实施例提供的对条带5进行非满写操作,假设需要对条带5中的数据块D2_5的后半部分D2_5_2和数据块D3_5的前半部分D3_5_1进行数据写入操作,其中,数据块D2_5包含前半部分D2_5_1和后半部分D2_5_2,数据块D3_5包含前半部分D3_5_1和后半部分D3_5_2,并且将要写入到D2_5_2的数据为D2_5_2_new,将要写入到D3_5_1的数据为D3_5_1_new。
由于校验块P_5’为重建盘中的重建块,因而在写入新的数据之前需要计算校验块的最新校验值,首先确定条带5上的第一覆盖数据,第一覆盖数据为条带上与非满写操作对应的位置上的数据,即第一覆盖数据为D2_5_2和D3_5_1中对应的数据。
然后根据第一覆盖数据,确定条带上的第一目标数据,其中,第一目标数据为条带上目标硬盘中除第一覆盖数据之外的所有数据,目标硬盘为RAID中除重建盘之外的所有硬盘,由于目标硬盘为硬盘1,硬盘2,硬盘3,因此第一目标数据为D1_5,D2_5_1以及D3_5_2对应的数据。
然后根据需要写入的数据及第一目标数据,确定重建块对应的数据,即根据D2_5_2_new,D3_5_1_new以及D1_5,D2_5_1,D3_5_2,确定重建块对应数据,即确定校验块P5’对应的最新校验值P5_new,其中P5_new=D1_5异或(D2_5_1+D2_5_2_new)异或(D3_5_1_new+D3_5_2)。
然后将重建块对应的数据以及需要写入的数据确定为实际写入的数据,即确定实际需要写入条带5中的数据为P5_new,D2_5_2_new,D3_5_1_new。
接下来将确定的实际写入的数据写入到条带5中,具体地,将P5_new写入重建块P5’中,将D2_5_2_new写入条带5中的数据块D2_5的后半部分D2_5_2中,将D3_5_1_new写入条带5中的数据块D3_5的前半部分D3_5_1中。其中,D2_5_2中的原有数据被新的数据D2_5_2_new完全覆盖;D3_5_1中的原有数据被新的数据D3_5_1_new完全覆盖。
因而上述方法,当对条带的操作类型为非满写操作,重建块为校验块的情形下,可实现在对条带进行写入数据的同时,对该条带失效块进行重建,因而节约了重建的时间,提高了系统的可靠性。
情形B、操作类型为非满写操作,重建块为数据块
所述根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据,包括:
若所述条带包括的重建块为数据块,则根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
根据所述非满写操作,确定所述条带上的第二覆盖数据,所述第二覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第二覆盖数据,确定所述条带上的第二目标数据,其中,所述第二目标数据为所述RAID中正常块对应的数据除所述第二覆盖数据和校验块数据之外的所有数据;
根据需要写入所述条带的数据,所述第二目标数据及所述重建块对应的数据,确定所述校验块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据,包括:
将所述重建块对应的数据,所述校验块对应的数据以及需要写入所述条带的数据确定为实际写入的数据。
上述方法为针对非满写且重建块是数据块的情形下的实际写入数据的确定方法,其中需要进行操作的条带对应的数据为需要写入的数据,其中,RAID中正常块对应的数据为目标硬盘对应的数据,目标硬盘为RAID中除重建盘之外的所有硬盘。
因此上述方法中,第二目标数据为所述RAID中正常块对应的数据除所述第二覆盖数据和校验块数据之外的所有数据,也可以表述为,所述第二目标数据为所述条带上的所述目标硬盘中除所述第二覆盖数据和校验块数据之外的所有数据,所述目标硬盘为RAID中除重建盘之外的所有硬盘。
上述方法,操作类型为非满写操作,重建块为数据块,参考图4,对条带6进行非满写操作,假设需要对条带6中的数据块D1_6的后半部分D1_6_2和数据块D2_6的前半部分D2_6_1进行数据写入操作,其中,数据块D1_6包含前半部分D1_6_1和后半部分D1_6_2,数据块D2_6包含前半部分D2_6_1和后半部分D2_6_2,并且将要写入到D1_6_2的数据为D1_6_2_new,将要写入到D2_6_1的数据为D2_6_1_new。
由于重建盘中的重建块为数据块D4_6’,因而在写入新的数据之前需要先计算重建块中的原始数据。根据条带上目标硬盘对应的数据,确定重建块对应的数据,目标硬盘为RAID中除重建盘之外的所有硬盘,即目标硬盘为硬盘1,硬盘2,硬盘3,条带上目标硬盘对应的数据为数据块D1_6,数据块D2_6和校验块P6对应数据,因而数据块D4_6’对应的原始数据为D4_6=D1_6异或D2_6异或P6。
然后确定条带6上的第二覆盖数据,第二覆盖数据为条带上与非满写操作对应的位置上的数据,即第二覆盖数据为数据块D1_6_2和D2_6_1对应的数据。
然后根据第二覆盖数据,确定条带6上的第二目标数据,其中,第二目标数据为条带上的目标硬盘中除第二覆盖数据和校验块数据之外的所有数据,即第二目标数据为D1_6_1和D2_6_2对应的数据。
然后根据需要写入的数据,第二目标数据及重建块对应的数据,确定校验块对应的数据,即根据D1_6_2_new,D2_6_1_new,D1_6_1对应的数据,D2_6_2对应的数据以及D4_6,确定校验块P6对应的最新的校验值P6_new,即P6_new=(D1_6_1+D1_6_2_new)异或(D2_6_1_new+D2_6_2)异或D4_6。
然后将重建块对应的数据,校验块对应的数据以及需要写入的数据确定为实际写入的数据,即确定实际写入的数据为D4_6,P6_new,D1_6_2_new,D2_6_1_new。
接下来将确定的实际写入的数据写入到条带6中,具体地,将D4_6写入重建块D4_6’中,将P6_new写入条带6中的校验块P6中,将D1_6_2_new写入条带6中的数据块D1_6的前半部分D1_6_2中,将D2_6_1_new写入条带6中的数据块D2_6的前半部分D2_6_1中。其中,D1_6_2中的原有数据被新的数据D1_6_2_new完全覆盖;D2_6_1中的原有数据被新的数据D2_6_1_new完全覆盖。
因而上述方法,当对条带的操作类型为非满写操作,重建块为数据块的情形下,可实现在对条带进行写入数据的同时,对该条带的失效块进行重建,因而节约了重建的时间,提高了系统的可靠性。
情形三、操作类型为读数据操作
所述根据所述条带在所述RAID中其他硬盘上的正常块对应的数据,确定实际写入的数据,包括:
根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,其中所述目标硬盘为RAID中除重建盘之外的所有硬盘;
将所述重建块对应的数据确定为实际写入的数据;
所述将确定的所述实际写入的数据写入到所述条带中,包括:
将所述重建块对应的数据写入所述条带中的重建块。
上述方法中,由于是在对条带进行读数据操作的同时进行重建操作的,因此并没有对条带写入新的数据,只需要对重建盘中的重建块进行恢复数据即可,不管重建块是数据块还是校验块,恢复数据的方式是相同的。
具体地,以图3中的条带5为例,重建块为校验块P5’,因此首先根据条带上目标硬盘对应的数据,确定重建块对应的数据,其中目标硬盘为RAID中除重建盘之外的所有硬盘,即根据数据块D1_5,D2_5,D3_5确定重建块P5’的原数据P5_new,其中P5_new=D1_5异或D2_5异或D3_5,因而确定实际写入的数据为重建块对应的数据P5_new,接着将P5_new写入到重建块P5’即可。
因而上述方法,当对条带的操作类型为读数据操作,可实现在对条带进行读数据的同时,对该条带的失效块进行重建,因而节约了重建的时间,提高了系统的可靠性。
另外,在上述情形三中,在确定RAID中需要进行操作的条带以及确定RAID中重建盘在所述条带中对应的重建块之后,根据所述条带在所述RAID中其他硬盘上的正常块对应的数据,确定实际写入的数据之前,还包括:
读出所述条带上所述目标硬盘对应的所有数据。
上述方法,可实现在对条带进行读数据的同时,对该条带的失效块进行重建,因而节约了重建的时间,提高了对重建盘进行重建的速度,提高了系统的可靠性。
可选的,步骤201中,在确定实际写入的数据之前,还需要确定进行读/写数据操作的条带的状态,若条带的状态为已重建,则此次读/写数据操作只需要正常的读或者写,无需进行重建的过程;若确定需要进行读/写数据操作的条带的状态为未重建,则此次读/写数据操作除了需要正常的读或者写数据之外,还要对失效盘的失效块进行重建。
可选的,可根据下列方式确定所述条带的状态:
根据所述需要进行操作的条带在位图中对应的位的数值,确定所述条带的状态;
其中,所述位图中的一位对应一个条带的状态。
上述方法,用位图来表示RAID中的条带的状态,其中,位图中的一位对应一个条带的状态,例如,可以用0来表示条带的状态为未重建,1表示条带的状态为已重建,因此初始状态下,位图中的每一位都设置为0,表示所有条带的初始状态都为未重建,即每个条带中的重建块都没有被重建,当某个条带完成重建之后,就将该条带在位图中对应的位的状态设置为1,即表示将该条带的状态设置为已重建。
具体地,在上述情形一至情形三中,将确定的实际写入的数据写入到条带中之后,还包括:将条带在位图中对应的位的状态设置为已重建。
因而使用位图,可以记录每个条带的重建状态,因而可以保证对于重建盘中的每个重建块只重建一次,保证了重建的正确性和提高了系统性能。
例如,位图可以是图4中的结构,其中位图中的一位对应RAID中一个条带的状态,其中,条带的状态也就是重建块的状态,使用0表示条带的状态为“未重建”,即条带中的重建块的状态为“未重建”,使用1表示条带的状态为“已重建”,即条带中的重建块的状态为“已重建”,初始状态下,位图中的所有位为0,表明初始状态下,条带都处于“未重建状态”,即所有的重建块都处于“未重建”状态。
本申请实施例提供的方法,在确定需要对RAID中的条带进行操作后,若条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;将确定的实际写入的数据写入到条带中。该方法在对RAID中的条带进行数据操作的同时,就可完成对该条带中重建盘的重建,在后续正常重建过程中,对于在数据操作过程中已经做过重建的重建块,则可以直接跳过,不需要再进行重建,极大地减少了重建数据量,因而节约了重建盘的重建时间,提高了系统的可靠性,提高了实际应用能力。
下面对本申请实施例磁盘阵列RAID重建方法做详细描述,参考图5,为本申请实施例提供的磁盘阵列RAID重建方法详细流程图。
步骤501、初始化位图中的所有位的状态为未重建,其中,位图中的一位对应RAID中的一个条带的状态;
该步骤将所有的重建块对应的状态全都设置为未重建。
步骤502、判断此时是否有对RAID中的条带进行写入数据的操作,如果有,则转到步骤503;若没有,则转到步骤504;
步骤503、确定需要优先处理写数据操作,则转到步骤601~607,进行写数据以及重建条带的操作;
该步骤在确定有需要写入数据的操作,则使用写入数据时进行重建的方法对需要写入数据的条带中的重建块进行重建。
步骤504、判断此时是否有对RAID中的条带进行读出数据的操作,如果有,则转到步骤505;若没有,则转到步骤506;
步骤505、确定需要优先处理读数据操作,则转到步骤701~707,进行读数据以及重建条带的操作;
该步骤在确定有需要读出数据的操作,则使用写入数据时进行重建的方法对需要写入数据的条带中的重建块进行重建。
步骤506、在没有读数据或者写数据的操作需要处理时,则按照正常的流程,对每个条带的状态逐个进行分析;
该步骤如果没有写入数据或者读出数据要处理时,则按照正常的流程,对条带中的每个重建块进行逐个分析,并重建。
步骤507、判断位图中与当前条带对应的位的状态是否为“已重建”,若是,则转到步骤508,否则转到509。
该步骤对于已经重建的条带,则直接跳过。
步骤508、由于当前条带对应的位的状态为“已重建”,因此直接跳过,转到步骤510。
步骤509、由于当前条带对应的位的状态为“未重建”,则对该当前条带进行重建;
对于未重建的条带,则按照正常流程进行重建。
步骤510、判断所有的条带是否都重建完成,若是则结束流程,否则转到步骤502中,继续流程。
如果所有条带都重建完成,则结束,否则继续对未重建的条带进行重建。
上述步骤501、步骤506~510为正常的条带重建的流程,即依次对每个条带中的重建块进行重建,直到所有的条带都重建完成,由于在进行条带的过程中,会有读/写数据的操作,因此当有读/写数据的操作时,则确定是否需要跳转到读数据的步骤601~607或者跳转到写数据的步骤701~707,其中在写数据的步骤601~607中写数据的同时也会完成条带的重建,以及在写数据的步骤701~707中读数据的同时也会完成条带的重建。
因此,上述步骤501~510提供的条带重建方法,在读出数据或者写入数据的操作的同时就可完成条带的重建,因而加速了条带重建的速度,保证了系统的可靠性。
本申请实施例提供的方法,在确定需要对RAID中的条带进行操作后,若条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;将确定的实际写入的数据写入到条带中。该方法在对RAID中的条带进行数据操作的同时,就可完成对该条带中重建盘的重建,在后续正常重建过程中,对于在数据操作过程中已经做过重建的重建块,则可以直接跳过,不需要再进行重建,极大地减少了重建数据量,因而节约了重建盘的重建时间,提高了系统的可靠性,提高了实际应用能力。
下面对本申请实施例读数据过程中磁盘阵列RAID重建方法做详细描述,参考图6,为本申请实施例提供的读数据过程中磁盘阵列RAID重建方法详细流程图。
步骤601、定位到写入数据的条带位置;
步骤602、判断条带的状态是否是“未重建”,若否转到步骤603,若是则转到步骤604;
步骤603、条带已经重建,则按照正常流程进行校验块的计算、写入以及新数据的写入;
步骤604、条带未重建,则确定实际要写入的数据;
步骤605、根据实际要写入的数据对条带中的硬盘进行写入数据的操作;
步骤606、在对条带进行重建后,设置位图中条带对应的位的状态为“已重建”;
步骤607、结束了本次写入数据及重建条带之后,跳转到相应步骤继续执行,在本申请实施例中,跳转到步骤510。
上述方法,针对数据操作为写入数据操作的情形,首先定位到写入数据的条带位置,若条带的状态为“已重建”,则按照正常流程进行校验块的计算、写入以及新数据的写入;若条带的状态为“未重建”,则确定实际要写入的数据,并根据实际要写入的数据对条带中的硬盘进行写入数据的操作,并且在对条带进行重建后,设置位图中条带对应的位的状态为“已重建”。
因而该方法实现了在写入数据的时候,对未重建的重建块进行重建,节约了系统资源,提高了对重建盘进行重建的速度,节约了系统时间,提高了系统效率。
下面对本申请实施例读取数据过程中磁盘阵列RAID重建方法做详细描述,参考图7,为本申请实施例提供的读取数据过程中磁盘阵列RAID重建方法详细流程图。
步骤701、定位到需要读数据的条带位置;
步骤702、判断条带的状态是否是“未重建”,若否转到步骤703,若是则转到步骤704;
步骤703、条带已经重建,则按照正常流程进行数据读取;
步骤704、读取该条带上所有正常的数据;
步骤705、根据读取的条带上所有正常的数据,计算出重建块对应的数据,并写入都硬盘中的重建块中;
步骤706、在对条带进行重建后,设置位图中条带对应的位的状态为“已重建”;
步骤707、结束了本次写入数据及重建条带之后,跳转到相应步骤继续执行,在本申请实施例中,跳转到步骤510。
上述方法,针对数据操作为读出数据操作的情形,首先定位到读数据的条带位置,若条带的状态为“已重建”,则按照正常流程进行数据读取;若条带的状态为“未重建”,则据读取的条带上所有正常的数据,计算出重建块对应的数据,并写入都硬盘中的重建块中,并且在对条带进行重建后,设置位图中条带对应的位的状态为“已重建”。
因而该方法实现了在读取数据的时候,对未重建的重建块进行重建,节约了系统资源,提高了系统效率。
基于相同的技术构思,本申请实施例还提供一种磁盘阵列RAID重建设备。本申请实施例提供的磁盘阵列RAID重建设备如图8所示。
确定单元801,用于在确定需要对RAID中的条带进行写入操作或读出操作后,若所述条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;
写入单元802,用于将确定的所述实际写入的数据写入到所述条带中。
可选地,需要对RAID中的条带进行写入操作且写入操作为满写操作;
所述确定单元801,具体用于:
根据需要写入所述条带的数据,确定所述条带中校验块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据。
可选地,需要对RAID中的条带进行写入操作且写入操作为非满写操作;
所述确定单元801,还用于:
根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据。
可选地,所述确定单元801,还用于:
若所述条带包括的重建块为校验块,则确定所述条带上的第一覆盖数据,所述第一覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第一覆盖数据,确定所述条带上的第一目标数据,其中,所述第一目标数据为所述RAID中正常块对应的数据除所述第一覆盖数据之外的所有数据;
根据需要写入所述条带的数据及所述第一目标数据,确定所述重建块对应的数据;
将所述重建块对应的数据以及所述需要写入所述条带的数据确定为实际写入的数据。
可选地,所述确定单元801,还用于:
若所述条带包括的重建块为数据块,则根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
根据所述非满写操作,确定所述条带上的第二覆盖数据,所述第二覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第二覆盖数据,确定所述条带上的第二目标数据,其中,所述第二目标数据为所述RAID中正常块对应的数据除所述第二覆盖数据和校验块数据之外的所有数据;
根据需要写入所述条带的数据,所述第二目标数据及所述重建块对应的数据,确定所述校验块对应的数据;
将所述重建块对应的数据,所述校验块对应的数据以及需要写入所述条带的数据确定为实际写入的数据。
可选地,需要对RAID中的条带进行写入操作且读出操作;
所述确定单元801,还用于:
根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,其中所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
将所述重建块对应的数据确定为实际写入的数据。
可选地,所述确定单元801,还用于:
根据所述需要进行操作的条带在位图中对应的位的数值,确定所述条带的状态;
其中,所述位图中的一位对应一个条带的状态。
可选地,所述写入单元802,还用于:
将所述条带在所述位图中对应的位的状态设置为已重建。
本申请实施例提供的方法,在确定需要对RAID中的条带进行操作后,若条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;将确定的实际写入的数据写入到条带中。该方法在对RAID中的条带进行数据操作的同时,就可完成对该条带中重建盘的重建,在后续正常重建过程中,对于在数据操作过程中已经做过重建的重建块,则可以直接跳过,不需要再进行重建,极大地减少了重建数据量,因而节约了重建盘的重建时间,提高了系统的可靠性,提高了实际应用能力。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (16)

1.一种磁盘阵列RAID重建方法,其特征在于,包括:
在确定需要对RAID中的条带进行写入操作或读出操作后,若所述条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;
将确定的所述实际写入的数据写入到所述条带中。
2.如权利要求1所述的方法,其特征在于,需要对RAID中的条带进行写入操作且写入操作为满写操作;
所述根据需要进行操作的条带对应的数据,确定实际写入的数据,包括:
根据需要写入所述条带的数据,确定所述条带中校验块对应的数据;
将所述校验块对应的数据以及需要写入所述条带的数据,确定为实际写入的数据。
3.如权利要求1所述的方法,其特征在于,需要对RAID中的条带进行写入操作且写入操作为非满写操作;
所述根据需要进行操作的条带对应的数据和根据所述条带在所述RAID中正常块对应的数据,包括:
根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据。
4.如权利要求3所述的方法,其特征在于,所述根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据,包括:
若所述条带包括的重建块为校验块,则确定所述条带上的第一覆盖数据,所述第一覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第一覆盖数据,确定所述条带上的第一目标数据,其中,所述第一目标数据为所述RAID中正常块对应的数据除所述第一覆盖数据之外的所有数据;
根据需要写入所述条带的数据及所述第一目标数据,确定所述重建块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据,包括:
将所述重建块对应的数据以及所述需要写入所述条带的数据确定为实际写入的数据。
5.如权利要求3所述的方法,其特征在于,所述根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据,包括:
若所述条带包括的重建块为数据块,则根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
根据所述非满写操作,确定所述条带上的第二覆盖数据,所述第二覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第二覆盖数据,确定所述条带上的第二目标数据,其中,所述第二目标数据为所述RAID中正常块对应的数据除所述第二覆盖数据和校验块数据之外的所有数据;
根据需要写入所述条带的数据,所述第二目标数据及所述重建块对应的数据,确定所述校验块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据,包括:
将所述重建块对应的数据,所述校验块对应的数据以及需要写入所述条带的数据确定为实际写入的数据。
6.如权利要求1所述的方法,其特征在于,所述操作为读出操作;
所述根据所述条带在所述RAID中其他硬盘上的正常块对应的数据,确定实际写入的数据,包括:
根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,其中所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
将所述重建块对应的数据确定为实际写入的数据。
7.如权利要求1-6任一所述的方法,其特征在于,根据下列方式确定所述条带的状态:
根据所述需要进行操作的条带在位图中对应的位的数值,确定所述条带的状态;
其中,所述位图中的一位对应一个条带的状态。
8.如权利要求7所述的方法,其特征在于,将确定的所述实际写入的数据写入到所述条带中之后,还包括:
将所述条带在所述位图中对应的位的状态设置为已重建。
9.一种磁盘阵列RAID重建装置,其特征在于,包括:
确定单元,用于在确定需要对RAID中的条带进行写入操作或读出操作后,若所述条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;
写入单元,用于将确定的所述实际写入的数据写入到所述条带中。
10.如权利要求9所述的装置,其特征在于,需要对RAID中的条带进行写入操作且写入操作为满写操作;
所述确定单元,具体用于:
根据需要写入所述条带的数据,确定所述条带中校验块对应的数据;
将所述校验块对应的数据以及需要写入所述条带的数据,确定为实际写入的数据。
11.如权利要求9所述的装置,其特征在于,需要对RAID中的条带进行写入操作且写入操作为非满写操作;
所述确定单元,还用于:
根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据;
根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据。
12.如权利要求11所述的装置,其特征在于,所述确定单元,还用于:
若所述条带包括的重建块为校验块,则确定所述条带上的第一覆盖数据,所述第一覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第一覆盖数据,确定所述条带上的第一目标数据,其中,所述第一目标数据为所述RAID中正常块对应的数据除所述第一覆盖数据之外的所有数据;
根据需要写入所述条带的数据及所述第一目标数据,确定所述重建块对应的数据;
将所述重建块对应的数据以及所述需要写入所述条带的数据确定为实际写入的数据。
13.如权利要求11所述的装置,其特征在于,所述确定单元,还用于:
若所述条带包括的重建块为数据块,则根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
根据所述非满写操作,确定所述条带上的第二覆盖数据,所述第二覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
根据所述第二覆盖数据,确定所述条带上的第二目标数据,其中,所述第二目标数据为所述RAID中正常块对应的数据除所述第二覆盖数据和校验块数据之外的所有数据;
根据需要写入所述条带的数据,所述第二目标数据及所述重建块对应的数据,确定所述校验块对应的数据;
将所述重建块对应的数据,所述校验块对应的数据以及需要写入所述条带的数据确定为实际写入的数据。
14.如权利要求9所述的装置,其特征在于,需要对RAID中的条带进行写入操作且读出操作;
所述确定单元,还用于:
根据所述条带上目标硬盘对应的数据,确定所述重建块对应的数据,其中所述目标硬盘为RAID中除所述重建块对应的重建盘之外的所有硬盘;
将所述重建块对应的数据确定为实际写入的数据。
15.如权利要求9-14任一所述的装置,其特征在于,所述确定单元,还用于:
根据所述需要进行操作的条带在位图中对应的位的数值,确定所述条带的状态;
其中,所述位图中的一位对应一个条带的状态。
16.如权利要求15所述的装置,其特征在于,所述写入单元,还用于:
将所述条带在所述位图中对应的位的状态设置为已重建。
CN201510796256.2A 2015-11-18 2015-11-18 一种磁盘阵列raid重建方法及装置 Pending CN105302492A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510796256.2A CN105302492A (zh) 2015-11-18 2015-11-18 一种磁盘阵列raid重建方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510796256.2A CN105302492A (zh) 2015-11-18 2015-11-18 一种磁盘阵列raid重建方法及装置

Publications (1)

Publication Number Publication Date
CN105302492A true CN105302492A (zh) 2016-02-03

Family

ID=55199805

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510796256.2A Pending CN105302492A (zh) 2015-11-18 2015-11-18 一种磁盘阵列raid重建方法及装置

Country Status (1)

Country Link
CN (1) CN105302492A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105867841A (zh) * 2016-03-24 2016-08-17 浙江宇视科技有限公司 一种数据重建方法及装置
CN107526531A (zh) * 2016-06-21 2017-12-29 伊姆西公司 为映射独立盘冗余阵列(raid)选择raid级别的方法和设备
WO2018000825A1 (zh) * 2016-06-30 2018-01-04 杭州海康威视数字技术股份有限公司 一种数据处理方法及装置
CN110427279A (zh) * 2019-07-19 2019-11-08 深圳忆联信息系统有限公司 一种恢复写条带的Raid奇偶校验数据的方法及系统
CN111221473A (zh) * 2019-12-30 2020-06-02 河南创新科信息技术有限公司 一种存储系统介质免维护的方法
CN111381997A (zh) * 2018-12-28 2020-07-07 杭州宏杉科技股份有限公司 一种raid重建方法及装置
CN111427516A (zh) * 2020-03-27 2020-07-17 杭州宏杉科技股份有限公司 Raid重建方法及装置
CN116795295A (zh) * 2023-08-16 2023-09-22 苏州浪潮智能科技有限公司 磁盘阵列中的数据处理方法及装置、存储介质、电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101329641A (zh) * 2008-06-11 2008-12-24 华中科技大学 一种磁盘阵列的数据重建方法
CN101833422A (zh) * 2010-03-08 2010-09-15 成都市华为赛门铁克科技有限公司 磁盘阵列的数据处理方法及设备
CN103699336A (zh) * 2013-12-03 2014-04-02 中国科学院计算技术研究所 一种磁盘阵列数据分布与重建方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101329641A (zh) * 2008-06-11 2008-12-24 华中科技大学 一种磁盘阵列的数据重建方法
CN101833422A (zh) * 2010-03-08 2010-09-15 成都市华为赛门铁克科技有限公司 磁盘阵列的数据处理方法及设备
CN103699336A (zh) * 2013-12-03 2014-04-02 中国科学院计算技术研究所 一种磁盘阵列数据分布与重建方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
汤大权: "《信息资源管理技术概论》", 30 November 2009 *
舒星: "磁盘阵列在线重建与RAID5扩容的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105867841B (zh) * 2016-03-24 2019-01-15 浙江宇视科技有限公司 一种数据重建方法及装置
CN105867841A (zh) * 2016-03-24 2016-08-17 浙江宇视科技有限公司 一种数据重建方法及装置
CN107526531A (zh) * 2016-06-21 2017-12-29 伊姆西公司 为映射独立盘冗余阵列(raid)选择raid级别的方法和设备
CN107526531B (zh) * 2016-06-21 2020-01-14 伊姆西公司 为映射独立盘冗余阵列(raid)选择raid级别的方法和设备
WO2018000825A1 (zh) * 2016-06-30 2018-01-04 杭州海康威视数字技术股份有限公司 一种数据处理方法及装置
CN111381997A (zh) * 2018-12-28 2020-07-07 杭州宏杉科技股份有限公司 一种raid重建方法及装置
CN111381997B (zh) * 2018-12-28 2024-03-01 杭州宏杉科技股份有限公司 一种raid重建方法及装置
CN110427279B (zh) * 2019-07-19 2023-02-10 深圳忆联信息系统有限公司 一种恢复写条带的Raid奇偶校验数据的方法及系统
CN110427279A (zh) * 2019-07-19 2019-11-08 深圳忆联信息系统有限公司 一种恢复写条带的Raid奇偶校验数据的方法及系统
CN111221473A (zh) * 2019-12-30 2020-06-02 河南创新科信息技术有限公司 一种存储系统介质免维护的方法
CN111427516A (zh) * 2020-03-27 2020-07-17 杭州宏杉科技股份有限公司 Raid重建方法及装置
CN116795295A (zh) * 2023-08-16 2023-09-22 苏州浪潮智能科技有限公司 磁盘阵列中的数据处理方法及装置、存储介质、电子设备
CN116795295B (zh) * 2023-08-16 2023-11-17 苏州浪潮智能科技有限公司 磁盘阵列中的数据处理方法及装置、存储介质、电子设备

Similar Documents

Publication Publication Date Title
CN105302492A (zh) 一种磁盘阵列raid重建方法及装置
US9417963B2 (en) Enabling efficient recovery from multiple failures together with one latent error in a storage array
US9189311B2 (en) Rebuilding a storage array
US6161192A (en) Raid array data storage system with storage device consistency bits and raidset consistency bits
US5826001A (en) Reconstructing data blocks in a raid array data storage system having storage device metadata and raid set metadata
US9563509B2 (en) Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system
CN104035830B (zh) 一种数据恢复方法和装置
US7831768B2 (en) Method and apparatus for writing data to a disk array
US7392428B2 (en) Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
US8566673B2 (en) Method for improving performance in RAID systems
US7529970B2 (en) System and method for improving the performance of operations requiring parity reads in a storage array system
US8458515B1 (en) Raid5 recovery in a high availability object based file system
US6282671B1 (en) Method and system for improved efficiency of parity calculation in RAID system
US9104604B2 (en) Preventing unrecoverable errors during a disk regeneration in a disk array
US7853823B2 (en) System and method for reconstructing lost data in a storage system
CN102799533B (zh) 一种磁盘损坏扇区屏蔽方法及装置
US20130219214A1 (en) Accelerated rebuild and zero time rebuild in raid systems
US20160342470A1 (en) Separating a hybrid asymmetric mix of a raid 1 mirror and a parity-based raid array
EP0768604A2 (en) Promoting device level error to RAIDset level error to restore redundancy in a RAID array data storage system
CN106557143A (zh) 用于数据存储设备的装置和方法
CN104932835A (zh) 基于纠删码的分布式存储系统的扩容和缩容方法
CN117111860B (zh) 磁盘阵列降级时的io处理方法、装置及电子设备
CN110058961B (zh) 用于管理存储系统的方法和设备
CN104281499A (zh) 基于奇偶校验的raid条带镜像数据分布方法
CN102508747A (zh) 一种加快失效盘恢复的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160203

RJ01 Rejection of invention patent application after publication