硬盘延迟检测方法、装置及计算机可读存储介质与流程

文档序号:24339894发布日期:2021-03-19 12:21阅读:220来源:国知局
硬盘延迟检测方法、装置及计算机可读存储介质与流程

本申请涉及但不限于硬盘检测领域,尤其是涉及一种硬盘延迟检测方法、装置及计算机可读存储介质。



背景技术:

在硬盘检测领域中,通过设定硬盘延迟阈值对硬盘进行监控告警,当前的硬盘检测方法存在检测效率低的问题。



技术实现要素:

本申请旨在至少解决现有技术中存在的技术问题之一。为此,本申请提出一种硬盘延迟检测方法,能够解决检测效率低的问题。

本申请还提出一种具有硬盘延迟检测方法的装置。

本申请还提出一种具有硬盘延迟检测方法的计算机可读存储介质。

根据本申请第一方面实施例的硬盘延迟检测方法,所述方法包括:获取待检测硬盘的属性数据;所述属性数据包括硬盘标识、性能数据、当前延迟数据;根据所述属性数据划分为训练集和测试集;将所述测试集输入到预设的延迟检测神经网络中进行测试,以得到预测延迟数据;所述延迟检测神经网络通过所述训练集训练得到;根据所述待检测硬盘的所述当前延迟数据、所述预测延迟数据计算延迟差值;根据所述延迟差值、预设的延迟阈值找到高延迟硬盘。

根据本申请实施例的硬盘延迟检测方法,至少具有如下技术效果:本方法提升了硬盘延迟检测的效率。

根据本申请的一些实施例,所述获取待检测硬盘的属性数据包括:获取预设的时间段;根据所述时间段采集所述待检测硬盘的所述性能数据。

根据本申请的一些实施例,所述性能数据至少包括以下一种:每秒硬盘写数据次数、每秒硬盘读数据次数。

根据本申请的一些实施例,在所述根据所述延迟差值、预设的延迟阈值找到高延迟硬盘之后,所述硬盘延迟检测方法还包括:根据硬盘标识对所述高延迟硬盘进行标记。

根据本申请的一些实施例,在根据硬盘标识对所述高延迟硬盘进行标记之后,所述硬盘延迟检测方法还包括:根据所述标记发送报警信号。

根据本申请的一些实施例,在所述根据所述延迟差值、预设的延迟阈值找到高延迟硬盘之后,所述硬盘延迟检测方法还包括:获取历史数据集;所述历史数据集包括所述属性数据;根据历史数据集对所述延迟检测模型进行增量训练。

根据本申请的一些实施例,所述将所述测试集输入到预设的延迟检测神经网络中进行测试,以得到预测延迟数据;所述延迟检测神经网络通过所述训练集训练得到包括:对测试集进行特征处理,得到特征数据集;将所述特征数据集进行矩阵计算,得到中间数据集;对所述中间数据集进行测试,输出所述预测延迟数据。

根据本申请第二方面实施例的硬盘延迟检测装置,包括:硬盘属性数据获取模块,用于获取待检测硬盘的属性数据;所述属性数据包括硬盘标识、性能数据、当前延迟数据;数据集划分模块,用于根据所述属性数据划分为训练集和测试集;延迟预测模块,用于将所述测试集输入到预设的延迟检测神经网络中进行测试,以得到预测延迟数据;所述延迟检测神经网络通过所述训练集训练得到;延迟差值计算模块,用于根据所述待检测硬盘的所述当前延迟数据、所述预测延迟数据计算延迟差值;高延迟硬盘识别模块,用于根据所述延迟差值、预设的延迟阈值找到高延迟硬盘。

根据本申请第三方面实施例的硬盘延迟检测装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现:本申请上述第一方面实施例的硬盘延迟检测方法。

根据本申请第四方面实施例的计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于:执行上述第一方面实施例的所述的硬盘延迟检测方法。

本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过申请的实践了解到。

附图说明

下面结合附图和实施例对本申请做进一步的说明,其中:

图1是本申请一个实施例提供的硬盘延迟检测方法流程图;

图2是本申请另一个实施例提供的硬盘延迟检测方法流程图;

图3是本申请另一个实施例提供的硬盘延迟检测方法流程图;

图4是本申请另一个实施例提供的硬盘延迟检测方法流程图;

图5是本申请另一个实施例提供的硬盘延迟检测方法流程图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。

本申请的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本申请中的具体含义。

本申请的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

分布式存储系统中,通常存在大量的硬盘,硬盘间通过软件进行组织,将大量硬盘提供的存储空间作为逻辑空间供客户端使用。由于硬盘存在本身质量问题、长期使用硬件老化等问题,导致个别的硬盘出现一种亚健康状态,即能够工作但性能远低于标称性能,从而拖慢整个集群的性能。

为了发现这种问题硬盘,业界普遍的做法是对硬盘的io延迟进行监控,并设定一个告警的阈值,当硬盘延迟超过阈值时,触发系统告警,通知运维人员关注该硬盘性能,做必要的更换处理。

通常的设定硬盘延迟阈值,然后进行监控告警的方法存在几个缺点:

