一种检测方法及装置与流程

文档序号:11063406阅读:678来源:国知局
一种检测方法及装置与制造工艺

本发明涉及信息处理领域的硬盘检测技术,尤其涉及一种检测方法及装置。



背景技术:

分布式存储系统往往采用机械磁盘作为存储设备。这种存储设备发生故障的概率很大。目前,在解决存储设备的问题时,往往采用被动扫描的方式,即:存储设备直接接入存储系统使用;在存储设备使用过程中发现读写失败时,对存储设备中的存储单元,比如,磁盘中的一块存储区域,触发探测机制;当检测到存储单元出现故障后,记录存储单元中坏扇区个数和位置并重新分配一块扇区进行数据迁移和访问。

可见,上述现有技术提供的检测存储单元的操作为一种被动方式,也就是在在经过探测确定存储单元出现故障后才会进行相应的处理。但是,上述方案很难保证有效的检测到访问量较少的存储单元,无法对整个存储系统的存储能力提供保障。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种检测方法及装置,能至少解决现有技术存在的上述问题。

本发明实施例提供了一种检测方法,所述方法包括:

检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数;

基于所述存储单元的读写特征参数,预测得到空闲时长;

在所述空闲时长的第一时段对所述存储系统中存储单元的读写操作进行监控,得到第一监控结果;

若所述第一监控结果表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令;

根据所述第一操作指令,在所述空闲时长的第二时段内对存储系统中存储单元进行检测并确定检测结果;其中,所述第二时段为所述空闲时长除去所述第一时段后的剩余时长中的至少部分时长。

本发明实施例还提供了一种检测装置,所述装置包括:

预测单元,用于检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数;基于所述存储单元的读写特征参数,预测得到空闲时长;

检测单元,用于在所述空闲时长的第一时段对所述存储系统中存储单元的读写操作进行监控,得到第一监控结果;若所述第一监控结果表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令;根据所述第一操作指令,在所述空闲时长的第二时段内对存储系统中存储单元进行检测并确定检测结果;其中,所述第二时段为所述空闲时长除去所述第一时段后的剩余时长中的至少部分时长。

本发明实施例所提供的检测方法及装置,能够首先主动学习存储系统中各个存储单元的读写操作预测得到空闲时长,然后在空闲时长的第一时段内进行监控,如果监控结果表征在第一时段内无针对存储单元的读写操作,则进入第二时段对存储系统中的存储单元进行检测并得到检测结果。如此,由于对存储系统采取了主动的检测方式,能够保证有效的检测到访问量较少的存储单元,从而保障了存储系统的存储能力。

附图说明

图1为本发明实施例检测方法流程示意图一;

图2为本发明实施例空闲时长组成结构示意图一;

图3为本发明实施例检测方法流程示意图二;

图4为本发明实施例空闲时长组成结构示意图二;

图5为本发明实施例检测流程示意图;

图6为本发明实施例硬盘分块示意图;

图7为本发明实施例检测装置组成结构示意图。

具体实施方式

下面结合附图及具体实施例对本发明实施例再作进一步详细的说明。

实施例一、

本发明实施例提供了一种检测方法,如图1所述,所述方法包括:

步骤11:检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数;

步骤12:基于所述存储单元的读写特征参数,预测得到空闲时长;

步骤13:在所述空闲时长的第一时段对所述存储系统中存储单元的读写操作进行监控,得到第一监控结果;

步骤14:若所述第一监控结果表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令;

步骤15:根据所述第一操作指令,在所述空闲时长的第二时段内对存储系统中存储单元进行检测并确定检测结果;其中,所述第二时段为所述空闲时长除去所述第一时段后的剩余时长中的至少部分时长。

本实施例可以应用于使用硬盘的设备或集群中,比如,可以应用于服务器集群、台式机、笔记本电脑等设备。

上述存储系统可以为包括有至少一个存储设备;另外,所述存储设备包括有至少一个存储单元。

其中,所述存储设备可以为硬盘,比如,硬盘有固态硬盘,新式硬盘、机械硬盘(HDD)。所述存储单元可以为硬盘上的块,每一个块可以为64K-128K。

本实施例中采用了空闲等待的策略。也就是说,通过步骤11-步骤12对第一预设时长内存储系统收到的中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数,即业务I/O情况,预测得到空闲时长;通 过预测得到空闲时长确定接下来一段时间可能的I/O分布情况从而避免扫描过程中对前端业务I/O访问造成影响。

开启执行检测的频率可以根据实际情况进行设置,如果检测的频率太低会导致不能及时发现坏扇区造成数据丢失,频率太高则可能会影响前端I/O性能。基于冷数据盘的应用场景(对于热盘往往没等扫描就因为I/O访问已经发现磁盘坏扇区),本实施例将采用固定周期频率(如每两个月)的方式对磁盘进行一次检测,也就是说,可以每隔固定周期频率执行一次步骤11-步骤15。因为,一方面固定周期频率的方式更简单可控,另一方面从长远来,其扫描效果和动态周期频率的方式是一样的。将每一个检测周期作为一个时间段。对每个时间段分两个阶段进行工作:学习阶段和检测阶段。

第一,所述学习阶段,上述步骤11,所述检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数可以包括:检测分析存储系统中各存储单元响应读写操作的记录数据,至少将所述读写操作的时间戳记录为所述存储单元的读写特征参数。

