硬盘性能测试

article/2025/8/23 4:58:40

硬盘的性能如何衡量?一般使用以下几个指标对存储设备的性能进行描述:

IOPS:Input/Output Operations Per Second,是一个用于计算机存储设备(如硬盘(HDD)、固态硬盘(SSD)或存储区域网络(SAN))性能测试的量测方式,可以视为是每秒的读写次数,单位为次(计数)。存储设备的底层驱动类型决定了不同的IOPS。
吞吐量:每秒的磁盘读写数据量,即磁盘写入加上读出的数据的大小。单位为MB/s。
时延:IO操作的发送时间到接收确认所经过的时间,单位为秒。
bw:带宽 KB/s 
iops:每秒钟的IO数
runt:总运行时间
lat (msec):延迟(毫秒)
msec: 毫秒
usec: 微秒

IOPS

IOPS(Input/Output Operations Per Second)是一个用于计算机存储设备(如硬盘(HDD)、固态硬盘(SSD)存储区域网络(SAN)性能测试的量测方式,可以视为是每秒的读写次数。和其他性能测试一样,存储设备制造商提出的IOPS不保证就是实际应用下的性能。

IOPS的数值会随系统配置而有很大的不同,依测试者在测试时的控制变因而异,控制变因包括读取及写入的比例、其中循序访问及随机存取的比例及配置方式、线程数量及访问队列深度,以及数据区块的大小。其他因素也会影响IOPS的结果,例如系统设置、存储设备的驱动程序、操作系统后台运行的作业等。若在测试固态硬盘时,是否先进行预调(preconditioning)机制也会影响IOPS的结果。

FIO测试工具

FIO是测试磁盘性能的一个非常好的工具,用来对硬件进行压力测试和验证。支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。

支持几乎所有的存储描述参数,大量对CPU、内存、进程/线程、文件、IO特性的配置。

FIO最初是用来节省为特定负载写专门测试程序,或是进行性能测试,或是找到和重现bug的时间。

请特别注意:
1. 请不要在系统盘上进行 fio 测试,避免损坏系统重要文件
2. fio测试建议在空闲的、未保存重要数据的硬盘上进行,并在测试完后重新制作文件系统。请不要在业务数据硬盘上测试,避免底层文件系统元数据损坏导致数据损坏
2. 测试硬盘性能时,推荐直接测试裸盘(如 vdb);测试文件系统性能时,推荐指定具体文件测试(如 /data/file)

1、FIO安装

wget http://freshmeat.net/projects/fio/ 或者 http://brick.kernel.dk/snaps/fio-2.2.5.tar.gz yum install gcc libaio libaio-develtar zxvf fio-2.2.5.tar.gz  && cd fio-2.2.5.tar.gz ./configuremake && make install

2、FIO用法

fio -filename=/tmp/test_randread -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest

常用参数如下:
filename=/dev/sdb1       测试文件名称,通常选择需要测试的盘的data目录。待测试的磁盘设备文件                                                name=mytest                 job的名称
direct=1                          测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite                  读写模式,包括顺序读(read)、顺序写(write)、随机读(randread)、随机写(randwrite)、混合读写(rw)、随机读写(randrw)
bs=16k                           单次io的块文件大小为16k
bsrange=512-2048        同上,提定数据块的大小范围,也可以是4k,8k,32k
size=5g                          本次的测试文件大小为5g,以每次4k的io进行测试。
numjobs=30                   本次的测试线程为30.
runtime=1000                测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
ioengine=psync             io引擎使用pync方式
rwmixwrite=30               在混合读写的模式下,写占30%
group_reporting             关于显示结果的,汇总每个进程的信息。                                                    iodepth =30                    IO深度为30,最大IO并发数                                                                         time_based                     该参数不需要值,只是fio基于时间来运行                                                  norandommp                   这个参数在测试随机IO时起作用,默认随机IO也回写入所有的Size里描述的块,加了之后就打破了这个限制,有些块可能无法被read/write到,有些则可能IO多次,能够更好的模拟用户场景。                                                                                                      randrepeat=0                   随机序列是否重复                         

此外
lockmem=1g               只使用1g内存进行测试。
zero_buffers                用0初始化系统buffer。
nrfiles=8                      每个进程生成文件的数量。

3、测试过程

环境:4个盘做raid5

fio -filename=/dev/sda3 -iodepth=30 -thread -rw=read -ioengine=libio -bs=4k -runtime=120 -numjobs=50 -group_reporting -name=iotest|tee read_4k

上图中时延“18136.07”单位为微秒(usec),可以转换单位为18.136毫秒(ms) 


另一种简单的测试方法

利用配置文件,此处的fio.conf是自己编写的脚本文件

job文件格式

job file格式采用经典的ini文件,[]中的值表示job name,可以采用任意的ASCII字符,‘global’除外,global有特殊的意义。Global section描述了job file中各个job的默认配置值。一个job section可以覆盖global section中的参数,一个job file可以包含几个global section.一个job只会受到它上面的global section的影响。‘;’和‘#’可以用作注释

实例一:

[global]
ioengine=libaio
iodepth=128
time_based
direct=1
thread=1
group_reporting
randrepeat=0
norandommap
numjobs=32
timeout=6000
runtime=120[randrw-4k]
rw=randrw
bs=4k
filename=/dev/sdb:/dev/sdc:/dev/sdf:/dev/sdd:/dev/sde:/dev/sdh:/dev/sdg:/dev/sdi:/dev/sdk:/dev/sdj:/dev/sdl:/dev/sdm
rwmixread=100
stonewall[randrw-8k]
rw=randrw
bs=8k
filename=/dev/sdb:/dev/sdc:/dev/sdf:/dev/sdd:/dev/sde:/dev/sdh:/dev/sdg:/dev/sdi:/dev/sdk:/dev/sdj:/dev/sdl:/dev/sdm
rwmixread=100
stonewall[randrw-512k]
rw=randrw
bs=512k
filename=/dev/sdb:/dev/sdc:/dev/sdf:/dev/sdd:/dev/sde:/dev/sdh:/dev/sdg:/dev/sdi:/dev/sdk:/dev/sdj:/dev/sdl:/dev/sdm
rwmixread=100

实例二:

$fio –name=global –rw=randread –size=128m –name=job1 –name=job2

运行fio文件

运行方式:

$fio job_file

它会根据job_file的内容来运行。你可以在命令行中指定多个job file,fio进串行化运行这些文件。相当于在同一个job file不同的section之间使用了stonewall参数。

如果某个job file只包含一个job,可以在命令行中给出参数,来直接运行,不再需要读取job file。命令行参数同job file参数的格式是一样的。比如,在job file中的参数iodepth=2,在命令行中可以写为–iodepth 2 或是 –iodepth=2.

fio不需要使用root来执行,除非使用到的文件或是设备需要root权限。一些选项可能会被限制,比如内存锁,io调度器切换,或是nice value降级

参考文件:https://www.iteye.com/blog/elf8848-2168876

                 fio工具测试硬盘性能_十里平湖的博客-CSDN博客_fio测试磁盘性能

iodepth和numjobs的区别????

参考文件:FIO Benchmark - HiPhoenix - 博客园


http://chatgpt.dhexx.cn/article/ZUKsWoVo.shtml

相关文章

macbook硬盘读写速度测试(Disk Speed Test 测速贴图)

macbook硬盘读写速度测试 截图无任何参考价值 Stress 设置为2G,测试约一分钟,截图。 MacBook Air 2019 128G 系统 10.15.7 MacBook Air 2017 128G 系统 10.15.7 MacBook Pro 2017 128G 系统 10.4.6

移动硬盘 检测

文章目录 前置知识关闭电脑休眠 希捷 睿翼 2T——机械使用工具1——**DiskGenius** V5.4.6使用工具2——**HD tune Pro**Tips 西部数据 随行版(My Passport) 1T ——固态检测工具1——crystaldiskinfo检测工具2——Crystaldisk Mark 前置知识 关闭电脑休眠 https://www.zhihu…

Linux磁盘/硬盘测速,dd命令,测试顺序读写,测试4K性能

笔者也经常在网上查询信息,但发现很多信息都是照搬,内容甚至有错误,可用性很低.笔者就认为如果要分享就应该把遇到的问题真实的分享出来,让更多同路人少走弯路.节约时间. 觉得这篇文章有帮助的同学可以点个赞!将真有用的信息传递给更多人! 目录 Linux磁盘/硬盘测速,测试顺序读写…

什么软件可以测试电脑硬盘速度,硬盘速度测试软件

硬盘读写速度测试软件用来测试一些老旧硬盘是不是健康的。 硬盘读写速度测试软件介绍 在CrystalDiskMark界面可以选择测试次数,测试文件大小和测试对象,点击下面一排按钮就可以进行单个文件读写或者512kb、4kb的多个小文件读写测试。其实这类软件对硬盘没…

Linux硬盘测速

前言 linux硬盘测速,项目中经常遇到在第三方虚拟化平台搭建的操作系统部署业务系统,由于服务器硬盘、虚拟化平台自身问题使得硬盘速度较慢,导致业务系统卡慢超时。 本文主要介绍linux下的硬盘读写速度以及IO测速 “ 简单的硬盘读写测速&#…

使用windows自带的磁盘测速工具对硬盘进行测速——从此无需额外下载第三方硬盘测速工具

文章目录 1. 以管理员身份运行PowerShell2. 对系统盘(C盘)进行测速3. 对某一指定的硬盘分区进行测速 1. 以管理员身份运行PowerShell 鼠标右键单击屏幕左下角的Windows图标,然后鼠标左键点击弹出的菜单中的Windows PowerShell(管…

利用win10自带的工具测硬盘读写速度

利用win10自带的硬盘测试工具测读写速度。 一、winq 打开搜索框,输入 cmd 找到命令提示符,右击以管理员身份运行。 ​​ 二、在命令框里输入 winsat disk 是默认测试系统盘的速度,不出意外都是C盘。 三,当我们要想测试其他盘…

Windows自带硬盘测试工具使用教程

本教程主要讲解Windows自带的硬盘测试工具的使用,不用再安装第三方软件了。到底准不准就不知道啦,下面我们来看看如何使用吧~ 1. 进入cmd 快速进入cmd 主要如果进入后,使用命令直接闪退,就是说明需要用管理员打开。 WinS 快捷键&…

【硬盘测速】一条命令解决硬盘测速问题

硬盘测速 前言使用步骤End 前言 刚买到的硬盘装好之后,大部分人都会对硬盘进行测速,普遍会想到的测速方法是下载测速软件测试一下,但是有一种方法既简便又快速,就是利用Windows自带的命令进行测速。 使用步骤 命令格式为【比如…

下载阿里巴巴矢量图

1.官方地址 官方地址

阿里巴巴(ALIBABA,1688)以图搜图获取上传图片获取图片地址signature

它采用的是自己的系统OSS系统,我们通过计算来获取signature,无法获得它的密钥,需要朋友联系qq418665906. Signature这里我采用其他的解决方案 根据自己定义的图片名上传成功图片, 下面是oss错误提示

iconfont的使用,阿里矢量图库的引用,配置,改变图标大小和图标颜色

怎么使用iconfont 首先找到自己想要的图标,添加到购物车 如果你只要一个图标的话,或者确保之后这个项目不需要其他的图标的话,可以直接选择下载代码,但是你有多个图标的话,最好选择添加至项目 无论是添加项目还是直接下…

iconfont -阿里巴巴矢量图标的使用(图片版本)

网址:https://www.iconfont.cn/ 我们想要寻找相关的图标可以搜索中文来查找 好多好多可以调颜色等等 选择好自己需要的图标直接下载 点击下载弹出我们这个框 可以选择颜色等等去下载各种需要的素材

阿里图标库使用(在线使用)

1.首先你需要准备一个github或者新浪微博账号用来登录(拥有阿里员工账号也可) 地址:https://www.iconfont.cn/ 2.选择图标库,在搜索框选择需要搜索的图标 3.点击需要使用的图标并入库(如图所示) 4.点击右上…

阿里巴巴矢量图库,图标导入的简单使用

文章目录 引言正文开始下载素材1.第一步添加素材2.将购物车中iocn添加到项目中3.下载项目 使用素材1.文件解压缩2.将解压后的文件拉入自己的网页项目中3.如何使用4.简单修改颜色大小 引言 这个东西刚学用起来比较奇怪,刚刚搞了一下【Unicode】这一栏的引用方式 感觉…

阿里矢量图库icomoon的icon引用方法

阿里矢量图库使用方法 step1:找到你需要的图标,并将需要的图标加入购物车 鼠标放在你需要的图标上就会显示加入购物车标识 step2 点击右上角购物车标志,将需要的icon添加☞项目 这里也可以点击“下载代码”按钮下载需要引入的文件&#x…

iconfont的使用,阿里矢量图库的引入

为什么要使用iconfont.css 由于在如今的开发过程中,各种图标的使用越来越多,如搜索框中使用个搜索图标,删除按钮使用删除图标等。但是如果均使用图片来代替的话,一是会占有大量的内存,二是如果进行缩放,则会…

前端 - 如何引入阿里巴巴矢量图库?

1.进入阿里巴巴矢量图库官网:iconfont-阿里巴巴矢量图标库 2.登录账号 3.查找所需图标,添加至购物车 4.添加至项目 5.下载至本地 6.引入至main.js 7.在组件中调用

使用阿里巴巴的iconfont图片库(下载到本地)

1.登录&#xff0c;选择喜欢的图标加入购物车 2.添加至项目 3.修改项目设置 保存之后&#xff1a;下载至本地->解压 代码使用 <icon class"iconfont icon-caidan"></icon>效果图&#xff1a;

前端使用阿里巴巴矢量图库的图标大全

前端如何使用阿里巴巴矢量图库的图标 1.首先搜索想要的图标 阿里巴巴矢量图库http://www.iconfont.cn,可以github登录或者微博登录 2.添加购物车 3.添加至项目 没有项目可以新建一个项目&#xff0c;添加到项目的好处是可以让你一次性下载多个你看中的图标。 4.下载至本…