如何通过Linux命令测量磁盘活动?

云计算

如何通过Linux命令测量磁盘活动?

2025-03-11 00:09


一、实时监控工具集 1. iostat (瞬时I/O统计) 所属软件包:sysstat 安装命令:

                                            




一、实时监控工具集

1. iostat (瞬时I/O统计)

所属软件包:sysstat
安装命令:

yum install sysstat -y  # CentOS/RHEL  
apt-get install sysstat # Debian/Ubuntu  

黄金参数组合

iostat -dx 2 5  # 参数释义:  
# -d : 仅显示磁盘统计  
# -x : 扩展详情模式  
# 2   : 每2秒刷新  
# 5   : 输出5次后退出  

关键指标解读

字段 警戒值参考 物理意义
%util ≥70% 设备带宽利用率(百分比)
await >30ms I/O平均等待时间(毫秒)
svctm >20ms 实际I/O服务时间(毫秒)

典型异常场景
当 %util长期高于90%且 await显著上升,表明磁盘进入排队拥堵状态


2. iotop (进程级追踪)

安装方式:

yum install iotop -y  # RHEL系  
apt-get install iotop # Debian系  

交互式监控

iotop -oPa  # 过滤参数说明:  
# -o : 仅显示活跃I/O进程  
# -P : 不合并线程  
# -a : 累计统计模式  

输出列说明:

  • DISK READ/WRITE:进程读写速率(KB/s)
  • SWAPIN:交换空间使用占比
  • IO>:当前I/O优先级(△表示高优先)

二、复合型资源分析工具

3. vmstat (多维资源概览)

磁盘相关字段监测

vmstat -d 1  # 每1秒刷新块设备统计(无需root权限)  

输出关键项:

  • bio:块设备每秒读写次数
  • bo:每秒写操作数据块数
  • bi:每秒读操作数据块数

价值点:快速判断是否存在突发性I/O尖峰


4. dstat (可视化流量监控)

独特优势:实时显示磁盘吞吐速率

dstat -tdD sda,sdb 1  # 参数详解:  
# -t  : 增加时间戳  
# -d  : 启用磁盘统计  
# -D  : 指定设备(sda/sdb)  
# 1   : 1秒刷新间隔  

动态显示字段:

  • read/write:当前读写速率(单位:MB/s)
  • dsk/cpu:磁盘与CPU的联动占比图

三、深度分析工具链

5. blktrace (底层追踪)

设备级I/O追踪

blktrace -d /dev/sda -o sda_trace  # 开始记录  
blkparse sda_trace > analysis.log  # 转码分析  

解析字段范例

8,0   3        1     0.000000000  1123  Q  WS 1347375936 + 8 [bash]  
8,0   3        2     0.000006251  1123  G  WS 1347375936 + 8 [bash]  

各列含义:设备号、操作序列、时间戳(秒)、进程ID、操作类型(Q:入队,G:获取请求)、读写类型、起始扇区


6. bcc-tools (动态跟踪)

安装BPF工具集:

yum install bcc-tools -y  

案例:追踪慢IO请求

biolatency 5 3  # 每5秒统计一次,共3次  

输出直方图显示不同区间的I/O延迟分布,快速定位延迟异常


四、基准测试方法

7. fio (压力测试)

测试随机写性能:

fio --filename=/mnt/test --direct=1 --rw=randwrite --bs=4k \  
--ioengine=libaio --iodepth=256 --runtime=60 --time_based \  
--name=test --group_reporting  

参数解读:

  • direct=1:跳过缓存,直写磁盘
  • iodepth=256:队列深度模拟高并发
  • group_reporting:合并线程统计结果

8. hdparm (理论速度测试)

查看设备缓存读速度:

hdparm -Tt /dev/sda  

输出解析:

  • Timing cached reads:内核缓存读取速度(非物理磁盘)
  • Timing buffered disk reads:实际磁盘读取速度

五、企业级监控架构设计

分层监控方案示例:

  1. 实时层:Prometheus + node_exporter + Grafana 构建I/O看板
  2. 日志层:ELK收集/var/log/syslog中的磁盘错误日志
  3. 告警层:设置Zabbix触发器当%util持续>80%时邮件通知
  4. 溯源层:sysdig记录异常时间段的容器级I/O行为

容量规划经验公式
所需IOPS = (读占比 × 读IOPS) + (写占比 × 写IOPS × RAID系数)
(RAID5写系数为4,RAID10为2)


六、实用技巧与误区

✓ 避免单纯依赖%util:NVMe固态硬盘可能显示100%但实际吞吐正常
✓ iowait的误读:高iowait不一定是磁盘瓶颈,可能是CPU调度问题
✓ tmpfs干扰:内存文件系统不会产生物理磁盘I/O,需用 

标签:
  • Linux
  • 命令
© 蓝易云.