一种磁盘压力测试方法及装置的制造方法

文档序号:10552798阅读:379来源:国知局
一种磁盘压力测试方法及装置的制造方法
【专利摘要】本发明提供了一种磁盘压力测试方法及装置,该方法包括:首先获取每一个待测试磁盘的标识;以及根据获取到的标识以及预先设置好的磁盘压力测试程序,编辑该磁盘压力测试程序中的磁盘列表;然后,启动与该磁盘列表相对应的多个线程,并利用该多个线程执行所述磁盘压力测试程序。通过多线程同时运行磁盘压力测试程序,可以实现多个磁盘的多盘位并发压力测试,因此,本方案能够提高服务器磁盘压力测试的效率。
【专利说明】
一种磁盘压力测试方法及装置
技术领域
[0001] 本发明涉及计算机技术领域,特别涉及一种磁盘压力测试方法及装置。
【背景技术】
[0002] 随着磁盘技术的不断发展,为了满足服务器数据存储空间的日益增长,单个磁盘 的容量变得越来越大。此外,随着访问服务器的用户越来越多,业务软件的读写操作愈加频 繁,故对磁盘的压力也就越大,磁盘阵列的整体I/O性能也受到影响。通过对服务器磁盘进 行压力测试,能够使存在故障隐患的磁盘快速表现出故障问题。
[0003] 目前,可以通过对待测试磁盘反复进行数据读写操作,以使异常磁盘在此压力环 境下表现出故障问题,从而完成磁盘压力测试操作。
[0004] 由于现有的磁盘压力测试方法是对单块待测试磁盘进行压力测试,故测试效率较 低。

【发明内容】

