CN100495313C - 实现磁盘冗余阵列重建的方法和磁盘冗余阵列 - Google Patents

实现磁盘冗余阵列重建的方法和磁盘冗余阵列 Download PDF

Info

Publication number
CN100495313C
CN100495313C CNB2007101761279A CN200710176127A CN100495313C CN 100495313 C CN100495313 C CN 100495313C CN B2007101761279 A CNB2007101761279 A CN B2007101761279A CN 200710176127 A CN200710176127 A CN 200710176127A CN 100495313 C CN100495313 C CN 100495313C
Authority
CN
China
Prior art keywords
disk
reconstruction
storage space
copy
inefficacy
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
Application number
CNB2007101761279A
Other languages
English (en)
Other versions
CN101135955A (zh
Inventor
雷梦龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies 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 Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CNB2007101761279A priority Critical patent/CN100495313C/zh
Publication of CN101135955A publication Critical patent/CN101135955A/zh
Application granted granted Critical
Publication of CN100495313C publication Critical patent/CN100495313C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种实现磁盘冗余阵列(RAID)重建的方法。本发明在重建过程中,按照预设的单位存储空间大小,依次将失效成员磁盘中每个单位存储空间内的数据拷贝至对应的新成员磁盘内,如果拷贝成功,则继续下一个单位存储空间内的数据拷贝;如果拷贝出错,则读取RAID中其他正常成员磁盘内的数据进行计算,获得该单位存储空间内的数据并写入到对应的新成员磁盘中,并继续下一个单位存储空间的拷贝。即从失效成员磁盘中的第一个单位存储空间开始,穿插执行拷贝和基于阵列冗余算法的计算,直至重建完成后才将失效成员磁盘踢出RAID,从而有效降低了RAID的I/O负荷并加快了重建速度。本发明还公开了一种实现重建的RAID。

Description

实现磁盘冗余阵列重建的方法和磁盘冗余阵列
技术领域
本发明涉及磁盘冗余阵列(RAID)的重建技术,特别涉及一种实现RAID重建的方法、以及一种实现重建的RAID。
背景技术
RAID由多个磁盘聚合在一起,能够在提供大容量的同时,提供更高的访问速度、更好的可用性、以及数据冗余保护。其中,RAID中的磁盘可称为该RAID的成员磁盘,每个成员磁盘中不但存储了外部写入到该磁盘的数据,还存储其它成员磁盘中的冗余数据。
RAID会在如下三种状态之间变化:正常状态,即RAID中的所有成员磁盘都处于正常状态,则RAID阵列处于正常状态,如图1所示,图1中以RAID中包括4个成员磁盘为例;降级状态,即部分成员磁盘失效(例如,该成员磁盘中失效的扇区数量等于预设的失效门限值),且失效的成员磁盘数量小于等于RAID的冗余度,则RAID变为降级状态,如图2所示,图2中以RAID中包括4个成员磁盘、1个成员磁盘失效、RAID的冗余度为1为例;失效状态,即处于降级状态的RAID中再有一个成员磁盘失效,则该RAID即变为失效状态,如图3所示,图3中以RAID中包括4个成员磁盘、2个成员磁盘失效、RAID的冗余度为1为例。
其中,处于降级状态的RAID不再具有冗余性,但可以通过读取正常成员磁盘中的所有数据(包括冗余数据)进行计算,得到失效成员磁盘中的数据,因而此时的RAID仍然可以对外提供正常的磁盘访问功能;处于失效状态的RAID无法对外提供正常的磁盘访问功能,即存放在该RAID中的数据将彻底丢失。
因此,在RAID处于降级状态时,需通过RAID的重建尽快使该RAID恢复冗余性。
现有技术中,通常通过如下方式来实现RAID的重建:
先在处于降级状态的RAID中增加一定数量的磁盘,作为新的成员磁盘,以使得该RAID中包括的处于正常成员磁盘数量能够保证RAID具有冗余性,并由RAID中的主控单元将失效成员磁盘踢出该RAID。然后,由RAID中的主控单元从其他正常成员磁盘中读取该失效成员磁盘的所有数据,并利用阵列冗余算法进行计算,得到该失效成员磁盘中的所有数据,并写入到对应的新成员磁盘中,如图4所示,图4中以RAID中包括4个成员磁盘、1个成员磁盘失效、RAID的冗余度为1为例。
上述重建方案需要读取所有正常成员磁盘中的所有数据,大大增加RAID的输入/输出(I/O)负荷,严重影响RAID的正常读写性能,且随着成员磁盘的容量增大,重建的时间也大大延长,对RAID的可用性带来严重的影响。
因此,为了解决上述问题,现有技术中还可以通过如下方式实现RAID的重建:
设定磁盘预失效门限值,该预失效门限值小于失效门限值,当某一成员磁盘的失效扇区超过预失效门限值时,确定该成员磁盘处于预失效状态,也就是说,该成员磁盘即将失效。此时,由RAID中的主控单元先从预失效状态的成员磁盘中顺序读取每个扇区中的数据,并将读出的数据写入到RAID中的备用成员磁盘中,即将预失效状态的成员磁盘中的部分数据拷贝至新成员磁盘中。
在拷贝完成之前,如果预失效状态的成员磁盘变为失效状态,则将该失效成员磁盘踢出RAID,即主控单元将该失效成员磁盘从RAID中删除,对于还未完成拷贝的部分数据,则继续按照如图4所示的方式,由RAID中的主控单元从正常成员磁盘中读取相应的数据并利用阵列冗余算法进行计算,得到该失效的成员磁盘中未拷贝的部分数据,写入到对应的新成员磁盘中。
上述重建过程结合了拷贝和计算,能够在一定程度上降低RAID的输入/输出(I/O)负荷,并加快重建速度。但是,该重建方式也存在着不足之处:
1、预失效门限值的合理设定较为困难。如果预失效门限值设置合理,则能够保证在拷贝完成之前,预失效状态的成员磁盘不会变为失效状态,从而保证拷贝的顺利完成,即可减少重建所带来的I/O负荷。如果预失效门限值过低,则会使得成员磁盘过早地处于预失效状态,引起不必要的拷贝过程,反而增加了I/O负荷。
2、在拷贝过程中,如果预失效状态的成员磁盘变为了失效状态,则对未拷贝完成的数据,仍需通过计算来获得。例如,在拷贝开始的时候,预失效成员磁盘中的0扇区失效,使得该成员磁盘变为失效状态,则拷贝出错,立即停止了拷贝,这样,对该失效成员磁盘中存储的所有数据均需要通过计算来获得,因而仍然没有减少I/O负荷。如果预失效状态的成员磁盘容量为20G,则在上述情况下,20G的数据均需要通过计算来获得。
可见,现有结合拷贝和计算的RAID重建方案,未能从根本上降低在重建过程所引起的I/O负荷,且无法有效提高重建速度。
发明内容
有鉴于此,本发明提供了一种实现RAID重建的方法、以及一种实现重建的RAID,能够降低RAID的I/O负荷并提高RAID的重建速度。
本发明提供的一种实现RAID重建的方法,包括:
按照预设的单位存储空间大小,从失效成员磁盘中读取当前单位存储空间所对应的数据;所述单位存储空间的大小表示拷贝粒度、且设置为多于一个扇区;
如果读取成功,则将读取的数据写入到对应的新成员磁盘中,确定拷贝成功并继续下一个单位存储空间内的数据拷贝;
如果读取失败,则确定拷贝出错,并判断当前单位存储空间的大小是否为预设的最小拷贝粒度,如果是,则读取RAID中其他正常成员磁盘内的数据进行计算,获得该单位存储空间内的数据并写入到对应的新成员磁盘中,并继续下一个单位存储空间的拷贝;否则,降低当前单位存储空间大小,并按照降低后的单位存储空间大小,继续执行所述判断当前单位存储空间的大小是否为预设的最小拷贝粒度。
在继续下一个单位存储空间的拷贝之前,该方法进一步包括:
判断当前单位存储空间是否为失效成员磁盘中的最后一个单位存储空间,如果是,则重建完成并将失效成员磁盘踢出RAID;
否则,执行所述继续对下一个单位存储空间的拷贝。
在判断当前单位存储空间是否为最后失效成员磁盘中的最后一个单位存储空间之前,该方法进一步包括:记录RAID重建进度。
该方法进一步包括:
在接收到外部下发到所述失效成员磁盘的写命令之后,根据所述重建进度判断所述写命令所对应的写范围是否在失效成员磁盘中已完成重建的存储空间内,如果是,则将所述写命令下发到所述新成员磁盘中;
否则,暂停重建并更新所述重建进度,根据更新后的重建进度判断所述写范围是否在失效成员磁盘中已完成重建的存储空间内,
如果所述写范围完全在失效成员磁盘中已完成重建的存储空间内,则将所述写命令下发给所述对应的新成员磁盘,并在下发成功后恢复重建;
如果所述写范围一部分在失效成员磁盘中已完成重建的存储空间内、另一部分在失效成员磁盘中已完成重建的存储空间之外,则将所述重建进度回退到所述写范围之前,并将所述写命令下发到所述对应的新成员磁盘,在下发成功后,将所述重建进度推进至回退之前的进度并恢复重建;
如果所述写范围完全在失效成员磁盘已完成重建的存储空间之外,则将所述写命令下发给所述失效成员磁盘,并恢复重建。
在将所述写命令下发给所述新成员磁盘的同时,该方法进一步包括:
将所述写命令下发给所述失效成员磁盘。
在将所述写命令下发给所述对应的新成员磁盘失败后,该方法进一步包括:
重建终止,并发出表示新成员磁盘损坏的提示信息。
该方法进一步包括:
在接收到外部下发到所述失效成员磁盘的读命令之后,根据所述重建进度判断所述读命令所对应的读范围是否在失效成员磁盘中已完成重建的存储空间内,如果是,则将所述读命令重定向到所述新成员磁盘中;
否则,暂停重建并更新所述重建进度,根据更新后的重建进度判断所述读范围是否在失效成员磁盘中已完成重建的存储空间内,如果所述读范围完全在失效成员磁盘中已完成重建的存储空间内,则将所述读命令重定向到所述对应的新成员磁盘,并在下发成功后恢复重建;如果所述读范围不完全在失效成员磁盘中已完成重建的存储空间内,则将所述读命令下发至失效成员磁盘,获取失效成员磁盘中与所述读范围对应的部分数据,并恢复重建。
所述读范围不完全在失效成员磁盘中已完成重建的存储空间内,则在获取失效成员磁盘中与所述读范围对应的部分数据之后,
如果所述读范围一部分在失效成员磁盘中已完成重建的存储空间内、另一部分在失效成员磁盘中已完成重建的存储空间之外,则先将所述重建进度退回至读范围之前,然后将读命令下发到失效成员磁盘和对应的新成员磁盘,并在下发读命令成功之后再将重建进度推进至回退之前的进度并恢复重建;
如果所述读范围完全在失效成员磁盘中已完成重建的存储空间之外,则直接恢复重建。
所述获取失效成员磁盘中与所述读范围对应的部分数据包括:
如果对失效成员磁盘的读操作成功,则直接读取读范围对应的部分数据;
如果失效成员磁盘返回出错信息,则读取其他正常成员磁盘的数据计算出该部分数据。
在将所述读命令重定向到所述对应的新成员磁盘失败后,该方法进一步包括:
重建终止,并发出表示新成员磁盘损坏的提示信息。
所述最小拷贝粒度设置为一个扇区。
本发明提供的一种实现重建的RAID,包括:主控单元、以及多个聚合在一起的成员磁盘,所有成员磁盘中存在失效成员磁盘使得RAID处于降级状态,该RAID中还包括新成员磁盘,所述主控单元包括:
拷贝子单元,用于按照预设的单位存储空间大小,从失效成员磁盘中读取每个单位存储空间所对应的数据;如果读取成功,则将读取的数据写入到对应的所述新成员磁盘中,确定拷贝成功;如果读取失败,则确定拷贝出错;其中,所述单位存储空间的大小表示拷贝粒度、且设置为多于一个扇区;
计算子单元,用于在拷贝失败后读取RAID中其他正常成员磁盘内的数据进行计算,获得该单位存储空间内的数据并写入到对应的新成员磁盘中;
拷贝粒度调整子单元,用于在所述拷贝子单元确定拷贝出错、所述计算子单元读取RAID中其他正常成员磁盘内的数据进行计算之前,判断当前单位存储空间的大小是否为预设的最小拷贝粒度,如果是,则触发所述计算子单元执行所述读取RAID中其他正常成员磁盘内的数据进行计算;否则,降低当前单位存储空间大小,并触发所述拷贝子单元按照降低后的单位存储空间大小,继续执行所述判断当前单位存储空间的大小是否为预设的最小拷贝粒度。
所述主控单元中进一步包括:进度判断子单元,用于判断当前单位存储空间是否为失效成员磁盘中的最后一个单位存储空间,如果是,则重建完成并将失效成员磁盘踢出RAID;否则,触发所述拷贝子单元继续对下一个单位存储空间的拷贝。
所述主控单元中进一步包括:进度记录子单元,用于记录RAID重建进度。
所述主控单元中进一步包括:
写命令处理子单元,用于在接收到外部下发到所述失效成员磁盘的写命令之后,根据所述重建进度判断所述写命令所对应的写范围是否在失效成员磁盘中已完成重建的存储空间内,如果是,则将所述写命令下发到所述新成员磁盘中;
否则,暂停所述拷贝单元的拷贝和所述计算单元的计算以实现重建的暂停,并更新所述重建进度,根据更新后的重建进度判断所述写范围是否在失效成员磁盘中已完成重建的存储空间内,
如果所述写范围完全在失效成员磁盘中已完成重建的存储空间内,则将所述写命令下发给所述对应的新成员磁盘,并在下发成功后恢复重建;
如果所述写范围一部分在失效成员磁盘中已完成重建的存储空间内、另一部分在失效成员磁盘中已完成重建的存储空间之外,则将所述重建进度回退到所述写范围之前,并将所述写命令下发到所述对应的新成员磁盘,在下发成功后,将所述重建进度推进至回退之前的进度并恢复重建;
如果所述写范围完全在失效成员磁盘已完成重建的存储空间之外,则将所述写命令下发给所述失效成员磁盘,并恢复重建。
所述写命令处理子单元将所述写命令下发给所述对应的新成员磁盘失败后,终止所述拷贝单元的拷贝和所述计算单元的计算以实现重建的终止;
所述主控单元中进一步包括:第一信息提示子单元,用于在所述写命令处理子单元终止重建时,发出表示新成员磁盘损坏的提示信息。
所述主控单元中进一步包括:
读命令处理子单元,用于在接收到外部下发到所述失效成员磁盘的读命令之后,根据所述重建进度判断所述读命令所对应的读范围是否在失效成员磁盘中已完成重建的存储空间内,如果是,则将所述读命令重定向到所述新成员磁盘中;
否则,暂停所述拷贝单元的拷贝和所述计算单元的计算以实现重建的暂停,并更新所述重建进度,根据更新后的重建进度判断所述读范围是否在失效成员磁盘中已完成重建的存储空间内,如果所述读范围完全在失效成员磁盘中已完成重建的存储空间内,则将所述读命令重定向到所述对应的新成员磁盘,并在下发成功后恢复重建;如果所述读范围不完全在失效成员磁盘中已完成重建的存储空间内,则将所述读命令下发至失效成员磁盘,获取失效成员磁盘中与所述读范围对应的部分数据,并恢复重建。
所述读命令处理子单元将所述读命令重定向到所述对应的新成员磁盘失败后,终止所述拷贝单元的拷贝和所述计算单元的计算以实现重建的终止;
所述主控单元中进一步包括:第二信息提示子单元,用于在所述读命令处理子单元终止重建时,发出表示新成员磁盘损坏的提示信息。
由上述技术方案可见,本发明在重建过程中,按照预设的单位存储空间大小,例如一个或多个扇区,依次将失效成员磁盘中每个单位存储空间内的数据拷贝至对应的新成员磁盘内,如果拷贝成功,则继续下一个单位存储空间内的数据拷贝;如果拷贝出错,则读取RAID中其他正常成员磁盘内的数据进行计算,获得该单位存储空间内的数据并写入到对应的新成员磁盘中,并继续下一个单位存储空间的拷贝。即从失效成员磁盘中的第一个单位存储空间开始,穿插执行拷贝和基于阵列冗余算法的计算,直至重建完成后才将失效成员磁盘踢出RAID,而不需要设置预失效门限,也不需要在成员磁盘处于预失效状态时即开始重建,因而不会在拷贝过程中出现预失效状态的成员磁盘变为失效状态而导致拷贝出错,不会在拷贝出错后通过计算来获得失效成员磁盘中未拷贝的所有剩余数据,从而有效降低了RAID的I/O负荷并加快了重建速度。
附图说明
图1为RAID处于正常状态的示意图。
图2为RAID处于降级状态的示意图。
图3为RAID处于失效状态的示意图。
图4为现有的一种RAID重建过程的示意图。
图5为本发明实施例中实现重建的RAID示意图。
图6为本发明实施例中实现RAID重建的方法流程示意图。
图7为本发明实施例中在接收到外部写命令时的RAID重建的流程示意图。
图8为本发明实施例中在接收到外部读命令时的RAID重建的流程示意图。
图9为本发明实施例中RAID的主控单元的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
由于成员磁盘处于失效状态只是因为其失效的扇区已经超过一定门限值,并不是该磁盘中的所有扇区均不可访问,因此,本发明在RAID中的成员磁盘变为失效状态使得该RAID处于降级状态,并增加了新成员磁盘使得该RAID中包括的正常成员磁盘数量能够保证该RAID具有冗余度之后,开始重建;在重建过程中,按照预设的单位存储空间大小,例如一个或多个扇区,依次将失效成员磁盘中每个单位存储空间内的数据拷贝至对应的新成员磁盘内,如果拷贝成功,则继续下一个单位存储空间内的数据拷贝;如果某个单位存储空间内的数据拷贝出错,则读取RAID中其他正常成员磁盘内的数据进行计算,获得该单位存储空间内的数据并写入到对应的新成员磁盘中,并继续下一个单位存储空间的拷贝,即在重建过程中穿插执行拷贝和基于阵列冗余算法的计算,直至重建完成后才将失效成员磁盘踢出RAID,如图5所示,图5中以RAID中包括4个成员磁盘、1个成员磁盘失效、1个新成员磁盘、RAID的冗余度为1为例。
这样,不需要设置预失效门限,也不需要在成员磁盘处于预失效状态时即开始重建,因而不会在拷贝过程中出现预失效状态的成员磁盘变为失效状态而导致拷贝出错,不会在拷贝出错后通过计算来获得失效成员磁盘中未拷贝的所有剩余数据,从而有效实现降低RAID的I/O负荷并加快重建速度。
图6为本发明实施例中实现RAID重建的方法流程示意图。如图6所示,RAID中存在失效成员磁盘使得RAID处于降级状态后,在该RAID中增减新成员磁盘,从失效成员磁盘中的第一个预设单位存储空间开始,该方法包括以下步骤:
步骤601,向RAID发出重建命令,启动失效成员磁盘中当前单位存储空间的重建。
步骤602,按照预设的单位存储空间大小,从失效成员磁盘中读取当前单位存储空间的数据。
步骤603,判断是否从失效成员磁盘中成功读取数据,如果成功,则执行步骤607,如果失败,则执行步骤604。
步骤604,读取RAID中正常成员磁盘中的数据。
步骤605,判断是否从正常成员磁盘中成功读取数据,如果从所有正常磁盘中读取数据均成功,则执行步骤606,否则,如果有至少一个不成功,则确定正常成员磁盘中存在失效磁盘使得RAID变为失效状态(RAID处于降级状态,如果该RAID中再有一个成员磁盘失效则该RAID变为失效状态),并结束本流程。
步骤606,根据从所有正常成员磁盘中读取的数据,利用阵列冗余算法进行计算,得到失效成员磁盘中当前单位存储空间的数据。
步骤607,将失效成员磁盘中当前单位存储空间的数据写入到RAID中添加的对应新成员磁盘中。
步骤608,完成失效成员磁盘中当前单位存储空间的重建,记录RAID重建进度,即已失效成员磁盘中已完成重建的存储空间位置(起始和/或结束地址)。
步骤609,根据记录的RAID重建进度,判断当前单位存储空间是否为失效成员磁盘中的最后一个单位存储空间,如果是,则重建完成,将失效成员磁盘踢出RAID并结束本流程,否则,返回步骤602,继续对下一个单位存储空间执行上述处理。
由上述流程可见,在重建过程中,对每个单位存储空间均判断是否能够直接拷贝,如果能,则可将失效成员磁盘中的部分数据直接拷贝至对应的新成员磁盘,如果不能,才进行基于阵列冗余算法的计算以获得该部分数据,如此循环,即可实现RAID的重建,且大大减少了基于阵列冗余算法的计算量,从而有效实现降低RAID的I/O负荷并加快重建速度。
实际应用中,为了尽可能地提高拷贝速度,较佳地采用大粒度(单位存储空间内包括的扇区数量)进行拷贝,即将单位存储空间设置为多个扇区。
具体来说,可预先设置初始拷贝粒度和最小拷贝粒度,如果采用较大的初始拷贝粒度读取失效成员磁盘中的数据失败时,则可按照预设步长(扇区数量)降低拷贝粒度再次读取,如果读取仍失败,则继续降低粒度直至最小拷贝粒度。如果到降低至最小拷贝粒度仍然无法成功从失效成员磁盘中读出数据时,再通过计算来获得该部分数据。
其中,降低粒度的方式也可以不依据预设步长,还可以采用其他方式,例如呈指数降低等;最小拷贝粒度可任意设置为至少一个扇区。
上述调整拷贝粒度的过程可以按照如下方式执行:
如果拷贝出错,则在读取RAID中其他正常成员磁盘内的数据进行计算之前,先判断单位存储空间的大小(当前所包括的扇区数量),即当前拷贝粒度,是否为预设的最小拷贝粒度,如果是,再读取RAID中其他正常成员磁盘内的数据进行计算;否则,降低单位存储空间的大小,即当前拷贝粒度,并按照降低后的单位存储空间大小,从失效成员磁盘中读取当前单位存储空间所对应的数据,此时,如果仍然失败,则继续判断拷贝粒度是否为预设的最小拷贝粒度,循环执行上述处理过程。
在开始下一个单位存储空间的拷贝之前,可以保持已调整的单位存储空间大小不变,也可以恢复单位存储空间的原有大小。
如果将单位存储空间设置为多于一个扇区,虽然能够保证失效成员磁盘中的大部分正常扇区内的数据能够被直接拷贝至新成员磁盘,但仍可能存在小部分正常扇区的数据是通过计算得到的。
例如,假设单位存储空间设置为2个扇区、失效成员磁盘中包括16个扇区,其中扇区1~6、扇区8、9为正常扇区,则在重建过程中,能够分3次,将扇区1~6中的数据拷贝至新成员磁盘,而在拷贝扇区7和8时,虽然扇区8为能够访问的正常扇区,但由于扇区7为失效扇区,因而仍然会出现拷贝出错,需要通过计算来获得扇区7和8内的数据。同理,在当前单位存储空间为扇区9和10时,也会发生拷贝出错,扇区9中的数据也无法拷贝。
这样,如果将单位存储空间设置为一个扇区,则可保证失效成员磁盘中所有正常扇区内的数据,均能够直接拷贝至新成员磁盘而无需计算,但失效成员磁盘中的失效扇区通常为连续的扇区,因此,如果将单位存储空间设置为1个扇区会增加I/O负荷。
实际应用中,单位存储空间的大小,即拷贝粒度,可根据实际情况任意设置。
处于降级状态的RAID仍然可以对外提供正常的磁盘访问功能,因此,在重建过程中,RAID还可能接收到来自外部的写命令和/或读命令。以下,分别针对接收到外部写命令和外部读命令的情况,对本发明中实现RAID重建的方法进行进一步说明。
由于在拷贝或计算失效成员磁盘的每一个单位存储空间内的数据后,均会记录表示失效成员磁盘中已完成重建的存储空间位置的重建进度,因此,在重建过程中,如果接收到外部下发到失效成员磁盘的写命令/读命令,则可将写命令/读命令中对应的写/读范围和与上一次拷贝或计算后记录的重建进度进行比较,从而判断出写命令/读命令所对应的写/读范围是否在失效成员磁盘中已完成重建的存储空间内,如果写/读范围完全在失效成员磁盘中已完成重建的存储空间内,则可直接对新成员磁盘执行写/读操作,否则,需暂停重建,对失效成员磁盘和新成员磁盘、或者仅对失效成员磁盘进行写/读操作。
图7为本发明实施例中在接收到外部写命令时的RAID重建的流程示意图。如图7所示,在拷贝或计算失效成员磁盘的任意一个单位存储空间内的数据过程中,该过程包括以下步骤:
步骤701,接收到外部下发到失效成员磁盘的写命令。
步骤702,判断接收到的写命令中的写结束地址是否小于上一次记录的重建进度,即判断写命令对应的写范围是否完全在失效成员磁盘已完成重建的存储空间内,如果是,则表示写范围完全在失效成员磁盘中已完成重建的存储空间内,并执行步骤703,否则,执行步骤706。
步骤703,写命令对应的写范围完全在失效成员磁盘已完成重建的存储空间内,即失效成员磁盘中该部分存储空间内的数据已拷贝至新成员磁盘或通过计算写入到新成员磁盘中,因此,将该写命令下发到新成员磁盘,并执行步骤704。
本步骤中,为了防止新成员磁盘在重建过程中也变为失效状态,从而造成通过写命令写入的数据丢失,因此,还可以同时将写命令也下发到失效成员磁盘用以备份。
步骤704,判断向新成员磁盘下发写命令是否成功,如果成功,则完成对该写命令的处理并结束本流程;如果失败,则执行步骤705。
步骤705,对新成员磁盘的写操作失败,重建终止,发出表示新成员磁盘损坏的提示信息,完成对该写命令的处理并结束本流程。
步骤706,暂停重建,更新重建进度,并执行步骤707。
其中,由于暂停重建需等待正在进行的重建过程处理完毕,即需等待失效成员磁盘中当前单位存储空间的拷贝或计算处理完毕,因此,重建暂停后的重建进度已经更新。
步骤707,判断接收到的写命令中的写开始地址和写结束地址是否大于更新后的重建进度,即判断写命令对应的写范围是否完全在失效成员磁盘已完成重建的存储空间内,如果写结束地址小于更新后的重建进度,则表示写范围完全在失效成员磁盘中已完成重建的存储空间内,执行步骤708;如果写开始地址小于更新后的重建进度且写结束地址大于更新后的重建进度,则表示写范围部分在失效成员磁盘中已完成重建的存储空间内,执行步骤709;如果写开始地址大于更新后的重建进度,则表示写范围完全在失效成员磁盘中已完成重建的存储空间之外,执行步骤714。
步骤708,写命令对应的写范围完全在失效成员磁盘已完成重建的存储空间内,即失效成员磁盘中该部分存储空间内的数据已拷贝至新成员磁盘或通过计算写入到新成员磁盘中,因此,将该写命令下发到新成员磁盘,并执行步骤715。
本步骤中,与步骤703同理,为了防止新成员磁盘在重建过程中也变为失效状态,从而造成通过写命令写入的数据丢失,因此,还可以同时将写命令也下发到失效成员磁盘用以备份。
步骤709,写命令对应的写范围部分在失效成员磁盘已完成重建的存储空间内,将重建进度退回至写范围之前,即退回到写命令的写开始地址之前,并执行步骤710。
执行本步骤之后,即使得写范围完全处于失效成员磁盘中已完成重建的存储空间之外。
步骤710,将写命令下发到对应的新成员磁盘,并执行步骤711。
本步骤中,与步骤703同理,为了防止新成员磁盘在重建过程中也变为失效状态,从而造成通过写命令写入的数据丢失,因此,还可以同时将写命令也下发到失效成员磁盘用以备份。
步骤711,判断向新成员磁盘下发写命令是否成功,如果成功,则执行步骤712;如果失败,则执行步骤713。
步骤712,将重建进度推进至回退之前的进度,并执行步骤715。
步骤713,对新成员磁盘的写操作失败,重建终止,发出表示新成员磁盘损坏的提示信息,完成对该写命令的处理并结束本流程。
步骤714,写命令对应的写范围完全在失效成员磁盘已完成重建的存储空间之外,即失效成员磁盘中该部分存储空间内的数据未拷贝至新成员磁盘或通过计算写入到新成员磁盘中,因此,将写命令下发给失效成员磁盘,并执行步骤715。
步骤715,恢复重建,完成写命令的处理并结束本流程。
上述流程中,由于在步骤706中暂停了重建,因此,成功下发写命令之后还需要恢复重建。而由于步骤704之前并未暂停重建,因此在步骤704和步骤705之后无需恢复重建。
可见,本发明上述实施例通过写命令对应的写范围与重建进度的比较,保证了外部写操作与重建过程互不冲突,即在重建过程中也能够保证外部对RAID的写操作。
图8为本发明实施例中在接收到外部读命令时的RAID重建的流程示意图。如图8所示,在拷贝或计算失效成员磁盘的任意一个单位存储空间内的数据过程中,该过程包括以下步骤:
步骤801,接收到外部下发到失效成员磁盘的读命令。
步骤802,判断接收到读命令中的读结束地址是否小于上一次记录的重建进度,即判断读命令对应的读范围是否完全在失效成员磁盘已完成重建的存储空间内,如果是,则表示读范围完全在失效成员磁盘中已完成重建的存储空间内,并执行步骤803,否则,执行步骤804。
步骤803,读命令对应的读范围完全在失效成员磁盘已完成重建的存储空间内,即失效成员磁盘中该部分存储空间内的数据已拷贝至新成员磁盘或通过计算读入到新成员磁盘中,因此,将该读命令重定向到对应的新成员磁盘,完成对该读命令的处理并结束本流程。
这样,在重建过程中仍可对失效成员磁盘进行读操作,而无需对其他正常成员磁盘进行读操作,从而大大减少了由重建所带来的额外负荷,最大程度上减少了重建对正常读操作的影响。
步骤804,暂停重建,更新重建进度,并执行步骤805。
其中,由于暂停重建需等待正在进行的重建过程处理完毕,即需等待失效成员磁盘中当前单位存储空间的拷贝或计算处理完毕,因此,重建暂停后的重建进度已经更新。
步骤805,判断接收到读命令中的读结束地址是否小于更新后的重建进度,即判断读命令对应的读范围是否完全在失效成员磁盘已完成重建的存储空间内,如果是,则表示读范围完全在失效成员磁盘中已完成重建的存储空间内,并执行步骤806,否则,执行步骤807。
步骤806,读命令对应的读范围完全在失效成员磁盘已完成重建的存储空间内,即失效成员磁盘中该部分存储空间内的数据已拷贝至新成员磁盘或通过计算读入到新成员磁盘中,因此,将该读命令重定向到新成员磁盘,并执行步骤814。
步骤807,读命令对应的读范围并未完全在失效成员磁盘已完成重建的存储空间内,将读命令下发至失效成员磁盘,获取失效成员磁盘中与读范围对应的部分数据,并执行步骤808。
这样,虽然读命令对应的读范围并未完全在失效成员磁盘已完成重建的存储空间内,即失效成员磁盘中对应存储空间内的数据并未完全通过读取而拷贝至新成员磁盘中,但通过读命令获取到的该部分存储空间内的数据,可用于后续的重建,即无需在恢复重建过程之后再次读取该部分存储空间的数据。
本步骤中,如果对失效成员磁盘的读操作成功,则可直接读取读范围对应的部分数据;如果将读命令下发给失效成员磁盘之后,失效成员磁盘返回出错信息,则读取其他正常成员磁盘的数据,利用阵列算法计算出该部分数据。
步骤808,判断接收到读命令中的读开始地址是否大于更新后的重建进度,即判断读命令对应的读范围是否完全在失效成员磁盘已完成重建的存储空间之外,如果是,则表示读范围完全在失效成员磁盘中已完成重建的存储空间之外,并执行步骤814直接恢复重建,否则,执行步骤809。
步骤809,读范围部分在失效成员磁盘中已完成重建的存储空间之内、部分在失效成员磁盘中已完成重建的存储空间之外,将重建进度退回至读范围之前,即退回到读命令的读开始地址之前,并执行步骤810。
步骤810,将读命令重定向到对应的新成员磁盘,并执行步骤811。
步骤811,判断重定向到新成员磁盘的读命令是否下发成功,如果成功,则执行步骤813;如果失败,则执行步骤812。
步骤812,对新成员磁盘的读操作失败,重建终止,发出表示新成员磁盘损坏的提示信息,完成对该读命令的处理并结束本流程。
步骤813,将重建进度推进至回退之前的进度,并执行步骤814。
步骤814,恢复重建,完成读命令的处理并结束本流程。
上述流程中,由于在步骤804中暂停了重建,因此,成功读取对应的数据之后还需要恢复重建。而由于步骤803之前并未暂停重建,因此在步骤803之后无需恢复重建。
上述过程中对重建暂停主要是基于如下原因:如果暂停后的重建进度在当前读命令所对应的读范围中间,则对于读出的数据可再次用于重建,如果不暂停,则将重复地从失效成员磁盘读取重建进度之后的部分数据,如果失效成员磁盘重建进度之后的部分数据所在存储空间失效,则还需要重复读取其他正常成员磁盘内的数据并进行计算,从而增加的系统的负荷,显而易见,由重复读取所带来的负荷是不必要的。当然,暂停重建只是一个较佳选择,实际应用中也可以不暂停重建。
可见,本发明上述实施例通过读命令对应的读范围与重建进度的比较,保证了外部读操作与重建过程互不冲突,即在重建过程中也能够保证外部对RAID的读操作。
由如图7和如图8所示的流程可见,本发明实施例通过写/读命令对应的写/读范围与重建进度的比较,保证了外部写/读操作与重建过程互不冲突,即在重建过程中也能够保证外部对RAID的写/读操作,从而保证了重建过程中正常的I/O操作。而且,由于仅仅在读失效成员磁盘失败时才从其他正常成员磁盘读取数据,因而大大减少了由重建而带来的额外负荷,从而最大程度上减少了重建对正常读写的影响。
以上是对本发明实施例中实现RAID重建的方法的详细说明。本发明实施例中还提供了一种实现重建的RAID。
本发明实施例中实现重建的RAID包括:主控单元、以及多个聚合在一起的成员磁盘。
所有成员磁盘中存在失效成员磁盘使得RAID处于降级状态,该RAID中还包括一个添加的新成员磁盘。
主控单元,按照预设的单位存储空间大小,例如一个或多个扇区,依次将失效成员磁盘中每个单位存储空间内的数据拷贝至对应的新成员磁盘内,如果拷贝成功,则继续下一个单位存储空间内的数据拷贝;如果某个单位存储空间内的数据拷贝出错,则读取RAID中其他正常成员磁盘内的数据进行计算,获得该单位存储空间内的数据并写入到对应的新成员磁盘中,并继续下一个单位存储空间的拷贝,即在重建过程中穿插执行拷贝和基于阵列冗余算法的计算,直至重建完成后才将失效成员磁盘踢出RAID。
具体来说,主控单元可按照如图6所示的操作过程执行上述处理。
处于降级状态的RAID仍然可以对外提供正常的磁盘访问功能,因此,在重建过程中,RAID还可能接收到来自外部的写命令/读命令。此时,主控单元则在接收到外部下发到失效成员磁盘的写命令和读命令之后,可分别按照如图7和如图8所示的操作过程执行相应处理。
具体来说,如图9所示,主控单元900中包括:
拷贝子单元901,用于将失效成员磁盘中每个单位存储空间内的数据拷贝至对应的新成员磁盘内,在拷贝失败时通知计算子单元902。
计算子单元902,用于在拷贝子单元901的拷贝失败后读取RAID中其他正常成员磁盘内的数据进行计算,获得该单位存储空间内的数据并写入到对应的新成员磁盘中。
主控单元900中还包括:
进度判断子单元903,用于判断当前单位存储空间是否为失效成员磁盘中的最后一个单位存储空间,如果是,则重建完成并将失效成员磁盘踢出RAID;否则,触发拷贝子单元901继续对下一个单位存储空间的拷贝。
进度记录子单元904,用于记录RAID重建进度。
写命令处理子单元905,用于在接收到外部下发到失效成员磁盘的写命令之后,根据重建进度判断写命令所对应的写范围是否在失效成员磁盘中已完成重建的存储空间内,如果是,则将写命令下发到新成员磁盘中;
否则,暂停拷贝单元901的拷贝和计算单元902的计算以实现重建的暂停,并更新重建进度,根据更新后的重建进度判断写范围是否在失效成员磁盘中已完成重建的存储空间内,
如果写范围完全在失效成员磁盘中已完成重建的存储空间内,则将写命令下发给对应的新成员磁盘,并在下发成功后恢复重建;
如果写范围一部分在失效成员磁盘中已完成重建的存储空间内、另一部分在失效成员磁盘中已完成重建的存储空间之外,则将重建进度回退到写范围之前,并将写命令下发到对应的新成员磁盘,在下发成功后,将重建进度推进至回退之前的进度并恢复重建;
如果写范围完全在失效成员磁盘已完成重建的存储空间之外,则将写命令下发给失效成员磁盘,并恢复重建。
实际应用中,写命令处理子单元905还可以将写命令下发给对应的新成员磁盘失败后,终止拷贝单元901的拷贝和计算单元902的计算以实现重建的终止;
这种情况下,主控单元900中还可以包括:信息提示子单元906,用于在写命令处理子单元905终止重建时,发出表示新成员磁盘损坏的提示信息。
本发明实施例中的主控单元900中还可以包括:
读命令处理子单元907,用于在接收到外部下发到失效成员磁盘的读命令之后,根据重建进度判断读命令所对应的读范围是否在失效成员磁盘中已完成重建的存储空间内,如果是,则将读命令重定向到新成员磁盘中;
否则,暂停拷贝单元901的拷贝和计算单元902的计算以实现重建的暂停,并更新重建进度,根据更新后的重建进度判断读范围是否在失效成员磁盘中已完成重建的存储空间内,如果读范围完全在失效成员磁盘中已完成重建的存储空间内,则将读命令重定向到对应的新成员磁盘,并在下发成功后恢复重建;如果读范围不完全在失效成员磁盘中已完成重建的存储空间内,则将读命令下发至失效成员磁盘,获取失效成员磁盘中与读范围对应的部分数据,并恢复重建。
实际应用中,读命令处理子单元907将读命令重定向到对应的新成员磁盘失败后,终止拷贝单元901的拷贝和计算单元902的计算以实现重建的终止。
这种情况下,主控单元900中进一步包括:信息提示子单元908,用于读命令处理子单元907终止重建时,发出表示新成员磁盘损坏的提示信息。
为了实现拷贝粒度的调整,本发明实施例中RAID的主控单元900还可以包括拷贝粒度调整子单元909。
具体来说,拷贝子单元901执行拷贝包括:从失效成员磁盘中读取当前单位存储空间所对应的数据,如果读取成功,则将读取的数据写入到对应的新成员磁盘中,确定拷贝成功;如果读取失败,则确定拷贝出错;
主控单元中进一步包括:
拷贝粒度调整子单元909,用于在拷贝子单元901确定拷贝出错、计算子单元902读取RAID中其他正常成员磁盘内的数据进行计算之前,判断当前单位存储空间(表示拷贝粒度)的大小是否为预设的最小拷贝粒度,如果是,则触发计算子单元902执行读取RAID中其他正常成员磁盘内的数据进行计算;
否则,降低当前单位存储空间大小,并触发拷贝子单元901按照降低后的单位存储空间大小,继续执行判断当前单位存储空间的大小是否为预设的最小拷贝粒度。
可见,在重建过程中,主控单元对失效成员磁盘的每个单位存储空间均判断是否能够直接拷贝,如果能,则可将失效成员磁盘中的部分数据直接拷贝至对应的新成员磁盘,如果不能,才进行基于阵列冗余算法的计算以获得该部分数据,如此循环,即可实现RAID的重建,且大大减少了基于阵列冗余算法的计算量,从而有效实现降低RAID的I/O负荷并加快重建速度。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。

Claims (18)

1、一种磁盘冗余阵列RAID的重建方法,其特征在于,该方法包括:
按照预设的单位存储空间大小,从失效成员磁盘中读取当前单位存储空间所对应的数据;所述单位存储空间的大小表示拷贝粒度、且设置为多于一个扇区;
如果读取成功,则将读取的数据写入到对应的新成员磁盘中,确定拷贝成功并继续下一个单位存储空间内的数据拷贝;
如果读取失败,则确定拷贝出错,并判断当前单位存储空间的大小是否为预设的最小拷贝粒度,如果是,则读取RAID中其他正常成员磁盘内的数据进行计算,获得该单位存储空间内的数据并写入到对应的新成员磁盘中,并继续下一个单位存储空间的拷贝;否则,降低当前单位存储空间大小,并按照降低后的单位存储空间大小,继续执行所述判断当前单位存储空间的大小是否为预设的最小拷贝粒度。
2、如权利要求1所述的方法,其特征在于,在继续下一个单位存储空间的拷贝之前,该方法进一步包括:
判断当前单位存储空间是否为失效成员磁盘中的最后一个单位存储空间,如果是,则重建完成并将失效成员磁盘踢出RAID;
否则,执行所述继续对下一个单位存储空间的拷贝。
3、如权利要求2所述的方法,其特征在于,在判断当前单位存储空间是否为最后失效成员磁盘中的最后一个单位存储空间之前,该方法进一步包括:记录RAID重建进度。
4、如权利要求3所述的方法,其特征在于,该方法进一步包括:
在接收到外部下发到所述失效成员磁盘的写命令之后,根据所述重建进度判断所述写命令所对应的写范围是否在失效成员磁盘中已完成重建的存储空间内,如果是,则将所述写命令下发到所述新成员磁盘中;
否则,暂停重建并更新所述重建进度,根据更新后的重建进度判断所述写范围是否在失效成员磁盘中已完成重建的存储空间内,
如果所述写范围完全在失效成员磁盘中已完成重建的存储空间内,则将所述写命令下发给所述对应的新成员磁盘,并在下发成功后恢复重建;
如果所述写范围一部分在失效成员磁盘中已完成重建的存储空间内、另一部分在失效成员磁盘中已完成重建的存储空间之外,则将所述重建进度回退到所述写范围之前,并将所述写命令下发到所述对应的新成员磁盘,在下发成功后,将所述重建进度推进至回退之前的进度并恢复重建;
如果所述写范围完全在失效成员磁盘已完成重建的存储空间之外,则将所述写命令下发给所述失效成员磁盘,并恢复重建。
5、如权利要求4所述的方法,其特征在于,在将所述写命令下发给所述新成员磁盘的同时,该方法进一步包括:
将所述写命令下发给所述失效成员磁盘。
6、如权利要求4或5所述的方法,其特征在于,在将所述写命令下发给所述对应的新成员磁盘失败后,该方法进一步包括:
重建终止,并发出表示新成员磁盘损坏的提示信息。
7、如权利要求3所述的方法,其特征在于,该方法进一步包括:
在接收到外部下发到所述失效成员磁盘的读命令之后,根据所述重建进度判断所述读命令所对应的读范围是否在失效成员磁盘中已完成重建的存储空间内,如果是,则将所述读命令重定向到所述新成员磁盘中;
否则,暂停重建并更新所述重建进度,根据更新后的重建进度判断所述读范围是否在失效成员磁盘中已完成重建的存储空间内,如果所述读范围完全在失效成员磁盘中已完成重建的存储空间内,则将所述读命令重定向到所述对应的新成员磁盘,并在下发成功后恢复重建;如果所述读范围不完全在失效成员磁盘中已完成重建的存储空间内,则将所述读命令下发至失效成员磁盘,获取失效成员磁盘中与所述读范围对应的部分数据,并恢复重建。
8、如权利要求7所述的方法,其特征在于,所述读范围不完全在失效成员磁盘中已完成重建的存储空间内,则在获取失效成员磁盘中与所述读范围对应的部分数据之后,
如果所述读范围一部分在失效成员磁盘中已完成重建的存储空间内、另一部分在失效成员磁盘中已完成重建的存储空间之外,则先将所述重建进度退回至读范围之前,然后将读命令下发到失效成员磁盘和对应的新成员磁盘,并在下发读命令成功之后再将重建进度推进至回退之前的进度并恢复重建;
如果所述读范围完全在失效成员磁盘中已完成重建的存储空间之外,则直接恢复重建。
9、如权利要求7或8所述的方法,其特征在于,所述获取失效成员磁盘中与所述读范围对应的部分数据包括:
如果对失效成员磁盘的读操作成功,则直接读取读范围对应的部分数据;
如果失效成员磁盘返回出错信息,则读取其他正常成员磁盘的数据计算出该部分数据。
10、如权利要求7或8所述的方法,其特征在于,在将所述读命令重定向到所述对应的新成员磁盘失败后,该方法进一步包括:
重建终止,并发出表示新成员磁盘损坏的提示信息。
11、如权利要求1所述的方法,其特征在于,所述最小拷贝粒度设置为一个扇区。
12、一种实现重建的磁盘冗余阵列RAID,包括:主控单元、以及多个聚合在一起的成员磁盘,所有成员磁盘中存在失效成员磁盘使得RAID处于降级状态,该RAID中还包括新成员磁盘,其特征在于,所述主控单元包括:
拷贝子单元,用于按照预设的单位存储空间大小,从失效成员磁盘中读取每个单位存储空间所对应的数据;如果读取成功,则将读取的数据写入到对应的所述新成员磁盘中,确定拷贝成功;如果读取失败,则确定拷贝出错;其中,所述单位存储空间的大小表示拷贝粒度、且设置为多于一个扇区;
计算子单元,用于在拷贝失败后读取RAID中其他正常成员磁盘内的数据进行计算,获得该单位存储空间内的数据并写入到对应的新成员磁盘中;
拷贝粒度调整子单元,用于在所述拷贝子单元确定拷贝出错、所述计算子单元读取RAID中其他正常成员磁盘内的数据进行计算之前,判断当前单位存储空间的大小是否为预设的最小拷贝粒度,如果是,则触发所述计算子单元执行所述读取RAID中其他正常成员磁盘内的数据进行计算;否则,降低当前单位存储空间大小,并触发所述拷贝子单元按照降低后的单位存储空间大小,继续执行所述判断当前单位存储空间的大小是否为预设的最小拷贝粒度。
13、如权利要求12所述的RAID,其特征在于,所述主控单元中进一步包括:进度判断子单元,用于判断当前单位存储空间是否为失效成员磁盘中的最后一个单位存储空间,如果是,则重建完成并将失效成员磁盘踢出RAID;否则,触发所述拷贝子单元继续对下一个单位存储空间的拷贝。
14、如权利要求13所述的RAID,其特征在于,所述主控单元中进一步包括:进度记录子单元,用于记录RAID重建进度。
15、如权利要求14所述的RAID,其特征在于,所述主控单元中进一步包括:
写命令处理子单元,用于在接收到外部下发到所述失效成员磁盘的写命令之后,根据所述重建进度判断所述写命令所对应的写范围是否在失效成员磁盘中已完成重建的存储空间内,如果是,则将所述写命令下发到所述新成员磁盘中;
否则,暂停所述拷贝单元的拷贝和所述计算单元的计算以实现重建的暂停,并更新所述重建进度,根据更新后的重建进度判断所述写范围是否在失效成员磁盘中已完成重建的存储空间内,
如果所述写范围完全在失效成员磁盘中已完成重建的存储空间内,则将所述写命令下发给所述对应的新成员磁盘,并在下发成功后恢复重建;
如果所述写范围一部分在失效成员磁盘中已完成重建的存储空间内、另一部分在失效成员磁盘中已完成重建的存储空间之外,则将所述重建进度回退到所述写范围之前,并将所述写命令下发到所述对应的新成员磁盘,在下发成功后,将所述重建进度推进至回退之前的进度并恢复重建;
如果所述写范围完全在失效成员磁盘已完成重建的存储空间之外,则将所述写命令下发给所述失效成员磁盘,并恢复重建。
16、如权利要求15所述的RAID,其特征在于,所述写命令处理子单元将所述写命令下发给所述对应的新成员磁盘失败后,终止所述拷贝单元的拷贝和所述计算单元的计算以实现重建的终止;
所述主控单元中进一步包括:第一信息提示子单元,用于在所述写命令处理子单元终止重建时,发出表示新成员磁盘损坏的提示信息。
17、如权利要求14所述的RAID,其特征在于,所述主控单元中进一步包括:
读命令处理子单元,用于在接收到外部下发到所述失效成员磁盘的读命令之后,根据所述重建进度判断所述读命令所对应的读范围是否在失效成员磁盘中已完成重建的存储空间内,如果是,则将所述读命令重定向到所述新成员磁盘中;
否则,暂停所述拷贝单元的拷贝和所述计算单元的计算以实现重建的暂停,并更新所述重建进度,根据更新后的重建进度判断所述读范围是否在失效成员磁盘中已完成重建的存储空间内,如果所述读范围完全在失效成员磁盘中已完成重建的存储空间内,则将所述读命令重定向到所述对应的新成员磁盘,并在下发成功后恢复重建;如果所述读范围不完全在失效成员磁盘中已完成重建的存储空间内,则将所述读命令下发至失效成员磁盘,获取失效成员磁盘中与所述读范围对应的部分数据,并恢复重建。
18、如权利要求17所述的RAID,其特征在于,所述读命令处理子单元将所述读命令重定向到所述对应的新成员磁盘失败后,终止所述拷贝单元的拷贝和所述计算单元的计算以实现重建的终止;
所述主控单元中进一步包括:第二信息提示子单元,用于在所述读命令处理子单元终止重建时,发出表示新成员磁盘损坏的提示信息。
CNB2007101761279A 2007-10-19 2007-10-19 实现磁盘冗余阵列重建的方法和磁盘冗余阵列 Active CN100495313C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101761279A CN100495313C (zh) 2007-10-19 2007-10-19 实现磁盘冗余阵列重建的方法和磁盘冗余阵列

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101761279A CN100495313C (zh) 2007-10-19 2007-10-19 实现磁盘冗余阵列重建的方法和磁盘冗余阵列

Publications (2)

Publication Number Publication Date
CN101135955A CN101135955A (zh) 2008-03-05
CN100495313C true CN100495313C (zh) 2009-06-03

Family

ID=39160068

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101761279A Active CN100495313C (zh) 2007-10-19 2007-10-19 实现磁盘冗余阵列重建的方法和磁盘冗余阵列

Country Status (1)

Country Link
CN (1) CN100495313C (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727298B (zh) * 2009-11-04 2012-05-23 北京东方广视科技股份有限公司 实现独立磁盘冗余阵列的方法和装置
CN101770413B (zh) * 2010-01-07 2013-03-20 杭州华三通信技术有限公司 冗余磁盘阵列重建的方法及设备
CN102158538B (zh) * 2011-02-18 2013-06-12 杭州宏杉科技有限公司 一种存储资源的管理方法及装置
CN102226892B (zh) * 2011-05-20 2013-10-23 杭州华三通信技术有限公司 一种磁盘容错处理方法及设备
CN102207895B (zh) * 2011-05-27 2012-11-14 杭州华三通信技术有限公司 一种独立磁盘冗余阵列数据重建方法和装置
CN102364940B (zh) * 2011-09-13 2016-05-04 杭州华三通信技术有限公司 一种基于raid阵列的信息处理方法和设备
CN102508733B (zh) * 2011-09-22 2016-01-20 杭州华三通信技术有限公司 一种基于磁盘阵列的数据处理方法及磁盘阵列管理器
CN102981921A (zh) * 2012-12-17 2013-03-20 浙江宇视科技有限公司 一种Raid5阵列读IO失败的修复方法和装置
CN105630689B (zh) * 2014-10-30 2018-11-27 曙光信息产业股份有限公司 一种分布式存储系统中加速数据重建的方法
CN104850359B (zh) * 2015-05-29 2019-01-15 浙江宇视科技有限公司 一种raid阵列重建方法和装置
CN105549908A (zh) * 2015-12-14 2016-05-04 深圳市万拓存储技术有限公司 Raid磁盘阵列重新恢复冗余的方法
CN106294032B (zh) * 2016-08-05 2019-06-28 上海交通大学 一种磁盘阵列单盘恢复的缓存方法及系统
CN112748864B (zh) * 2019-10-31 2024-04-19 伊姆西Ip控股有限责任公司 分配存储盘的方法、电子设备和计算机程序产品
CN112667156A (zh) * 2020-12-25 2021-04-16 深圳创新科技术有限公司 一种虚拟化raid实现方法及装置

Also Published As

Publication number Publication date
CN101135955A (zh) 2008-03-05

Similar Documents

Publication Publication Date Title
CN100495313C (zh) 实现磁盘冗余阵列重建的方法和磁盘冗余阵列
US7152184B2 (en) Storage device, backup method and computer program code of this storage device
US5195100A (en) Non-volatile memory storage of write operation identifier in data sotrage device
JP4754852B2 (ja) ストレージ制御装置および方法
US8904129B2 (en) Method and apparatus for backup and restore in a dynamic chunk allocation storage system
JP2501752B2 (ja) コンピユ―タ・システムのストレ―ジ装置及びデ―タのストア方法
US7975168B2 (en) Storage system executing parallel correction write
US8356292B2 (en) Method for updating control program of physical storage device in storage virtualization system and storage virtualization controller and system thereof
US6766491B2 (en) Parity mirroring between controllers in an active-active controller pair
JP2005011317A (ja) ストレージシステムを初期化する方法と装置
WO2002071230A1 (en) Utilizing parity caching and parity logging while closing the raid 5 write hole
JP2001296974A (ja) データ記憶システム及びデータ記憶方法
JP2003131817A (ja) Raid論理ドライブ・マイグレーションにおいてデータをマイグレーションするための方法及びシステム
WO2024113685A1 (zh) 一种raid阵列的数据恢复方法及相关装置
JPH11102262A (ja) ディスクサブシステムと磁気テープライブラリ装置によるリモートバックアップシステム
US6732290B1 (en) Recovery system for raid write
US7293193B2 (en) Array controller for disk array, and method for rebuilding disk array
JP2004522217A (ja) インタリーブされたバックアップを提供するための方法及びシステム
JPH08249218A (ja) ファイル制御装置及びデータ書き込み方法
JPH06119126A (ja) ディスクアレイ装置
US5878202A (en) I/O device having check recovery function
JP2004185477A (ja) 光記憶媒体アレイ装置およびデータ転送方法
US20050081088A1 (en) Array controller for disk array, and method for rebuilding disk array
US20090063770A1 (en) Storage control apparatus, storage control program, and storage control method
US20230297242A1 (en) Storage device and data recovery method by storage device

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
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.

CP03 Change of name, title or address