其中,所述检测分析存储系统中各存储单元响应读写操作的记录数据可以为:存储系统接收到读写请求时,分析所述读写请求获取到响应所述请求的目标存储单元,获取到针对所述目标存储单元的读取操作次数、以及读取操作的时间戳。

相应的,上述步骤12所述基于所述存储单元的读写特征参数,预测得到空闲时长,包括:基于执行读写操作的时间戳,确定相邻的读写操作之间的平均时长,将得到的所述平均时长作为所述空闲时长。比如,统计系统收到的I/O情况预测出接下来的检测周期即空闲时长,比如10秒收到了2个I/O请求,则空闲时长为5秒。

第二,在空闲时长内针对存储系统进行检测,也就是进入了检测阶段。

在检测阶段可以具备三个不同的时段,在检测阶段中必须具备的时段为第一时段,也可以称之为监控时段,在第一时段内保持对存储系统中存储单元的读写操作进行监控,获取到第一监控结果。

所述得到第一监控结果之后,还可以包括有:若所述第一监控结果表征在所述第一时段内有针对存储系统中存储单元的读写操作,则在本次完成的第一时段之后再增加第一时段,仍然保持对存储系统中存储单元的读写操作进行监控,再次获取到第一监控结果。

在空闲时长结束之前,如果检测到第一监控结果为表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令。

所述在所述空闲时长的第二时段内对存储系统中存储单元进行检测并确定检测结果,包括:在所述空闲时长的第二时段内对所述存储单元进行M次检测,其中,每一次检测针对所述存储单元中的不同存储区域;M为大于等于1的正整数;将所述M次检测得到的结果作为所述检测结果。其中,M次检测可以为:周期性的生成检测指令,基于检测指令对存储单元进行检测。另外,在相邻的两次检测之间可以具备一定的间隔,比如图2所示,假设黑色阴影21部分标识对存储单元进行检测的时间,在两个黑色阴影标识的时间之间具备一个间隔22。

可见,采用上述方案,能够首先主动学习存储系统中各个存储单元的读写操作预测得到空闲时长,然后在空闲时长的第一时段内进行监控,如果监控结果表征在第一时段内无针对存储单元的读写操作,则进入第二时段对存储系统中的存储单元进行检测并得到检测结果。如此,由于对存储系统采取了主动的检测方式,能够保证有效的检测到访问量较少的存储单元,从而保证长时间不访问的存储单元的存储能力。

实施例二、

本发明实施例提供了一种检测方法,如图3所述,所述方法包括:

步骤31:检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数;

步骤32:基于所述存储单元的读写特征参数,预测得到空闲时长;

步骤33:在所述空闲时长的第一时段对所述存储系统中存储单元的读写操 作进行监控,得到第一监控结果;

步骤34:若所述第一监控结果表征在所述第一时段内无对所述存储单元的读写操作,则在第三时段内设置对所述存储单元的读写操作进行监控,得到第二监控结果;

步骤35:若所述第二监控结果表征在所述第三时段内无对所述存储单元的读写操作,则生成第一操作指令;

步骤36:根据所述第一操作指令,在所述空闲时长的第二时段内对存储系统中存储单元进行检测并确定检测结果;其中,所述第二时段为所述空闲时长除去所述第一时段后的剩余时长中的至少部分时长。

本实施例可以应用于使用硬盘的设备或集群中,比如,可以应用于服务器集群、台式机、笔记本电脑等设备。

上述存储系统可以为包括有至少一个存储设备;另外,所述存储设备包括有至少一个存储单元。

其中,所述存储设备可以为硬盘。所述存储单元可以为硬盘上的块,每一个块可以为64K-128K。

本实施例中采用了空闲等待的策略。也就是说,通过步骤31-步骤32对第一预设时长内存储系统收到的中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数,即业务I/O情况,预测得到空闲时长;通过预测得到空闲时长确定接下来一段时间可能的I/O分布情况从而避免扫描过程中对前端业务I/O访问造成影响。

开启执行检测的频率可以根据实际情况进行设置,如果检测的频率太低会导致不能及时发现坏扇区造成数据丢失,频率太高则可能会影响前端I/O性能。基于冷数据盘的应用场景(对于热盘往往没等扫描就因为I/O访问已经发现磁盘坏扇区),本实施例将采用固定周期频率(如每两个月)的方式对磁盘进行一次检测,也就是说,可以每隔固定周期频率执行一次步骤31-步骤36。因为,一方面固定周期频率的方式更简单可控,另一方面从长远来,其扫描效果和动态周期频率的方式是一样的。将每一个检测周期作为一 个时间段。对每个时间段分两个阶段进行工作:学习阶段和检测阶段。

第一,所述学习阶段,上述步骤31,所述检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数可以包括:检测分析存储系统中各存储单元响应读写操作的记录数据,至少将所述读写操作的时间戳记录为所述存储单元的读写特征参数。

其中,所述检测分析存储系统中各存储单元响应读写操作的记录数据可以为:存储系统接收到读写请求时,分析所述读写请求获取到响应所述请求的目标存储单元,获取到针对所述目标存储单元的读取操作次数、以及读取操作的时间戳。

相应的,上述步骤32所述基于所述存储单元的读写特征参数,预测得到空闲时长,包括:基于执行读写操作的时间戳,确定相邻的读写操作之间的平均时长,将得到的所述平均时长作为所述空闲时长。比如,统计系统收到的I/O情况预测出接下来的检测周期即空闲时长,比如10秒收到了2个I/O请求,则空闲时长为5秒。

