一种慢盘模拟方法、装置、设备及介质制造方法及图纸

技术编号:36262134 阅读:14 留言:0更新日期:2023-01-07 10:00
本申请公开了一种慢盘模拟方法、装置、设备及介质,应用于硬盘故障模拟技术领域,包括:当目标函数开始执行,通过所述目标函数中预设的跳转指令跳转至预设钩子函数;所述目标函数为操作系统内核的块层中对IO请求进行处理的函数;所述IO请求为针对硬盘的IO请求;利用所述预设钩子函数拦截IO请求,并利用预设逻辑进行延时注入。这样,选定操作系统内核的块层中对IO请求进行处理的函数作为目标函数,预设跳转指令以及钩子函数,实现IO请求的拦截以及延时注入,能够针对各类型硬盘进行慢盘模拟,以满足慢盘检测机制的测试需求。满足慢盘检测机制的测试需求。满足慢盘检测机制的测试需求。

【技术实现步骤摘要】
一种慢盘模拟方法、装置、设备及介质


[0001]本申请涉及硬盘故障模拟
,特别涉及一种慢盘模拟方法、装置、设备及介质。

技术介绍

[0002]存储系统中的硬盘在使用过程中,由于硬盘的磁性退化、坏道或振动等其他环境和机械的问题,会导致硬盘在进行I/O(input/output,输入输出)读写操作时的延时增大,这种进行I/O操作时延时增大的硬盘即为慢盘。
[0003]通常,为了降低慢盘对存储系统的读写性能的影响,一般在存储系统运行过程中,可以通过实时监控存储系统中的各个硬盘进行I/O操作时的延时,检测这些硬盘是否为慢盘。具体的,以一个硬盘为例,统计该硬盘在每个第一周期内进行I/O操作的平均延时,并将该平均延时与预设的时间阈值进行比较,若该平均延时大于或等于时间阈值,则记为一次阈值事件;以及统计该硬盘在每个第二周期(第二周期大于第一周期)内出现阈值事件的次数,并将该次数与预设的次数阈值进行比较,若该次数大于或等于预设的次数阈值,则可确定该硬盘为慢盘。对于慢盘的检测机制是否满足实际使用要求,通常需要进行一定测试。如何模拟慢盘,以检测和判断存储系统的慢盘检测机制是否正常可靠是目前需要解决的问题。

技术实现思路