[0005] 本发明提供了一种磁盘压力测试方法及装置,能够提高服务器磁盘压力测试的效 率。
[0006] 为了达到上述目的,本发明是通过如下技术方案实现的:
[0007] 一方面,本发明提供了一种磁盘压力测试方法,预先设置磁盘压力测试程序,还包 括:
[0008] 获取每一个待测试磁盘的标识;
[0009] 根据所述标识,编辑所述磁盘压力测试程序中的磁盘列表;
[0010] 启动与所述磁盘列表相对应的多个线程;
[0011] 利用所述多个线程,执行所述磁盘压力测试程序。
[0012] 进一步地,所述执行所述磁盘压力测试程序,包括:
[0013] S1:利用for并发语句,分别读取所述磁盘列表中的每一个所述标识;
[0014] S2:利用test()函数,针对与每一个所述标识相对应的待测试磁盘均执行:向所述 待测试磁盘中读写固定block大小和数量的块数据;
[0015] S3:利用while循环语句,再次执行S2。
[0016] 进一步地,所述根据所述标识,编辑所述磁盘压力测试程序中的磁盘列表,包括: 根据获取到的每一个待测试磁盘的盘符,将所述磁盘压力测试程序中的磁盘列表编辑为 1 ist =(盘符1盘符2…盘符n),且每一个所述盘符之间用空格隔开。
[0017] 进一步地,在所述执行所述磁盘压力测试程序之后,进一步包括:生成与每一个所 述待测试磁盘相对应的磁盘压力测试报告;
[0018] 所述磁盘压力测试报告,包括:单次测试的压力大小、单词测试所用时间和磁盘读 写速度中的任意一种或多种。
[0019] 进一步地,在所述执行所述磁盘压力测试程序之前,进一步包括:对所述磁盘压力 测试程序赋予相应的可执行权限:#chmod 777DiskTest。
[0020] 另一方面,本发明提供了一种磁盘压力测试装置,包括:
[0021] 设置单元,用于设置磁盘压力测试程序;
[0022] 获取单元,用于获取每一个待测试磁盘的标识;
[0023] 编辑单元,用于根据所述标识,编辑所述磁盘压力测试程序中的磁盘列表;
[0024]处理单元,用于启动与所述磁盘列表相对应的多个线程;以及利用所述多个线程, 执行所述磁盘压力测试程序。
[0025] 进一步地,所述处理单元,具体用于利用for并发语句,分别读取所述磁盘列表中 的每一个所述标识;利用test 〇函数,针对与每一个所述标识相对应的待测试磁盘均执行: 向所述待测试磁盘中读写固定block大小和数量的块数据;利用while循环语句,循环执行 所述读写操作。
[0026] 进一步地,所述编辑单元,具体用于根据获取到的每一个待测试磁盘的盘符,将所 述磁盘压力测试程序中的磁盘列表编辑为1 i st =(盘符1盘符2…盘符n ),且每一个所述盘 符之间用空格隔开。
[0027] 进一步地,该装置还包括:报告生成单元,用于生成与每一个所述待测试磁盘相对 应的磁盘压力测试报告;
[0028]所述磁盘压力测试报告,包括:单次测试的压力大小、单词测试所用时间和磁盘读 写速度中的任意一种或多种。
[0029] 进一步地,该装置还包括:权限赋予单元,用于对所述磁盘压力测试程序赋予相应 的可执行权限:#chmod 777DiskTest。
[0030] 本发明提供了一种磁盘压力测试方法及装置,首先获取每一个待测试磁盘的标 识;以及根据获取到的标识以及预先设置好的磁盘压力测试程序,编辑该磁盘压力测试程 序中的磁盘列表;然后,启动与该磁盘列表相对应的多个线程,并利用该多个线程执行所述 磁盘压力测试程序。通过多线程同时运行磁盘压力测试程序,可以实现多个磁盘的多盘位 并发压力测试,因此,本发明能够提高服务器磁盘压力测试的效率。
【附图说明】
[0031] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 这些附图获得其他的附图。
[0032] 图1是本发明一实施例提供的一种磁盘压力测试方法的流程图;
[0033] 图2是本发明一实施例提供的另一种磁盘压力测试方法的流程图;
[0034] 图3是本发明一实施例提供的一种磁盘压力测试装置的示意图;
[0035] 图4是本发明一实施例提供的另一种磁盘压力测试装置的示意图。
【具体实施方式】
[0036]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员 在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。 [0037]如图1所示,本发明实施例提供了一种磁盘压力测试方法,可以包括以下步骤: [0038]步骤101:预先设置磁盘压力测试程序。
[0039] 步骤102:获取每一个待测试磁盘的标识。
[0040] 步骤103:根据所述标识,编辑所述磁盘压力测试程序中的磁盘列表。
[0041 ]步骤104:启动与所述磁盘列表相对应的多个线程。
[0042] 步骤105:利用所述多个线程,执行所述磁盘压力测试程序。
[0043] 本发明实施例提供了一种磁盘压力测试方法,首先获取每一个待测试磁盘的标 识;以及根据获取到的标识以及预先设置好的磁盘压力测试程序,编辑该磁盘压力测试程 序中的磁盘列表;然后,启动与该磁盘列表相对应的多个线程,并利用该多个线程执行所述 磁盘压力测试程序。通过多线程同时运行磁盘压力测试程序,可以实现多个磁盘的多盘位 并发压力测试,因此,本发明实施例能够提高服务器磁盘压力测试的效率。
[0044] 在一种可能的实现方式中,为了说明一种磁盘压力测试过程,以实现多磁盘并发 压力循环测试,所以,所述执行所述磁盘压力测试程序,包括:
[0045] 步骤1051:利用for并发语句,分别读取所述磁盘列表中的每一个所述标识;
[0046] 步骤1052:利用test()函数,针对与每一个所述标识相对应的待测试磁盘均执行: 向所述待测试磁盘中读写固定block大小和数量的块数据;
[0047] 步骤1053:利用while循环语句,再次执行步骤1052。
[0048] 在一种可能的实现方式中,为了说明一种磁盘列表编辑方式,以便于系统能够快 速、准确的获取到待测试磁盘的盘符,所以,所述根据所述标识,编辑所述磁盘压力测试程 序中的磁盘列表,包括:根据获取到的每一个待测试磁盘的盘符,将所述磁盘压力测试程序 中的磁盘列表编辑为1 ist =(盘符1盘符2…盘符n),且每一个所述盘符之间用空格隔开。
[0049] 在一种可能的实现方式中,为了能够查看和分析磁盘压力测试的结果,以便于准 确确定故障磁盘,所以,在所述执行所述磁盘压力测试程序之后,进一步包括:生成与每一 个所述待测试磁盘相对应的磁盘压力测试报告;
[0050] 所述磁盘压力测试报告,包括:单次测试的压力大小、单词测试所用时间和磁盘读 写速度中的任意一种或多种。
[0051] 在一种可能的实现方式中,为了保证磁盘压力测试程序能够顺利执行,所以,在所 述执行所述磁盘压力测试程序之前,进一步包括:对所述磁盘压力测试程序赋予相应的可 执行权限:#chmod 777DiskTest。
[0052] 为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本 发明作进一步地详细描述。
[0053]如图2所示,本发明一个实施例提供了磁盘压力测试方法,该方法可以包括以下步 骤:
[0054]步骤201:确定磁盘压力测试程序。
[0055]举例来说,现将一台Linux服务器中安装5块待测试磁盘,以通过对该5块磁盘进行 并发压力测试,从而确定该5块磁盘是否为故障磁盘,或检验该5块磁盘是否会在高压并发 测试条件下出现异常。为实现多个磁盘的并发循环压力测试,首先需要确定磁盘压力测试 程序。
[0056]详细地,可以预先设置一个磁盘压力测试程序,并将程序内容保存为一个脚本文 件并进行命名,如命名为DiskTest。然后,可以将该脚本文件复制到该Linux服务器中的任 一目录位置,如/root目录。
[0057]举例来说,该磁盘压力测试程序的代码程序可以如下所示:
[0058] #!/bin/bash
[0059] list = (b c)
[0060] function test(){
[0061] while[[1 ]]
[0062] do
[0063] dd if = /dev/zero of = /dev/sd$lbs = lM count = 1000 2>>report. txt
[0064] done
[0065] }
[0066] for device in${list[i]}
[0067] do
[0068] test$device&
[0069] done
[0070] 在本实施例所提供的该代码程序中,首先,for并发语句可以从list数组中逐个提 取盘符,如for device in${list[0]};然后,可以调用test〇函数逐个生成压力测试过程, 如test$device&,其中,device可以用来表示待测试磁盘的盘符,&可以使测试过程在后台 运行;之后,test ()函数中的whi le循环语句可以使所有待测试磁盘的并发压力循环持续进 行。
[0071] 在本实施例中,通过执行设定的磁盘压力测试程序,可以同时对多个磁盘进行高 压并发循环压力测试。与单块磁盘压力测试相比,本实施例所提供的压力测试方法的测试 压力更高、测试环境复杂,因此更容易使存在故障隐患的磁盘快速表现出故障问题,故不仅 可以提高磁盘压力测试的工作效率,而且可以提高磁盘压力测试的准确性。
[0072] 步骤202:对磁盘压力测试程序赋予相应的可执行权限:#chmod 777DiskTest。
[0073] 在本实施例中,为了保证设置的磁盘压力测试程序能够顺利执行,在程序执行之 前,可以预先对其赋予相应的可执行权限,如#chmod 777DiskTest。
[0074]步骤203:获取服务器中的每一个待测试磁盘的盘符。
[0075]详细地,首先获取服务器中所有磁盘的磁盘信息:#fdisk-l,并从中获取每一个待 测试磁盘的盘符。
[0076] 举例来说,对于该Linux服务器,可以获取到如下所示的信息:
[0077] Disk/dev/sda:999.7GB,999653638144bytes
[0078] 255heads,63sectors/track,121534cylinders,total 1952448512sectors
[0079] Units = sectors of l*512 = 512bytes
[0080] Sector size(logical/physical):512bytes/4096bytes
[0081] 1/0 size(minimum/optimal):4096bytes/4096bytes
[0082] Disk identifier:0x0000d421
[0083] Device Boot Start End Blocks Id System /dev/sdal * 2048 2105343 1051648 83 LinuK /dcv/sda2 2105344 35663871 16779264 82 Linux swap /dev/sda3 35663872 664817663 314576896 83 Linux /dcv/sda4 664817664 1952448511 643815424 f W95 ExtTd (LBA) /dev/sda5 664819712 706762751 20971520 83 Linux /dev/sda6 706764800 748709887 20972544 83 Linux /dev/sda7 748711936 769673215 10480640 83 Linux /dev/sda8 769675264 1818253311 524289024 83 Linux
[0084] Disk/dev/sdb:999.7GB,999653638144bytes
[0085] 255heads,63sectors/track,121534cylinders,total 1952448512sectors
[0086] Units = sectors of l*512 = 512bytes
[0087] Sector size(logical/physical):512bytes/4096bytes
[0088] 1/0 size(minimum/optimal):4096bytes/4096bytes
[0089] Disk identifier:0x00000000
[0090] Disk/dev/sdc:999.7GB,999653638144bytes
[0091 ] 255heads,63sectors/track,121534cylinders,total 1952448512sectors
[0092] Units = sectors of l*512 = 512bytes
[0093] Sector size(logical/physical):512bytes/4096bytes
[0094] 1/0 size(minimum/optimal):4096bytes/4096bytes
[0095] Disk identif ier:0x00000000
[0096] Disk/dev/sdd:4000.2GB,4000225165312bytes
[0097] 255heads,63sectors/track,486333cylinders,total 7812939776sectors
[0098] Units = sectors of l*512 = 512bytes
[0099] Sector size(logical/physical):512bytes/4096bytes
[0100] 1/0 size(minimum/optimal):4096bytes/4096bytes
[0101] Disk identifier:0x00000000
[0102] Disk/dev/sde:4000.2GB,4000225165312bytes
[0103] 255heads,63sectors/track,486333cylinders,total 7812939776sectors
[0104] Units = sectors of l*512 = 512bytes
[0105] Sector size(logical/physical):512bytes/4096bytes
[0106] 1/0 size(minimum/optimal):4096bytes/4096bytes
[0107] Disk identifier:0x00000000
[0108] Disk/dev/sdf:4000.2GB,4000225165312bytes
[0109] 255heads,63sectors/track,486333cylinders,total 7812939776sectors
[0110] Units = sectors of l*512 = 512bytes
[0111] Sector size(logical/physical):512bytes/4096bytes
[0112] I/O size(minimum/optimal):4096bytes/4096bytes
[0113] Disk identifier:0x00000000
[0114]在本实施例中,在获取到的6块磁盘中,不仅包含5块待测试磁盘/dev/sdb、/dev/ sdc、/dev/sdd、/dev/sde和/dev/sdf,还包含服务器内置系统盘/dev/sda。因此,除去系统 盘/dev/sda,可以获取到这5个待测试磁盘的盘符,分别为b、c、d、e和f。
[0115] 步骤204:根据获取到的盘符,将磁盘压力测试程序中的磁盘列表编辑为list=(b c d e f) 〇
[0116] 具体地,每一个盘符之间用空格隔开。
[0117] 例如,根据获取到的盘符b、c、d、e和f,可以将上述代码程序中的1 ist = (b c)-行 编辑为list = (b c d e f)。在本实施例中,可以由工作人员人为编辑磁盘列表。
[0118] 步骤205:启动与磁盘列表相对应的5个线程。
[0119] 在本实施例中,由于需要对5块磁盘进行多磁盘并发压力测试,故相应的,可以启 动5个线程以同时进行压力测试操作。
[0120] 步骤206:利用for并发语句,分别读取磁盘列表中的每一个盘符。
[0121 ] 具体地,执行上述脚本程序:#./DiskTest。
[0122] 在本实施例中,可以利用上述代码程序中的for并发语句,以分别读取每一个盘 符。
[0123] 步骤207:利用该5个线程,以及利用test〇函数,针对与每一个盘符相对应的待测 试磁盘均执行:向该待测试磁盘中读写固定block大小和数量的块数据。
[0124] 在本实施例中,可以利用上述代码程序中的test()函数,分别对每一个待测试磁 盘执行数据读写操作,例如,可以向待测试磁盘中读写固定block大小和数量的块数据。
[0125] 步骤208:利用whi le循环语句,再次执行步骤207。
[0126] 在本实施例中,在任意一块磁盘完成任意一次数据读写操作之后,均可以利用上 述代码程序中的while循环语句,再次执行数据读写操作,以实现多磁盘并发循环压力测试 过程。
[0127] 此外,对于任意一块磁盘,每完成一次数据读写操作,系统便可以自动生成一条相 应的记录信息。例如,与该多磁盘并发循环压力测试过程相对应的部分测试结果记录信息 可以如下进行显示:
[0128] 记录了1000+0的读入
[0129] 记录了1000+0的写出
[0130] 1048576000 字节(1 ? 0GB)已复制,16 ? 4364秒,63 ? 8MB/秒
[0131] 记录了1000+0的读入
[0132] 记录了1000+0的写出
[0133] 1048576000 字节(1 ? 0GB)已复制,16 ? 2769秒,64 ? 4MB/秒
[0134] 记录了 1000+0的读入
[0135] 记录了1000+0的写出
[0136] 1048576000 字节(1 ? 0GB)已复制,16 ? 2616 秒,64 ? 5MB/秒
[0137] 记录了1000+0的读入
[0138] 记录了1000+0的写出
[0139] 1048576000 字节(1 ? 0GB)已复制,16 ? 2826秒,64 ? 4MB/秒
[0140] 记录了1000+0的读入
[0141] 记录了1000+0的写出
[0142] 1048576000 字节(1 ? 0GB)已复制,16 ? 4311秒,63 ? 8MB/秒
[0143] 步骤209:在磁盘压力测试程序执行完成之后,生成与每一个待测试磁盘相对应的 磁盘压力测试报告。
[0144] 具体地,磁盘压力测试报告包括单次测试的压力大小、单词测试所用时间和磁盘 读写速度中的任意一种或多种。
[0145] 在本实施例中,可以预先设置磁盘压力测试程序的结束执行时间,以便于压力测 试过程自动停止,也可以由工作人员根据实际需求随时手动停止。
[0146] 在本实施例中,若服务器在压力测试过程中出现死机、无响应等问题,说明服务器 的磁盘通道,如RAID卡、SAS线、硬盘背板、硬盘等均有可能存在异常,则后续可以利用分组、 最小化等故障测试方法对故障部件进行定位。
[0147] 相应的,若服务器在压力测试过程中未出现问题,则在测试完成之后,可以在 DiskTest所在的目录下生成测试报告report.txt,且该测试报告中详细记录了本次测试的 测试信息,如单次测试所用时间、硬盘写入速度等。例如,系统自动记录的磁盘/dev/sdb的 测试报告可以如下所示:
[0148] 1048576000 字节(1 ? 0GB)已复制,16 ? 2616 秒,74 ? 5MB/秒
[0149] 1048576000 字节(1 ? 0GB)已复制,17 ? 0383秒,69 ? 4MB/秒
[0150] 1048576000 字节(1 ? 0GB)已复制,24 ? 5782秒,35 ? 0MB/秒
[0151 ] 1048576000 字节(1 ? 0GB)已复制,26 ? 1049秒,31 ? 8MB/秒
[0152] 1048576000 字节(1 ? 0GB)已复制,26 ? 0361秒,31 ? 3MB/秒
[0153] ……
[0154] 在本实施例中,通过对比单个磁盘的每一次的测试时间,可以检验该磁盘在连续 读写环境下的稳定性;通过对比单个磁盘的每一次的测试速度,可以检验该磁盘的性能;以 及,通过对比全部磁盘的每一次的测试时间和测试速度,可以检验该全部磁盘所属RAID卡 的整体I/O性能。
[0155] 例如,根据上述磁盘/dev/sdb的测试报告,可以看出其测试结果有较大波动,说明 该磁盘在高压力环境下虽然没有引发服务器出现死机、无响应等问题,但其在该测试环境 下已经出现不稳定现象,I/O性能明显下降,可能存在故障或其它缺陷,故可以对该磁盘进 行维修或更换。
[0156] 在本实施例中,通过向所有待测试磁盘并发循环的读写块数据,以实现模拟甚至 高于用户现场磁盘压力状况的目的,从而使存在故障隐患的磁盘在高强度的压力环境下快 速表现出故障,便于定位磁盘故障。此外,还可以快速检出RAID卡的故障问题,从而可以检 验磁盘阵列在连续读写环境下的稳定性和整体I/O性能。
[0157] 此外,本发明实施例通过多盘位并发压力测试,同样可以实现对服务器进行故障 定位、拷机等目的。
[0158] 在本实施例中,所提出的多盘位并发压力测试方法在对磁盘进行压力测试时,无 需安装第三方软件、简单易用,且使用shell脚本编写,故通用性强,可跨平台使用,从而避 免了因安装其他磁盘压力测试工具所引发的安装麻烦、测试手段单一、应用平台窄等问题。
[0159]如图3所示,本发明实施例提供了一种磁盘压力测试装置,包括:
[0160] 设置单元301,用于设置磁盘压力测试程序;
[0161 ]获取单元302,用于获取每一个待测试磁盘的标识;
[0162] 编辑单元303,用于根据所述标识,编辑所述磁盘压力测试程序中的磁盘列表;
[0163] 处理单元304,用于启动与所述磁盘列表相对应的多个线程;以及利用所述多个线 程,执行所述磁盘压力测试程序。
[0164] 在一种可能的实现方式中,所述处理单元304,具体用于利用for并发语句,分别读 取所述磁盘列表中的每一个所述标识;利用test()函数,针对与每一个所述标识相对应的 待测试磁盘均执行:向所述待测试磁盘中读写固定block大小和数量的块数据;利用while 循环语句,循环执行所述读写操作。
[0165] 在一种可能的实现方式中,所述编辑单元303,具体用于根据获取到的每一个待测 试磁盘的盘符,将所述磁盘压力测试程序中的磁盘列表编辑为1 ist =(盘符1盘符2…盘符 n),且每一个所述盘符之间用空格隔开。
[0166] 在一种可能的实现方式中,请参考图4,该装置还可以包括:报告生成单元401,用 于生成与每一个所述待测试磁盘相对应的磁盘压力测试报告;
[0167] 所述磁盘压力测试报告,包括:单次测试的压力大小、单词测试所用时间和磁盘读 写速度中的任意一种或多种。
[0168] 在一种可能的实现方式中,请参考图4,该装置还可以包括:权限赋予单元402,用 于对所述磁盘压力测试程序赋予相应的可执行权限:#chmod 777DiskTest。
[0169] 上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施 例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0170] 综上所述,本发明的各个实施例至少具有如下有益效果:
[0171] 1、本发明实施例中,首先获取每一个待测试磁盘的标识;以及根据获取到的标识 以及预先设置好的磁盘压力测试程序,编辑该磁盘压力测试程序中的磁盘列表;然后,启动 与该磁盘列表相对应的多个线程,并利用该多个线程执行所述磁盘压力测试程序。通过多 线程同时运行磁盘压力测试程序,可以实现多个磁盘的多盘位并发压力测试,因此,本发明 实施例能够提高服务器磁盘压力测试的效率。
[0172] 2、本发明实施例中,通过执行设定的磁盘压力测试程序,可以同时对多个磁盘进 行高压并发循环压力测试。与单块磁盘压力测试相比,本实施例所提供的压力测试方法的 测试压力更高、测试环境复杂,因此更容易使存在故障隐患的磁盘快速表现出故障问题,故 不仅可以提高磁盘压力测试的工作效率,而且可以提高磁盘压力测试的准确性。
[0173] 3、本发明实施例中,通过向所有待测试磁盘并发循环的读写块数据,以实现模拟 甚至高于用户现场磁盘压力状况的目的,从而使存在故障隐患的磁盘在高强度的压力环境 下快速表现出故障,便于定位磁盘故障。此外,还可以快速检出RAID卡的故障问题,从而可 以检验磁盘阵列在连续读写环境下的稳定性和整体I/O性能。
[0174] 4、本发明实施例中,通过多盘位并发压力测试,同样可以实现对服务器进行故障 定位、拷机等目的。
[0175] 5、本发明实施例中,所提出的多盘位并发压力测试方法在对磁盘进行压力测试 时,无需安装第三方软件、简单易用,且使用shell脚本编写,故通用性强,可跨平台使用,从 而避免了因安装其他磁盘压力测试工具所引发的安装麻烦、测试手段单一、应用平台窄等 问题。
[0176]需要说明的是,在本文中,术语"包括"、"包含"或者其任何其他变体意在涵盖非排 他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而 且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有 的要素。在没有更多限制的情况下,由语句"包括一个......"限定的要素,并不排除 在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
[0177]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光 盘等各种可以存储程序代码的介质中。
[0178]最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技 术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、 等同替换、改进等,均包含在本发明的保护范围内。
【主权项】
1. 一种磁盘压力测试方法,其特征在于,预先设置磁盘压力测试程序,还包括: 获取每一个待测试磁盘的标识; 根据所述标识,编辑所述磁盘压力测试程序中的磁盘列表; 启动与所述磁盘列表相对应的多个线程; 利用所述多个线程,执行所述磁盘压力测试程序。2. 根据权利要求1所述的方法,其特征在于,所述执行所述磁盘压力测试程序,包括: Sl:利用for并发语句,分别读取所述磁盘列表中的每一个所述标识; S2:利用test()函数,针对与每一个所述标识相对应的待测试磁盘均执行:向所述待测 试磁盘中读写固定block大小和数量的块数据; S3:利用while循环语句,再次执行S2。3. 根据权利要求1所述的方法,其特征在于,所述根据所述标识,编辑所述磁盘压力测 试程序中的磁盘列表,包括: 根据获取到的每一个待测试磁盘的盘符,将所述磁盘压力测试程序中的磁盘列表编辑 为list =(盘符1盘符2…盘符η),且每一个所述盘符之间用空格隔开。4. 根据权利要求1所述的方法,其特征在于, 在所述执行所述磁盘压力测试程序之后,进一步包括:生成与每一个所述待测试磁盘 相对应的磁盘压力测试报告; 所述磁盘压力测试报告,包括:单次测试的压力大小、单词测试所用时间和磁盘读写速 度中的任意一种或多种。5. 根据权利要求1至4中任一所述的方法,其特征在于,在所述执行所述磁盘压力测试 程序之前,进一步包括: 对所述磁盘压力测试程序赋予相应的可执行权限:#chmod 777DiskTest。6. -种磁盘压力测试装置,其特征在于,包括: 设置单元,用于设置磁盘压力测试程序; 获取单元,用于获取每一个待测试磁盘的标识; 编辑单元,用于根据所述标识,编辑所述磁盘压力测试程序中的磁盘列表; 处理单元,用于启动与所述磁盘列表相对应的多个线程;以及利用所述多个线程,执行 所述磁盘压力测试程序。7. 根据权利要求6所述的磁盘压力测试装置,其特征在于,所述处理单元,具体用于利 用for并发语句,分别读取所述磁盘列表中的每一个所述标识;利用test()函数,针对与每 一个所述标识相对应的待测试磁盘均执行:向所述待测试磁盘中读写固定block大小和数 量的块数据;利用whi Ie循环语句,循环执行所述读写操作。8. 根据权利要求6所述的磁盘压力测试装置,其特征在于,所述编辑单元,具体用于根 据获取到的每一个待测试磁盘的盘符,将所述磁盘压力测试程序中的磁盘列表编辑为list =(盘符1盘符2…盘符n),且每一个所述盘符之间用空格隔开。9. 根据权利要求6所述的磁盘压力测试装置,其特征在于,还包括: 报告生成单元,用于生成与每一个所述待测试磁盘相对应的磁盘压力测试报告; 所述磁盘压力测试报告,包括:单次测试的压力大小、单词测试所用时间和磁盘读写速 度中的任意一种或多种。10.根据权利要求6至9中任一所述的磁盘压力测试装置,其特征在于,还包括: 权限赋予单元,用于对所述磁盘压力测试程序赋予相应的可执行权限:#chmod 777DiskTest〇
【文档编号】G06F11/26GK105912435SQ201610202931
【公开日】2016年8月31日
【申请日】2016年4月1日
【发明人】李洋
【申请人】浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1