一种检测硬盘iops性能的方法及装置的制造方法

文档序号:10534698阅读:342来源:国知局
一种检测硬盘iops性能的方法及装置的制造方法
【专利摘要】本发明提供了一种检测硬盘IOPS性能的方法及装置,应用于Linux系统,该方法包括:确定计算机中需要进行IOPS性能检测的至少一个目标硬盘,并设定对各个所述目标硬盘进行访问的访问形式;根据所述访问形式,依次对各个所述目标硬盘进行读操作或写操作;对所述读操作或写操作过程进行监控,形成对应的记录文件;根据所述记录文件,获取各个所述目标硬盘对应的IOPS数据。该装置包括:设定单元、检测单元、监控单元及提取单元。本方案能够提高对硬盘IOPS性能进行测试的效率。
【专利说明】
一种检测硬盘I OPS性能的方法及装置
技术领域
[0001] 本发明涉及计算机技术领域,特别涉及一种检测硬盘I0PS性能的方法及装置。
【背景技术】
[0002] 硬盘是计算机必不可少的存储设备,用于存储计算机系统文件及用户数据,硬盘 的性能将直接影响计算机的性能,特别是在服务器中,为了保证服务器的稳定性及运算速 度,硬盘的稳定性必须得到保证。因此,用户提出了一系列针对硬盘的测试项目,以对硬盘 的稳定性进行测试,其中硬盘测试项目中包括对硬盘读写操作速度I0PS进行测试,以检测 硬盘的I0PS性能。
[0003] 目前,在检测硬盘的I0PS性能时,在Windows系统下,通过工作负载生成器Iometer 对服务器的各个硬盘进行读写操作,从而获取各个硬盘的I0PS数据。
[0004] 针对于现有技术对硬盘I0PS性能进行检测的方法,在Windows系统下,通过 Iometer对服务器的各个硬盘进行读写操作时,经常出现Iometer显示的硬盘位置与硬盘在 机箱中的实际位置不对应的现象,导致无法确定获得的各个I0PS数据与各个硬盘的对应关 系,因而需要逐个对各个硬盘进行热插拔,以确定Iometer显示的各个硬盘的真实安装位 置,从而确定各个I0PS数据与各个硬盘的对应关系。这样,在硬盘数量较多时,需要耗费大 量时间确定Iometer显示的各个硬盘的真实安装位置,导致对硬盘I0PS性能进行检测的效 率较低。

【发明内容】

