Linux中如何查看磁盘IOPS?查看命令与方法有哪些?

在Linux系统中,IOPS(Input/Output Operations Per Second,每秒读写次数)是衡量存储设备性能的核心指标,直接反映磁盘处理读写请求的能力,无论是系统管理员还是开发人员,掌握IOPS的查看方法对于性能优化、故障排查都至关重要,本文将详细介绍Linux下查看IOPS的多种工具、命令及其实际应用场景,帮助读者全面掌握这一技能。

linux中如何查看iops

通过iostat查看IOPS

iostatsysstat工具包的一部分,专为系统I/O性能监控设计,能够实时展示磁盘设备的读写请求数、带宽、等待时间等关键指标,是最常用的IOPS查看工具之一。

安装与基本使用

若系统中未安装sysstat,可通过包管理器安装(如CentOS:yum install sysstat;Ubuntu:apt install sysstat),安装后,执行iostat即可查看所有磁盘设备的默认统计信息(默认仅显示一次结果,不包含实时动态):

iostat

实时监控IOPS

添加-d参数可仅显示磁盘统计信息,-x参数可查看扩展信息(更详细的I/O指标),-t参数显示时间戳,-c参数间隔秒数(如每秒更新一次):

iostat -d -x -t 1

输出解读与IOPS计算

执行上述命令后,输出包含多列核心字段,其中与IOPS直接相关的有:

  • r/s:每秒设备读请求数(读IOPS);
  • w/s:每秒设备写请求数(写IOPS);
  • r_await:读请求平均等待时间(ms);
  • w_await:写请求平均等待时间(ms);
  • svctm:平均请求服务时间(ms);
  • util:设备利用率(%),超过70%可能意味着I/O瓶颈。

IOPS的计算公式总IOPS = r/s + w/s,若r/s=100w/s=50,则总IOPS为150,表示设备每秒可处理150次读写请求。

通过sar查看IOPS

sar(System Activity Reporter)同样是sysstat工具包的一部分,擅长收集、记录和报告系统历史活动数据,适合长期监控IOPS趋势。

查看实时IOPS

使用sar -d命令可查看块设备的I/O统计信息,-p参数以设备名称显示(如sda),1表示每秒刷新一次:

sar -d -p 1

输出解读

sar的输出中,与IOPS相关的字段包括:

linux中如何查看iops

  • tps:每秒传输次数(即总IOPS,等于读+写请求数);
  • rd_sec/s:每秒读取扇区数;
  • wr_sec/s:每秒写入扇区数;
  • avqsz:平均请求队列长度。

tps=200,表示设备当前IOPS为200,可直接反映其处理能力。

通过/proc/diskstats查看底层IOPS

/proc/diskstats是Linux内核提供的磁盘统计信息接口,记录了所有块设备的详细读写数据,适合脚本化监控或获取原始数据。

文件结构与字段说明

该文件每行代表一个磁盘设备,包含多个字段,其中与IOPS直接相关的是:

  • 第4列:读完成的总请求数(累计值);
  • 第8列:写完成的总请求数(累计值)。

计算IOPS的方法

由于数据是累计值,需通过两次采样差值计算IOPS,编写脚本监控sda设备的IOPS:

#!/bin/bash
prev_read=$(cat /proc/diskstats | grep 'sda ' | awk '{print $4}')
prev_write=$(cat /proc/diskstats | grep 'sda ' | awk '{print $8'})
sleep 1
curr_read=$(cat /proc/diskstats | grep 'sda ' | awk '{print $4}')
curr_write=$(cat /proc/diskstats | grep 'sda ' | awk '{print $8'})
iops=$(( (curr_read - prev_read) + (curr_write - prev_write) ))
echo "Current IOPS: $iops"

执行后,脚本会输出每秒sda设备的IOPS,适合嵌入自动化监控流程。

通过pidstat查看进程级IOPS

若需定位具体进程的I/O负载(如某个应用导致磁盘高负载),可使用pidstat,它能按进程维度统计读写请求数。

命令与输出

添加-d参数查看进程I/O统计,-p指定进程ID(如-p 1234),-t按线程显示:

pidstat -d -p 1234 1

输出中,r/sw/s分别表示该进程每秒读、写请求数,两者相加即为进程级IOPS,帮助快速定位I/O密集型进程。

linux中如何查看iops

通过iotop实时监控IOPS

iotop是一个交互式I/O监控工具,以进程为单位实时显示磁盘读写速率、IOPS等信息,界面直观,适合快速排查异常。

安装与使用

安装:yum install iotop(CentOS)或apt install iotop(Ubuntu)。
运行:iotop -o(仅显示有I/O操作的进程),按P按IOPS排序,按T按传输速率排序。

输出中,READ/sWRITE/s分别表示进程每秒读、写请求数,直观反映各进程的IOPS贡献。

