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

相关推荐

  • Linux7中如何启动Win10?操作步骤与方法详解?

    在Linux 7系统中(如CentOS 7、RHEL 7等默认使用GRUB2引导管理器),若需启动已安装的Windows 10双系统,需通过配置GRUB2实现,以下是详细操作步骤及注意事项,前提是双系统已正确安装且Linux 7为当前默认启动系统,前置条件确认双系统存在性:确保Windows 10与Linux……

    2025年9月23日
    11700
  • 如何快速打开终端?

    重要安全提示:Root账户拥有Linux系统的最高权限,不当操作可能导致系统崩溃或安全风险,建议日常使用普通账户,仅在必要时临时获取root权限,操作前请确认您理解命令的含义,通过 su 命令切换(需知晓root密码)适用场景:已通过普通用户登录系统,且拥有root密码,su -# 3. 输入root密码(输入……

    2025年7月25日
    11900
  • linux如何开始变异

    nux 本身不会自行“变异”,它基于开源特性,通过开发者修改代码、添加功能或

    2025年8月19日
    14500
  • Linux系统中如何查看RAID阵列的详细信息与运行状态?

    在Linux系统中,RAID(磁盘阵列)是提升数据安全性和I/O性能的重要技术,无论是服务器还是专业工作站,合理配置RAID并实时监控其状态都是系统管理的关键任务,本文将详细介绍在Linux系统中查看RAID状态的方法,涵盖软件RAID(如mdadm)和硬件RAID的不同场景,帮助用户全面掌握RAID监控技巧……

    2025年10月9日
    15300
  • Linux系统如何登录MySQL数据库?

    在Linux系统中登录MySQL是数据库管理的基础操作,需确保MySQL服务已安装并正常运行,同时用户具备相应权限,以下是详细步骤和注意事项,涵盖不同场景下的登录方法及常见问题排查,前提条件MySQL服务运行:通过systemctl status mysql(或mysqld,根据安装方式不同)检查服务状态,若未……

    2025年9月27日
    12400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信