核心命令行工具
iostat
(实时磁盘统计)
功能:报告CPU和磁盘I/O的详细统计信息。
安装:
sudo apt-get install sysstat # Debian/Ubuntu sudo yum install sysstat # CentOS/RHEL
基础用法:
iostat -dx 2 5 # 每2秒刷新1次,共5次(-d:磁盘报告,-x:扩展统计)
关键输出解读:
r/s
,w/s
:每秒读写请求数rkB/s
,wkB/s
:每秒读写数据量(KB)await
:I/O平均等待时间(ms)%util
:磁盘利用率(≥80%表示可能过载)
场景示例:
iostat -dx sda # 监控指定磁盘(如sda)
iotop
(进程级I/O监控)
功能:实时显示进程的I/O占用(类似top
命令)。
安装:
sudo apt-get install iotop # Debian/Ubuntu sudo yum install iotop # CentOS/RHEL
用法:
sudo iotop -oP # 只显示活跃I/O进程(-P:进程详情)
输出关键列:
IO>
:进程I/O优先级DISK READ
/DISK WRITE
:进程读写速率SWAPIN
:交换空间使用率
交互操作:
- 按
o
:仅显示有I/O的进程 - 按
r
:调整排序顺序
vmstat
(系统资源综合监控)
功能:报告内存、CPU、I/O等整体状态。
用法:
vmstat 1 # 每秒刷新1次
I/O相关输出:
bi
:每秒从磁盘读入的块数bo
:每秒写入磁盘的块数wa
:CPU等待I/O的时间百分比(>20%需警惕)
dstat
(多功能资源监控)
功能:整合vmstat
、iostat
、netstat
数据,支持彩色输出。
安装:
sudo apt-get install dstat # Debian/Ubuntu sudo yum install dstat # CentOS/RHEL
用法:
dstat -d # 监控磁盘I/O dstat -cdl --disk-util # 组合监控(CPU、磁盘负载、利用率)
高级工具与日志分析
sar
(历史I/O数据分析)
功能:通过sysstat
收集历史数据,适合回溯问题。
查看历史记录:
sar -d -p # 显示所有磁盘历史I/O(-p:友好设备名) sar -d -f /var/log/sa/sa10 # 查看指定日期日志(如10号)
atop
(高级性能监控)
功能:记录进程级I/O历史,支持回放。
安装:
sudo apt-get install atop # Debian/Ubuntu sudo yum install atop # CentOS/RHEL
用法:
atop -d # 进入交互界面,按 `d` 聚焦磁盘I/O
底层文件系统分析
/proc
文件系统
- 实时块设备I/O:
cat /proc/diskstats # 各磁盘的读写次数、扇区数、等待时间
- 进程级I/O:
cat /proc/PID/io # 查看指定进程的I/O统计(需替换PID)
lsof
(定位文件占用)
功能:列出被进程打开的文件,辅助定位高I/O来源。
sudo lsof +D /var/log # 查看指定目录的文件访问进程
最佳实践建议
- 诊断流程:
- 先用
iostat
确认磁盘是否过载(%util
)。 - 用
iotop
定位具体高I/O进程。 - 结合
vmstat
检查系统整体资源瓶颈(如wa
值)。
- 先用
- 长期监控:
- 启用
sysstat
服务(默认每10分钟收集数据)。 - 使用
sar
分析历史趋势。
- 启用
- 性能调优:
- 若
await
过高,考虑升级SSD或优化应用I/O模式。 - 避免频繁小文件写入,合并为顺序大文件操作。
- 若
引用说明
- 工具文档:
man iostat
,man iotop
,man vmstat
sysstat
项目:https://github.com/sysstat/sysstat- Linux内核文档:
/proc
文件系统说明(内核源码Documentation/filesystems/proc.txt)
重要提示:所有监控命令需
root
权限或sudo
执行以获取完整数据,生产环境建议结合监控系统(如Prometheus+Grafana)实现自动化告警。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6569.html