不能区分硬盘延迟的产生原因,硬盘延迟升高的因素比较多,比如过高的工作负载、特定的io模型产生热点读写、以及硬盘本身质量问题、老化问题等等。传统的方式,不论延迟升高的原因,统统上报异常,会导致很多的无效告警,这会降低运维人员对于硬盘问题的警惕性,也加大了真正排查问题硬盘的难度。

硬盘的延迟阈值不容易定义,设置地太高会掩盖问题,设置太低又容易在业务压力大时产生太多无效告警,对于运维人员来说很难设置一个合理的阈值。

鉴于此,本申请提出了一种硬盘延迟检测方法,不再设置固定的延迟阈值,而是设置一个实际延迟与预期硬盘延迟的差值的阈值,超过此阈值则触发告警。问题的核心在于利用机器学习模型,来预测硬盘在某一时刻的预期延迟。

根据本申请第一方面实施例的硬盘延迟检测方法,方法包括:获取待检测硬盘的属性数据;属性数据包括硬盘标识、性能数据、当前延迟数据;根据属性数据划分为训练集和测试集;将测试集输入到预设的延迟检测神经网络中进行测试,以得到预测延迟数据;延迟检测神经网络通过训练集训练得到;根据待检测硬盘的当前延迟数据、预测延迟数据计算延迟差值;根据延迟差值、预设的延迟阈值找到高延迟硬盘。

如图1所示,在一些实施例中,所述硬盘延迟检测方法包括:

s110,获取待检测硬盘的属性数据;

s120,属性数据包括硬盘标识、性能数据、当前延迟数据;

s130,根据属性数据划分为训练集和测试集;

s140,将测试集输入到预设的延迟检测神经网络中进行测试,以得到预测延迟数据;

s150,延迟检测神经网络通过训练集训练得到;

s160,根据待检测硬盘的当前延迟数据、预测延迟数据计算延迟差值;

s170,根据延迟差值、预设的延迟阈值找到高延迟硬盘。

硬盘延迟检测方法具有更加精准的慢盘识别效果,若某时刻的硬盘负载低,则当时的模型预估延迟会比较低,若硬盘负载高,则当时的模型预估延迟也会相应变高。对于正常的硬盘来说,实际延迟和预估延迟总是保持一个比较低的差值,二者比较接近。对于真正的慢盘来说,实际延迟和预估延迟将产生很高的差值,会被快速且精准地识别出来。运维上不再需要关心硬盘延迟的绝对值,只需要设置一个与预期延迟相差的延迟偏离阈值,这大大降低了运维的难度。

本申请的硬盘延迟检测方法,不再设置固定的延迟阈值,而是设置一个实际延迟与预期硬盘延迟的差值的阈值,超过此阈值则触发告警。本申请的硬盘延迟检测方法利用机器学习模型,来预测硬盘在某一时刻的预期延迟,提升了硬盘延迟检测的效率。

根据本申请的一些实施例,获取待检测硬盘的属性数据包括:获取预设的时间段;根据时间段采集待检测硬盘的性能数据。

如图2所示,在一些实施例中,所述硬盘延迟检测方法包括:

s210,获取预设的时间段;

s220,根据时间段采集待检测硬盘的性能数据。

根据本申请的一些实施例,性能数据至少包括以下一种:每秒硬盘写数据次数、每秒硬盘读数据次数。

在具体的实施例中,将系统内各硬盘的各维度负载数据和性能数据抽象成以下的变量:dev为对应的硬盘在系统内的唯一标识;w/s为每秒硬盘写io次数;r/s为每秒硬盘读io次数;w_m/s为每秒硬盘写io合并次数;r_m/s为每秒硬盘读io合并次数;wmb/s为每秒硬盘写入mbyte数;rmb/s为每秒硬盘读出mbyte数;await为当前硬盘延迟。

在具体的实施例中,将硬盘延迟预测模型进行定义:p_await为预期硬盘延迟;p_await=fx(w/s,r/s,w_m/s,r_m/s,wmb/s,rmb/s)。

在具体的实施例中,定义硬盘延迟偏差为l_gap=await-p_await。

使用linux工具软件iostat,周期性地采集系统内各硬盘的负载数据和性能数据,得到每一个时间周期(如5s)的各硬盘原始性能数据,每组数据描述为:((dev,w/s,r/s,w_m/s,r_m/s,wmb/s,rmb/s),await),采集的每个周期的数据结构为:

[((dev,w/s,r/s,w_m/s,r_m/s,wmb/s,rmb/s),await);((dev,w/s,r/s,w_m/s,r_m/s,wmb/s,rmb/s),await)……]

在具体的实施例中,上述一个周期的数据集合定义为lat_1_cycle。

根据本申请的一些实施例,在根据延迟差值、预设的延迟阈值找到高延迟硬盘之后,硬盘延迟检测方法还包括:根据硬盘标识对高延迟硬盘进行标记。

根据本申请的一些实施例,在根据硬盘标识对高延迟硬盘进行标记之后,硬盘延迟检测方法还包括:根据标记发送报警信号。

如图3所示,在一些实施例中,所述硬盘延迟检测方法包括:

