首页 / 专利库 / 电脑零配件 / 接口 / 硬盘故障处理方法、阵列控制器及硬盘

硬盘故障处理方法、阵列控制器及硬盘

阅读:847发布:2023-05-29

专利汇可以提供硬盘故障处理方法、阵列控制器及硬盘专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供一种 硬盘 故障处理方法。所述方法由存储阵列的阵列 控制器 执行。所述存储阵列包括多个硬盘,每个硬盘被划分多个存储 块 ,位于不同硬盘的多个存储块通过冗余 算法 构成存储块组。所述方法包括:获取第一硬盘中发生故障的故障区的故障信息;当所述故障信息指示所述故障区有数据丢失时,则确定丢失数据所在的故障存储块;利用所述故障存储块所归属的存储块组中的其他存储块恢复所述故障存储块的数据;将所恢复的数据存储至恢复存储块,所述恢复存储块位于第二硬盘,所述第二硬盘为除所述存储块组所在的硬盘以外的硬盘;记录所述故障存储块中的数据在所述第一硬盘中的地址与所述恢复数据块在所述第二硬盘中的地址的对应关系。,下面是硬盘故障处理方法、阵列控制器及硬盘专利的具体信息内容。

1.一种硬盘故障处理方法,由存储阵列的阵列控制器执行,所述存储阵列包括多个硬盘,每个硬盘被划分多个存储,位于不同硬盘的多个存储块通过冗余算法构成存储块组;
所述方法包括:
获取第一硬盘中发生故障的故障区的故障信息;
当所述故障信息指示所述故障区有数据丢失时,则确定丢失数据所在的故障存储块;
利用所述故障存储块所归属的存储块组中的其他存储块恢复所述故障存储块的数据;
将所恢复的数据存储至恢复存储块,所述恢复存储块位于第二硬盘,所述第二硬盘为除所述存储块组所在的硬盘以外的硬盘;
记录所述故障存储块中的数据在所述第一硬盘中的地址与所述恢复数据块在所述第二硬盘中的地址的对应关系。
2.如权利要求1所述的方法,其特征在于,所述获取第一硬盘中发生故障的故障区的故障信息包括:
接收所述第一硬盘上报的所述故障信息。
3.如权利要求1所述的方法,其特征在于,所述获取第一硬盘中发生故障的故障区的故障信息包括:
发送故障查询命令至所述第一硬盘;
接收所述第一硬盘根据所述故障查询命令上报的所述故障信息。
4.如权利要求2或3所述的方法,其特征在于,所述故障信息包括指示数据是否丢失的标识,根据所述标识确定所述故障区有数据丢失。
5.如权利要求1-4任意一项所述的方法,其特征在于,所述确定丢失数据所在的故障存储块包括:
获取所述第一硬盘中的第一存储块在所述第一硬盘中的地址;
发送数据丢失查询命令至所述第一硬盘,所述查询命令中携带所述第一存储块在所述第一硬盘中的地址;
接收所述第一硬盘返回的指示所述第一存储块是否包括所述丢失数据的指示信息;
当所述指示信息指示所述第一存储块包括所述丢失数据,则确定所述第一存储块为所述故障存储块;
当所述指示信息指示所述第一存储块不包括所述丢失数据,则生成新的数据丢失查询命令,所述新的数据丢失查询命令中携带所述第一硬盘的第二存储块在所述第一硬盘中的地址。
6.如权利要求1-4任意一项所述的方法,其特征在于,所述确定丢失数据所在的故障存储块包括:
发送故障区查询命令至所述第一硬盘;
接收所述第一硬盘返回的包括所述故障区的地址的信息;
根据所述故障区的地址确定所述故障存储块。
7.如权利要求1-6任意一项所述的方法,其特征在于,所述故障信息包括所述故障区的容量,所述方法还包括:
获取所述故障信息中的故障区的容量,将所述故障区的容量累加至所述第一硬盘的故障总容量中;
当判断所述故障总容量大于预设值,则提示用户替换所述第一硬盘。
8.一种硬盘故障处理方法,由存储阵列的阵列控制器执行,所述存储阵列中包括第一硬盘,所述第一硬盘中包括故障区,所述方法包括:
获取所述故障区的故障信息;
根据所述故障信息确定所述故障区的容量;
根据所述容量大小将所述第一硬盘中的部分数据迁移至第二硬盘;
记录所迁移数据在所述第一硬盘中的地址与在所述第二硬盘中的地址的映射关系。
9.如权利要求8所述的方法,其特征在于,所述第一硬盘与所述存储阵列中的其他硬盘根据冗余算法构成逻辑磁盘,所述方法还包括:
根据所述故障信息判断所述第一硬盘是否有数据丢失;
若所述第一硬盘有数据丢失,则通过所述冗余算法恢复所述第一硬盘中的数据。
10.一种硬盘故障处理方法,由硬盘执行,所述方法包括:
侦测所述硬盘中的故障区;
确定所述故障区是否有数据丢失;
根据确定结果设置所述故障区是否有数据丢失的标记;
将所述硬盘中包括故障区的标记及所述故障区是否有数据丢失的标记作为故障信息上报至阵列控制器。
11.如权利要求10所述的方法,其特征在于,所述方法还包括:
记录所述故障区的容量,所述故障信息还包括所述故障区的容量。
12.如权利要求11所述的方法,其特征在于,所述方法还包括:
判断所述故障区的容量是否大于预设值;
当所述故障区的容量大于预设值时,上报所述故障信息至所述阵列控制器。
13.如权利要求10至12任意一项所述的方法,其特征在于,所述故障信息记录在小型计算机系统接口SCSI协议中的信息异常日志页中;
所述方法还包括:
接收所述阵列控制器发送的输入输出IO请求
将所述信息异常日志页携带在所述IO请求的响应信息中,通过所述响应信息上报所述故障信息至所述阵列控制器。
14.如权利要求10至12任意一项所述的方法,其特征在于,所述故障信息记录在小型计算机系统接口SCSI协议中的信息异常日志页中;
所述方法还包括:
接收阵列控制器发送的故障信息查询请求;
将所述信息异常日志页携带在所述故障信息查询请求的响应信息中,通过所述响应信息上报所述故障信息。
15.如权利要求10至12任意一项所述的方法,其特征在于,所述故障信息记录在高级技术附件ATA协议中的盘内信息统计页中;
所述方法还包括:
接收所述阵列控制器发送的故障信息查询请求;
将所述盘内信息统计页携带在所述故障信息查询请求的响应信息中,通过所述响应信息上报所述故障信息。
16.如权利要求10至12任意一项所述的方法,其特征在于,所述故障信息记录在非易失性存储器标准NVMe协议中的健康信息日志中;
所述方法还包括:
将所述盘内信息统计页携带在异步事件请求的响应信息中,通过所述响应信息上报所述故障信息。
17.一种存储阵列中的阵列控制器,所述存储阵列包括多个硬盘,每个硬盘被划分多个存储块,位于不同硬盘的多个存储块通过冗余算法构成存储块组;所述阵列控制器包括:
获取模块,用于获取第一硬盘中发生故障的故障区的故障信息;
恢复模块,用于当所述故障信息指示所述故障区有数据丢失时,则确定丢失数据所在的故障存储块;利用所述故障存储块所归属的存储块组中的其他存储块恢复所述故障存储块的数据;将所恢复的数据存储至恢复存储块,所述恢复存储块位于第二硬盘,所述第二硬盘为除所述存储块组所在的硬盘以外的硬盘;
记录模块,用于记录所述故障存储块中的数据在所述第一硬盘中的地址与所述恢复数据块在所述第二硬盘中的地址的对应关系。
18.如权利要求17所述的阵列控制器,其特征在于,所述获取模块获取第一硬盘中发生故障的故障区的故障信息的方式为接收所述第一硬盘上报的所述故障信息。
19.如权利要求17所述的阵列控制器,其特征在于,所述获取模块获取第一硬盘中发生故障的故障区的故障信息的方式为发送故障查询命令至所述第一硬盘;接收所述第一硬盘根据所述故障查询命令上报的所述故障信息。
20.如权利要求17至19任意一项所述的阵列控制器,其特征在于,所述故障信息包括指示数据是否丢失的标识,根据所述标识确定所述故障区有数据丢失。
21.如权利要求17至20任意一项所述的阵列控制器,其特征在于,所述恢复模块在确定丢失数据所在的故障存储块时,具体用于:
获取所述第一硬盘中的第一存储块在所述第一硬盘中的地址;
发送数据丢失查询命令至所述第一硬盘,所述查询命令中携带所述第一存储块在所述第一硬盘中的地址;
接收所述第一硬盘返回的指示所述第一存储块是否包括所述丢失数据的指示信息;
当所述指示信息指示所述第一存储块包括所述丢失数据,则确定所述第一存储块为所述故障存储块;
当所述指示信息指示所述第一存储块不包括所述丢失数据,则生成新的数据丢失查询命令,所述新的数据丢失查询命令中携带所述第一硬盘的第二存储块在所述第一硬盘中的地址。
22.如权利要求17至20任意一项所述的阵列控制器,其特征在于,所述恢复模块在确定丢失数据所在的故障存储块时,具体用于:
发送故障区查询命令至所述第一硬盘;
接收所述第一硬盘返回的包括所述故障区的地址的信息;
根据所述故障区的地址确定所述故障存储块。
23.如权利要求17-22任意一项所述的阵列控制器,其特征在于,所述故障信息包括所述故障区的容量,所述阵列控制器还包括:
累计模块,用于获取所述故障信息中的故障区的容量,将所述故障区的容量累加至所述第一硬盘的故障总容量中;当判断所述故障总容量大于预设值,则提示用户替换所述第一硬盘。
24.一种存储阵列的阵列控制器,所述存储阵列中包括第一硬盘,所述第一硬盘中包括故障区,所述方法包括:
获取模块,用于获取所述故障区的故障信息;
迁移模块,用于根据所述故障信息确定所述故障区的容量,根据所述容量大小将所述第一硬盘中的部分数据迁移至第二硬盘;
记录模块,用于记录所迁移数据在所述第一硬盘中的地址与在所述第二硬盘中的地址的映射关系。
25.如权利要求24所述的阵列控制器,其特征在于,所述第一硬盘与所述存储阵列中的其他硬盘根据冗余算法构成逻辑磁盘,所述迁移模块还用于:
根据所述故障信息判断所述第一硬盘是否有数据丢失;
若所述第一硬盘有数据丢失,则通过所述冗余算法恢复所述第一硬盘中的数据。
26.一种硬盘,包括:
识别模块,用于侦测所述硬盘中的故障区;
标记模块,用于确定所述故障区是否有数据丢失,根据确定结果设置所述故障区是否有数据丢失的标记;
上报模块,用于将所述硬盘中包括故障区的标记及所述故障区是否有数据丢失的标记作为故障信息上报至阵列控制器。
27.如权利要求26所述的硬盘,其特征在于,所述硬盘还包括:
所述标记模块还用于记录所述故障区的容量,所述故障信息还包括所述故障区的容量。
28.如权利要求26所述的硬盘,其特征在于,所述上报模块还用于:
判断所述故障区的容量是否大于预设值;
当所述故障区的容量大于预设值时,上报所述故障信息至所述阵列控制器。
29.如权利要求26至28任意一项所述的硬盘,其特征在于,所述记录模块将所述故障信息记录在小型计算机系统接口SCSI协议中的信息异常日志页中;
所述上报模块具体用于:
接收所述阵列控制器发送的输入输出IO请求;
将所述信息异常日志页携带在所述IO请求的响应信息中,通过所述响应信息上报所述故障信息至所述阵列控制器。
30.如权利要求26至28任意一项所述的硬盘,其特征在于,所述记录模块将所述故障信息记录在小型计算机系统接口SCSI协议中的信息异常日志页中;
所述上报模块具体用于:
接收阵列控制器发送的故障信息查询请求;
将所述信息异常日志页携带在所述故障信息查询请求的响应信息中,通过所述响应信息上报所述故障信息。
31.如权利要求26至28任意一项所述的硬盘,其特征在于,所述故障信息记录在高级技术附件ATA协议中的盘内信息统计页中;
所述上报模块具体用于:
接收所述阵列控制器发送的故障信息查询请求;
将所述盘内信息统计页携带在所述故障信息查询请求的响应信息中,通过所述响应信息上报所述故障信息。
32.如权利要求26至28任意一项所述的硬盘,其特征在于,所述故障信息记录在非易失性存储器标准NVMe协议中的健康信息日志中;
所述上报模块具体用于:
将所述盘内信息统计页携带在异步事件请求的响应信息中,通过所述响应信息上报所述故障信息。
33.一种硬盘故障处理方法,由存储阵列的阵列控制器执行,所述存储阵列包括多个硬盘,每个硬盘被划分多个存储块,位于不同硬盘的多个存储块通过冗余算法构成存储块组;
所述方法包括:
获取第一硬盘中发生故障的故障区的故障信息;
当所述故障信息指示所述故障区有数据丢失时,则确定丢失数据所在的故障存储块;
利用所述故障存储块所归属的存储块组中的其他存储块恢复所述故障存储块的数据;
将所恢复的数据存储至恢复存储块,所述恢复存储块位于第二硬盘,所述第二硬盘为除所述存储块组所在的硬盘以外的硬盘;
将所述存储块组中的所述故障存储块替换为所述恢复存储块。
34.如权利要求33所述的方法,其特征在于,所述将所述存储块组中的所述故障存储块替换为所述恢复存储块包括:
将所述存储块组中的元数据记录的所述故障存储块在所述第一硬盘中的地址替换为所述恢复存储块在所述第二硬盘中的地址。
35.如权利要求33或34所述的方法,其特征在于,所述获取第一硬盘中发生故障的故障区的故障信息包括:
接收所述第一硬盘上报的所述故障信息。
36.如权利要求33或34所述的方法,其特征在于,所述获取第一硬盘中发生故障的故障区的故障信息包括:
发送故障查询命令至所述第一硬盘;
接收所述第一硬盘根据所述故障查询命令上报的所述故障信息。
37.如权利要求34至36任意一项所述的方法,其特征在于,所述故障信息包括指示数据是否丢失的标识,根据所述标识确定所述故障区有数据丢失。
38.如权利要求33至37任意一项所述的方法,其特征在于,所述确定丢失数据所在的故障存储块包括:
获取所述第一硬盘中的第一存储块在所述第一硬盘中的地址;
发送数据丢失查询命令至所述第一硬盘,所述查询命令中携带所述第一存储块在所述第一硬盘中的地址;
接收所述第一硬盘返回的指示所述第一存储块是否包括所述丢失数据的指示信息;
当所述指示信息指示所述第一存储块包括所述丢失数据,则确定所述第一存储块为所述故障存储块;
当所述指示信息指示所述第一存储块不包括所述丢失数据,则生成新的数据丢失查询命令,所述新的数据丢失查询命令中携带所述第一硬盘的第二存储块在所述第一硬盘中的地址。
39.如权利要求33至37任意一项所述的方法,其特征在于,所述确定丢失数据所在的故障存储块包括:
发送故障区查询命令至所述第一硬盘;
接收所述第一硬盘返回的包括所述故障区的地址的信息;
根据所述故障区的地址确定所述故障存储块。
40.一种存储阵列中的阵列控制器,所述存储阵列包括多个硬盘,每个硬盘被划分多个存储块,位于不同硬盘的多个存储块通过冗余算法构成存储块组;所述阵列控制器包括:
获取模块,用于获取第一硬盘中发生故障的故障区的故障信息;
恢复模块,用于当所述故障信息指示所述故障区有数据丢失时,则确定丢失数据所在的故障存储块;利用所述故障存储块所归属的存储块组中的其他存储块恢复所述故障存储块的数据;将所恢复的数据存储至恢复存储块,所述恢复存储块位于第二硬盘,所述第二硬盘为除所述存储块组所在的硬盘以外的硬盘;
记录模块,用于将所述存储块组中的所述故障存储块替换为所述恢复存储块。
41.一种存储阵列中的阵列控制器,其特征在于,所述替换模块在将所述存储块组中的所述故障存储块替换为所述恢复存储块时,具体用于将所述存储块组中的元数据记录的所述故障存储块在所述第一硬盘中的地址替换为所述恢复存储块在所述第二硬盘中的地址。
42.如权利要求40或41所述的阵列控制器,其特征在于,所述获取模块获取第一硬盘中发生故障的故障区的故障信息的方式为接收所述第一硬盘上报的所述故障信息。
43.如权利要求40或41所述的阵列控制器,其特征在于,所述获取模块获取第一硬盘中发生故障的故障区的故障信息的方式为发送故障查询命令至所述第一硬盘;接收所述第一硬盘根据所述故障查询命令上报的所述故障信息。
44.如权利要求40至43任意一项所述的阵列控制器,其特征在于,所述故障信息包括指示数据是否丢失的标识,根据所述标识确定所述故障区有数据丢失。
45.如权利要求40至43任意一项所述的阵列控制器,其特征在于,所述恢复模块在确定丢失数据所在的故障存储块时,具体用于:
获取所述第一硬盘中的第一存储块在所述第一硬盘中的地址;
发送数据丢失查询命令至所述第一硬盘,所述查询命令中携带所述第一存储块在所述第一硬盘中的地址;
接收所述第一硬盘返回的指示所述第一存储块是否包括所述丢失数据的指示信息;
当所述指示信息指示所述第一存储块包括所述丢失数据,则确定所述第一存储块为所述故障存储块;
当所述指示信息指示所述第一存储块不包括所述丢失数据,则生成新的数据丢失查询命令,所述新的数据丢失查询命令中携带所述第一硬盘的第二存储块在所述第一硬盘中的地址。
46.如权利要求40至43任意一项所述的阵列控制器,其特征在于,所述恢复模块在确定丢失数据所在的故障存储块时,具体用于:
发送故障区查询命令至所述第一硬盘;
接收所述第一硬盘返回的包括所述故障区的地址的信息;
根据所述故障区的地址确定所述故障存储块。

