2026-10-21 05:59:57
监测 Linux 磁盘 I/O 性能需结合性能指标与工具,通过分析利用率、IOPS、吞吐量等核心指标,并使用 iostat、pidstat、iotop 等工具实现全面监控。 以下是具体方法:
一、核心性能指标利用率(Utilization)
磁盘处理 I/O 的时间百分比,反映磁盘忙碌程度。
关键点:超过 80% 可能存在性能瓶颈,但 100% 时磁盘仍可能接受新请求(因不区分 I/O 大小)。
饱和度(Saturation)
磁盘处理 I/O 的繁忙程度,100% 时无法接受新请求。
监测方法:通过平均请求队列长度(aqu-sz)或等待时间(r_await/w_await)与基准测试结果对比综合评估。
IOPS(Input/Output Per Second)
每秒 I/O 请求数,分为读(r/s)和写(w/s)。
应用场景:随机读写(如数据库)依赖高 IOPS,顺序读写(如备份)更关注吞吐量。
吞吐量(Throughput)
每秒传输的数据量,单位为 KB/s 或 MB/s(rkB/s/wkB/s)。
关键点:大文件传输需高吞吐量,小文件操作更依赖 IOPS。
响应时间(Response Time)
I/O 请求从发送到完成的间隔时间(r_await/w_await)。
异常值:长时间延迟可能由队列堆积或设备性能不足导致。
iostat
功能:实时监控磁盘利用率、IOPS、吞吐量、响应时间等。
常用命令:iostat -d -x 1 # 每1秒刷新所有磁盘的扩展统计信息
关键输出字段:
%util:磁盘利用率。
r/s/w/s:读写 IOPS。
rkB/s/wkB/s:读写吞吐量。
r_await/w_await:读写响应时间。
aqu-sz:平均请求队列长度(辅助评估饱和度)。
dstat
功能:综合监控磁盘、CPU、内存等,支持实时刷新。
示例命令:dstat -d # 显示磁盘读写吞吐量dstat -D sda # 监控特定磁盘(如sda)
pidstat
功能:按进程统计 I/O 活动,识别高负载进程。
常用命令:pidstat -d 1 # 每1秒刷新进程级磁盘 I/O统计
关键输出字段:
kB_rd/s/kB_wr/s:进程读写吞吐量。
iodelay:I/O 延迟(时钟周期)。
iotop
功能:类似 top 的交互式工具,按 I/O 大小排序进程。
常用命令:iotop -o # 仅显示正在执行 I/O 的进程
关键输出字段:
DISK READ/DISK WRITE:进程实时读写速度。
IO>:进程 I/O 占用百分比。
iotop -b
功能:批量模式输出,适合脚本分析。
示例:iotop -b -n 3 > iotop_log.txt # 采集3次数据并保存到文件
饱和度评估
方法:结合 iostat 的 aqu-sz(队列长度)和 r_await/w_await(等待时间)与基准测试结果对比。
工具:使用 fio 进行压力测试,模拟随机/顺序读写场景:fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=1 --size=1G --runtime=60 --time_based --end_fsync=1
I/O 模式分析
随机 vs 顺序:通过 iostat 的 r/s 和 rkB/s 比值判断(高 IOPS/低吞吐量为随机,反之为顺序)。
读写比例:结合 r/s 和 w/s 识别读写混合负载。
长期监控与日志
工具:使用 sar(Sysstat 套件)记录历史数据:sar -d 1 3 # 每1秒采集3次磁盘统计
可视化:通过 kSar 等工具生成趋势图,分析性能波动。
通过上述方法,可全面监控 Linux 磁盘 I/O 性能,快速定位瓶颈并优化系统配置。