第二,在空闲时长内针对存储系统进行检测,也就是进入了检测阶段。

在检测阶段可以具备三个不同的时段,在检测阶段中必须具备的时段为第一时段,也可以称之为监控时段,在第一时段内保持对存储系统中存储单元的读写操作进行监控,获取到第一监控结果。

所述得到第一监控结果之后,还可以包括有:若所述第一监控结果表征在所述第一时段内有针对存储系统中存储单元的读写操作,则在本次完成的第一时段之后再增加第一时段,仍然保持对存储系统中存储单元的读写操作进行监控,再次获取到第一监控结果。

在空闲时长结束之前,如果检测到第一监控结果为表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令。

所述在所述空闲时长的第二时段内对存储系统中存储单元进行检测并确定检测结果,包括:在所述空闲时长的第二时段内对所述存储单元进行M次检测,其中,每一次检测针对所述存储单元中的不同存储区域;M为大于等于1的正 整数;将所述M次检测得到的结果作为所述检测结果。其中,M次检测可以为:周期性的生成检测指令,基于检测指令对存储单元进行检测。另外,在相邻的两次检测之间可以具备一定的间隔。

另外,与实施例一不同在于,本实施例在第一时段与第二时段之间,还增加了第三时段,可以将第三时段作为监控以及检测之间的等待时段。比如,假设空闲时长为5秒,那么相当于每五秒钟进行一次循环。

以图4所示来对本实施例进行的时段划分进行描述,首先可以根据实际情况确定每两个月进行一次检测,每两个月可以作为一个检测时段41,在每次检测中包括有学习阶段411以及检测阶段;检测阶段可以循环操作,在每一个循环中可以分别包括有三个时间段——第一时段4121用于监控读写操作、第三时段4122用于等待并继续监控是否有读写操作、第二时段4123用于进行检测。

其中,上述三个时间段的长度设置可以根据实际情况进行,比如,第一时段即监控读写操作的时段,可以设置为空闲时长的1/5长,比如,空闲时长为5s时,第一时段可以为1s;第三时段也就是等待时段,也可以与第一时段长度相同,另外,第二时段即进行检测的时段的长度,可以大于第一时段,或者,可以大于第一时段与第三时段之和。

在第一时段内一旦发现没有I/O请求时立刻进入第三时段。在第三时段内,如果仍然没有I/O请求则进入第二时段即剩余空闲时间,反之退回到第一时段即监控时间对I/O重新监控。在第二时段(剩余空闲时间)内,每隔一定单位时间向磁盘下发Verify命令进行磁盘坏扇区探测,直至剩余空闲时间完毕。

整个检测算法的流程图5,包括:

步骤501:首先设置针对空闲时长的观察周期(T);

步骤502:在预设的学习时长(t-size)内,基于所述存储单元的读写特征参数,预测得到空闲时长(idle-time),并且确定每一次检测的数据块大小;将设置t1=t2,t2=t2+t-size;

其中,假设数据块可以分为64K、96K和128K三种大小;相应的,所述每一次检测的数据块大小可以根据实际情况进行设置,比如,基于所述存储单元的读写特征参数,获取到I/O的访问次数不小于第一门限时,则确定当前访问繁忙,将每一次检测的数据块大小选择为最小一块,即64k;如果访问次数小于第一门限值不小于第二门限值时,确定当前访问正常,可以将每一次检测的数据块的大小选择为适中,即96k;如果访问次数小于第二门限值,则当前访问较小,将检测的数据块大小选择为最大,即128k。上述第一门限值和第二门限值均根据实际情况设置,第一门限值大于第二门限值。如此,以保证使检测尽量避免服务的正常访问。

步骤503:判断扫描是否结束,如果结束则结束处理流程;否则,执行步骤504;

其中,判断扫描是否结束可以为从操作系统内核命令读到磁盘设备的空间大小(当然也可以通过配置文件获取),并且扫描程序会记录当前扫描到的位置;根据当前扫描的位置以及磁盘设备的大小来确定是否扫描结束。

步骤504:判断t2和t1之间的差值是否小于预设的T值,若是,则执行步骤505;否则,返回步骤502;

本步骤中,t2和t1是两个时刻,他们直接的时间段即确定了一个扫描周期(每个周期都有一段学习时间和若干个循环重复的探测时间(又分三个阶段))。t1表示这段周期的起始时刻,t2表示当前时刻,如图4所示,刚开始t1和t2相等都在开始位置,扫描开始后t2逐步向后移动,先+t_size跳到图中所示的a位置,然后开始“检测阶段”然后调到图中所示的b位置开始检测,以此循环进行,知道t2走到某一个时刻时和t1相差大于一个周期T,周期T可以为图4中的时段41,则需要重新开始一轮“学习+检测+检测”的过程。

步骤505:在所述空闲时长的第一时段对所述存储系统中存储单元的读写操作进行监控,得到第一监控结果;

步骤506:若所述第一监控结果表征在所述第一时段内无对所述存储单元的读写操作,则检测在第三时段内设置对所述存储单元的读写操作进行监控, 得到第二监控结果;若所述第二监控结果表征在所述第三时段内无对所述存储单元的读写操作,则执行步骤507;否则,返回步骤505;

步骤507:每隔预设的时长进行一次检测,得到检测结果;

步骤508:将t2设置为当前时刻值,返回步骤503。

