模拟硬盘坏块的方法、装置、系统、设备及存储介质与流程

文档序号:31539146发布日期:2022-09-16 23:23阅读:198来源:国知局
模拟硬盘坏块的方法、装置、系统、设备及存储介质与流程

1.本技术涉及计算机技术领域,尤其涉及一种模拟硬盘坏块的方法、装置、系统、设备及存储介质。


背景技术:

2.硬盘坏块,又称为硬盘坏道,通常指的是硬盘出厂后在使用过程中产生的扇区损坏,是存储数据的介质遭到破坏的一种表现。当硬盘出现坏块后,数据通常是会丢失的。硬盘坏块是硬盘最常见的一种报废状态。硬盘坏块包括逻辑损坏和物理损坏,逻辑坏块又称为“软损坏”,其一般是可以修复的。物理损坏又称为“硬损坏”,其是不可以修复的。
3.相关技术中,一般对硬盘使用软件工具破坏扇区校验和的方式来形成硬盘逻辑坏块,进而测试存储io系统的可靠性。
4.但由于相关技术的方法需要采用工具真实对硬盘扇区进行破坏,导致需要提前备份硬盘数据以避免硬盘数据遭到破坏而丢失,处理方式不灵活。


技术实现要素:

5.为解决或者部分解决相关技术中存在的问题,本技术提供一种模拟硬盘坏块的方法、装置、系统、设备及存储介质,能够通过模拟方式模拟硬盘坏道故障,避免真实破坏硬盘,提高处理灵活性。
6.本技术的第一方面提供了一种模拟硬盘坏块的方法,包括:
7.获取硬盘操作响应指令;
8.在所述硬盘操作响应指令中设置包含故障信息的信息码;
9.将包含所述信息码的所述硬盘操作响应指令发送至应用层。
10.优选的,所述将包含所述信息码的所述硬盘操作响应指令发送至应用层,包括:
11.在采用预置延时函数延时预设时长后,将包含所述信息码的所述硬盘操作响应指令发送至所述应用层。
12.优选的,所述获取硬盘操作响应指令,包括:
13.使用操作系统内核接口函数寻找scsi命令完成函数的内存地址,基于所述内存地址获取所述scsi命令完成函数作为硬盘操作响应指令。
14.优选的,所述在所述硬盘操作响应指令中设置包含故障信息的信息码,包括:
15.在所述scsi命令完成函数中,通过修改所述信息码的不同字段的数值对应表示不同故障信息。
16.优选的,所述信息码包括类别码、补充码和修饰码中的至少一项或其组合。
17.本技术的第二方面提供了一种故障模拟装置,包括:
18.获取模块,用于获取硬盘操作响应指令;
19.设置模块,用于在所述硬盘操作响应指令中设置包含故障信息的信息码;
20.发送模块,用于将包含所述信息码的所述硬盘操作响应指令发送至应用层。
21.优选的,所述发送模块用于在采用预置延时函数延时预设时长后,将包含所述信息码的所述硬盘操作响应指令发送至所述应用层。
22.本技术的第三方面提供了一种模拟硬盘坏块的系统,包括:应用层模块、硬盘以及故障模拟装置;
23.所述应用层模块,用于向所述硬盘发送硬盘操作命令,接收包含信息码的硬盘操作响应指令;
24.所述硬盘,用于接收来自所述应用层模块发送来的所述硬盘操作命令,根据所述硬盘操作命令执行相应的操作后生成硬盘操作响应指令;
25.所述故障模拟装置,用于获取所述硬盘操作响应指令;在所述硬盘操作响应指令中设置包含故障信息的信息码;将包含所述信息码的所述硬盘操作响应指令发送至所述应用层模块。
26.本技术的第四方面提供了一种电子设备,包括:
27.处理器;以及
28.存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的模拟硬盘坏块的方法。
29.本技术的第五方面提供了一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的模拟硬盘坏块的方法。
30.本技术提供的技术方案可以包括以下有益效果:
31.本技术的技术方案,并不需要采用工具真实对硬盘扇区进行破坏,而是通过获取硬盘操作响应指令并在所述硬盘操作响应指令中设置包含故障信息的信息码的方式来模拟硬盘坏块,从而避免了真实破坏硬盘,可以提高处理灵活性。
32.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
33.通过结合附图对本技术示例性实施方式进行更详细的描述,本技术的上述以及其它目的、特征和优势将变得更加明显,其中,在本技术示例性实施方式中,相同的参考标号通常代表相同部件。
34.图1是本技术实施例中的一种模拟硬盘坏块的方法的流程示意图;
35.图2是本技术另一实施例中的一种模拟硬盘坏块的方法的流程示意图;
36.图3是本技术实施例中的一种模拟硬盘坏块的方法的流程框图;
37.图4是本技术实施例中的一种故障模拟装置的结构示意图;
38.图5是本技术另一实施例中的一种故障模拟装置的结构示意图;
39.图6是本技术实施例中的一种模拟硬盘坏块的系统的结构示意图;
40.图7是本技术实施例示出的电子设备的结构示意图。
具体实施方式
41.下面将参照附图更详细地描述本技术的优选实施方式。虽然附图中显示了本技术
的优选实施方式,然而应该理解,可以以各种形式实现本技术而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本技术更加透彻和完整,并且能够将本技术的范围完整地传达给本领域的技术人员。
42.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
43.应当理解,尽管在本技术可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
44.在本技术的描述中,需要理解的是,术语“长度”、“宽度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。
45.除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本技术中的具体含义。
46.相关技术中,由于需要采用工具真实对硬盘扇区进行破坏,导致需要提前备份硬盘数据以避免硬盘数据遭到破坏而丢失,处理方式不灵活。
47.因此,针对上述技术问题,本技术提供了一种模拟硬盘坏块的方法、装置、系统、设备及存储介质,能够通过模拟方式模拟硬盘坏道故障,避免真实破坏硬盘,提高处理灵活性。
48.以下结合附图详细描述本技术实施例的技术方案。
49.图1示出了本技术实施例中的一种模拟硬盘坏块的方法的流程示意图。
50.请参阅图1,一种模拟硬盘坏块的方法,包括如下步骤:
51.步骤s11、获取硬盘操作响应指令。
52.scsi(small computer system interface,小型计算机系统接口)标准定义命令、通信协议以及实体的电气特性,最大部分的应用是在存储设备(如硬盘)上。当需要硬盘执行操作时,应用层会向硬盘发送操作指令,接收操作指令后的硬盘会根据操作指令执行相应的操作(例如读取硬盘内的数据、往硬盘内写入数据或者扫描硬盘等操作),执行完操作的硬盘将会向应用层发送硬盘操作响应指令。
53.步骤s12、在硬盘操作响应指令中设置包含故障信息的信息码。
54.其中硬盘操作响应指令可以设置信息码。信息码是用来描述当前硬盘状态的字
段,通过信息码就能够判断出硬盘是否在执行操作的过程中发生故障。
55.信息码可以包括类别码、补充码和修饰码中的至少一项或其组合。其中,类别码(sense key,sk),在scsi协议中是用来标识硬盘的运行错误类别。补充码(additional sense code,asc),是对类别码的补充说明,补充码asc与修饰码ascq共同指定硬盘的一种故障状态。修饰码(additionnal sense code qualifier,ascq),是对补充码的修饰说明,修饰码ascq与补充码asc共同指定硬盘的一种故障状态。
56.信息码可以分为两大类,1、无故障类型的信息码,2、有故障类型的信息码。有故障类型的信息码又可以细分为两类,一类是介质错误(medium error),另一类是硬件错误(hardware error)。如下表1所示为硬盘的有故障类型的信息码。
57.medium error320medium error—no seek complete 330medium error—write fault 3100medium error—id crc error 3111medium error—read retries exhausted 3112medium error—error too long to correcthardware error410hardware error—no index or sector 420hardware error—no seek complete 430hardware error—write fault 490hardware error—track following error 4190hardware error—defect list error
58.表1硬盘的有故障类型的信息码
59.需要说明的是,表1示出的只是部分有故障类型的信息码。为了更好地理解信息码,选取介质错误的信息码320来示例说明,信息码320中有三个字段,分别是字段“3”、字段“2”以及“字段0”。字段“3”是类别码,代表的是一种故障类型。字段“2”是补充码,是对类别码的补充说明,字段“2”与“字段3”组合是一种故障状态。
60.还需要说明的是,无故障类型的信息码通常可以由三个字段“0”组成。
61.获取得到硬盘操作响应指令后,可以根据不同测试需求在硬盘操作响应指令中设置包含故障信息的信息码。例如,解析出硬盘操作响应指令携带的信息码,先判断信息码属于是无故障类型还是属于有故障类型,若信息码属于无故障类型,则根据不同测试需求修改信息码的内容,使得信息码变为包含故障信息的信息码,此时信息码模拟属于有故障类型。例如,解析出信息码为“000”,确认信息码属于无故障类型,根据测试需求将信息码“000”修改成“320”,根据表1可知,信息码“320”属于有故障类型中的介质错误,通过上述方式,就能够将信息码修改模拟成包含故障信息的属于有故障类型的信息码。
62.步骤s13、将包含信息码的硬盘操作响应指令发送至应用层。
63.将包含信息码的硬盘操作响应指令发送至应用层。当应用层接收到携带有信息码的硬盘操作响应指令后,应用层就能够根据信息码来判断硬盘是否发生故障,进而执行不同处理,例如可以启动并响应对硬盘故障修复操作等。
64.需要说明的是,本实施例的技术方案,硬盘实际上并没有发生故障,并不需要采用工具真实对硬盘扇区进行破坏,而是获取硬盘准备发送至应用层的硬盘操作响应指令,在硬盘操作响应指令中设置包含故障信息的信息码,从而通过模式方式模拟硬盘坏块,避免
了真实破坏硬盘,可以提高处理灵活性。
65.图2示出了本技术一实施例中的一种模拟硬盘坏块的方法的流程示意图。
66.请参阅图2,一种模拟硬盘坏块的方法,包括如下步骤:
67.步骤s21、获取硬盘将要向应用层实时发送的硬盘操作响应指令,其中硬盘操作响应指令携带有信息码。
68.scsi(small computer system interface,小型计算机系统接口)标准定义命令、通信协议以及实体的电气特性,最大部分的应用是在存储设备(如硬盘)上。当需要硬盘执行操作时,应用层会向硬盘发送操作指令,接收操作指令后的硬盘会根据操作指令执行相应的操作(例如读取硬盘内的数据、往硬盘内写入数据或者扫描硬盘等操作),执行完操作的硬盘将会向应用层发送硬盘操作响应指令。
69.其中硬盘操作响应指令可以设置信息码。信息码是用来描述当前硬盘状态的字段,通过信息码就能够判断出硬盘是否在执行操作的过程中发生故障。
70.进一步地,在一些实施例中,获取硬盘硬盘操作响应指令可以采用如下方式进行:使用linux内核接口函数text_poke()寻找scsi命令完成函数scisi_finish_command()的内存地址,基于内存地址获取scsi命令完成函数作为硬盘操作响应指令。
71.信息码可以包括类别码、补充码和修饰码。类别码(sense key,sk),在scsi协议中是用来标识硬盘的运行错误类别。补充码(additional sense code,asc),是对类别码的补充说明,补充码asc与修饰码ascq共同指定硬盘的一种故障状态。修饰码(additionnal sense code qualifier,ascq),是对补充码的修饰说明,修饰码ascq与补充码asc可以共同指定硬盘的一种故障状态。
72.信息码可以分为两大类,1、无故障类型的信息码,2、有故障类型的信息码。有故障类型的信息码又可以细分为两类,一类是介质错误(medium error),另一类是硬件错误(hardware error)。
73.步骤s22、在确定需要注入故障信息后,将硬盘操作响应指令中的信息码修改为包含故障信息。
74.获取得到硬盘操作响应指令后,确定是否需要注入故障信息。在确定需要注入故障信息后,解析出硬盘操作响应指令携带的信息码,先判断信息码属于是无故障类型还是属于有故障类型,若信息码属于无故障类型,则根据不同测试需求修改信息码的内容,使得信息码变为包含故障信息的信息码,此时信息码模拟属于有故障类型。例如,解析出信息码为“000”,确认信息码属于无故障类型,根据测试需求将信息码“000”修改成“320”,根据表1可知,信息码“320”属于有故障类型中的介质错误,通过上述方式,就能够将信息码修改模拟成包含故障信息的属于有故障类型的信息码。
75.进一步地,在一些实施例中,修改信息码,以使信息码属于有故障类型可以采用如下方式:通过故障信息注入函数inject_scsi_finish_command()注入故障信息修改信息码,以使信息码属于有故障类型。
76.步骤s23、在采用预置延时函数延时预设时长后,将修改信息码后的硬盘操作响应指令发送至应用层进行处理。
77.相关技术模拟硬盘损坏的方式一般是使用软件工具(例如hdparm)对硬盘进行损坏。此种方式由于需要使用软件工具来破坏硬盘扇区,但由于要利用软件工具对硬盘扇区
进行真实损坏,在测试下必须提前备份硬盘数据,否则可能会造成硬盘数据的永久性丢失。再者,采用软件工具模拟的方式只能模拟出硬盘的逻辑损坏(即软损坏),不能覆盖硬盘的写入故障。另外,使得此种方式一次只能注入一个硬盘坏块,模拟效率非常慢。
78.而本实施例的技术方案,在确定需要注入故障信息后,将硬盘操作响应指令中的信息码修改为包含故障信息后发送至应用层,当应用层接收到携带有信息码的硬盘操作响应指令后,应用层就能够根据信息码来判断硬盘是否发生故障。实际上硬盘并没有发生故障,本实施例是通过模式方式模拟硬盘坏块,从而避免了真实破坏硬盘,可以提高处理灵活性。另外,本实施例的技术方案可根据测试需求任意修改信息码,相比于相关技术中一次只能注入一个硬盘坏块的模拟方法效率更高;另外,本实施例也不会涉及到对硬盘真实性损坏的过程,也不需要收集真实发生坏块的硬盘作为模拟样本。
79.还需要说明的是,在实际过程中,若硬盘发生故障,硬盘向应用层发送的硬盘操作响应指令是有一定时间的延时的,因此,为了让模拟场景与实际场景更为接近,在采用预置延时函数延时预设时长后,再将修改信息码后的硬盘操作响应指令发送至应用层中进行处理,应用层则会根据接收硬盘操作响应指令的时间以及信息码的所属类型,来判断硬盘是否发生故障。
80.为了更好地理解模拟硬盘坏块方法的技术原理,图3示出了本技术实施例中的一种模拟硬盘坏块的方法的流程框图。
81.超融合是近几年兴起的一种新的it基础架构。超融合基础架构是一种集成了虚拟计算资源和存储设备的信息基础架构。在这样的架构环境中,同一套单元设备中不但具备了计算、网络、存储和服务器虚拟化等资源和技术,而且多套单元设备可以通过网络聚合起来,实现模块化的无缝横向扩展,形成统一的资源池。以超融合服务器为例,超融合服务器的存储io系统主要针对硬盘进行读写的操作,硬盘存在种类繁多故障,硬盘坏块是其中的一类故障且发生概率最为频繁。存储io系统需要针对硬盘故障进行重试或者报错处理。模拟硬盘坏块可以验证超融合服务器的存储io系统的数据是否可靠,丢失数据后是否能够正常恢复,是否影响业务和数据的完整性等。
82.本技术实施例可以快速模拟硬盘坏块故障,进行硬盘故障测试,可用于验证超融合服务器的存储io系统是否稳定可靠。本技术实施例方案,硬盘根据io操作指令去读写硬盘的数据,在返回io操作响应指令的时候,修改其中携带的信息码(也可以称为故障码)的信息内容,将信息码修改为硬盘坏块的信息码,以达到模拟硬盘坏块的目的。
83.请参阅图3,一种模拟硬盘坏块的方法,包括如下步骤:
84.步骤s31、应用层向硬盘实时发送硬盘操作命令,进入步骤s32。
85.需要说明的是,操作命令可以包括例如读取硬盘数据的硬盘操作命令、往硬盘写入数据的硬盘操作命令、扫描硬盘的硬盘操作命令等。
86.当应用层需要读写硬盘或者扫描硬盘坏块时,会向硬盘发送硬盘io读写命令或者io校验命令等硬盘操作命令,操作命令会通过虚拟文件层、文件系统层、块设备、scsi层、驱动层,最后到达硬盘,硬盘执行相关操作后,硬盘操作响应指令将会按原路径依次返回到应用层。
87.步骤s32、硬盘接收应用层发送的硬盘操作命令,根据硬盘操作命令执行相应的操作后生成硬盘操作响应指令,其中硬盘操作响应指令携带有信息码,进入步骤s33。
88.需要说明的是,硬盘操作响应指令是硬盘执行完相应操作后生成的响应指令,例如,硬盘根据读取硬盘数据的硬盘操作命令,执行读取数据的操作,根据读取结果生成硬盘操作响应指令。
89.硬盘操作响应指令中的返回值携带有信息码(也可以称为故障码)。硬盘坏块在使用过程中可能因为操作不同返回不同的信息码。
90.步骤s33、获取硬盘的硬盘操作响应指令,进入步骤s34。
91.获取硬盘操作响应指令,解析出硬盘操作响应指令中携带的信息码。
92.该步骤获取硬盘操作响应指令可以采用如下方式进行:使用操作系统内核接口函数例如linux内核接口函数text_poke()寻找scsi命令完成函数scisi_finish_command()的内存地址,基于该内存地址获取scsi命令完成函数作为硬盘操作响应指令。
93.该步骤使用操作系统内核例如使用linux内核提供的text_poke方法找到关键函数也即scsi命令完成函数scsi_finish_command的入口地址,基于该入口地址获取scsi命令完成函数作为硬盘操作响应指令,
94.步骤s34、判断是否需要注入故障信息,若需要注入故障信息,进入步骤s35;若不需要注入故障信息,进入步骤s37。该步骤可以根据故障测试需求判断是否需要注入故障信息,如果需要进行故障测试,则表示若需要注入故障信息。
95.步骤s35、判断硬盘操作响应指令的信息码的类型是否属于无故障类型,若信息码属于无故障类型,进入步骤s36;若信息码属于有故障类型,进入步骤s37。
96.步骤s36、修改信息码,以使信息码模拟包含故障信息,进入步骤s38。
97.该步骤中,确定需要注入故障信息的硬盘,找到linux系统中scsi硬盘io读写命令的返回函数也即scsi命令完成函数,注入故障信息。例如,在scsi命令完成函数中注入新的代码逻辑,该代码逻辑可以将硬盘操作响应指令(例如scsi硬盘io读写响应命令)的返回值中的信息码字段修改为特定的硬盘坏块的信息码,也即将硬盘操作响应指令中的信息码修改为包含故障信息的信息码。例如,解析出信息码为“000”,根据测试需求将信息码“000”修改成“320”,根据表1可知,信息码“320”属于有故障类型中的介质错误,通过上述方式,就能够将信息码修改模拟成包含故障信息的属于有故障类型的信息码。
98.需说明的是,在修改信息码时,可以随机组合信息码的字段的不同数值以模拟对应不同故障信息情况。
99.以linux系统为例,linux系统对硬盘的处理都会经由存储scsi来操作硬盘,以达到对硬盘读写或者校验硬盘坏块的目的,所以本技术实施例针对scsi层注入故障信息就能模拟硬盘真实坏块的故障特征,让操作系统误以为硬盘存在坏块,从而做出相应的操作,来测试超融合系统稳定性是否可靠。
100.步骤s37、不修改信息码,将没有修改信息码的硬盘操作响应指令发送至应用层,进入步骤s40。
101.步骤s38、通知smart程序进行硬盘故障收集,进入步骤s39。
102.smart程序是集成在硬盘控制电路板上的一个自动检测程序。只要硬盘通电,smart程序就会持续检测硬盘的各项工作参数,看是否在正常范围内。
103.该步骤可以动态通知smart程序进行硬盘故障收集。
104.步骤s39、在延时预设时长后,将修改信息码后的硬盘操作响应指令发送至应用
层,进入步骤s40。
105.需要说明的是,当发送修改信息码后的硬盘操作响应指令时,可以采用预置延时函数延时预设时长后再发送。这是考虑到是硬盘在发生故障的情况下,硬盘操作响应指令是有一定延时时间的。因此,设置io迟延就能模拟硬盘真实坏块的故障特征,让操作系统误以为硬盘存在坏块,从而做出相应的操作来测试超融合系统稳定性是否可靠。
106.例如,因实际硬盘坏块读写io一般会迟延约2秒时间,所以本技术实施例注入故障信息之后可以延时预设时长后再返回硬盘操作响应指令,以更真实模拟硬盘真实坏块的故障特征。
107.步骤s40、应用层接收硬盘操作响应指令,解析出信息码,进入步骤s41。
108.在硬盘操作响应指令所注入的故障信息使用badblocks工具可以扫描出来,也可以被smart程序监控发现。步骤s41、应用层根据信息码对应的故障类型,进行相应操作,结束流程。
109.应用层可以根据信息码对应的故障类型进行特定的业务处理,例如进行热迁移或者数据恢复等操作。
110.本技术实施例通过修改硬盘操作响应指令携带的信息码,将信息码修改成包含故障信息的信息码,利用模式方式模拟硬盘坏块,让应用层根据修改后的信息码判定硬盘发生故障,以此启动并响应对硬盘故障修复操作。这样,避免了真实破坏硬盘,可以提高处理灵活性。另外本实施例的技术方案可根据测试需求任意修改信息码,相比于相关技术中的模拟方法效率更高,而且不会涉及到对硬盘真实性损坏的过程,也不需要收集真实发生坏块的硬盘作为模拟样本,使用更方便。
111.与前述的功能方法实施例相对应,本技术提供了一种故障模拟装置及相应的实施例。
112.图4示出了本技术实施例中的一种故障模拟装置的结构示意图。
113.请参阅图4,一种故障模拟装置40,包括:获取模块410、设置模块420和发送模块430。
114.获取模块410用于获取硬盘操作响应指令。
115.其中,硬盘操作响应指令携带有信息码。信息码可以包括类别码、补充码和修饰码中的至少一项或其组合。其中,类别码(sense key,sk),在scsi协议中是用来标识硬盘的运行错误类别。补充码(additional sense code,asc),是对类别码的补充说明,补充码与修饰码共同指定硬盘的一种故障状态。修饰码(additionnal sense code qualifier,ascq),是对补充码的修饰说明,修饰码与补充码共同指定硬盘的一种故障状态。
116.信息码分为两大类,1、无故障类型的信息码,2、有故障类型的信息码。有故障类型的信息码又可以细分为两类,一类是介质错误(medium error),另一类是硬件错误(hardware error)。
117.设置模块420用于在硬盘操作响应指令中设置包含故障信息的信息码。
118.获取得到硬盘操作响应指令后,可以根据不同测试需求在硬盘操作响应指令中设置包含故障信息的信息码。例如,解析出硬盘操作响应指令携带的信息码,先判断信息码属于是无故障类型还是属于有故障类型,若信息码属于无故障类型,则根据不同测试需求修改信息码的内容,使得信息码变为包含故障信息的信息码,此时信息码模拟属于有故障类
型。例如,解析出信息码为“000”,确认信息码属于无故障类型,根据测试需求将信息码“000”修改成“320”,根据表1可知,信息码“320”属于有故障类型中的介质错误,通过上述方式,就能够将信息码修改模拟成包含故障信息的属于有故障类型的信息码。
119.发送模块430用于将包含信息码的硬盘操作响应指令发送至应用层。
120.本实施例的装置,获取硬盘操作响应指令并在硬盘操作响应指令中设置包含故障信息的信息码,从而通过模式方式模拟硬盘坏块,避免了真实破坏硬盘,可以提高处理灵活性。
121.图5示出了本技术一实施例中的一种故障模拟装置的结构示意图。
122.请参阅图5,一种故障模拟装置40,包括:获取模块410、设置模块420和发送模块430、判断模块440。
123.其中获取模块410和设置模块420的功能请参阅图4中的描述,此处不再赘述。
124.发送模块430可以在采用预置延时函数延时预设时长后,将包含信息码的硬盘操作响应指令发送至应用层。
125.在实际过程中,若硬盘发生故障,硬盘操作响应指令是有一定时间的延时,因此,为了让模拟场景与实际场景更为接近,在采用预置延时函数延时预设时长后,再将修改信息码后的硬盘操作响应指令发送至应用层中,应用层则会根据接收硬盘操作响应指令的时间以及信息码的所属类型,来判断硬盘是否发生故障,这样可以更真实模拟硬盘真实坏块的故障特征。
126.判断模块440,用于判断是否需要注入故障信息。设置模块420在判断模块440判断出需要注入故障信息时,在硬盘操作响应指令中设置包含故障信息的信息码。
127.图6示出了本技术实施例中的一种模拟硬盘坏块的系统的结构示意图。
128.请参阅图6,一种模拟硬盘坏块的系统60,包括:应用层模块610、硬盘620以及故障模拟装置630。
129.应用层模块610用于向硬盘发送硬盘操作命令,接收包含信息码的硬盘操作响应指令;
130.硬盘620用于接收来自应用层模块发送来的硬盘操作命令,根据硬盘操作命令执行相应的操作后生成硬盘操作响应指令;
131.故障模拟装置630用于获取硬盘操作响应指令;在硬盘操作响应指令中设置包含故障信息的信息码;将包含信息码的硬盘操作响应指令发送至应用层模块。
132.故障模拟装置630的功能和结构可以参见图4或图5中的描述,此处不再赘述。
133.关于上述实施例中的装置及系统,其中各个模块及单元执行操作的具体方式已经在有关该装置及系统所对应的方法实施例中进行了详细描述,此处将不再做详细阐述说明。
134.请参阅图7,电子设备700包括处理器710和存储器720。
135.处理器710可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器
等。
136.存储器720可以包括各种类型的存储单元,例如系统内存、只读存储器(rom)和永久存储装置。其中,rom可以存储处理器710或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器720可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(例如dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。存储器720上存储有可执行代码,当可执行代码被处理器710处理时,可以使处理器710执行上文述及的方法中的部分或全部。
137.上文中已经参考附图详细描述了本技术的方案。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。本领域技术人员也应该知悉,说明书中所涉及的动作和模块并不一定是本技术所必须的。另外,可以理解,本技术实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,本技术实施例装置中的模块可以根据实际需要进行合并、划分和删减。
138.以上已经描述了本技术的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1