一种磁盘阵列raid重建方法及装置的制造方法_4

文档序号:9546878阅读:来源:国知局
ew写入到重建块P5’即可。
[0175]因而上述方法,当对条带的操作类型为读数据操作,可实现在对条带进行读数据的同时,对该条带的失效块进行重建,因而节约了重建的时间,提高了系统的可靠性。
[0176]另外,在上述情形三中,在确定RAID中需要进行操作的条带以及确定RAID中重建盘在所述条带中对应的重建块之后,根据所述条带在所述RAID中其他硬盘上的正常块对应的数据,确定实际写入的数据之前,还包括:
[0177]读出所述条带上所述目标硬盘对应的所有数据。
[0178]上述方法,可实现在对条带进行读数据的同时,对该条带的失效块进行重建,因而节约了重建的时间,提高了对重建盘进行重建的速度,提高了系统的可靠性。
[0179]可选的,步骤201中,在确定实际写入的数据之前,还需要确定进行读/写数据操作的条带的状态,若条带的状态为已重建,则此次读/写数据操作只需要正常的读或者写,无需进行重建的过程;若确定需要进行读/写数据操作的条带的状态为未重建,则此次读/写数据操作除了需要正常的读或者写数据之外,还要对失效盘的失效块进行重建。
[0180]可选的,可根据下列方式确定所述条带的状态:
[0181]根据所述需要进行操作的条带在位图中对应的位的数值,确定所述条带的状态;
[0182]其中,所述位图中的一位对应一个条带的状态。
[0183]上述方法,用位图来表示RAID中的条带的状态,其中,位图中的一位对应一个条带的状态,例如,可以用0来表示条带的状态为未重建,1表示条带的状态为已重建,因此初始状态下,位图中的每一位都设置为0,表示所有条带的初始状态都为未重建,即每个条带中的重建块都没有被重建,当某个条带完成重建之后,就将该条带在位图中对应的位的状态设置为1,即表示将该条带的状态设置为已重建。
[0184]具体地,在上述情形一至情形三中,将确定的实际写入的数据写入到条带中之后,还包括:将条带在位图中对应的位的状态设置为已重建。
[0185]因而使用位图,可以记录每个条带的重建状态,因而可以保证对于重建盘中的每个重建块只重建一次,保证了重建的正确性和提高了系统性能。
[0186]例如,位图可以是图4中的结构,其中位图中的一位对应RAID中一个条带的状态,其中,条带的状态也就是重建块的状态,使用0表示条带的状态为“未重建”,即条带中的重建块的状态为“未重建”,使用1表示条带的状态为“已重建”,即条带中的重建块的状态为“已重建”,初始状态下,位图中的所有位为0,表明初始状态下,条带都处于“未重建状态”,即所有的重建块都处于“未重建”状态。
[0187]本申请实施例提供的方法,在确定需要对RAID中的条带进行操作后,若条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;将确定的实际写入的数据写入到条带中。该方法在对RAID中的条带进行数据操作的同时,就可完成对该条带中重建盘的重建,在后续正常重建过程中,对于在数据操作过程中已经做过重建的重建块,则可以直接跳过,不需要再进行重建,极大地减少了重建数据量,因而节约了重建盘的重建时间,提高了系统的可靠性,提高了实际应用能力。
[0188]下面对本申请实施例磁盘阵列RAID重建方法做详细描述,参考图5,为本申请实施例提供的磁盘阵列RAID重建方法详细流程图。
[0189]步骤501、初始化位图中的所有位的状态为未重建,其中,位图中的一位对应RAID中的一个条带的状态;
[0190]该步骤将所有的重建块对应的状态全都设置为未重建。
[0191]步骤502、判断此时是否有对RAID中的条带进行写入数据的操作,如果有,则转到步骤503 ;若没有,则转到步骤504 ;
[0192]步骤503、确定需要优先处理写数据操作,则转到步骤601?607,进行写数据以及重建条带的操作;
[0193]该步骤在确定有需要写入数据的操作,则使用写入数据时进行重建的方法对需要写入数据的条带中的重建块进行重建。
[0194]步骤504、判断此时是否有对RAID中的条带进行读出数据的操作,如果有,则转到步骤505 ;若没有,则转到步骤506 ;
[0195]步骤505、确定需要优先处理读数据操作,则转到步骤701?707,进行读数据以及重建条带的操作;
[0196]该步骤在确定有需要读出数据的操作,则使用写入数据时进行重建的方法对需要写入数据的条带中的重建块进行重建。
[0197]步骤506、在没有读数据或者写数据的操作需要处理时,则按照正常的流程,对每个条带的状态逐个进行分析;
[0198]该步骤如果没有写入数据或者读出数据要处理时,则按照正常的流程,对条带中的每个重建块进行逐个分析,并重建。
[0199]步骤507、判断位图中与当前条带对应的位的状态是否为“已重建”,若是,则转到步骤508,否则转到509。
[0200]该步骤对于已经重建的条带,则直接跳过。
[0201]步骤508、由于当前条带对应的位的状态为“已重建”,因此直接跳过,转到步骤510。
[0202]步骤509、由于当前条带对应的位的状态为“未重建”,则对该当前条带进行重建;
[0203]对于未重建的条带,则按照正常流程进行重建。
[0204]步骤510、判断所有的条带是否都重建完成,若是则结束流程,否则转到步骤502中,继续流程。
[0205]如果所有条带都重建完成,则结束,否则继续对未重建的条带进行重建。
[0206]上述步骤501、步骤506?510为正常的条带重建的流程,即依次对每个条带中的重建块进行重建,直到所有的条带都重建完成,由于在进行条带的过程中,会有读/写数据的操作,因此当有读/写数据的操作时,则确定是否需要跳转到读数据的步骤601?607或者跳转到写数据的步骤701?707,其中在写数据的步骤601?607中写数据的同时也会完成条带的重建,以及在写数据的步骤701?707中读数据的同时也会完成条带的重建。
[0207]因此,上述步骤501?510提供的条带重建方法,在读出数据或者写入数据的操作的同时就可完成条带的重建,因而加速了条带重建的速度,保证了系统的可靠性。
[0208]本申请实施例提供的方法,在确定需要对RAID中的条带进行操作后,若条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;将确定的实际写入的数据写入到条带中。该方法在对RAID中的条带进行数据操作的同时,就可完成对该条带中重建盘的重建,在后续正常重建过程中,对于在数据操作过程中已经做过重建的重建块,则可以直接跳过,不需要再进行重建,极大地减少了重建数据量,因而节约了重建盘的重建时间,提高了系统的可靠性,提高了实际应用能力。
[0209]下面对本申请实施例读数据过程中磁盘阵列RAID重建方法做详细描述,参考图6,为本申请实施例提供的读数据过程中磁盘阵列RAID重建方法详细流程图。
[0210]步骤601、定位到写入数据的条带位置;
[0211]步骤602、判断条带的状态是否是“未重建”,若否转到步骤603,若是则转到步骤604 ;
[0212]步骤603、条带已经重建,则按照正常流程进行校验块的计算、写入以及新数据的写入;
[0213]步骤604、条带未重建,则确定实际要写入的数据;
[0214]步骤605、根据实际要写入的数据对条带中的硬盘进行写入数据的操作;
[0215]步骤606、在对条带进行重建后,设置位图中条带对应的位的状态为“已重建”;
[0216]步骤607、结束了本次写入数据及重建条带之后,跳转到相应步骤继续执行,在本申请实施例中,跳转到步骤510。
[0217]上述方法,针对数据操作为写入数据操作的情形,首先定位到写入数据的条带位置,若条带的状态为“已重建”,则按照正常流程进行校验块的计算、写入以及新数据的写入;若条带的状态为“未重建”,则确定实际要写入的数据,并根据实际要写入的数据对条带中的硬盘进行写入数据的操作,并且在对条带进行重建后,设置位图中条带对应的位的状态为“已重建”。
[0218]因而该方法实现了在写入数据的时候,对未重建的重建块进行重建,节约了系统资源,提高了对重建盘进行重建的速度,节约了系统时间,提高了系统效率。
[0219]下面对本申请实施例读取数据过程中磁盘阵列RAID重建方法做详细描述,参考图7,为本申请实施例提供的读取数据过程中磁盘阵列RAID重建方法详细流程图。
[0220]步骤701、定位到需要读数据的条带位置;
[0221]步骤702、判断条带的状态是否是“未重建”,若否转到步骤703,若是则转到步骤704 ;
[0222]步骤703、条带已经重建,则按照正常流程进行数据读取;
[0223]步骤704、读取该条带上所有正常的数据;
[0224]步骤705、根据读取的条带上所有正常的数据,计算出重建块对应的数据,并写入都硬盘中的重建块中;
[0225]步骤706、在对条带进行重建后,设置位图中条带对应的位的状态为“已重建”;
[0226]步骤707、结束了本次写入数据及重建条带之后,跳转到相应步骤继续执行,在本申请实施例中,跳转到步骤510。
[0227]上述方法,针对数据操作为读出数据操作的情形,首先定位到读数据的条带位置,若条带的状态为“已重建”,则按照正常流程进行数据读取;若条带的状态为“未重建”,则据读取的条带上所有正常的数据,计算出重建块对应的数据,并写入都硬盘中的重建块中,并且在对条带进行重建后,设置位图中条带对应的位的状态为“已重建”。
[0228]因而该方法实现了在读取数据的时候,对未重建的重建块进行重建,节约了系统资源,提高了系统效率。
[0229]基于相同的技术构思,本申请实施例还提供一种磁盘阵列RAID重建设备。本申请实施例提供的磁盘阵列RAID重建设备如图8所示。
[0230]确定单元801,用于在确定需要对RAID中的条带进行写入操作或读出操作后,若所述条带的状态为未重建,则根据需要进行操作的条带对应的数据和/或根据所述条带在所述RAID中正常块对应的数据,确定实际写入的数据;
[0231]写入单元802,用于将确定的所述实际写入的数据写入到所述条带中。
[0232]可选地,需要对RAID中的条带进行写入操作且写入操作为满写操作;
[0233]所述确定单元801,具体用于:
[0234]根据需要写入所述条带的数据,确定所述条带中校验块对应的数据;
[0235]根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据。
[0236]可选地,需要对RAID中的条带进行写入操作且写入操作为非满写操作;
[0237]所述确定单元801,还用于:
[0238]根据需要写入所述条带的数据和所述条带在所述RAID中正常块对应的数据,确定所述条带中校验块对应的数据;
[0239]根据所述校验块对应的数据以及需要写入所述条带的数据,确定实际写入的数据。
[0240]可选地,所述确定单元801,还用于:
[0241]若所述条带包括的重建块为校验块,则确定所述条带上的第一覆盖数据,所述第一覆盖数据为所述条带上与所述非满写操作对应的位置上的数据;
[0242]根据所述第一覆盖数据,确定所述条带上的第一目标数据,其中,所述第一目标数据为所述RAID中正常块对应的数据除所述第一覆盖数据之外的所有数据;
[0243]根据需要写入所述条带的数据及所述第一目标数据,确定所述重建块对应的数据;
[0244]将所述重建块对应的数据以及所述需要写入所述条带的数据确定为实际写入的数据。
[0245]可选
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1