可见,采用上述方案,能够首先主动学习存储系统中各个存储单元的读写操作预测得到空闲时长,然后在空闲时长的第一时段内进行监控,如果监控结果表征在第一时段内无针对存储单元的读写操作,则进入第二时段对存储系统中的存储单元进行检测并得到检测结果。如此,由于对存储系统采取了主动的检测方式,能够保证有效的检测到访问量较少的存储单元,从而保障了存储系统的存储能力。

另外,由于上述方案采用空闲等待的方式,对存储系统的读写操作进行了监控和预测,并在下发检测磁盘命令时采用了等待和间隔的策略,如此就能够极大避免和前端业务I/O产生冲突。

实施例三、

本发明实施例提供了一种检测方法,如图3所述,所述方法包括:

步骤31:检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数;

步骤32:基于所述存储单元的读写特征参数,预测得到空闲时长;

步骤33:在所述空闲时长的第一时段对所述存储系统中存储单元的读写操作进行监控,得到第一监控结果;

步骤34:若所述第一监控结果表征在所述第一时段内无对所述存储单元的读写操作,则在第三时段内设置对所述存储单元的读写操作进行监控,得到第二监控结果;

步骤35:若所述第二监控结果表征在所述第三时段内无对所述存储单元的读写操作,则生成第一操作指令;

步骤36:根据所述第一操作指令,在所述空闲时长的第二时段内对存储系 统中存储单元进行检测并确定检测结果;其中,所述第二时段为所述空闲时长除去所述第一时段后的剩余时长中的至少部分时长。

本实施例可以应用于使用硬盘的设备或集群中,比如,可以应用于服务器集群、台式机、笔记本电脑等设备。

上述存储系统可以为包括有至少一个存储设备;另外,所述存储设备包括有至少一个存储单元。

其中,所述存储设备可以为硬盘。所述存储单元可以为硬盘上的块,每一个块可以为64K-128K。

本实施例中采用了空闲等待的策略。也就是说,通过步骤31-步骤32对第一预设时长内存储系统收到的中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数,即业务I/O情况,预测得到空闲时长;通过预测得到空闲时长确定接下来一段时间可能的I/O分布情况从而避免扫描过程中对前端业务I/O访问造成影响。

开启执行检测的频率可以根据实际情况进行设置,如果检测的频率太低会导致不能及时发现坏扇区造成数据丢失,频率太高则可能会影响前端I/O性能。基于冷数据盘的应用场景(对于热盘往往没等扫描就因为I/O访问已经发现磁盘坏扇区),本实施例将采用固定周期频率(如每两个月)的方式对磁盘进行一次检测,也就是说,可以每隔固定周期频率执行一次步骤31-步骤36。因为,一方面固定周期频率的方式更简单可控,另一方面从长远来,其扫描效果和动态周期频率的方式是一样的。将每一个检测周期作为一个时间段。对每个时间段分两个阶段进行工作:学习阶段和检测阶段。

第一,所述学习阶段,上述步骤31,所述检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数可以包括:检测分析存储系统中各存储单元响应读写操作的记录数据,至少将所述读写操作的时间戳记录为所述存储单元的读写特征参数。

其中,所述检测分析存储系统中各存储单元响应读写操作的记录数据可以为:存储系统接收到读写请求时,分析所述读写请求获取到响应所述请求的目 标存储单元,获取到针对所述目标存储单元的读取操作次数、以及读取操作的时间戳。

相应的,上述步骤32所述基于所述存储单元的读写特征参数,预测得到空闲时长,包括:基于执行读写操作的时间戳,确定相邻的读写操作之间的平均时长,将得到的所述平均时长作为所述空闲时长。比如,统计系统收到的I/O情况预测出接下来的检测周期即空闲时长,比如10秒收到了2个I/O请求,则空闲时长为5秒。

第二,在空闲时长内针对存储系统进行检测,也就是进入了检测阶段。

在检测阶段可以具备三个不同的时段,在检测阶段中必须具备的时段为第一时段,也可以称之为监控时段,在第一时段内保持对存储系统中存储单元的读写操作进行监控,获取到第一监控结果。

所述得到第一监控结果之后,还可以包括有:若所述第一监控结果表征在所述第一时段内有针对存储系统中存储单元的读写操作,则在本次完成的第一时段之后再增加第一时段,仍然保持对存储系统中存储单元的读写操作进行监控,再次获取到第一监控结果。

在空闲时长结束之前,如果检测到第一监控结果为表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令。

优选地,本实施例还提供了以下几种检测方式:

方式一、所述在所述空闲时长的第二时段内对存储系统中存储单元进行检测并确定检测结果,包括:在所述空闲时长的第二时段内对所述存储单元进行M次检测,其中,每一次检测针对所述存储单元中的不同存储区域;M为大于等于1的正整数;将所述M次检测得到的结果作为所述检测结果。其中,M次检测可以为:周期性的生成检测指令,基于检测指令对存储单元进行检测。另外,在相邻的两次检测之间可以具备一定的间隔。

方式二、检测所述存储单元所在存储设备的使用状态;所述存储设备为第一使用状态,则对所述存储单元采用第一扫描方式进行检测并确定检测结果;所述存储设备为第二使用状态,则对所述存储单元采用第二扫描方式进行检测 并确定检测结果。

其中,所述第一使用状态以及第二使用状态不同,所述第一使用状态可以为新接入系统的硬盘;第二使用状态,可以为已经投入使用的硬盘,也就是说在存储单元中存入数据信息的状态。