说明书全文

硬盘故障处理方法、阵列控制器及硬盘

技术领域

[0001] 本发明涉及存储技术领域,特别涉及在硬盘中的存储区发生故障后的处理方法及执行所述处理方法的阵列控制器及硬盘。

背景技术

[0002] 由于固态硬盘的不能原地写,只能异地写,所以在固态硬盘中必须留出一部分冗余空间作为固态硬盘的数据写入的腾挪空间以提升固态硬盘的性能。固态硬盘对外提供的标称容量不包括所述冗余空间的容量。
[0003] 当固态硬盘中出现部分区域故障后(例如die故障,以下简称故障区)时,为了使所述标称容量不减少,就需要通过冗余空间的容量进行补偿所述故障区,这样将导致冗余空间的容量减少。冗余空间的减少会导致固态硬盘的磨损度增加,从而影响固态硬盘的性能。

发明内容

[0004] 本发明实施例提供在硬盘中出现的故障区后的处理方法,使用所述处理方法,在硬盘出现故障区后,不会使硬盘的冗余空间减少,从而不会导致硬盘的磨损度增加。
[0005] 本发明实施例第一方面提供一种硬盘故障处理方法,所述方法由存储阵列的阵列控制器执行。所述存储阵列包括多个硬盘,每个硬盘被划分多个存储,位于不同硬盘的多个存储块通过冗余算法构成存储块组。所述方法包括:获取第一硬盘中发生故障的故障区的故障信息;当所述故障信息指示所述故障区有数据丢失时,则确定丢失数据所在的故障存储块;利用所述故障存储块所归属的存储块组中的其他存储块恢复所述故障存储块的数据;将所恢复的数据存储至恢复存储块,所述恢复存储块位于第二硬盘,所述第二硬盘为除所述存储块组所在的硬盘以外的硬盘;记录所述故障存储块中的数据在所述第一硬盘中的地址与所述恢复数据块在所述第二硬盘中的地址的对应关系。
[0006] 通过将第一硬盘中故障存储块中丢失的数据恢复至第二硬盘的恢复存储块中,并记录故障存储块在第一硬盘中的地址与恢复存储块在第二硬盘中的地址的对应关系,这样,即不会减少第一硬盘中的冗余空间,从而保障了第一硬盘的性能。
[0007] 在第一方面的实施例中,提供了两种获取第一硬盘中发生故障的故障区的故障信息的方式,第一种为所述阵列控制器接收所述第一硬盘上报的所述故障信息;第二种为所述阵列控制器发送故障查询命令至所述第一硬盘;然后接收所述第一硬盘根据所述故障查询命令上报的所述故障信息。
[0008] 可选地,所述故障信息包括指示数据是否丢失的标识,根据所述标识确定所述故障区有数据丢失。
[0009] 在第一方面的实施例中,提供了两种确定丢失数据所在的故障存储块的方式,第一种为所述阵列控制器获取所述第一硬盘中的第一存储块在所述第一硬盘中的地址;发送数据丢失查询命令至所述第一硬盘,所述查询命令中携带所述第一存储块在所述第一硬盘中的地址;在所述第一硬盘接收到所述查询指令后,会确定所述查询指令中携带的地址是否包括所述故障区的部分或者全部地址,如果包括则所述第一硬盘在所述查询指令的返回消息中携带指示所述第一存储块包括所述丢失数据的指示信息,否则,则在所述查询指令的返回消息中携带指示所述第一存储块不包括所述丢失数据的指示信息。在接收到所述第一硬盘返回的指示所述第一存储块是否包括所述丢失数据的指示信息后,所述阵列控制器若判断所述指示信息指示所述第一存储块包括所述丢失数据,则确定所述第一存储块为所述故障存储块;然后生成新的数据丢失查询命令,所述新的数据丢失查询命令中携带所述第一硬盘的第二存储块在所述第一硬盘中的地址。
[0010] 第二种确定丢失数据所在的故障存储块的方式为发送故障区查询命令至所述第一硬盘;接收所述第一硬盘返回的包括所述故障区的地址的信息;根据所述故障区的地址确定所述故障存储块。
[0011] 可选地,所述故障信息包括所述故障区的容量,所述方法还包括:获取所述故障信息中的故障区的容量,将所述故障区的容量累加至所述第一硬盘的故障总容量中;当判断所述故障总容量大于预设值,则提示用户替换所述第一硬盘。
[0012] 通过硬盘损失的总容量确定是否更换硬盘,跟现有技术中检测硬盘的磨损度相比,检测的方式更方便,且更准确。
[0013] 本发明第二方面提供一种硬盘故障处理方法,所述方法由存储阵列的阵列控制器执行,所述存储阵列中包括第一硬盘,所述第一硬盘中包括故障区。所述方法包括获取所述故障区的故障信息;根据所述故障信息确定所述故障区的容量;根据所述容量大小将所述第一硬盘中的部分数据迁移至第二硬盘;记录所迁移数据在所述第一硬盘中的地址与在所述第二硬盘中的地址的映射关系。
[0014] 可选地,所述第一硬盘与所述存储阵列中的其他硬盘根据冗余算法构成逻辑磁盘。所述方法还包括根据所述故障信息判断所述第一硬盘是否有数据丢失;若所述第一硬盘有数据丢失,则通过所述冗余算法恢复所述第一硬盘中的数据。
[0015] 通过获取硬盘中数据丢失的信息及硬盘之间的冗余算法,可以及时恢复硬盘中丢失的数据。
[0016] 本发明第三方面提供一种硬盘故障处理方法,由硬盘执行。所述方法包括侦测所述硬盘中的故障区;确定所述故障区是否有数据丢失;根据确定结果设置所述故障区是否有数据丢失的标记;将所述硬盘中包括故障区的标记及所述故障区是否有数据丢失的标记作为故障信息上报至阵列控制器。
[0017] 可选地,所述硬盘还会记录所述故障区的容量,并将所述故障区的容量作为故障信息上报至阵列控制器。
[0018] 通过上报硬盘的故障区的容量,可以使阵列控制器感知故障区丢失的容量,从而在阵列接收到写请求时,能将写请求分配到剩余容量比较大的硬盘中,从而更好的控制硬盘。
[0019] 可选地,所述方法还包括判断所述故障区的容量是否大于预设值,当所述故障区的容量大于预设值时,上报所述故障信息至所述阵列控制器。
[0020] 在故障区的容量大于预设值时,再上报故障信息,可以避免频繁的上报故障信息对存储阵列的性能的影响。
[0021] 在所述第三方面的实现方式中,当硬盘与阵列控制器的通信协议不同时,硬盘记录和上报所述故障信息的方式也有所不同。当所述硬盘与所述阵列控制器之间的通信协议为SCSI协议时,则所述故障信息记录在所述SCSI协议中的信息异常日志页中;
[0022] 在SCSI协议中,上报所述故障信息的方式又有两种,第一种为:接收所述阵列控制器发送的输入输出IO请求;将所述信息异常日志页携带在所述IO请求的响应信息中,通过所述响应信息上报所述故障信息至所述阵列控制器;第二种为:接收阵列控制器发送的故障信息查询请求;将所述信息异常日志页携带在所述故障信息查询请求的响应信息中,通过所述响应信息上报所述故障信息。
[0023] 当所述硬盘与所述阵列控制器之间的通信协议为ATA协议时,所述故障信息记录在ATA协议中的盘内信息统计页中;则上报所述故障信息的方式为:接收所述阵列控制器发送的故障信息查询请求;将所述盘内信息统计页携带在所述故障信息查询请求的响应信息中,通过所述响应信息上报所述故障信息。
[0024] 当所述硬盘与所述阵列控制器之间的通信协议为NVMe协议时,所述故障信息记录在NVMe协议中的健康信息日志中;则上报所述故障信息的方式为:将所述盘内信息统计页携带在异步事件请求的响应信息中,通过所述响应信息上报所述故障信息。
[0025] 本发明第四方面提供一种硬盘故障处理方法,第四方面提供的硬盘处理方法与第一方面提供的硬盘故障处理方法的区别仅在于,在将所恢复的数据存储至恢复存储块后,用恢复存储块代替所述存储块组中的故障存储块,而不需要记录恢复存储块和故障存储块之间的对应关系。
[0026] 本发明第五方面提供一种与所述第一方面提供的硬盘故障处理方法对应的阵列控制器,所述阵列控制器的各功能模块所执行的功能与所述第一方面提供的硬盘故障处理方法包括的各步骤相同,在此不再赘述。
[0027] 本发明第六方面提供一种与所述第二方面提供的硬盘故障处理方法对应的阵列控制器,所述阵列控制器的各功能模块所执行的功能与所述第二方面提供的硬盘故障处理方法包括的各步骤相同,在此不再赘述。
[0028] 本发明第七方面提供一种与所述第三方面提供的硬盘故障处理方法对应的硬盘,所述硬盘的各功能模块所执行的功能与所述第三方面提供的硬盘故障处理方法包括的各步骤相同,在此不再赘述。
[0029] 本发明第八方面提供一种与所述第四方面提供的硬盘故障处理方法对应的阵列控制器,所述阵列控制器的各功能模块所执行的功能与所述第四方面提供的硬盘故障处理方法包括的各步骤相同,在此不再赘述。
[0030] 本发明第九方面提供一种阵列控制器,所述阵列控制器包括处理器及计算机可读存储介质,所述存储介质中存储有程序指令,所述处理器运行所述程序指令以执行第一方面、第二方面或第四方面所提供的硬盘故障处理方法。
[0031] 本发明第十方面提供一种硬盘,所述硬盘包括处理器及计算机可读存储介质,所述存储介质中存储有程序指令,所述处理器运行所述程序指令以执行第三方面所提供的硬盘故障处理方法。
[0032] 本发明第十一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面、第二方面、第三方面、或第四方面的方法。附图说明
[0033] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
[0034] 图1为存储阵列的结构图。
[0035] 图2为本发明第一实施例中,阵列控制器生成逻辑磁盘的示意图。
[0036] 图3为本发明第一实施例中存储阵列提供热备空间及冗余空间的示意图。
[0037] 图4为本发明第一实施例中存储阵列对硬盘中的故障区进行处理的流程图
[0038] 图5为本发明实施例中SCSI协议中定义的指示硬盘故障区ASC代码及ASCQ代码。
[0039] 图6为本发明实施例中SCSI协议中的信息异常日志页的示例图。
[0040] 图7为本发明实施例中IO请求的返回信息中的描述符格式感应数据的示意图。
[0041] 图8为本发明实施例中ATA协议中定义的盘内信息统计页的示意图。
[0042] 图9为本发明实施例中在NVMe协议中定义的健康信息日志的示意图。
[0043] 图10为本发明实施例中阵列控制器接收到改写请求时的处理方法的流程图。
[0044] 图11为本发明第二实施例中,阵列控制器通过多个独立硬盘通过RAID算法形成逻辑磁盘的示意图。
[0045] 图12为本发明第二实施例中对硬盘中出现的故障区进行处理的方法的流程图。
[0046] 图13为本发明实施例中的硬盘的模块图。
[0047] 图14为本发明第一实施例中的阵列控制器的模块图。
[0048] 图15为本发明第二实施例中的阵列控制器的模块图。

