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

相关推荐

  • NAT切换如何避免业务中断?

    在Linux系统中直接修改iptables/nftables规则(尤其是NAT表)会导致:现有连接中断:已建立的TCP连接和UDP会话因规则刷新而丢失,业务抖动:在线用户感知到网络闪断,影响实时应用(如视频会议、金融交易),状态不一致:conntrack表记录与NAT规则不匹配,引发数据包丢弃,平滑生效的核心原……

    2025年7月24日
    9900
  • 如何安全格式化磁盘分区?

    在Linux系统中,sda2 通常指第一块硬盘(sda)的第二个分区,建立 sda2 本质是对磁盘进行分区操作,需谨慎执行(误操作可能导致数据丢失),以下是详细步骤:操作前准备备份数据:分区操作有风险,务必提前备份硬盘重要数据,确认磁盘信息:终端执行:sudo fdisk -l /dev/sda # 查看/de……

    2025年7月29日
    9800
  • linux如何启动root权限

    Linux 中,可通过切换到 root 用户(如 su 或 sudo -i)

    2025年8月16日
    7400
  • 如何在官网下载jdk linux版本

    Oracle官网,导航至JDK下载页面,选择Linux版本并按照提示完成下载和安装

    2025年8月17日
    9200
  • Linux环境下2个PV如何进行扩容操作?

    在Linux系统中,LVM(逻辑卷管理)通过物理卷(PV)、卷组(VG)和逻辑卷(LV)的分层结构,提供了灵活的磁盘管理能力,当现有存储空间不足时,扩容PV是增加VG可用空间的基础,进而可以扩容LV以满足业务需求,本文将详细介绍在Linux系统中,如何利用2个现有PV进行扩容的完整流程、注意事项及操作示例,LV……

    2025年10月7日
    18400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信