内容大纲
内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
1. iostat命令概述
iostat命令是Linux系统中的I/O统计工具,它可以报告CPU统计信息和磁盘I/O统计信息。
更多视频教程www.fgedu.net.cn
# CPU统计:用户、系统、等待、空闲时间
# 磁盘统计:读写速率、IOPS、等待时间
# 设备统计:每个设备的详细I/O信息
# 分区统计:每个分区的详细I/O信息
# 实时监控:持续监控I/O性能
2. iostat命令安装
学习交流加群风哥微信: itpux-com
使用dnf命令安装iostat。
# 1. 安装sysstat软件包
[root@localhost ~]# dnf install -y sysstat
Updating Subscription Management repositories.
Last metadata expiration check: 0:00:01 ago on Fri 03 Apr 2026 10:00:00 CST.
Dependencies resolved.
================================================================================================================
Package Architecture Version Repository Size
================================================================================================================
Installing:
sysstat x86_64 12.5.2-2.el9 baseos 500 k
…
Complete!
# 2. 验证安装
[root@localhost ~]# iostat –version
sysstat version 12.5.2
(C) 1999-2022 Sebastien Godard (sysstat
# 3. 启动iostat
[root@localhost ~]# iostat
风哥提示:
>3. iostat命令基本使用
使用iostat命令查看I/O统计信息。
# 1. 查看CPU和磁盘统计信息
[root@localhost ~]# iostat
Linux 5.14.0-362.el9.x86_64 (localhost.localdomain) 04/03/2026 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.50 0.00 1.00 0.50 0.00 96.00
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.00 10.00 5.00 10000 5000
sdb 2.00 20.00 10.00 20000 10000
sdc 3.00 30.00 15.00 30000 15000
# 2. 指定采样间隔和次数
[root@localhost ~]# iostat 1 3
Linux 5.14.0-362.el9.x86_64 (localhost.localdomain) 04/03/2026 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.50 0.00 1.00 0.50 0.00 96.00
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.00 10.00 5.00 10000 5000
sdb 2.00 20.00 10.00 20000 10000
sdc 3.00 30.00 15.00 30000 15000
avg-cpu: %user %nice %system %iowait %steal %idle
3.00 0.00 1.50 0.00 0.00 95.50
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00 0 0
sdb 0.00 0.00 0.00 0 0
sdc 0.00 0.00 0.00 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
2.00 0.00 1.00 0.00 0.00 97.00
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00 0 0
sdb 0.00 0.00 0.00 0 0
sdc 0.00 0.00 0.00 0 0
# 3. 只显示CPU统计信息
[root@localhost ~]# iostat -c
Linux 5.14.0-362.el9.x86_64 (localhost.localdomain) 04/03/2026 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.50 0.00 1.00 0.50 0.00 96.00
# 4. 只显示磁盘统计信息
[root@localhost ~]# iostat -d
Linux 5.14.0-362.el9.x86_64 (localhost.localdomain) 04/03/2026 _x86_64_ (4 CPU)
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.00 10.00 5.00 10000 5000
sdb 2.00 20.00 10.00 20000 10000
sdc 3.00 30.00 15.00 30000 15000
# 5. 显示详细信息
[root@localhost ~]# iostat -x
Linux 5.14.0-362.el9.x86_64 (localhost.localdomain) 04/03/2026 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.50 0.00 1.00 0.50 0.00 96.00
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sda 0.50 0.50 5.00 2.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10.00 5.00 0.00 0.00
sdb 1.00 1.00 10.00 5.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10.00 5.00 0.00 0.00
sdc 1.50 1.50 15.00 7.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10.00 5.00 0.00 0.00
更多学习教程公众号风哥教程itpux_com
4. iostat命令参数详解
详解iostat命令的各个参数。
# 1. CPU统计参数
# %user:用户空间CPU时间百分比
# %nice:nice进程CPU时间百分比
# %system:内核空间CPU时间百分比
# %iowait:等待I/O的CPU时间百分比
# %steal:从虚拟机窃取的CPU时间百分比
# %idle:空闲CPU时间百分比
# 2. 磁盘统计参数
# tps:每秒传输次数
# kB_read/s:每秒读取的KB数
# kB_wrtn/s:每秒写入的KB数
# kB_read:读取的总KB数
# kB_wrtn:写入的总KB数
# 3. 详细磁盘统计参数
# r/s:每秒读取次数
# w/s:每秒写入次数
# rkB/s:每秒读取的KB数
# wkB/s:每秒写入的KB数
# rrqm/s:每秒合并的读取请求数
# wrqm/s:每秒合并的写入请求数
# %rrqm:合并的读取请求百分比
# %wrqm:合并的写入请求百分比
# r_await:读取等待时间
# w_await:写入等待时间
# aqu-sz:平均队列长度
# rareq-sz:平均读取请求大小
# wareq-sz:平均写入请求大小
# svctm:平均服务时间
# %util:设备利用率
# 查看详细参数说明
[root@localhost ~]# iostat –help
Usage: iostat [ options ] [
Options are:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | … } ] [ [ -T ] -g
[ –human ] [ -o JSON ] [
-c: Display the CPU utilization report.
-d: Display the device utilization report.
-h: Make this report human-readable.
-k: Display statistics in kilobytes per second.
-m: Display statistics in megabytes per second.
-N: Display the registered device mapper names.
-s: Display the short device names.
-t: Print the time of each report.
-V: Print version number and exit.
-x: Display extended statistics.
-y: Omit first report with statistics for system boot time.
-z: Tell iostat to omit output for any devices for which there was no activity.
-j: Use persistent device path names.
-g: Define a group of devices for which statistics are displayed.
-p: Display statistics for block devices and all their partitions.
-o: Output in JSON format.
5. 实战案例
使用iostat命令监控I/O性能。
# 1. 查看CPU和磁盘统计信息
[root@localhost ~]# iostat
Linux 5.14.0-362.el9.x86_64 (localhost.localdomain) 04/03/2026 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.50 0.00 1.00 0.50 0.00 96.00
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.00 10.00 5.00 10000 5000
sdb 2.00 20.00 10.00 20000 10000
sdc 3.00 30.00 15.00 30000 15000
# 2. 持续监控I/O状态
[root@localhost ~]# iostat -x 1 10
Linux 5.14.0-362.el9.x86_64 (localhost.localdomain) 04/03/2026 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.50 0.00 1.00 0.50 0.00 96.00
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sda 0.50 0.50 5.00 2.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10.00 5.00 0.00 0.00
sdb 1.00 1.00 10.00 5.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10.00 5.00 0.00 0.00
sdc 1.50 1.50 15.00 7.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10.00 5.00 0.00 0.00
# 3. 创建监控脚本
[root@localhost ~]# cat > /usr/local/bin/iostat-monitor.sh << 'EOF'
#!/bin/bash
# script.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# iostat监控脚本
LOG_FILE="/var/log/iostat-monitor.log"
ALERT_EMAIL="admin@fgedu.net.cn"
# 记录日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
# 检查磁盘利用率
check_disk_util() {
DISK_UTIL=$(iostat -x 1 2 | grep sda | tail -1 | awk ‘{print $14}’)
if [ $(echo “$DISK_UTIL > 80” | bc) -eq 1 ]; then
log “WARNING: Disk sda utilization is ${DISK_UTIL}%”
echo “Disk sda utilization is ${DISK_UTIL}%” | mail -s “WARNING: Disk utilization alert” $ALERT_EMAIL
fi
}
# 检查I/O等待时间
check_io_wait() {
IO_WAIT=$(iostat -x 1 2 | grep sda | tail -1 | awk ‘{print $10}’)
if [ $(echo “$IO_WAIT > 10” | bc) -eq 1 ]; then
log “WARNING: Disk sda I/O wait is ${IO_WAIT}ms”
echo “Disk sda I/O wait is ${IO_WAIT}ms” | mail -s “WARNING: I/O wait alert” $ALERT_EMAIL
fi
}
# 检查IOPS
check_iops() {
IOPS=$(iostat -x 1 2 | grep sda | tail -1 | awk ‘{print $1 + $2}’)
if [ $(echo “$IOPS > 1000” | bc) -eq 1 ]; then
log “WARNING: Disk sda IOPS is ${IOPS}”
echo “Disk sda IOPS is ${IOPS}” | mail -s “WARNING: IOPS alert” $ALERT_EMAIL
fi
}
# 主函数
main() {
log “Starting iostat monitoring…”
check_disk_util
check_io_wait
check_iops
log “Iostat monitoring completed.”
}
# 执行主函数
main
EOF
# 4. 设置脚本执行权限
[root@localhost ~]# chmod +x /usr/local/bin/iostat-monitor.sh
# 5. 创建日志文件
[root@localhost ~]# touch /var/log/iostat-monitor.log
[root@localhost ~]# chmod 644 /var/log/iostat-monitor.log
# 6. 配置定时任务
[root@localhost ~]# echo “*/5 * * * * root /usr/local/bin/iostat-monitor.sh” > /etc/cron.d/iostat-monitor
# 7. 重启cron服务
[root@localhost ~]# systemctl restart crond
# 8. 测试监控脚本
[root@localhost ~]# /usr/local/bin/iostat-monitor.sh
# 9. 查看日志
[root@localhost ~]# tail -f /var/log/iostat-monitor.log
[2026-04-03 10:00:00] Starting iostat monitoring…
[2026-04-03 10:00:05] Iostat monitoring completed.
# 10. 配置日志轮转
[root@localhost ~]# cat > /etc/logrotate.d/iostat-monitor << 'EOF'
/var/log/iostat-monitor.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 root root
}
EOF
# 11. 测试日志轮转
[root@localhost ~]# logrotate -f /etc/logrotate.d/iostat-monitor
提示
from PG视频:www.itpux.com
iostat是监控磁盘I/O性能的重要工具,可以快速发现I/O瓶颈。建议定期使用iostat命令检查磁盘状态,及时发现异常。对于长期监控,可以结合脚本和定时任务实现自动化监控。
ss=”footer”>
Linux教程164 – iostat命令系统监控
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