所述第一扫描方式为:基于物理位置,对所述L块存储单元进行顺序扫描;其中,L为大于等于1的正整数;所述第二扫描方式为:分别将L块所述存储单元中物理位置相邻的N块存储单元划分为一个存储组,每一次扫描均选取不同存储组中的一块存储单元进行扫描;N为大于等于1且小于等于L的正整数。。

其中,第一扫描方式可以称为顺序扫描,第二扫描方式可以称为交错扫描。假设,第一扫描方式即所述顺序扫描即按照从前到后的方式依次对磁盘扫描,显然扫描的总次数为L/l。顺序扫描的方式适合系统刚接入新数据盘时对磁盘进行快速扫描。

第二扫描方式即交错扫描方式是指将磁盘分块后跳跃式扫描。将存储设备分为N块,每块则包含L/N大小的扇区;每次扫描扇区大小仍然为l,则每块需要扫描L/N/l次,设为R。所述交错扫描如图6所示,即首先扫描第1块头部l大小的扇区,随后向后跳跃L/N跳到第2块区域,扫描头部l的扇区,随后跳跃到下一块区域依次扫描,扫描结束后返回到第1块区域接着上次扫描的位置扫描第2个l大小的扇区,以此类推。

交错扫描的方式适合于使用过程中进行扫描。因为在大多数分布式存储系统中存储设备均是按块进行访问的,并且这种交错扫描方式更利于快速发现大容量数据盘中的坏扇区。一般分布式存储系统都是按块,比如2G一个块,每一块即为本实施例中所述的一个存储单元,分块存储和访问。随着业务使用,坏扇区、坏道也会不连续的出现,这时从头往后的顺序扫描对于磁盘后面存储单元访问引起的坏扇区来说就非常不好,比如一个磁盘上最后一个存储单元有坏扇区的话,若按顺序扫描则必须从前往后顺序扫描到最后才可以检测到;而交错扫描的方式由于是“跳跃式”的扫描当然可以很快发现坏扇区。

另外,与实施例还增加了第三时段,可以将第三时段作为监控以及检测之 间的等待时段。比如,假设空闲时长为5秒,那么相当于每五秒钟进行一次循环。

以图4所示来对本实施例进行的时段划分进行描述,首先可以根据实际情况确定每两个月进行一次检测,每两个月可以作为一个检测时段41,在每次检测中包括有学习阶段411以及检测阶段;检测阶段可以循环操作,在每一个循环中可以分别包括有三个时间段——第一时段4121用于监控读写操作、第三时段4122用于等待并继续监控是否有读写操作、第二时段4123用于进行检测。

在第一时段内一旦发现没有I/O请求时立刻进入第三时段。在第三时段内,如果仍然没有I/O请求则进入第二时段即剩余空闲时间,反之退回到第一时段即监控时间对I/O重新监控。

在第二时段(剩余空闲时间)内,每隔一定单位时间向磁盘下发Verify命令进行磁盘坏扇区探测,直至剩余空闲时间完毕。

将以上的策略细化,则得到扫描算法的主要流程:

第一步、程序在初始化,选择相应的扫描策略:顺序扫描还是交错扫描,设置周期T,代表多长时间重新进行系统负载情况的统计分析,设置当前时间t=0。

第二步、监控系统I/O一段时间Δt,得到此时系统负载的周期性大体变化情况,根据此时负载的分布函数,确定空闲等待时间、剩余空闲时间和扫描数据块的大小。

第三步、查询系统I/O状态。如果系统在空闲等待时间内没有来自前端的I/O请求,则在剩余空闲时间内,每隔一段时间发送一次Verify命令。

第四步、如果tnow-t<T,转到第三步,否则,转到第二步。

可见,采用上述方案,能够首先主动学习存储系统中各个存储单元的读写操作预测得到空闲时长,然后在空闲时长的第一时段内进行监控,如果监控结果表征在第一时段内无针对存储单元的读写操作,则进入第二时段对存储系统 中的存储单元进行检测并得到检测结果。如此,由于对存储系统采取了主动的检测方式,能够保证有效的检测到访问量较少的存储单元,从而保证长时间不访问的存储单元的存储能力。

另外,由于上述方案采用空闲等待的方式,对存储系统的读写操作进行了监控和预测,并在下发检测磁盘命令时采用了等待和间隔的策略,如此就能够极大避免和前端业务I/O产生冲突。还采用了交错扫描的方式进行扫描,这种跳跃式的扫描更利于大容量磁盘坏扇区的发现,速度相比传统的顺序扫描方式快很多。

实施例四、

本发明实施例提供了一种检测装置,如图7所示,所述装置包括:

预测单元71,用于检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数;基于所述存储单元的读写特征参数,预测得到空闲时长;

检测单元72,用于在所述空闲时长的第一时段对所述存储系统中存储单元的读写操作进行监控,得到第一监控结果;若所述第一监控结果表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令;根据所述第一操作指令,在所述空闲时长的第二时段内对存储系统中存储单元进行检测并确定检测结果;其中,所述第二时段为所述空闲时长除去所述第一时段后的剩余时长中的至少部分时长。

本实施例中所述的检测装置可以应用于使用硬盘的设备或集群中,比如,可以应用于服务器集群、台式机、笔记本电脑等设备。

上述存储系统可以为包括有至少一个存储设备;另外,所述存储设备包括有至少一个存储单元。

其中,所述存储设备可以为硬盘。所述存储单元可以为硬盘上的块,每一个块可以为64K-128K。

