上一篇
Linux磁盘IO查看方法速查
- Linux
- 2025-06-18
- 7
使用iostat命令实时监控磁盘I/O性能,或通过iotop查看进程级读写详情,vmstat提供系统级I/O统计,而sar -d可生成历史报告,dstat工具提供彩色动态视图,/proc/diskstats文件记录原始数据。
在Linux系统中,监控磁盘I/O(输入/输出)性能是诊断系统瓶颈、优化存储效率的关键操作,以下详细介绍多种专业方法,结合命令行工具和系统文件,帮助您全面掌握磁盘I/O状态。


核心命令行工具
iostat(最常用)
- 功能:实时监控磁盘读写速率、IOPS、等待时间等。
- 安装:包含在sysstat包中(Ubuntu/Debian: sudo apt install sysstat;CentOS/RHEL: sudo yum install sysstat)。
- 基础用法: iostat -dx 2 5 # 每2秒刷新1次,共显示5次,-d显示磁盘报告,-x显示扩展统计
- 输出关键指标:
- r/s、w/s:每秒读写请求数(IOPS)。
- rkB/s、wkB/s:每秒读写数据量(KB)。
- await:I/O平均等待时间(ms)。
- %util:磁盘利用率(≥80%表示可能过载)。
iotop(类似任务管理器)
- 功能:按进程实时排序显示I/O使用情况。
- 安装:sudo apt install iotop(Debian系)或 sudo yum install iotop(RHEL系)。
- 用法: sudo iotop -oP # -o仅显示活跃I/O进程,-P关闭线程显示
- 输出列:
- DISK READ、DISK WRITE:进程读写速率。
- SWAPIN、IO>:I/O等待时间占比。
vmstat(系统资源概览)
- 功能:综合报告CPU、内存、磁盘I/O状态。
- 用法: vmstat 1 5 # 每1秒刷新,共5次
- 磁盘相关列:
- bi(Block In):每秒读取块数。
- bo(Block Out):每秒写入块数。
dstat(多功能监控)
- 功能:整合vmstat、iostat、netstat数据。
- 安装:sudo apt install dstat 或 sudo yum install dstat。
- 用法: dstat -tdD sda # -t加时间戳,-D指定磁盘(如sda)
- 优势:实时显示磁盘读写速率(read/writ列)及CPU、网络数据。
系统文件直接解析
/proc/diskstats(原始数据源)
- 路径:cat /proc/diskstats
- 字段解释(以sda为例): 8 0 sda IOPS读 合并读 扇区读 读耗时 IOPS写 合并写 扇区写 写耗时 I/O队列长度 总耗时
- 计算实时读写速率: cat /proc/diskstats | grep sda | awk '{print "读速率(KB/s): "$6*512/1024, "写速率(KB/s): "$10*512/1024}'
/sys/block/sda/stat(可读性更高)
- 路径:cat /sys/block/sda/stat
- 字段顺序:与/proc/diskstats一致,但以空格分隔。
高级工具与技巧
sar(历史数据分析)
- 功能:查看历史磁盘I/O记录(需先启动sadc服务)。
- 用法: sar -d -p 1 3 # 每1秒采样,共3次
结合watch动态刷新
- 示例:实时监控sdb的I/O: watch -n 1 'iostat -dx sdb | tail -n +4'
图形化工具(可选)
- 推荐工具:nmon(终端图形)、gnome-disk-utility(GUI)。
- 安装:sudo apt install nmon 或使用系统自带磁盘管理器。
实际场景示例
诊断高I/O进程
sudo iotop -oP | head -10 # 显示前10个I/O最高的进程
检查磁盘瓶颈
iostat -dx 1 | grep -A 1 "%util" # 持续观察%util和await
- :若%util持续>80%且await显著增加,表明磁盘过载。
总结建议
- 快速检查:使用iostat -dx 1或iotop。
- 历史分析:用sar配合sysstat日志。
- 进程级排查:iotop定位具体进程。
- 底层数据:直接解析/proc/diskstats。
引用说明:
- Linux手册页(man iostat、man iotop)
- sysstat官方文档
- Linux内核文档:/proc/diskstats
- IBM Developer:磁盘I/O性能分析指南
通过以上工具组合,您可精准识别磁盘I/O瓶颈,确保系统高效运行,建议定期监控关键指标,尤其在部署高负载应用前进行基线测试。