工具对比与选择

为方便选择,以下是常用IOPS查看工具的对比:

工具名称 适用场景 命令示例 关键IOPS字段
iostat 实时监控设备级IOPS,性能分析 iostat -d -x 1 r/sw/s
sar 历史数据趋势分析,长期监控 sar -d 1 tps
/proc/diskstats 脚本化监控,原始数据获取 cat /proc/diskstats 第4列(读)、第8列(写)
pidstat 进程级IOPS定位,问题排查 pidstat -d -p 1234 1 r/sw/s
iotop 交互式实时监控,进程排序 iotop -o READ/sWRITE/s

注意事项

  1. 单位确认iostatpidstat中的r/sw/s单位为“次/秒”,直接对应IOPS;sartps同样为总IOPS。
  2. 采样间隔:短间隔(如1秒)可捕捉突发I/O,但可能受缓存影响;长间隔(如10秒)更反映稳定性能。
  3. 合并请求:Linux内核会合并相邻的I/O请求(如连续扇区读写),实际IOPS可能低于理论值,工具显示的是合并后的请求数。
  4. 设备区分:通过lsblkfdisk -l确认设备名称(如sda、nvme0n1),避免监控错误磁盘。

相关问答FAQs

Q1:为什么用iostat查看IOPS时,r/s + w/s有时和tps不一致?
A:iostattps(transfers per second)表示每秒磁盘传输的总次数,理论上等于r/s + w/s,若出现不一致,可能是由于iostat版本差异或显示精度问题(如旧版iostat未区分合并请求),建议使用新版sysstat(12.5.2),并通过iostat -x查看r/sw/s,两者相加即为准确IOPS。

Q2:如何通过脚本持续监控磁盘IOPS并超过阈值告警?
A:可结合iostatbc计算IOPS,并通过mailcurl发送告警,示例脚本如下:

#!/bin/bash
disk="/dev/sda"
threshold=1000  # IOPS阈值
while true; do
  iops=$(iostat -d -x 1 2 | awk '/^'"$disk"'/ {print $3+$4}')
  if [ $(echo "$iops > $threshold" | bc -l) -eq 1 ]; then
    echo "Alert: IOPS on $disk is $iops, exceeding threshold $threshold" | mail -s "IOPS Alert" admin@example.com
  fi
  sleep 60
done

将脚本加入crontab(如@reboot /path/to/script.sh),即可实现持续监控与告警。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/38071.html

(0)
酷番叔酷番叔
上一篇 2025年10月8日 02:46
下一篇 2025年10月8日 03:02

相关推荐

  • Linux下安装bin文件的具体步骤和方法是什么?

    在Linux系统中,.bin文件通常是一种自包含的二进制可执行安装包,由开发者预先编译好,适用于多种Linux发行版,无需依赖特定的包管理器(如apt、yum等),这类文件常见于商业软件、驱动程序或某些开源工具的官方发布版本,与.deb、.rpm等依赖包管理器的安装包不同,.bin文件的安装通常需要手动执行,并……

    2025年8月24日
    5400
  • 电脑故障没U盘能自救吗?

    在Linux系统中,虽然没有与Windows完全相同的”安全模式”概念,但用户可通过单用户模式(Single-User Mode) 或救援模式(Rescue Mode) 实现类似功能,这些模式以最小化环境启动系统,仅加载必要服务,用于修复系统故障、重置密码或修复文件系统,以下是详细操作指南:适用于系统引导管理器……

    2025年7月31日
    5400
  • 如何立即退出Linux目录?

    返回上一级目录(最常用)命令:cd ..原理: 代表当前目录的父目录(上一级目录),操作示例: # 当前路径:/home/user/documents$ cd .. # 执行后路径变为:/home/user效果:直接退回上一层目录,可连续使用(如 cd ../.. 退回两级),返回上一次所在的目录命令:cd……

    2025年7月2日
    9200
  • Linux下如何快速跳转目录?命令与实用技巧解析

    在Linux操作系统中,目录跳转是最基础且高频的操作之一,无论是日常文件管理还是系统维护,都离不开对目录的灵活切换,Linux中目录跳转的核心命令是cd(Change Directory),其功能强大且用法多样,结合路径表示方法、命令选项、快捷键及高级技巧,可以大幅提升操作效率,本文将详细解析Linux目录跳转……

    2025年10月5日
    3600
  • 如何在Linux里创建可执行脚本?

    在Linux操作系统中,脚本是一种强大的工具,能够将一系列命令组合起来,通过自动化执行简化重复性任务,提高工作效率,无论是系统管理、文件处理还是定时任务,脚本都能发挥重要作用,本文将详细介绍在Linux中创建脚本的完整流程,从基础概念到实际应用,帮助读者掌握脚本编写技能,理解Linux脚本的基础Linux脚本通……

    2025年9月29日
    3500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信