本实施例中采用了空闲等待的策略。也就是说,对第一预设时长内存储 系统收到的中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数,即业务I/O情况,预测得到空闲时长;通过预测得到空闲时长确定接下来一段时间可能的I/O分布情况从而避免扫描过程中对前端业务I/O访问造成影响。

开启执行检测的频率可以根据实际情况进行设置,如果检测的频率太低会导致不能及时发现坏扇区造成数据丢失,频率太高则可能会影响前端I/O性能。基于冷数据盘的应用场景(对于热盘往往没等扫描就因为I/O访问已经发现磁盘坏扇区),本实施例将采用固定周期频率(如每两个月)的方式对磁盘进行一次检测。

第一,所述学习阶段,所述预测单元,用于检测分析存储系统中各存储单元响应读写操作的记录数据,至少将所述读写操作的时间戳记录为所述存储单元的读写特征参数;。

其中,所述检测分析存储系统中各存储单元响应读写操作的记录数据可以为:存储系统接收到读写请求时,分析所述读写请求获取到响应所述请求的目标存储单元,获取到针对所述目标存储单元的读取操作次数、以及读取操作的时间戳。

相应的,所述预测单元,用于基于执行读写操作的时间戳,确定相邻的读写操作之间的平均时长,将得到的所述平均时长作为所述空闲时长。比如,统计系统收到的I/O情况预测出接下来的检测周期即空闲时长,比如10秒收到了2个I/O请求,则空闲时长为5秒。

第二,在空闲时长内针对存储系统进行检测,也就是进入了检测阶段。

在检测阶段可以具备三个不同的时段,在检测阶段中必须具备的时段为第一时段,也可以称之为监控时段,在第一时段内保持对存储系统中存储单元的读写操作进行监控,获取到第一监控结果。

所述得到第一监控结果之后,所述检测单元,用于若所述第一监控结果表征在所述第一时段内有针对存储系统中存储单元的读写操作,则在本次完成的第一时段之后再增加第一时段,仍然保持对存储系统中存储单元的读写操作进 行监控,再次获取到第一监控结果。

在空闲时长结束之前,如果检测到第一监控结果为表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令。

所述检测单元,用于在所述空闲时长的第二时段内对所述存储单元进行M次检测,其中,每一次检测针对所述存储单元中的不同存储区域;M为大于等于1的正整数;将所述M次检测得到的结果作为所述检测结果。其中,M次检测可以为:周期性的生成检测指令,基于检测指令对存储单元进行检测。另外,在相邻的两次检测之间可以具备一定的间隔,比如图2所示,假设黑色阴影21部分标识对存储单元进行检测的时间,在两个黑色阴影标识的时间之间具备一个间隔22。

可见,采用上述方案,能够首先主动学习存储系统中各个存储单元的读写操作预测得到空闲时长,然后在空闲时长的第一时段内进行监控,如果监控结果表征在第一时段内无针对存储单元的读写操作,则进入第二时段对存储系统中的存储单元进行检测并得到检测结果。如此,由于对存储系统采取了主动的检测方式,能够保证有效的检测到访问量较少的存储单元,从而保障了存储系统的存储能力。

实施例五、

本发明实施例提供了一种检测装置,如图7所示,所述装置包括:

预测单元71,用于检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数;基于所述存储单元的读写特征参数,预测得到空闲时长;

检测单元72,用于在所述空闲时长的第一时段对所述存储系统中存储单元的读写操作进行监控,得到第一监控结果;若所述第一监控结果表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令;根据所述第一操作指令,在所述空闲时长的第二时段内对存储系统中存储单元进行检测并确定检测结果;其中,所述第二时段为所述空闲时长除去所述第一时段后 的剩余时长中的至少部分时长。

本实施例可以应用于使用硬盘的设备或集群中,比如,可以应用于服务器集群、台式机、笔记本电脑等设备。

上述存储系统可以为包括有至少一个存储设备;另外,所述存储设备包括有至少一个存储单元。

本实施例中采用了空闲等待的策略。也就是说,对第一预设时长内存储系统收到的中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数,即业务I/O情况,预测得到空闲时长;通过预测得到空闲时长确定接下来一段时间可能的I/O分布情况从而避免扫描过程中对前端业务I/O访问造成影响。

开启执行检测的频率可以根据实际情况进行设置,如果检测的频率太低会导致不能及时发现坏扇区造成数据丢失,频率太高则可能会影响前端I/O性能。

对每个时间段分两个阶段进行工作:学习阶段和检测阶段。

第一,所述学习阶段,所述预测单元,用于检测分析存储系统中各存储单元响应读写操作的记录数据,至少将所述读写操作的时间戳记录为所述存储单元的读写特征参数。

其中,所述检测分析存储系统中各存储单元响应读写操作的记录数据可以为:存储系统接收到读写请求时,分析所述读写请求获取到响应所述请求的目标存储单元,获取到针对所述目标存储单元的读取操作次数、以及读取操作的时间戳。

相应的,所述预测单元,用于基于执行读写操作的时间戳,确定相邻的读写操作之间的平均时长,将得到的所述平均时长作为所述空闲时长。比如,统计系统收到的I/O情况预测出接下来的检测周期即空闲时长,比如10秒收到了2个I/O请求,则空闲时长为5秒。

第二,在空闲时长内针对存储系统进行检测,也就是进入了检测阶段。

在检测阶段可以具备三个不同的时段,在检测阶段中必须具备的时段为 第一时段,也可以称之为监控时段,在第一时段内保持对存储系统中存储单元的读写操作进行监控,获取到第一监控结果。

