Alliot's blog

服务器性能测试系列(三):fio磁盘性能测试

fio是一个非常灵活的I/O测试工具,FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,支持多线程或进程模拟等I/O操作来进行压力测试。
包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。

官网:http://freecode.com/projects/fio

IO性能测试指标

顺序读写(吞吐量,常用单位为MB/s):文件在硬盘上存储位置是连续的,吞吐量高,适用于大文件拷贝。
4K随机读写(IOPS,常用单位为次):在硬盘上随机位置读写数据,每次4KB,适用于OS、软件运行以及数据库等IO密集度较高的应用。

常用命令行参数及说明

参数及说明

开始测试

安装fio

1
yum install fio

挂载数据盘

挂载数据盘/dev/vdc1到/data/test(视服务器数据盘标识而定,本文以比格云为例)
(注:这里均以数据盘裸设备(/dev/vdc1)进行测试,测试值更为准确和稳定,但裸设备测试会造成数据盘文件系统损坏,请谨慎操作并注意备份数据,同时注释/etc/fstab 文件中/dev/vdc1挂载点,防止由于数据盘文件系统损坏无法挂载导致OS无法重启动,也可以使用文件进行测试,即指定-filename=/data/test,如以文件进行测试,会受文件系统的影响,测试结果会有偏差和抖动,请知悉。)来自@比格云官方文档(官方文档有部分错误已在此文修改)

1
2
3
4
5
6
7
8
9
10
11
#测试顺序写吞吐量:
fio -direct=1 -iodepth=128 -filename=/dev/vdc1 -rw=write -ioengine=libaio -bs=512k -size=10G -numjobs=64 -runtime=1000 -group_reporting -name=write.throughput -output=write.throughput
#测试顺序读吞吐量:
fio -direct=1 -iodepth=128 -filename=/dev/vdc1 -rw=read -ioengine=libaio -bs=512k -size=10G -numjobs=64 -runtime=1000 -group_reporting -name=read.throughput -output=read.throughput
#测试随机读IOPS:
fio -direct=1 -iodepth=128 -filename=/dev/vdc1 -rw=randread -ioengine=libaio -bs=4k -size=10G -numjobs=64 -runtime=1000 -group_reporting -name=randread.iops -output=randread.iops
#测试随机写IOPS:
fio -direct=1 -iodepth=128 -filename=/dev/vdc1 -rw=randwrite -ioengine=libaio -bs=4k -size=10G -numjobs=64 -runtime=1000 -group_reporting -name=randwrite.iops -output=randwrite.iops

测试完成截图

生成报表

在当前目录下的:
write.throughput
read.throughput
randread.iops
randwrite.iops

如果此文为您解决燃眉之急或是带来些许明朗,不妨打赏Alliot一杯香茗或是一杯咖啡