一、简介
FIO(Flexible I/O Tester)是一款高性能的磁盘I/O工具,用于进行存储设备的读写性能测试。它能够模拟各种I/O操作模式,包括随机读写、顺序读写等,并支持多种数据块大小和文件系统类型。
二、安装
在大多数Linux发行版中,可以通过包管理器安装FIO。例如,在Ubuntu/Debian上:
sudo apt-get update
sudo apt-get install fio
在CentOS/RHEL上:
sudo yum install epel-release
sudo yum install fio
三、基本用法
FIO的基本命令格式如下:
fio [options] [job-file]
其中[options]
是可选参数,[job-file]
是一个包含测试配置的文件。
四、常用选项
--filename=<file>
:指定要测试的文件或设备。--rw=<mode>
:指定读写模式,如read
、write
、randread
、randwrite
等。--bs=<size>
:指定块大小,如4k
、64k
等。--iodepth=<depth>
:指定I/O深度,即同时提交的I/O请求数量。--size=<size>
:指定测试文件的大小,如100m
、1g
等。--numjobs=<number>
:指定并发任务数。--time_based
:运行指定时间后停止,与--runtime=<seconds>
结合使用。--direct=1
:直接I/O,不使用缓冲区。
五、示例
-
顺序读取测试:
fio --filename=/dev/sda --rw=read --bs=4k --iodepth=32 --size=10g --numjobs=4 --time_based --runtime=300
-
随机写入测试:
fio --filename=/dev/sda --rw=randwrite --bs=4k --iodepth=32 --size=10g --numjobs=4 --time_based --runtime=300
-
使用配置文件: 创建一个名为
test.fio
的文件,内容如下:[global] filename=/dev/sda rw=randread bs=4k iodepth=32 size=10g numjobs=4 time_based runtime=300
然后运行:
fio test.fio
六、输出解析
FIO的输出结果包含了详细的I/O性能指标,包括读写速度、IOPS、延迟等。重点关注以下几项:
read/write bandwidth
:读写带宽。read/write IOPS
:读写每秒输入输出次数。latency
:读写延迟。
七、注意事项
- 测试前确保对设备的影响已充分评估,避免数据丢失。
- 对于生产环境中的设备,应谨慎使用直接I/O和高I/O深度,以防止影响正常服务。