[0005] 本发明实施例提供了一种检测硬盘I0PS性能的方法及装置,能够提高对硬盘I0PS 性能进行检测的效率。
[0006] 本发明实施例提供了检测硬盘I0PS性能的方法,应用于Linux系统,包括:
[0007] 确定计算机中需要进行I0PS性能检测的至少一个目标硬盘,并设定对各个所述目 标硬盘进行访问的访问形式;
[0008] 根据所述访问形式,依次对各个所述目标硬盘进行读操作或写操作;
[0009] 对所述读操作或写操作过程进行监控,形成对应的记录文件;
[0010] 根据所述记录文件,获取各个所述目标硬盘对应的I0PS数据。
[0011] 优选地,
[0012] 所述访问形式包括:256K顺序读形式、256K顺序写形式、4K随机读形式及4K随机写 形式中的任意一个或多个。
[0013] 优选地,
[0014] 所述根据所述访问形式,依次对各个所述目标硬盘进行读操作或写操作包括以下 四种操作中的任意一种或多种:
[0015] 根据所述256K顺序读形式,依次对各个所述目标硬盘进行256K顺序读操作;
[0016]根据所述256K顺序写形式,依次对各个所述目标硬盘进行256K顺序写操作;
[0017]根据所述4K随机读形式,依次对各个所述目标硬盘进行4K随机读操作;
[0018]根据所述4K随机写形式,依次对各个所述目标硬盘进行4K随机写操作。
[0019] 优选地,
[0020] 所述Linux系统包括:x86架构的红帽操作系统或X86架构的社区企业Centos操作 系统。
[0021 ]优选地,该方法进一步包括:
[0022] 根据所述记录文件,获取各个所述目标硬盘对应的带宽和/或带宽利用率。
[0023] 优选地,在所述根据所述记录文件,获取各个所述目标硬盘对应的I0PS数据之后 进一步包括:
[0024] 分别抓取各个所述目标硬盘的自检日志,根据所述自检日志获取对应目标硬盘的 状态信息。
[0025]本发明实施例还提供了一种检测硬盘I0PS性能的装置,应用于Linux系统,包括: 设定单元、检测单元、监控单元及提取单元;
[0026]所述设定单元,用于确定计算机中需要进行I0PS性能检测的至少一个目标硬盘, 并设定对各个所述目标硬盘进行访问的访问形式;
[0027] 所述检测单元,用于根据所述设定单元设定的访问形式,依次对所述设定单元确 定的各个所述目标硬盘进行读操作或写操作;
[0028] 所述监控单元,用于对所述检测单元进行的读操作或写操作过程进行监控,形成 对应的记录文件;
[0029] 所述提取单元,用于根据所述监控单元形成的记录文件,获取各个所述目标硬盘 对应的I0PS数据。
[0030] 优选地,
[0031] 当所述设定单元设定的访问形式包括256K顺序读形式、256K顺序写形式、4K随机 读形式及4K随机写形式中的任意一个或多个时,
[0032] 所述检测单元,用于执行如下四种操作中的任意一种或多种:
[0033]根据所述256K顺序读形式,依次对各个所述目标硬盘进行256K顺序读操作;
[0034]根据所述256K顺序写形式,依次对各个所述目标硬盘进行256K顺序写操作;
[0035]根据所述4K随机读形式,依次对各个所述目标硬盘进行4K随机读操作;
[0036]根据所述4K随机写形式,依次对各个所述目标硬盘进行4K随机写操作。
[0037] 优选地,
[0038] 所述提取单元,进一步用于根据所述记录文件,获取各个所述目标硬盘对应的带 宽和/或带宽利用率。
[0039] 优选地,该装置进一步包括:抓取单元;
[0040] 所述抓取单元,用于分别抓取各个所述目标硬盘的自检日志,根据所述自检日志 获取对应目标硬盘的状态信息。
[0041] 本发明实施例提供了一种检测硬盘I0PS性能的方法及装置,确定需要进行检测的 目标硬盘后,设定对目标硬盘进行访问的访问形式,根据访问形式分别对各个目标硬盘进 行访问,从各个硬盘中读取数据或写入数据,并对访问过程进行监控,形成对应的记录文 件,从记录文件中获取各个目标硬盘对应的I0PS数据。该方法在Linux系统上进行,分别对 各个目标硬盘进行测定,直接获取到各个目标硬盘的IOPS数据,不会出现硬盘与IOPS数据 不对应的情况,因而无需通过热插拔硬盘的方式确定硬盘与I0PS数据的对应关系,从而提 高了对硬盘IOPS性能进行检测的效率。
【附图说明】
[0042]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 这些附图获得其他的附图。
[0043]图1是本发明一个实施例提供的一种检测硬盘I0PS性能的方法流程图;
[0044] 图2是本发明一个实施例提供的一种检测硬盘I0PS性能的装置示意图;
[0045] 图3是本发明另一个实施例提供的一种检测硬盘I0PS性能的方法流程图。
【具体实施方式】
[0046] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员 在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。 [0047]如图1所示,本发明实施例提供了一种检测硬盘I0PS性能的方法,应用于Linux系 统,该方法可以包括以下步骤:
[0048]步骤101:确定计算机中需要进行I0PS性能检测的至少一个目标硬盘,并设定对各 个所述目标硬盘进行访问的访问形式;
[0049] 步骤102:根据所述访问形式,依次对各个所述目标硬盘进行读操作或写操作;
[0050] 步骤103:对所述读操作或写操作进行监控,形成对应的记录文件;
[0051]步骤104:根据所述记录文件,获取各个所述目标硬盘的I0PS数据。
[0052]本发明实施例提供了一种检测硬盘I0PS性能的方法,确定需要进行检测的目标硬 盘后,设定对目标硬盘进行访问的访问形式,根据访问形式分别对各个目标硬盘进行访问, 从各个硬盘中读取数据或写入数据,并对访问过程进行监控,形成对应的记录文件,从记录 文件中获取各个目标硬盘对应的I0PS数据。该方法在Linux系统上进行,分别对各个目标硬 盘进行测定,直接获取到各个目标硬盘的I0PS数据,不会出现硬盘与I0PS数据不对应的情 况,因而无需通过热插拔硬盘的方式确定硬盘与I0PS数据的对应关系,从而提高了对硬盘 I0PS性能进行检测的效率。
[0053]在本发明一个实施例中,对硬盘进行访问的访问形式包括256K顺序读形式、256K 顺序写形式、4K随机读形式及4K随机写形式,在对硬盘进行检测时,可以根据用户的需求选 择其中的一个或多个访问形式对硬盘进行测试,提高了该检测硬盘I0PS性能的方法的适用 性及检测的全面性。
[0054]在本发明一个实施例中,当访问形式包括多种读访问形式或写访问形式时,依次 针对于每一种访问形式,根据该访问形式依次对各个目标硬盘进行对应的读操作或写操 作,直至对各个硬盘根据所有访问形式均进行了检测。这样,实现了通过不同的读写模式及 每次读写数据量的大小对硬盘的IOPS性能进行检测,提高了检测的准确性。
[0055] 在本发明一个实施例中,可以在x86架构的红帽操作系统或x86架构的社区企业 Centos操作系统上实现该检测硬盘I0PS性能的方法,一方面避免了在Windows系统上出现 硬盘与I0PS数据不对应的情况,提高对硬盘I0PS性能检测的准确性,另一方面可以实际情 况选择红帽操作系统或Centos操作系统,进一步提高了该检测硬盘I0PS性能的方法的适用 性。
[0056] 在本发明一个实施例中,根据记录文件还能够获取目标硬盘在检测过程中的带宽 及带宽利用率,根据检测需求可以选择是否获取这两个参数或者只获取其中的一个。这样, 在获取硬盘的I0PS数据的同时还能够获取硬盘的带宽及带宽利用率,提高了对硬盘性能进 行检测的全面性。
[0057]在本发明一个实施例中,在对目标硬盘检测结束后,还可以进一步抓取目标硬盘 的自检日志,根据自检日志可以获取目标硬盘的状态信息,进而判断硬盘在检测过程中是 否发生了损坏,进一步提高了检测的全面性。另外,在Linux系统上可以直接抓取硬盘的自 检日志,相对于现有技术在Windows系统上检测,而在Linux系统抓取自检日志,提高了对硬 盘性能进行检测的效率。
[0058]本发明提供了一种检测硬盘I0PS性能的装置,该装置可以通过软件实现,如图2所 示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算 机程序指令读取到内存中运行形成的。本实施例提供的检测硬盘I0PS性能的装置,包括:设 定单元201、检测单元202、监控单元203及提取单元204;
[0059]所述设定单元201,用于确定计算机中需要进行I0PS性能检测的至少一个目标硬 盘,并设定对各个所述目标硬盘进行访问的访问形式;
[0060] 所述检测单元202,用于根据所述设定单元201设定的访问形式,依次对所述设定 单元201确定的各个所述目标硬盘进行读操作或写操作;
[0061] 所述监控单元203,用于对所述检测单元202进行的读操作或写操作过程进行监 控,形成对应的记录文件;
[0062]所述提取单元204,用于根据所述监控单元203形成的记录文件,获取各个所述目 标硬盘对应的I0PS数据。
[0063]本发明实施例提供了一种检测硬盘I0PS性能的装置,在Linux系统下,设定单元确 定需要进行检测的目标硬盘以及对硬盘进行访问的访问形式后,检测单元根据设定的访问 形式依次对各个目标硬盘进行读操作或写操作,监控单元对检测单元的检测过程进行监 控,形成记录文件,提取单元从记录文件中获取目标硬盘的I0PS数据。检测单元依次对各个 目标硬盘进行检测,形成对应的记录文件,在Linux系统下不会出现获取的I0PS数据与硬盘 不对应的情况,无需通过热插拔硬盘来确定获取到的I0PS数据与硬盘的对应关系,从而提 高了对硬盘I0PS性能进行检测的效率。
[0064]在本发明一个实施例中,设定单元可以将访问形式设置为256K顺序读形式、256K 顺序写形式、4K随机读形式及4K随机写形式中的任意一个或多个,检测单元根据设定单元 设定的各个读访问形式或写访问形式,依次针对于每一个访问形式,根据该访问形式依次 对各个目标硬盘进行相应的读操作或写操作。实现了通过不同的访问形式对目标硬盘进行 检测,提高了检测的全面性及检测结果的准确性。
[0065] 在本发明一个实施例中,提取单元还可以从记录文件中获取各个目标硬盘的带宽 及带宽利用率,或则两者中的任意一个,这样在获取目标硬盘的I0PS数据的同时还能够获 取硬盘的带宽及带宽利用率,实现多种硬盘指标的同时检测,提高了对硬盘进行检测的效 率。
[0066] 在本发明一个实施例中,该装置进一步还可以包括抓取单元,在提取单元从记录 文件中获取硬盘的I0PS数据等指标参数后,抓取单元对各个目标硬盘的自检日志进行抓 取,从自检日志中可以获取对应目标硬盘的状态信息,根据状态信息进一步可以判断硬盘 是否有损坏,从而在对硬盘进行开机无包装振动测试时,可以判断振动是否对硬盘造成了 损坏,提高了对硬盘进行检测的全面性。
[0067] 上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施 例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0068] 为使本发明的目的、技术方案和优点更加清楚,下面结合图2所示的检测硬盘I0PS 性能的装置,以对硬盘进行开机无包装振动检测为例,对本发明实施例提供的检测硬盘 I0PS性能的方法作进一步地详细描述。
[0069] 如图3所示,本发明实施例提供了一种检测硬盘I0PS性能的方法,该方法可以包括 以下步骤:
[0070] 步骤301:确定计算机中需要进行检测的目标硬盘。
[0071] 在本发明一个实施例中,应用户的要求对计算机的硬盘进行开机无包装振动检测 时,根据用户的要求,将计算机中的至少一个硬盘确定为目标硬盘。例如,一台服务器A共包 括7个硬盘,分别为硬盘a、硬盘b、硬盘c、硬盘d、硬盘e、硬盘f及硬盘g,其中硬盘a为系统盘, 用户要求对该服务器A中的非系统盘进行开机无包装振动检测,则将硬盘b至硬盘g确定为 目标硬盘。
[0072] 步骤302:确定对目标硬盘进行访问的访问形式。
[0073]在本发明一个实施例中,根据用户提出的检测要求,确定在对各个目标硬盘进行 检测时采用的访问形式。例如,根据用户对服务器A的硬盘提出的检测要求,确定256K顺序 读形式、256K顺序写形式、4K随机读形式及4K随机写形式作为对硬盘b至硬盘g进行检测时 采用的访问形式。其中,256K顺序读形式为以每次256K大小的数据块依次从目标硬盘的各 个扇区中读取数据,256K顺序写形式为以每次256K大小的数据块依次向目标硬盘的各个扇 区中写入数据,4K随机读形式为以每次4K大小的数据块随机从目标硬盘的各个扇区中读取 数据,4K随机写形式为以每次4K大小的数据块随机向目标硬盘的各个扇区中写入数据。 [0074]步骤303:根据每一种访问形式,依次对各个目标硬盘进行检测,监控检测过程,形 成对应的记录文件。
[0075] 在本发明一个实施例中,在确定目标硬盘及访问形式后,将计算机放置在振动台 上,计算机在振动台的作用下产生振动,模拟硬盘在实际使用过程中的受力情况。在振动过 程中,根据步骤302中设定的各个访问形式,依次针对于每一种访问形式,根据该访问形式 依次对各个目标硬盘进行读操作或写操作,形成针对于每一种访问形式及每一个目标硬盘 的记录文件。
[0076] 例如,检测单元执行选定程序f io-test. sh,依次选定对目标硬盘进行测试的访问 形式,其中选定程序fi〇-test.sh如下:
[0077] #!/bin/bash
[0078] ./randread-4k.sh
[0079] sleep 100
[0080] ./randwrite~4k.sh
[0081] sleep 100
[0082] ?/read_256k?sh
[0083] sleep 100
[0084] ./write-256k.sh
[0085] exit
[0086] 通过执行上述f io-test. sh程序,检测单元依次选定4K随机读形式、4K随机写形 式、256K顺序读形式及256K顺序写形式对6个目标硬盘进行测试;
[0087] 在检测单元选定一种访问形式后,执行该访问形式对应的检测程序,依次对6个目 标硬盘进行检测,其中,4K随机写形式对应的检测程序为randwrite_4k. sh,4K随机读形式 对应的检测程序为randread_4k. sh,256K顺序读形式对应的检测程序为read_256k. sh, 256K顺序写形式对应的检测程序为write-256k.sh,其中,
[0088] 检测程序 randwrite_4k. sh 如下:
[0089] #!/bin/bash for i in {b,.g} do fio -ioengine-libaio -group_reporting -direct^! -name-mytest$ ji J -nuinjobs=l -time-based -runtimc=120 -iodGpth=I6 -nv=randwritc -bs=4k -filename=/dev/sdS {i} |tee -a randwrite4kS {i} .txt &
[0090] 检测程序 randread_4k. sh 如下:
[0091] #!7bin/b:ash. for i in {b.,g} do fio -ioengine=libaio -groiip reporting -direct=l -name=mytest$ {i} -iiuinjobs^l -tlme_based -runtime卜 120 -iodepth-16 -rw-randread -bs-4k -filename^/dev/sdS | i J |tee -a randread4k${i} ,txt &
[0092] 检测程序 read_256k. sh 如下:
[0093] #!/bi.n/bas:h. lor i in (b..g) do fio -i〇engine=libaio -group reporting -difect=l -name=mytest${i} -numjobs^l -time_based -runliine_!20 -iodepth^!6 -rw=read -bs_256k -fi]ename=/dev/sdS{i j |tee -a read256k${i j .txt &
[0094] 检测程序 write_256k. sh 如下:
[0095] #!/bin/bash for i in {b..g; do fio -ioengine-libaio -group reporting -direct-1 -name-mytest$ \ \} -numjobs-! ~~time_based --runtime-120 -iodepth-16 -rw_ write -bs_256k -filenaine=/dev/sdS{i} |tee -a \vrite256k$ .txt &
[0096] 上述各个检测程序中包括监控代码,监控单元通过执行监控代码对检测过程进行 监控,形成每一个目标硬盘对应于每一个访问形式的记录文件,其中,
[0097] 在4K随机读形式下6个目标硬盘的记录文件为randwrite4k$i . txt;
[0098] 在4K随机写形式下6个目标硬盘的记录文件为randread4k$i . txt;
[0099] 在256K顺序读形式下6个目标硬盘的记录文件为write256k$i . txt;
[0100] 在256K顺序写形式下6个目标硬盘的记录文件为write256k$i . txt;
[0101] 其中,i为目标硬盘的标识,对应于硬盘b至硬盘g时,i对应为b至g。
[0102] 这样,每个最终得到每个目标硬盘对应的4个记录文件,共获得24个记录文件。 [0103]步骤304:根据记录文件,获取目标硬盘的I0PS数据、带宽及带宽利用率。
[0104] 在本发明一个实施例中,在获取到在不同访问形式下对各个目标硬盘进行测试的 记录文件后,从记录文件中提取对应目标硬盘在对应访问形式下的I0PS数据、带宽及带宽 利用率。
[0105] 例如,根据不同的访问形式,提取单元执行相对应的提取程序,从记录文件中提取 出目标硬盘的I0PS数据、带宽及带宽利用率,各种访问形式对应的提取程序如下:
[0106] 4K随机写形式对应的提取程序为:
[0107] done
[0108] sleep 360
[0109] for i in{b..g}
[0110] do
[0111] Bff= cat randwrite4k$i . txt | grep iops= | cut_d','-f 2 | grep-oE^TO-9. ]+"'
[0112] BffU= cat randwrite4k$i . txt | grep iops= | cut_d ','-f 2|cut_d' = '-f 2 | sed s'/[0_9.]//'g'
[0113] I0PS= 'cat randwrite4k$i . txt | grep iops= | cut_d','-f 3|cut-d' = '-f 2'
[0114] echo^sdS {i }_randwrite4k, $Bff, $BWU, $I0PS//>>randwrite4k-result. csv
[0115] done
[0116] echo"test complete!"
[0117] exit
[0118] 4K随机读形式对应的提取程序为:
[0119] done
[0120] sleep 360
[0121 ] for i in{b. .g}
[0122] do
[0123] BW= cat randread4k$i ? txt | grep iops= | cut_d','-f 2 | grep-〇E"[0_9? ]+"'
[0124] BffU= 'cat randread4k$i . txt | grep iops= | cut-d','-f 2|cut-d, = ,-f 2 | sed s,/[0-9.]//,g'
[0125] I0PS= cat randread4k$i ? txt | grep iops= | cut_d','-f 3 | cut_d'='-f 2'
[0126] echo^sdS {i }_randread4k, $Bff, $BWU, $I0PS//>>randread4k-result. csv
[0127] done
[0128] echo"test complete!"
[0129] exit
[0130] 256K顺序读形式对应的提取程序为:
[0131 ] done
[0132] sleep 360
[0133] for i in{b..g}
[0134] do
[0135] BW= cat read256k$i ? txt | grep iops= | cut_d','-f 2 | grep-〇E"[0_9? ]+"'
[0136] BWU= cat read256k$i ? txt | grep iops= | cut_d','-f 2 | cut_d'='-f 2 | sed s,/[0-9.]//,g'
[0137] I0PS= cat read256k$i ? txt | grep iops= | cut_d','-f 3 | cut_d'='-f 2'
[0138] echo^sdS {i }_read256k, $Bff, $BWU, $I0PS//>>read256k-result. csv
[0139] done
[0140] echo"test complete!"
[0141] exit
[0142] 256K顺序写形式对应的提取程序为:
[0143] done
[0144] sleep 360
[0145] for i in{b..g}
[0146] do
[0147] BW= cat write256k$i ? txt | grep iops= | cut_d','-f 2 | grep-〇E"[0_9? ]+"'
[0148] BWU= cat write256k$i ? txt | grep iops= | cut_d','-f 2 | cut_d'='-f 2 | sed s,/[0-9.]//,g'
[0149] I0PS= cat write256k$i ? txt | grep iops= | cut_d','-f 3 | cut_d'='-f 2'
[0150] echo^sdS {i }_write256k, $Bff, $BWU, $I0PS//>>write256k-result. csv
[0151] done
[0152] echo"test complete!"
[0153] exit
[0154] 提取单元通过执行对应的上述提取程序,对监控单元获得的24个记录文件进行提 取,从中获得各个目标硬盘在对应访问形式下的I0PS数据(I0PS)、带宽(BW)及带宽利用率 (BWU),并存储到对应的检测结果文件中,共获得24个检测结果文件。
[0155] 步骤305:对各个目标硬盘的自检目录进行抓取,获取各个目标硬盘的状态信息。
[0156] 在本发明一个实施例中,在Linux系统上完成步骤301至步骤304的检测过程后,抓 取单元分别对各个目标硬盘的自检日志进行抓取,根据自检日志获取各个目标硬盘的状态 信息。例如,抓取单元分别对硬盘a至硬盘g的Smart日志进行抓取,从各个硬盘对应的Smart 日志中获得该硬盘的状态信息。
[0157] 步骤306:根据目标硬盘的I0PS数据、带宽、带宽利用率及状态信息,判断硬盘是否 合格。
[0158] 在本发明一个实施例中,在获取到在不同访问形式下各个目标硬盘的I0PS数据、 带宽及带宽利用率后,该获取到的数据与用户提供的要求值进行比较,判断检测数据是否 满足用户的要求;将步骤305中获取的目标硬盘的状态信息检测之前获得的目标硬盘的状 态信息进行比较,判断目标硬盘在检测过程中是否出现损坏,如果各项检测数据均满足用 户的要求,且硬盘在检测过程中没有被损坏,则判断硬盘的开机无包装振动性能合格。 [0159]需要说明的是,为了更加清楚的对本发明实施例提供的检测硬盘I0PS性能的方法 进行说明,图3所示,将该检测硬盘I0PS性能的方法划分为多个步骤,在实际业务实现过程 中,执行各个步骤之间没有严格的先后顺序。例如步骤304中的提取程序可以集成在步骤 303中的检测程序中,此时检测程序如下:
[0160] 对应于4K随机写形式的检测程序randwrite_4k. sh为:
[0161] #]/bin/bash. for i in (b..gS do fio -ioengiiie^libaio -group_reporting -direct^! -narne=mytest$ {i} -numjobs=I -timc_bascd -runtimc=120 -iodcpth=l6 -rw=randwfite -bs=4k -filename-/dev/sd${i} |lee -a randvvrite4k$ |i j ,l.xl & done sleep 360 for i in !b..g) do BW='catmiidwrite4k$i.txt |grep iops=]e?t -d -f 2|grep -oE *'[0-9.]+"' BWU='cat randwrite4kSi.txt jgrep iops=|cut -d -f 2 cut d -' -f 2|sed sV[0-9.]//'g' I〇PS='cat randwrite4k$i.txt jgrep iops= cut -d V -f 3|cut -d -fT e.c:ho "sd$ {i }_rand\vrke4k,$BW,$BWU,$IOPS'b>mndwrite4.k-result.Gsv done echo "test complete!" exit
[0162] 对应于4K随机读形式的检测程序randread_4k. sh为: #!/bin/bash
[0163] for i in jb..g} do
[0164] fio -ioengine=libaio -group_reporling -direct=l -name=mytest${i} -numjobs=l -time based -runtime=120 -iodepth=16 -rw=randread -bs=4k -filename=/dev/sd$ ji} |ree -a randread4k${i | .txt & done sleep 360 for i in {b..g} do BW='cat raiidread4kSi.txt |grep iops=-|cut -d V -f 2丨grep -oE _'[0-9.]+"' BWU='cat randread4k$i.txt |grep iops=jcut -cl -f 2|cut -d '=' -f 2|sed sV[0-9.]/7,g' IOPS^'cat randread4kSi.txt Igrep iops=|cut -d -f 3|cut -d -f 2' ec h o n sd $ {i} _ran d read4 k, $ B W,$ B W U, $ IOP S" ?ran dread4k - res u 11. c s v done echo "test complete!" exit
[0165] 对应于256K顺序读形式的检测程序read-256k.sh为:
[0166] #!/bin/bash for i in {b..g} do fio -ioengine-libaio -group_reporting -direct-1 ~name-mytest${i} ~numjobs=i -time_based ~-runtime=120 ~iodepth=16 -rvv=read -bs=256k -fi Ienarne=/dev/sd$ {i} | tee -a read2 5 6k $ {i}.txt & done sleep 360 fbr i in {b..g| do BW='cat rcad256k$i.txt |grep iops=|cut -d -f 2 grep -oE "[0-9.]+"' BWU='cat read256kSi.txt |grep iops=|cut -d -f 2|cut ~d -f 2jsed s'/[0-9.]//'g' IOPS='cat read256kSi.txt ]grep iops=|cut -d V -f 3lent -d ,=r -f 2' echo "sd${i}_read256k,$BW,$BWU,$I〇PS" ?read256k-result.csv done
[0167] echo "test complete!" exit.
[0168] 对应于256K顺序写形式的检测程序write-256k.sh为:
[0169] #!/bin/bash for i in [b..gj do fio -iGengine=iibaio -group _reporting -direct^l -narae=mytest$ {i} -mmijobs=l --t.im:e_b.as.ed --runtime-120 -iodepth-16 -rvv=\vrite -bs-2.56k -fiiename=/dev/sd${i} |tee -a write256k${i I .txt & done sleep 360 for i in {b..g} do BW='cat write256k$i.txt |grep iops=|cut -d V -f 2|grep -oE "[0-9.]+"' BWlJ-'cat write256k$i.txt |grep iops_jcut -d V -f 2 cut -d -' -f 2|sed sV[0-9.]/7,g' IOPS='cat write256k$i.txt jgrep iops^jcut -d V -f 3|cut -d -f 2' echo "sd${i}_write256k,$BW,$BWU,$I〇PS" ?write256k-result.csv done echo "test complete!" exit
[0170] 本发明实施例提供的检测硬盘I0PS性能的方法及装置,至少具有如下有益效果:
[0171] 1、本发明实施例中,确定需要进行检测的目标硬盘后,设定对目标硬盘进行访问 的访问形式,根据访问形式分别对各个目标硬盘进行访问,从各个硬盘中读取数据或写入 数据,并对访问过程进行监控,形成对应的记录文件,从记录文件中获取各个目标硬盘对应 的I0PS数据。该方法在Linux系统上进行,分别对各个目标硬盘进行测定,直接获取到各个 目标硬盘的I0PS数据,不会出现硬盘与I0PS数据不对应的情况,因而无需通过热插拔硬盘 的方式确定硬盘与I0PS数据的对应关系,从而提高了对硬盘I0PS性能进行检测的效率。
[0172] 2、本发明实施例中,获取硬盘I0PS数据的同时还能够获取硬盘的带宽及带宽利用 率,无需单独对硬盘的带宽和带宽利用率进行检测,提高了对硬件性能进行检测的全面性 及检测效率。
[0173] 3、在本发明实施例中,该检测硬盘I0PS性能的方法在Linux系统上完成,在Linux 系统上可以直接对硬盘的自检日志进行抓取,以获得硬盘的状态信息,抓取硬盘自检日志 时无需切换操作系统,节省了切换操作系统的时间,进一步提高了对硬盘进行测试的效率。
[0174] 4、本发明实施例中,在对硬盘的I0PS性能进行检测是,可以采用多种不同的访问 形式对硬盘进行读操作或写操作,从而获取在不同的访问形式下硬盘的I0PS数据,这样可 以模拟在真实使用过程中,以不同数据块大小及读写形式对硬盘进行的读操作或写操作, 使检测条件更加贴近实际使用环境,提高了对硬盘I0PS性能检测的准确性。
[0175] 需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体 或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在 任何这种实际的关系或者顺序。而且,术语"包括"、"包含"或者其任何其他变体意在涵盖非 排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素, 而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固 有的要素。在没有更多限制的情况下,由语句"包括一个〃....."限定的要素,并不排 除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
[0176] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光 盘等各种可以存储程序代码的介质中。
[0177] 最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技 术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、 等同替换、改进等,均包含在本发明的保护范围内。
【主权项】
1. 一种检测硬盘IOPS性能的方法,其特征在于,应用于Linux系统,包括: 确定计算机中需要进行IOPS性能检测的至少一个目标硬盘,并设定对各个所述目标硬 盘进行访问的访问形式; 根据所述访问形式,依次对各个所述目标硬盘进行读操作或写操作; 对所述读操作或写操作过程进行监控,形成对应的记录文件; 根据所述记录文件,获取各个所述目标硬盘对应的IOPS数据。2. 根据权利要求1所述的方法,其特征在于, 所述访问形式包括:256K顺序读形式、256K顺序写形式、4K随机读形式及4K随机写形式 中的任意一个或多个。3. 根据权利要求2所述的方法,其特征在于, 所述根据所述访问形式,依次对各个所述目标硬盘进行读操作或写操作包括: 根据所述256Κ顺序读形式,依次对各个所述目标硬盘进行256Κ顺序读操作; 和/或, 根据所述256Κ顺序写形式,依次对各个所述目标硬盘进行256Κ顺序写操作; 和/或, 根据所述4Κ随机读形式,依次对各个所述目标硬盘进行4Κ随机读操作; 和/或, 根据所述4Κ随机写形式,依次对各个所述目标硬盘进行4Κ随机写操作。4. 根据权利要求1所述的方法,其特征在于, 所述Linux系统包括:χ86架构的红帽操作系统或χ86架构的社区企业Centos操作系统。5. 根据权利要求1所述的方法,其特征在于,进一步包括: 根据所述记录文件,获取各个所述目标硬盘对应的带宽和/或带宽利用率。6. 根据权利要求1至5中任一所述的方法,其特征在于, 在所述根据所述记录文件,获取各个所述目标硬盘对应的IOPS数据之后进一步包括: 分别抓取各个所述目标硬盘的自检日志,根据所述自检日志获取对应目标硬盘的状态 信息。7. -种检测硬盘IOPS性能的方法,其特征在于,应用于Linux系统,包括:设定单元、检 测单元、监控单元及提取单元; 所述设定单元,用于确定计算机中需要进行IOPS性能检测的至少一个目标硬盘,并设 定对各个所述目标硬盘进行访问的访问形式; 所述检测单元,用于根据所述设定单元设定的访问形式,依次对所述设定单元确定的 各个所述目标硬盘进行读操作或写操作; 所述监控单元,用于对所述检测单元进行的读操作或写操作过程进行监控,形成对应 的记录文件; 所述提取单元,用于根据所述监控单元形成的记录文件,获取各个所述目标硬盘对应 的IOPS数据。8. 根据权利要求7所述的装置,其特征在于,当所述设定单元设定的访问形式包括256K 顺序读形式、256K顺序写形式、4K随机读形式及4K随机写形式中的任意一个或多个时, 所述检测单元,用于根据所述256K顺序读形式,依次对各个所述目标硬盘进行256K顺 序读操作; 和/或, 所述检测单元,用于根据所述256K顺序写形式,依次对各个所述目标硬盘进行256K顺 序写操作; 和/或 所述检测单元,用于根据所述4K随机读形式,依次对各个所述目标硬盘进行4K随机读 操作; 和/或, 所述检测单元,用于根据所述4K随机写形式,依次对各个所述目标硬盘进行4K随机写 操作。9. 根据权利要求7所述的装置,其特征在于, 所述提取单元,进一步用于根据所述记录文件,获取各个所述目标硬盘对应的带宽和/ 或带宽利用率。10. 根据权利要求7至9中任一所述的装置,其特征在于,进一步包括:抓取单元; 所述抓取单元,用于分别抓取各个所述目标硬盘的自检日志,根据所述自检日志获取 对应目标硬盘的状态信息。
【文档编号】G06F11/34GK105893230SQ201610204390
【公开日】2016年8月24日
【申请日】2016年4月5日
【发明人】刘凤刚
【申请人】浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1