磁盘读写测试

在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: 微秒

posted on 2023-10-08 17:03  Colin88  阅读(207)  评论(0编辑  收藏  举报