所述检测单元,用于若所述第一监控结果表征在所述第一时段内有针对存储系统中存储单元的读写操作,则在本次完成的第一时段之后再增加第一时段,仍然保持对存储系统中存储单元的读写操作进行监控,再次获取到第一监控结果。

在空闲时长结束之前,如果检测到第一监控结果为表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令。

所述检测单元,用于在所述空闲时长的第二时段内对所述存储单元进行M次检测,其中,每一次检测针对所述存储单元中的不同存储区域;M为大于等于1的正整数;将所述M次检测得到的结果作为所述检测结果。其中,M次检测可以为:周期性的生成检测指令,基于检测指令对存储单元进行检测。另外,在相邻的两次检测之间可以具备一定的间隔。

另外,实施例还增加了第三时段,可以将第三时段作为监控以及检测之间的等待时段。比如,假设空闲时长为5秒,那么相当于每五秒钟进行一次循环。

以图4所示来对本实施例进行的时段划分进行描述,首先可以根据实际情况确定每两个月进行一次检测,每两个月可以作为一个检测时段41,在每次检测中包括有学习阶段411以及检测阶段;检测阶段可以循环操作,在每一个循环中可以分别包括有三个时间段——第一时段4121用于监控读写操作、第三时段4122用于等待并继续监控是否有读写操作、第二时段4123用于进行检测。

在第一时段内一旦发现没有I/O请求时立刻进入第三时段。在第三时段内,如果仍然没有I/O请求则进入第二时段即剩余空闲时间,反之退回到第一时段即监控时间对I/O重新监控。

在第二时段(剩余空闲时间)内,每隔一定单位时间向磁盘下发Verify命令进行磁盘坏扇区探测,直至剩余空闲时间完毕。

可见,采用上述方案,能够首先主动学习存储系统中各个存储单元的读写操作预测得到空闲时长,然后在空闲时长的第一时段内进行监控,如果监控结果表征在第一时段内无针对存储单元的读写操作,则进入第二时段对存储系统中的存储单元进行检测并得到检测结果。如此,由于对存储系统采取了主动的检测方式,能够保证有效的检测到访问量较少的存储单元,从而保障了存储系统的存储能力。

另外,由于上述方案采用空闲等待的方式,对存储系统的读写操作进行了监控和预测,并在下发检测磁盘命令时采用了等待和间隔的策略,如此就能够极大避免和前端业务I/O产生冲突。

实施例六、

本发明实施例提供了一种检测装置,如图7所示,所述装置包括:

预测单元71,用于检测分析存储系统中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数;基于所述存储单元的读写特征参数,预测得到空闲时长;

检测单元72,用于在所述空闲时长的第一时段对所述存储系统中存储单元的读写操作进行监控,得到第一监控结果;若所述第一监控结果表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令;根据所述第一操作指令,在所述空闲时长的第二时段内对存储系统中存储单元进行检测并确定检测结果;其中,所述第二时段为所述空闲时长除去所述第一时段后的剩余时长中的至少部分时长。

本实施例可以应用于使用硬盘的设备或集群中,比如,可以应用于服务器集群、台式机、笔记本电脑等设备。

上述存储系统可以为包括有至少一个存储设备;另外,所述存储设备包括有至少一个存储单元。

其中,所述存储设备可以为硬盘,比如,硬盘有固态硬盘(SSD盘,新式硬盘)、机械硬盘(HDD传统硬盘)。所述存储单元可以为硬盘上的块,每一 个块可以为64K-128K。

本实施例中采用了空闲等待的策略。也就是说,对第一预设时长内存储系统收到的中各存储单元响应读写操作的记录数据,得到所述存储单元的读写特征参数,即业务I/O情况,预测得到空闲时长;通过预测得到空闲时长确定接下来一段时间可能的I/O分布情况从而避免扫描过程中对前端业务I/O访问造成影响。

开启执行检测的频率可以根据实际情况进行设置,如果检测的频率太低会导致不能及时发现坏扇区造成数据丢失,频率太高则可能会影响前端I/O性能。基于冷数据盘的应用场景(对于热盘往往没等扫描就因为I/O访问已经发现磁盘坏扇区),本实施例将采用固定周期频率(如每两个月)的方式对磁盘进行一次检测,也就是说,可以每隔固定周期频率执行一次步骤31-步骤36。因为,一方面固定周期频率的方式更简单可控,另一方面从长远来,其扫描效果和动态周期频率的方式是一样的。将每一个检测周期作为一个时间段。对每个时间段分两个阶段进行工作:学习阶段和检测阶段。

第一,所述学习阶段,检测分析存储系统中各存储单元响应读写操作的记录数据,至少将所述读写操作的时间戳记录为所述存储单元的读写特征参数。

其中,所述检测分析存储系统中各存储单元响应读写操作的记录数据可以为:存储系统接收到读写请求时,分析所述读写请求获取到响应所述请求的目标存储单元,获取到针对所述目标存储单元的读取操作次数、以及读取操作的时间戳。

相应的,基于执行读写操作的时间戳,确定相邻的读写操作之间的平均时长,将得到的所述平均时长作为所述空闲时长。比如,统计系统收到的I/O情况预测出接下来的检测周期即空闲时长,比如10秒收到了2个I/O请求,则空闲时长为5秒。

第二,在空闲时长内针对存储系统进行检测,也就是进入了检测阶段。

