Linux分区性能测试方法与工具
在Linux系统中,对分区进行性能测试是评估其I/O能力、识别瓶颈的关键步骤。以下是常用的测试方法及工具,覆盖从基础到高级的场景:
dd
是Linux自带的简单工具,适合快速测试分区的顺序读写速度,但无法测试随机I/O或细粒度指标(如IOPS、延迟)。
dd if=/dev/zero of=/mnt/sda1/testfile bs=1G count=1 oflag=direct
参数说明:if=/dev/zero
(输入源,生成空字符)、of=/mnt/sda1/testfile
(输出文件,需替换为目标分区挂载路径)、bs=1G
(块大小,1GB)、count=1
(块数量,1块)、oflag=direct
(绕过缓存,直接写入磁盘,结果更真实)。dd if=/mnt/sda1/testfile of=/dev/null bs=1G count=1 iflag=direct
参数说明:if=/mnt/sda1/testfile
(输入文件)、of=/dev/null
(输出目标,丢弃数据)、iflag=direct
(绕过缓存,直接读取磁盘)。rm /mnt/sda1/testfile
),避免占用空间。hdparm
是专门用于测试硬盘性能的工具,可评估缓存读取速度(内存加速)和不带缓存的磁盘读取速度(真实磁盘性能)。
sudo apt-get install hdparm
sudo yum install hdparm
sudo hdparm -Tt /dev/sda1
参数说明:-T
(测试缓存读取速度)、-t
(测试不带缓存的磁盘读取速度)。/dev/sda1: Timing cached reads: 10000 MB in 2.00 seconds = 5000.00 MB/sec Timing buffered disk reads: 500 MB in 3.00 seconds = 166.67 MB/sec
解释:“Timing cached reads”为缓存读取速度(受内存影响),“Timing buffered disk reads”为真实磁盘读取速度(反映磁盘本身性能)。sudo umount /dev/sda1
),避免缓存干扰(可选)。fio
(Flexible I/O Tester)是Linux下最强大的性能测试工具,支持多线程/多进程、随机/顺序I/O、不同块大小、IOPS/延迟测量等,适合专业场景。
sudo apt-get install fio
sudo yum install fio
fio --name=seq_read --ioengine=libaio --rw=read --bs=1M --direct=1 --size=4G --numjobs=1 --runtime=60 --time_based --filename=/dev/sda1
rw=read
为rw=write
)。fio --name=seq_write --ioengine=libaio --rw=write --bs=1M --direct=1 --size=4G --numjobs=1 --runtime=60 --time_based --filename=/dev/sda1
fio --name=rand_read --ioengine=libaio --rw=randread --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --time_based --filename=/dev/sda1
rw=randread
为rw=randwrite
)。fio --name=rand_write --ioengine=libaio --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --time_based --filename=/dev/sda1
--ioengine=libaio
:使用Linux异步I/O引擎(提升测试效率);--rw
:读写模式(read
/write
/randread
/randwrite
);--bs
:块大小(如1M、4k,根据测试场景选择);--direct=1
:绕过缓存,直接访问磁盘(结果更真实);--size
:测试数据大小(如4G、1G);--runtime
:测试运行时间(如60秒);--time_based
:以时间为基础结束测试(即使数据未写完)。READ: bw=512MiB/s (537MB/s), 512MiB/s-512MiB/s (537MB/s-537MB/s), io=30.0GiB (32.2GB), run=60000-60000msec
表示顺序读取带宽为512MB/s,IOPS约为512MB/s / 4k = 128000
(若块大小为4k),延迟为测试期间的平均响应时间。iostat
(属于sysstat包)可监控分区的实时I/O性能,如吞吐量、IOPS、利用率、队列长度等,适合配合测试工具使用,分析性能瓶颈。
sudo apt-get install sysstat
sudo yum install sysstat
iostat -x 1
iostat -x /dev/sda1 1
关键指标说明: - `%util`:磁盘利用率(百分比,接近100%表示磁盘繁忙); - `await`:平均I/O响应时间(毫秒,包括队列等待和处理时间); - `r/s`/`w/s`:每秒读/写操作数(IOPS); - `rkB/s`/`wkB/s`:每秒读/写数据量(KB/s)。