[0004]有鉴于此,本申请的目的在于提供一种慢盘模拟方法、装置、设备及介质,能够针对各类型硬盘进行慢盘模拟,以满足慢盘检测机制的测试需求。其具体方案如下:
[0005]第一方面,本申请公开了一种慢盘模拟方法,包括:
[0006]当目标函数开始执行,通过所述目标函数中预设的跳转指令跳转至预设钩子函数;所述目标函数为操作系统内核的块层中对IO请求进行处理的函数;所述IO请求为针对硬盘的IO请求;
[0007]利用所述预设钩子函数拦截IO请求,并利用预设逻辑进行延时注入。
[0008]可选的,所述利用预设逻辑进行延时注入,包括:
[0009]判断所述IO请求从请求开始时间至当前时间的累积时长是否达到预设延时阈值,若未达到所述预设延时阈值,则执行sleep函数以使累积时长达到所述预设延时阈值。
[0010]可选的,若未达到所述预设延时阈值,则执行sleep函数以使累积时长达到所述预设延时阈值,包括:
[0011]若未达到所述预设延时阈值,则计算当前的累积时长与所述预设延时阈值之间的时间差值,并基于该时间差值执行sleep函数以使累积时长达到所述预设延时阈值。
[0012]可选的,所述判断所述IO请求从请求开始时间至当前时间的累积时长是否达到预设延时阈值之后,还包括:
[0013]若达到所述预设延时阈值,则结束所述预设钩子函数的执行。
[0014]可选的,所述利用预设逻辑进行延时注入之前,还包括:
[0015]判断所述IO请求中携带的块设备参数是否与配置参数一致,若所述IO请求中携带的块设备参数与配置参数一致,则利用预设逻辑进行延时注入。
[0016]可选的,还包括:
[0017]配置待进行延时注入的目标硬盘对应的主设备号以及从设备号,得到所述配置参数。
[0018]可选的,所述目标函数为blk_mq_start_request函数。
[0019]第二方面,本申请公开了一种慢盘模拟装置,包括:
[0020]钩子函数调整模块,用于当目标函数开始执行,通过所述目标函数中预设的跳转指令跳转至预设钩子函数;所述目标函数为操作系统内核的块层中对IO请求进行处理的函数;所述IO请求为针对硬盘的IO请求;
[0021]延时注入模块,用于利用所述预设钩子函数拦截IO请求,并利用预设逻辑进行延时注入。
[0022]可选的,延时注入模块,具体用于:
[0023]判断所述IO请求从请求开始时间至当前时间的累积时长是否达到预设延时阈值,若未达到所述预设延时阈值,则执行sleep函数以使累积时长达到所述预设延时阈值。
[0024]可选的,延时注入模块,具体用于:若未达到所述预设延时阈值,则计算当前的累积时长与所述预设延时阈值之间的时间差值,并基于该时间差值执行sleep函数以使累积时长达到所述预设延时阈值。
[0025]可选的,延时注入模块,还用于:在所述判断所述IO请求从请求开始时间至当前时间的累积时长是否达到预设延时阈值之后,若达到所述预设延时阈值,则结束所述预设钩子函数的执行。
[0026]可选的,延时注入模块,还用于:在所述利用预设逻辑进行延时注入之前,判断所述IO请求中携带的块设备参数是否与配置参数一致,若所述IO请求中携带的块设备参数与配置参数一致,则利用预设逻辑进行延时注入。
[0027]可选的,所述装置还包括:
[0028]参数配置模块,用于配置待进行延时注入的目标硬盘对应的主设备号以及从设备号,得到所述配置参数。
[0029]可选的,所述目标函数为blk_mq_start_request函数。
[0030]第三方面,本申请公开了一种电子设备,包括存储器和处理器,其中:
[0031]所述存储器,用于保存计算机程序;
[0032]所述处理器,用于执行所述计算机程序,以实现前述的慢盘模拟方法。
[0033]第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述的慢盘模拟方法。
[0034]可见,本申请当目标函数开始执行,通过所述目标函数中预设的跳转指令跳转至预设钩子函数;所述目标函数为操作系统内核的块层中对IO请求进行处理的函数;所述IO请求为针对硬盘的IO请求,利用所述预设钩子函数拦截IO请求,并利用预设逻辑进行延时注入。虽然,机械盘和SATA SSD在内核中使用的是SCSI协议,内核使用SCSI协议与硬盘进行交互,而NVME SSD使用PCIE总线接入系统,内核与PCIE设备直接交互读写数据。但机械盘、
SATA SSD、NVME SSD在Linux中都最终抽象为块设备,本申请实施例选定操作系统内核的块层中对IO请求进行处理的函数作为目标函数,预设跳转指令以及钩子函数,实现IO请求的拦截以及延时注入,也即,本申请在块层进行I/O拦截以及延时注入,这样,能够针对各类型硬盘进行慢盘模拟,以满足慢盘检测机制的测试需求。
附图说明
[0035]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0036]图1为本申请实施例公开的一种慢盘模拟方法流程图;
[0037]图2为本申请实施例公开的一种慢盘模拟装置结构示意图;
[0038]图3为本申请实施例公开的一种电子设备原理结构图。
具体实施方式
[0039]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种慢盘模拟方法,其特征在于,包括:当目标函数开始执行,通过所述目标函数中预设的跳转指令跳转至预设钩子函数;所述目标函数为操作系统内核的块层中对IO请求进行处理的函数;所述IO请求为针对硬盘的IO请求;利用所述预设钩子函数拦截IO请求,并利用预设逻辑进行延时注入。2.根据权利要求1所述的慢盘模拟方法,其特征在于,所述利用预设逻辑进行延时注入,包括:判断所述IO请求从请求开始时间至当前时间的累积时长是否达到预设延时阈值,若未达到所述预设延时阈值,则执行sleep函数以使累积时长达到所述预设延时阈值。3.根据权利要求1所述的慢盘模拟方法,其特征在于,若未达到所述预设延时阈值,则执行sleep函数以使累积时长达到所述预设延时阈值,包括:若未达到所述预设延时阈值,则计算当前的累积时长与所述预设延时阈值之间的时间差值,并基于该时间差值执行sleep函数以使累积时长达到所述预设延时阈值。4.根据权利要求2所述的慢盘模拟方法,其特征在于,所述判断所述IO请求从请求开始时间至当前时间的累积时长是否达到预设延时阈值之后,还包括:若达到所述预设延时阈值,则结束所述预设钩子函数的执行。5.根据权利要求1所述的慢盘模拟方法,其特征在于,所述利用预设逻...

【专利技术属性】
技术研发人员:楚光庆
申请(专利权)人:济南浪潮数据技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1