具体实施方式

[0049] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
[0050] 如图1所示,为存储阵列100的结构图。所述存储阵列100包括阵列控制器101、多个硬盘105-108、内存103、通讯接口104、及总线102。所述阵列控制器101用于运行内存103中的程序(图未示)以对所述硬盘105-108进行管理并对其中的数据进行访问。所述通讯接口104用于连接至主机(图未示),所述主机可以通过所述通讯接口104传输读写指令或者管理指令至所述存储阵列100。所述通讯接口可以为非易失性存储器标准(Non-Volatile Memory express,NVMe)接口也可以是小型计算机系统接口(Small Computer System Interface,SCSI)SCSI接口。
[0051] 如图2所示,为本发明第一实施例中,阵列控制器101生成提供给主机使用的逻辑磁盘的示意图。在所述存储阵列100是使用NVMe接口的闪存阵列时,则所述主机与所述存储阵列100通过NVMe协议通信,所述存储阵列100生成的逻辑磁盘可通过NVMe协议中定义的命名空间(Namespace)表示。在所述存储阵列100是使用SCSI接口的存储阵列时,则主机与所述存储阵列100通过SCSI协议通信,所述硬盘即可通过SCSI协议中定义的逻辑单元号(Logic Unit Number,LUN)表示。在图2的实施例中,以所述阵列控制器101在SCSI协议下生成LUN的过程为例进行说明。
[0052] 如图2所示,所述存储阵列100中的各个硬盘105-108被划分为相同大小的存储块(chunk),将归属于不同硬盘的chunk利用独立硬盘冗余阵列(redundant arrays of independent drives,RAID)算法生成存储块组(chunk group)。如图2中所示,归属于硬盘102的chunk201、归属于硬盘106的chunk202、及归属于硬盘107的chunk203通过RAID5算法生成chunk group 204。归属于硬盘102的chunk205、归属于硬盘107的chunk206、及归属于硬盘108的chunk207通过RAID5算法生成chunk group 208。在生成chunk group之后,所述存储控制器101记录构成每个chunk group的chunk所在的硬盘。基于所述chunk group构建存储池209,并基于所述存储池209构建逻辑磁盘,例如LUN0、LUN1、及LUN3。
[0053] 如图3所示,在本发明实施例中,除了所述存储资源池209,所述存储阵列100还提供热备空间210及冗余空间211。所述热备空间210用于在硬盘中的chunk故障后,对故障chunk中的数据进行恢复并替代故障chunk。所述冗余空间是所述存储阵列100预留的空间,所述存储阵列100不对外提供所述冗余空间的大小,所述冗余空间用于提高存储阵列100的性能。所述热备空间210和冗余空间211可以是单个硬盘,也可以是多个硬盘中的chunk构成池化空间。在本发明实施例中,所述热备空间和冗余空间可以被划分为与所述chunk同样大小的粒度,用于替换硬盘中的故障chunk。关于如何利用所述热备空间210和冗余空间211替换硬盘中的故障chunk将在下文描述硬盘故障处理的方法时做详细描述。
[0054] 如背景技术所述,现有技术中在硬盘中产生故障区(即为硬盘中发生故障的一段存储空间)后,例如硬盘中的die故障后,所述阵列控制器100是不感知的,所以也不会对出现的故障进行处理,之后阵列控制器100在检测到所述硬盘的磨损度达到阈值后,直接进行换盘处理。但是在所述硬盘的磨损度没有达到所述阈值时,故障区会导致硬盘的冗余空间减少,冗余空间的减少会影响存储系统的性能。
[0055] 本发明实施例提供的故障处理方法可以使所述阵列控制器100确定硬盘中的故障区所在的故障存储块,将故障存储块用冗余空间211或者热备空间210的存储块替代,从而不会影响整个存储系统的性能。
[0056] 下面将通过图4的流程图说明本发明实施例中对硬盘中的故障进行处理的方法。
[0057] 图4为在图2所示的架构下,存储系统对硬盘中的故障区进行处理的方法的流程图,在下面的描述中仅以存储阵列100中的硬盘105出现故障为例进行说明。
[0058] 步骤S401,所述硬盘105识别硬盘105中的故障区,并累计故障区的容量。
[0059] 所述故障区可以为硬盘的flash中的Die颗粒,也可以为硬盘上的一段空间。在硬盘运行过程中,硬盘会统计硬盘中的存储区出现异常的次数,当某个存储区的某种类型的异常出现的次数超过预设值时,即可识别该存储区为故障区。所述异常可以为出现错误检查和纠正错误(error checking and correction error,ECC error)、无法纠正的ECC编码错误(uncorrectable error-correcting code error,UNC)、对I/O的响应慢、或者对I/O的响应超时等。对故障区的识别可以是现有技术中任意一种方式,在此不作限制。硬盘所执行的功能由硬盘中的处理器(图未示)执行硬盘中的内存(图未示)中存储的一段程序代码实现。
[0060] 步骤S402,所述阵列控制器101获取硬盘105中的故障区的故障信息。所述故障信息中包括指示所述故障区是否有数据丢失的标识。在一些实施例中,所述故障信息中还包括故障区的容量。
[0061] 在实际应用中,有些硬盘为了保证数据的可靠性,会在硬盘内做具有数据恢复能的RAID,例如RAID1、RAID 5等,这样,即使是硬盘中存在故障区,也可以通过硬盘内的RAID算法恢复故障区的数据,从而不会产生数据丢失。而当硬盘中没有做盘内RAID或者做的是不能恢复数据的RAID,例如RAID0时,则故障区中的数据无法恢复,所以会导致数据丢失。所以在本发明实施例中,所述阵列控制器101会获取指示所述故障区是否有数据丢失的标识,以便后续对所述故障区中丢失的数据进行恢复。
[0062] 在本发明实施例中,针对硬盘105与存储阵列100之间的不同通信协议,获取所述故障信息方式也不同,下面分别介绍在不同通讯协议下获取故障区的故障信息的方式。
[0063] SCSI协议
[0064] 在现有的SCSI协议中,定义有附加检测代码(ASC)和附件检测代码限定词(ASCQ),通过不同的ASC和ASCQ标识硬盘中产生的异常。在硬盘检测到异常后,即将该异常对应的ASC和ASCQ记录在信息异常日志页(informational exception log page)。所述信息异常日志页为SCSI协议中定义的用于记录硬盘的异常的日志页。在现有的SCSI协议中,ASC为5D时,表示的是超出故障预测阈值(FAILURE PREDICTION THRESHOLD EXCEEDED),即当所监测的硬盘中某个参数超过设定的阈值时,就需要将所述参数上报至阵列控制器。而5D对应的各ASCQ则定义了硬盘中需要检测的各项参数。由于现有的SCSI协议中并未定义上报硬盘中出现故障区的ASCQ,且无法上报故障区的容量,所以在本发明实施例中,定义了表示故障区的故障情况的ASCQ代码6D及6E。如图5所示,为本发明实施例中新定义的ASCQ代码6D及6E的定义,其中,6D表示的是硬盘中的出现故障区但没有数据丢失,而6E表示硬盘中出现故障区且有数据丢失。在硬盘检测到故障区,且总的故障容量达到预设值时,则根据故障区的数据是否丢失将6D或者6E记录在信息异常日志页中。如图6所示,为信息异常日志页的示例图,当故障区的故障容量达到预设值,且没有数据丢失时,则在所述信息异常日志页的第8字节表示的信息异常ASC(INFORMATION EXCEPTION ADDITIONAL SENSE CODE)填入5D,在所述信息异常日志页的第9字节信息异常ASCQ(INFORMATIONAL EXCEPTION ADDITIONAL SENSE CODE QUALIFIER)内填入6D。当故障区的容量达到预设值,且有数据丢失时,则在所述信息异常日志页的第8字节表示的信息异常ASC填入5D,在所述信息异常日志页的第9字节信息异常ASCQ内填入6E。另外,可选地,还会将所述故障区的容量记录在所述信息异常日志页的信息(information)字节中,如图6所示,携带的是“00 00 00 00 00 01 00 00”(16进制),即8GB的故障容量。上述ASCQ代码6D及6E只是举例说明,在实际使用中,可以使用ASC 5D下任意未被协议使用的ASCQ。
[0065] 在SCSI协议中,可通过两种方式获取所述故障区的故障信息。
[0066] 第一种方式为硬盘105主动上报。
[0067] 在接收到阵列控制器101发送的IO请求后,在信息异常日志页的所述信息异常ASC字节及信息异常ASCQ字节中记录有异常代码时,例如5D及6E,则将所述5D及6E及信息字节中记录的故障容量8G分别写入所述IO请求的返回信息中的描述符格式感应数据(Descriptor format sense data)中。如图7所示,所述描述符格式感应数据包括ASC字节及ASCQ字节,则将从所述信息异常日志页中获取的ASC代码5D,及ASCQ代码6D/6E填入所述描述符格式感应数据的中的ASC及ASCQ中。另外所述描述符格式感应数据也包括信息字节,则可以将所述故障区容量写入所述描述符格式感应数据的信息字节中。
[0068] 如此,在阵列控制器101接收到所述IO请求的返回信息后,即可从所述返回信息的描述符格式感应数据获取所述硬盘中的故障区的故障信息。
[0069] 第二种方式为阵列控制器101定时查询硬盘105中的故障区的故障信息。
[0070] 在这种方式中,阵列控制器101会定时发送故障查询指令至所述硬盘105,该故障查询指令中会携带信息异常日志页的标识。所述硬盘105在接收到所述故障查询指令后,会将所述信息异常日志页返回给所述阵列控制器101。所述阵列控制器101在接收到所述日志页后,从中获取ASC、ASCQ及信息对应的内容。若所述ASC、ASCQ分别为5D及6D,则所述阵列控制器101可获取所述硬盘105中的的异常为出现故障区,故障区没有数据丢失。若所述ASC、ASCQ分别为5D及6E,则所述阵列控制器101可获取所述硬盘中的异常为出现故障区,故障区有数据丢失。可选地,还可以从信息对应的字节中获取故障区的容量。
[0071] 第二、高级技术附件(Advanced Technology Attachment,ATA)协议[0072] 在ATA协议中,定义有盘内信息统计页(Solid State Device Statistics),该统计页用于记录硬盘检测到的硬盘的各项异常的异常信息。在本发明实施例中,定义了新的异常信息即不能纠正的闪存单元错误信息(Uncorrect Flash Unit Error Information),用于记录硬盘中出现故障区的故障信息。如图8所示,该信息通过64位的二进制数表示,其中15:0位数被设置为00000010(图中以16进制表示为:0002),为所述盘内信息统计页的标识。23:16位数用于指示硬盘中是否有故障区,如果有故障区,则将23:16位设置为00000001(图中以16进制表示为01),如果没有故障区,则将23:16位设置为00000000(图中以16进制表示为00)。31:24位数用于指示故障区是否有数据丢失,如果有数据丢失,则将31:24设置为00000001(图中以16进制表示为01),如果没有数据丢失,则将31:24设置为00000000(也可以以16进制表示为00)。另外,所述硬盘还会在盘内信息统计页中记录故障区的容量,例如在图8中24至31字节定义了参数:不可纠正的容量参数(uncorrectable capacity parameter),也为64位,将故障区的故障容量记录在该参数对应的位置处,在本发明实施例中,上报的容量为:0000 00 00 00 01 00 00(16进制),即8G。
[0073] 阵列控制器101会定时发送查询命令至所述硬盘105,所述查询命令中携带所述盘内信息统计页的标识。所述硬盘在接收到所述故障查询指令后,会将所述盘内信息统计页返回给所述阵列控制器101。所述阵列控制器101在接收到所述盘内信息统计页后,从中获取不能纠正的闪存单元错误信息,即所述64位的二级制数(或者16位的16进制数)。对所述不能纠正的闪存单元错误信息进行分析,即可得到所述硬盘105中的故障区信息。
[0074] 第三、NVMe协议
[0075] 在NVMe协议中,定义有健康信息日志(Health Information Log),该日志用于记录硬盘检测到的硬盘的各项异常的异常信息。如图9所示,在健康信息日志字节0中的不同位定义了硬盘中的不同的异常信息,其中第1、2、3、4位是现有的NVMe协议中已经定义的异常信息,由于跟本发明不相关,在此不做描述。在本发明实施例中,新定义了第5位,用于表示所述硬盘105中是否出现故障区,当所述第5位的值为1时,表示所述硬盘105中有出现故障区。另外在第6-9这4个字节中定义了32位的字符串,其中最高位,也就是第9字节的bit7用于表示故障区是否有数据丢失,例如该位设置为1时,表示所述故障区有数据丢失,设置为0时,表示所述故障区没有数据丢失。最高位之后的位都用来表示故障存储块的故障容量,例如16进制的“00 00 00 00 00 01 00 00”表示故障存储块没有数据丢失,故障存储块的故障容量为8GB。而“80 00 00 00 00 01 00 00”(16进制的最高位为8,相当于2进制的最高位为1),表示故障存储块没有数据丢失,故障存储块的故障容量为8GB。
[0076] 当硬盘统计故障存储块的故障容量达到预设值时,则通过异步事件请求(Asynchronous Event Request)的响应将所述健康信息日志上报至阵列控制器101。阵列控制器101对所述健康信息日志进行分析即可获取故障区的故障信息。
[0077] 步骤S403,所述阵列控制器101从所述故障信息中获取所述硬盘105故障区的容量,并将所获取的容量信息累加至所述阵列控制器101所记录的所述硬盘的总故障容量中。当所述硬盘105的总故障容量达到预设值时,则通知用户对所述硬盘105进行更换。
[0078] 步骤S404,所述阵列控制器101根据所述故障信息中指示所述故障区有数据丢失,则所述阵列控制器101确定丢失数据所在的chunk。
[0079] 在本发明实施例中,提供了两种确定丢失数据的所在的chunk的方法。第一种方法为所述阵列控制器101获取归属于所述硬盘的各chunk的在所述硬盘105中的地址,在所述硬盘为SSD时,在所述硬盘105中的地址指的是在所述硬盘中的逻辑地址,然后发送数据丢失查询命令至所述硬盘105,所述查询命令中携带其中一个chunk的逻辑地址。在图2中描述了在构建所述存储池时,所述阵列控制器101会记录归属于每个硬盘的Chunk,所以所述阵列控制器101在确定丢失数据所在的chunk时,以chunk为粒度查询所述硬盘中的丢失数据的逻辑地址。在所述硬盘收到所述丢失数据查询命令时,判断所述丢失数据查询命令携带的逻辑地址中是否包含所述故障区的部分地址或者全部地址,如果包含,则上报有数据丢失的标识至所述存储控制器101,如果没有,则上报没有数据数据丢失的标识至所述存储控制器101。所述存储控制器101接收到上报信息后,若所述上报信息中包括数据丢失的标识时,将所述丢失数据查询命令中携带的chunk逻辑地址所指示的chunk作为丢失数据所在的chunk。在一种实施方式中,硬盘上报的故障区一般会小于chunk的大小,在这种实施方式中,若所述上报信息中包括没有数据丢失的标识时,则发送新的数据丢失查询命令至所述硬盘,新的数据丢失查询命令中携带的是所述硬盘的其他chunk的逻辑地址,如此,直到找到丢失数据所在的chunk为止。在另外一种实施方式中,若硬盘的上报的故障区大于一个chunk的大小的时候,阵列控制器会每次发送一个chunk的地址至硬盘确定故障存储块,在接收到一个chunk的返回信息后,会发送下一个chunk的地址至所述硬盘,直到所述硬盘的所有chunk的地址发送至硬盘,从而确定丢失数据所在的多个chunk。
[0080] 第二种方法为所述阵列控制器101发送故障列表查询命令至所述硬盘105,所述硬盘105会在接收到所述查询命令后,将所记录的故障区的逻辑地址列表上报至所述阵列控制器101,所述阵列控制器101根据上报的逻辑地址列表即可确定丢失数据所在的chunk。
[0081] 步骤S405,当所述阵列控制器101确定了丢失数据所在的chunk,即故障chunk后,则利用与所述故障chunk组成chunk组的其他chunk通过RAID算法恢复所述故障chunk中的数据。
[0082] 步骤S406,所述阵列控制器101将所恢复的数据存储至所述热备空间或者所述OP空间中的一个空闲chunk,所述空闲chunk即为备份chunk。所述备份chunk所在的硬盘与所述chunk组中的其他chunk所在的硬盘不同。
[0083] 步骤S407,所述阵列控制器101记录所述故障chunk在所述硬盘中的地址与所述备份chunk在所述备份空间或者所述OP空间中的地址的映射关系。
[0084] 如此,在阵列控制器101后续接收到对所述故障chunk中的数据进行更新写的请求时,则将所述请求中的待写数据写入所述备份chunk中。并将故障chunk中的数据置为无效,后续在垃圾回收的过程中,可以释放故障chunk中除所述故障区之外的空间。
[0085] 在本发明第二实施例中,在步骤S406中将所述恢复数据恢复到所述备份chunk之后,所述阵列控制器101会用所述恢复chunk替换所述chunk组中的所述故障chunk。替换时,可以将所述chunk组的元数据中记录的所述故障chunk在所述第一硬盘的地址替换为所述恢复存储块在所述恢复存储块所在硬盘的地址。
[0086] 在硬盘上报了硬盘的损失容量后,阵列控制器101会记录每个硬盘的损失容量,并计算每个硬盘目前的可用容量,并限制写入损失容量比较大的硬盘的数据。如图10所述为阵列控制器101接收到对硬盘中的数据的改写请求时的处理方法的流程图。
[0087] 步骤S501,接收写请求,所述写请求中携带待写数据、待写数据的逻辑地址及待写数据的数据量;
[0088] 步骤S502,根据所述待写数据的逻辑地址确定所述待写数据的目标硬盘为所述硬盘105。
[0089] 步骤S503,查询该硬盘105的可用容量;
[0090] 步骤S504,判断所述硬盘的可用容量是否小于所述待写数据的数据量。
[0091] 步骤S505,若所述硬盘的可用容量大于所述待写数据的数据量,则将所述待写数据写入所述硬盘。
[0092] 步骤S506,若所述硬盘的可用容量小于等于所述待写数据的数据量,则将所述待写数据写入所述热备空间或者冗余空间,并将所述硬盘105中所述逻辑地址指向的数据标记为垃圾数据,等待后续的执行的垃圾回收。
[0093] 在所述阵列控制器101标记了每个硬盘的可用容量后,后续需要创建新的chunk group时,可选择可用容量大的硬盘创建chunk group。其中硬盘的可用容量为:硬盘的标称容量减去损失容量,再减去已用空间。
[0094] 如图11所示,为本发明第三实施例中,由多个独立硬盘1104-1106通过RAID算法形成逻辑磁盘LUN1101。热备空间1102和冗余空间1103也是由独立的硬盘1107和1108提供。
[0095] 下面通过图12所示的流程图描述在第三实施例中如何对硬盘中出现的故障区进行处理。
[0096] 在第三实施例中,步骤S701~S703与第一实施例中图4中的步骤S401~S403相同,在此不再赘述。
[0097] 步骤S704,所述阵列控制器101获取所述故障信息中指示所述故障区是否有数据丢失的标识。
[0098] 步骤S705,如果所述所述标识信息指示所述故障区中没有数据丢失,则所述阵列控制器101将所述硬盘105中的与所述损失容量同等容量的数据迁移至所述热备空间1102或者冗余空间1103。
[0099] 步骤S706,如果所述所述标识信息指示所述硬盘的故障区有数据丢失,则通过RAID算法对所述所述硬盘中的数据进行恢复,恢复后执行步骤S705,即将所述硬盘105中的与所述损失容量同等容量的数据迁移至所述热备空间1102或者冗余空间1103。
[0100] 步骤S707,记录所述硬盘105中的被迁移数据在所述硬盘105中的地址与迁移至所述热备空间或者冗余空间的地址的映射关系。
[0101] 在后续接收到对所述被迁移数据访的访问请求时,可根据所述映射关系在所述热备空间或者冗余空间访问所述被迁移数据。
[0102] 如此,利用所述冗余空间或者热备空间补偿所述硬盘中故障区所损失的空间,从而无需用所述硬盘中的冗余空间补偿所述硬盘中的故障区,如此,即使所述硬盘出现故障区,也不会减少硬盘中的冗余空间,从而不会增加硬盘的磨损度,保障了存储阵列的性能。
[0103] 如图13所示,为本发明实施例中的硬盘1200的模块图。
[0104] 所述硬盘1200包括识别模块1201、标记模块1202、及上报模块1203。所述识别模块1201用于识别硬盘105中的故障区,并累计故障区的容量。所述识别模块1201所执行的功能与图4的步骤S401相同,关于如何识别故障区及累计故障区的容量的方式可参考步骤S401的描述。所述标记模块1202用于对识别的故障区的故障信息进行标记,所标记的方法请参考步骤S402中关于在不同的协议中,例如SCSI协议、ATA协议、及NVMe协议中硬盘如何标记故障区的故障信息的相关描述,具体可参考图4、图5、图8、及图9的相关描述。
[0105] 所述上报模块1203用于将所述标记模块1202标记的故障信息上报至所述阵列控制器。关于所述上报模块1203上报故障信息的具体方式请参考步骤S402中关于在不同的协议中,例如SCSI协议、ATA协议、及NVMe协议中硬盘如何上报故障区的故障信息的相关描述,在此不再赘述。
[0106] 如图14所示,为本发明第一实施例中的阵列控制器1300的模块图。所述阵列控制器1300包括获取模块1301、累计模块1302、恢复模块1303、及记录模块1304。所述获取模块1301用于获取硬盘中的故障区的故障信息。获取硬盘中的故障区的故障信息的方式可参考步骤S402中的相关描述,不同协议,例如SCSI协议、ATA协议、及NVMe协议获取故障信息的方式会有所不同,具体请参考步骤S402中的描述,在此不再赘述。
[0107] 所述累计模块1302用于从所述故障信息中获取所述硬盘故障区的容量,并将所获取的容量信息累加所记录的所述硬盘的总故障容量中。当所述硬盘的总故障容量达到预设值时,则通知用户对所述硬盘进行更换。具体请参考步骤S403的相关描述。
[0108] 所述恢复模块1303用于在所述获取模块获取硬盘的故障区的故障信息后,如果所述故障信息中指示所述故障区有数据丢失,则确定丢失数据所在的故障chunk。然后利用与所述故障chunk组成chunk组的其他chunk通过RAID算法恢复所述故障chunk中的数据,然后将所恢复的数据存储至备份chunk中,并用所述备份chunk与所述chunk组中的除所述故障chunk之外的其他chunk组成新的chunk组。具体请参考步骤S404-407的相关描述。
[0109] 所述记录模块1304用于在记录所述故障chunk在所述硬盘中的地址与所述备份chunk在所述备份空间或者所述OP空间中的地址的映射关系。具体请参考步骤S407的相关描述。
[0110] 本发明第二实施例中的阵列控制器与第一实施例的阵列控制器中的获取模块1301、累计模块1302及恢复模块1303的功能相同,不同之处在于,在第二实施例中,记录模块会用所述恢复chunk替换所述chunk组中的所述故障chunk。替换时,可以将所述chunk组的元数据中记录的所述故障chunk在所述第一硬盘的地址替换为所述恢复存储块在所述恢复存储块所在硬盘的地址。
[0111] 图15为为本发明第三实施例中的阵列控制器1400的模块图。所述阵列控制器1400包括包括获取模块1401、累计模块1402、迁移模块1403、及记录模块1404。
[0112] 所述获取模块1401及累计模块1402的功能与所述阵列控制器1300中的获取模块1301及累计模块1302的功能相同,具体可参考获取模块1301及累计模块1302的相关描述,在此不再赘述。所述迁移模块1403用于在所述故障信息指示所述故障区没有数据丢失,则将所述硬盘中的与所述损失容量同等容量的数据迁移至所述热备空间或者冗余空间;如果所述所述故障信息指示所述硬盘的故障区有数据丢失,则通过RAID算法对所述所述硬盘中的数据进行恢复,恢复后将所述硬盘的与所述损失容量同等容量的数据迁移至所述热备空间或者冗余空间。具体请参考步骤S704至S706的相关描述。
[0113] 所述记录模块1404用于记录所述硬盘105中的被迁移数据在所述硬盘105中的地址与迁移至所述热备空间或者冗余空间的地址的映射关系。具体请参考步骤S707的相关描述。在后续接收到对所述被迁移数据访的访问请求时,可根据所述映射关系在所述热备空间或者冗余空间访问所述被迁移数据。
[0114] 以上模块的一个或多个可以软件硬件或二者结合来实现。当以上任一模块或单元以软件实现的时候,所述软件以计算机程序指令的方式存在,并被存储在存储器中,处理器可以用于执行所述程序指令并实现以上方法流程。所述处理器可以包括但不限于以下至少一种:中央处理单元(central processing unit,CPU)、微处理器、数字信号处理器(DSP)、微控制器(microcontroller unit,MCU)、或人工智能处理器等各类运行软件的计算设备,每种计算设备可包括一个或多个用于执行软件指令以进行运算或处理的核。该处理器可以内置于SoC(片上系统)或专用集成电路(application specific integrated circuit,ASIC),也可是一个独立的半导体芯片。该处理器内处理用于执行软件指令以进行运算或处理的核外,还可进一步包括必要的硬件加速器,如现场可编程阵列(field programmable gate array,FPGA)、PLD(可编程逻辑器件)、或者实现专用逻辑运算的逻辑电路
[0115] 当以上模块或单元以硬件实现的时候,该硬件可以是CPU、微处理器、DSP、MCU、人工智能处理器、ASIC、SoC、FPGA、PLD、专用数字电路、硬件加速器或非集成的分立器件中的任一个或任一组合,其可以运行必要的软件或不依赖于软件以执行以上方法流程。
[0116] 以上对本发明实施例所提供硬盘故障处理方法、阵列控制器及硬盘进行了描述,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