磁盘读写测试
在Linux环境中,了解存储/磁盘I/O性能对于评估系统性能和优化存储子系统非常重要。通过测试存储/磁盘I/O性能,我们可以确定磁盘的读写速度、延迟和吞吐量等指标。本文将介绍几种常用的方法来
方法一:使用dd命令
- dd命令是一个用于复制文件和数据的常用工具,也可以用于测试存储/磁盘I/O性能dd,命令将显示读取的数据量、所用的时间和读取速度等信息。
以下是使用dd命令测试存储/磁盘I/O性能的步骤:
测试磁盘的写入性能
#该命令会创建一个名为testfile的1GB文件,并将零值数据写入该文件。
dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
# 参数说明: oflag=direct,绕过操作系统缓存.
测试磁盘的读取性能
#该命令将从先前创建的testfile文件中读取数据,并将其传输到/dev/null设备中。
dd if=testfile of=/dev/null bs=1G count=1 iflag=direct
方法二:使用fio工具
fio是一个功能强大的存储性能测试工具,可以模拟不同类型的I/O负载,并提供详细的性能统计信息。以下是使用fio工具测试存储/磁盘I/O性能的步骤:
安装fio工具。可以使用包管理器(如yum或apt)安装fio工具。例如,在CentOS或ubuntu上,可以运行以下命令进行安装:
yum install fio
apt install fio
在安装完成后,您可以继续进行下一步的测试。创建一个fio配置文件,例如io_test.fio:
vi io_test.fio
#在打开的文件中,添加以下内容以定义测试的参数和负载类型:
[global]
ioengine=libaio
direct=1
#runtime=60
time_based
[job]
filename=/path/to/testfile #指定一个文件路径(空文件)
bs=4k
size=1G
rw=randread
numjobs=1
#参数说明:
rw=randwrite # 表示随机写
rw=randrw #表示混合读写
filename=/path/to/testfile 测试文件名称,通常选择需要测试的盘的data目录。
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机写和读的I/O
bs=4k 单次io的块文件大小为4k
bsrange=512-2048 同上,提定数据块的大小范围
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。
numjobs=30 本次的测试线程为30.
runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
ioengine=psync io引擎使用pync方式
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每个进程的信息。
lockmem=1g 只使用1g内存进行测试。
zero_buffers 用0初始化系统buffer。
nrfiles=8 每个进程生成文件的数量。
保存并关闭文件。
运行以下命令以执行fio测试:
fio io_test.fio
fio将根据配置文件执行测试,并在测试结束后显示详细的性能统计信息。通过分析fio测试结果中的吞吐量、IOPS和延迟等指标,您可以了解磁盘的读写性能。
结果分析:
io总的输入输出量
bw:带宽 KB/s
iops:每秒钟的IO数
runt:总运行时间
lat (msec):延迟(毫秒)
msec: 毫秒
usec: 微秒