s310,根据延迟差值、预设的延迟阈值找到高延迟硬盘;

s320,根据硬盘标识对高延迟硬盘进行标记;

s330,根据标记发送报警信号。

在具体的实施例中,本方法将得到的最佳模型保存为文件,部署到存储系统中。在存储系统中,设置硬盘延迟差告警阈值,比如10ms;继续周期性采集全集群所有硬盘的负载和延迟数据lat_1_cycle;然后将lat_1_cycle代入模型,模型输出p_await;从而计算l_gap=await-p_await,若l_gap超过阈值10ms,则将其dev字段代表的硬盘标记为慢盘,向系统发出慢盘告警。

根据本申请的一些实施例,在根据延迟差值、预设的延迟阈值找到高延迟硬盘之后,硬盘延迟检测方法还包括:获取历史数据集;历史数据集包括属性数据;根据历史数据集对延迟检测模型进行增量训练。

如图4所示,在一些实施例中,所述硬盘延迟检测方法包括:

s410,获取历史数据集;

s420,根据历史数据集对延迟检测模型进行增量训练。

在具体的实施例中,本方法对模型进行持续的优化,系统运行时,每天将前一天的所有lat_1_cycle数据进行模型增量训练,结果保存为新的最优模型。通过这种方式,慢盘检测模型能够伴随系统运行不断的自我学习和自我优化,使慢盘识别准确率越来越高。

根据本申请的一些实施例,将测试集输入到预设的延迟检测神经网络中进行测试,以得到预测延迟数据;延迟检测神经网络通过训练集训练得到包括:对测试集进行特征处理,得到特征数据集;将特征数据集进行矩阵计算,得到中间数据集;对中间数据集进行测试,输出预测延迟数据。

如图5所示,在一些实施例中,所述硬盘延迟检测方法包括:

s510,对测试集进行特征处理,得到特征数据集;

s520,将特征数据集进行矩阵计算,得到中间数据集;

s530,对中间数据集进行测试,输出预测延迟数据。

在具体的实施例中,本申请设计并实现一个机器学习算法,采用多层神经网络作为基础模型,整个算法工作过程设计为如下层次:

特征处理层:我们将采集到的大量lat_1_cycle数据传入特征处理层,在这里,将各种数据通过缩放的方法,全部映射到0~1的小数区间,目的是让后续的算法能够快速收敛。

输入层:将特征处理层处理过的lat_1_cycle数据,传入输入层,输入层将启动100个神经网络节点,实验证明100个输入层节点能够最终带来更好的延迟规律拟合准确度。在输入层将执行输入数据矩阵和权重矩阵的乘法,其结果输入到下面的隐藏层。

隐藏层:隐藏层设计为3层,第一层将神经网络节点数从100降维到50节点,第二层从50节点降维到25节点,第三层从25节点降维到10节点。隐藏层的目的通过矩阵乘法加上偏置值的计算,将上一层计算结果作为下一层的输入,逐层计算,每一层均存在自己的权重矩阵。

输出层:输出层将隐藏层的输出作为输入,并降维到1维,作为最终的预估延迟输出。

经过上述层次的处理,每一个lat_1_cycle输入,均会得到一个对应的p_await输出。

在具体的实施例中,在损失函数为损失函数定义为其中n代表lat_1_cycle输入的条数,损失函数可以表示预测延迟与实际延迟的误差大小,loss越大代表误差越大。

在具体的实施例中,优化器为使用tensorflow框架的adamoptimizer优化器,优化器通过不断微调各层的权重矩阵权重值,来得到不同的p_await输出矩阵,经过成千上万次的微调,loss值逐渐变小并收敛,最终稳定在某个小的区间。loss稳定以后,代表算法已经收敛,最佳的模型已经产生。

根据本申请第二方面实施例的硬盘延迟检测装置,包括:硬盘属性数据获取模块,用于获取待检测硬盘的属性数据;属性数据包括硬盘标识、性能数据、当前延迟数据;数据集划分模块,用于根据属性数据划分为训练集和测试集;延迟预测模块,用于将测试集输入到预设的延迟检测神经网络中进行测试,以得到预测延迟数据;延迟检测神经网络通过训练集训练得到;延迟差值计算模块,用于根据待检测硬盘的当前延迟数据、预测延迟数据计算延迟差值;高延迟硬盘识别模块,用于根据延迟差值、预设的延迟阈值找到高延迟硬盘。

本申请的硬盘延迟检测装置,不再设置固定的延迟阈值,而是设置一个实际延迟与预期硬盘延迟的差值的阈值,超过此阈值则触发告警。本申请的硬盘延迟检测方法利用机器学习模型,来预测硬盘在某一时刻的预期延迟,提升了硬盘延迟检测的效率。

根据本申请第三方面实施例的硬盘延迟检测装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现:本申请上述第一方面实施例的硬盘延迟检测方法。

根据本申请第四方面实施例的计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于:执行上述第一方面实施例的硬盘延迟检测方法。

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

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

上面结合附图对本申请实施例作了详细说明,但是本申请不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本申请宗旨的前提下作出各种变化。此外,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

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