在检测阶段可以具备三个不同的时段,在检测阶段中必须具备的时段为第一时段,也可以称之为监控时段,在第一时段内保持对存储系统中存储单 元的读写操作进行监控,获取到第一监控结果。

所述得到第一监控结果之后,还可以包括有:若所述第一监控结果表征在所述第一时段内有针对存储系统中存储单元的读写操作,则在本次完成的第一时段之后再增加第一时段,仍然保持对存储系统中存储单元的读写操作进行监控,再次获取到第一监控结果。

在空闲时长结束之前,如果检测到第一监控结果为表征在所述第一时段内无对存储系统中存储单元的读写操作,则生成第一操作指令。

优选地,本实施例还提供了以下几种检测方式:

方式一、所述预测单元,用于在所述空闲时长的第二时段内对所述存储单元进行M次检测,其中,每一次检测针对所述存储单元中的不同存储区域;M为大于等于1的正整数;将所述M次检测得到的结果作为所述检测结果。其中,M次检测可以为:周期性的生成检测指令,基于检测指令对存储单元进行检测。另外,在相邻的两次检测之间可以具备一定的间隔。

方式二、检测所述存储单元所在存储设备的使用状态;所述存储设备为第一使用状态,则对所述存储单元采用第一扫描方式进行检测并确定检测结果;所述存储设备为第二使用状态,则对所述存储单元采用第二扫描方式进行检测并确定检测结果。

所述第一扫描方式为:基于物理位置,对所述L块存储单元进行顺序扫描;其中,L为大于等于1的正整数;所述第二扫描方式为:分别将L块所述存储单元中物理位置相邻的N块存储单元划分为一个存储组,每一次扫描均选取不同存储组中的一块存储单元进行扫描;N为大于等于1且小于等于L的正整数。

其中,第一扫描方式可以称为顺序扫描,第二种扫描方式可以称为交错扫描。

假设,将磁盘看作一条条带,每次扫描的扇区大小为l:所述顺序扫描即按照从前到后的方式依次对磁盘扫描,显然扫描的总次数为L/l。顺序扫描的方式适合系统刚接入新数据盘时对磁盘进行快速扫描。交错扫描方式是指将磁盘分块后跳跃式扫描。假设将存储单元分为N块,每块则包含L/N大 小的扇区;每次扫描扇区大小仍然为l,则每块需要扫描L/N/l次,设为R。

所述交错扫描即首先扫描第1块头部l大小的扇区,随后向后跳跃L/N跳到第2块区域,扫描头部l的扇区,随后跳跃到下一块区域依次扫描,扫描结束后返回到第1块区域接着上次扫描的位置扫描第2个l大小的扇区,以此类推。整个扫描过程如图6所示。交错扫描的方式适合于磁盘使用过程中进行扫描。因为在大多数分布式存储系统中磁盘均是按块(chunk)进行访问的,并且这种交错扫描方式更利于快速发现大容量数据盘中的坏扇区。

另外,与实施例还增加了第三时段,可以将第三时段作为监控以及检测之间的等待时段。比如,假设空闲时长为5秒,那么相当于每五秒钟进行一次循环。

以图4所示来对本实施例进行的时段划分进行描述,首先可以根据实际情况确定每两个月进行一次检测,每两个月可以作为一个检测时段41,在每次检测中包括有学习阶段411以及检测阶段;检测阶段可以循环操作,在每一个循环中可以分别包括有三个时间段——第一时段4121用于监控读写操作、第三时段4122用于等待并继续监控是否有读写操作、第二时段4123用于进行检测。

在第一时段内一旦发现没有I/O请求时立刻进入第三时段。在第三时段内,如果仍然没有I/O请求则进入第二时段即剩余空闲时间,反之退回到第一时段即监控时间对I/O重新监控。

在第二时段(剩余空闲时间)内,每隔一定单位时间向磁盘下发Verify命令进行磁盘坏扇区探测,直至剩余空闲时间完毕。

将以上的策略细化,则得到扫描算法的主要流程:

第一步、程序在初始化,选择相应的扫描策略:顺序扫描还是交错扫描,设置周期T,代表多长时间重新进行系统负载情况的统计分析,设置当前时间t=0。

第二步、监控系统I/O一段时间Δt,得到此时系统负载的周期性大体变化情况,根据此时负载的分布函数,确定空闲等待时间、剩余空闲时间和扫 描数据块的大小。

第三步、查询系统I/O状态。如果系统在空闲等待时间内没有来自前端的I/O请求,则在剩余空闲时间内,每隔一段时间发送一次Verify命令。

第四步、如果tnow-t<T,转到第三步,否则,转到第二步。

可见,采用上述方案,能够首先主动学习存储系统中各个存储单元的读写操作预测得到空闲时长,然后在空闲时长的第一时段内进行监控,如果监控结果表征在第一时段内无针对存储单元的读写操作,则进入第二时段对存储系统中的存储单元进行检测并得到检测结果。如此,由于对存储系统采取了主动的检测方式,能够保证有效的检测到访问量较少的存储单元,从而保障了存储系统的存储能力。

另外,由于上述方案采用空闲等待的方式,对存储系统的读写操作进行了监控和预测,并在下发检测磁盘命令时采用了等待和间隔的策略,如此就能够极大避免和前端业务I/O产生冲突。还采用了交错扫描的方式进行扫描,这种跳跃式的扫描更利于大容量磁盘坏扇区的发现,速度相比传统的顺序扫描方式快很多。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1