iostat 是 Solaris 系统中用于监控系统磁盘I/O性能和CPU使用情况的重要工具。它是 System Activity Reporter (SAR) 工具集的一部分,主要用于识别磁盘I/O的瓶颈。
一、基本命令格式
iostat [选项] [时间间隔] [次数]
二、常用选项
显示相关选项
-c:仅显示CPU使用情况
-d:仅显示磁盘使用情况
-n:显示NFS文件系统信息
-p:显示分区级别的统计信息
-t:在输出中包含时间戳
-x:显示扩展磁盘统计信息(最重要)
-z:不显示零活动的磁盘
-m:以MB/s为单位显示吞吐量
输出控制选项
三、输出字段详解
1. CPU统计部分
%user %nice %system %iowait %steal %idle
- %user:用户模式下的CPU时间百分比
- %system:系统模式下的CPU时间百分比
- %iowait:CPU等待I/O完成的时间百分比
- %idle:CPU空闲时间百分比
2. 磁盘统计部分(基础)
Device r/s w/s kr/s kw/s wait actv svc_t %w %b
- r/s, w/s:每秒读写次数
- kr/s, kw/s:每秒读写数据量(KB)
- wait:等待队列中的平均请求数
- actv:正在处理的平均请求数
- svc_t:平均服务时间(毫秒)
- %w:等待时间的百分比
- %b:磁盘繁忙时间的百分比
3. 扩展统计(-x 选项)
extended device statistics
Device r/s w/s Kr/s Kw/s wait actv wsvc_t asvc_t %w %b
- wsvc_t:平均写服务时间
- asvc_t:平均读服务时间
四、实用示例
示例1:基本监控
# 每2秒显示一次,共显示5次
iostat 2 5
# 显示磁盘统计,每3秒刷新
iostat -d 3
示例2:扩展统计信息
# 显示详细磁盘统计,过滤零活动磁盘
iostat -xdz 2
示例3:监控特定磁盘
# 监控c0t0d0磁盘
iostat -x c0t0d0 2
示例4:带时间戳的输出
# 记录带时间戳的I/O统计
iostat -xtc 5
示例5:分区级别监控
# 查看分区级别的I/O
iostat -p 2
五、性能指标解读
关键性能指标
%b(磁盘繁忙度)
-
60%:可能存在问题
-
80%:需要关注
-
90%:严重瓶颈
wait(等待队列长度)
svc_t(服务时间)
- 理想值:< 20ms
- 警告值:> 30ms
- 严重值:> 50ms
r/s + w/s(IOPS)
六、与其他工具结合
1. 与vmstat结合
vmstat 2 5
iostat -x 2 5
2. 与prstat结合(查看进程级I/O)
prstat -mLc 5
3. 生成监控报告
# 记录到文件
iostat -xtc 30 10 > /var/tmp/io_report.out
七、故障排查示例
场景:数据库响应慢
# 1. 查看系统整体I/O
iostat -xnz 2
# 2. 如果发现特定磁盘%w过高
# 3. 使用iotop或prstat查看哪个进程在频繁I/O
# 4. 使用fsstat查看文件系统活动
fsstat 2
八、注意事项
权限要求:通常需要root权限才能获取完整信息
第一次报告:输出的第一次报告是自系统启动以来的统计
间隔时间:建议间隔时间至少2秒以获得准确数据
ZFS文件系统:对于ZFS,可能需要使用
zpool iostat获得更准确信息
zpool iostat -v 2
九、最佳实践
基线建立:在系统正常时记录基准值
定期监控:建立定期监控机制
趋势分析:关注变化趋势而非单次数值
综合判断:结合CPU、内存、网络等指标综合分析
这个工具是Solaris系统性能调优和故障排查的利器,掌握它可以有效识别存储子系统的问题。