检查 IOPS(**Input/Output Operations Per Second**)的方法取决于你的操作系统、所用工具和监控粒度。下面是 **Linux 系统中最常用、准确的方法**,并附带详解与进阶建议。
---
## ✅ 一、使用 `iostat`(推荐)
### 安装:
```bash
# Debian/Ubuntu
sudo apt install sysstat
# CentOS/RHEL
sudo yum install sysstat
```
### 常用命令:
```bash
iostat -dx 1 5
```
### 说明:
* `-d`:显示设备(磁盘)统计信息
* `-x`:扩展输出(包含 IOPS)
* `1 5`:每 1 秒输出一次,共输出 5 次
### 输出示例解释:
| 字段 | 说明 |
| ------- | ---------------------- |
| `tps` | 每秒传输次数 ≈ IOPS(粗略估算) |
| `r/s` | 每秒读操作次数 |
| `w/s` | 每秒写操作次数 |
| `await` | 请求平均等待时间(越高越差) |
| `%util` | I/O 使用率,接近 100% 表示设备瓶颈 |
---
## ✅ 二、使用 `pidstat` 查看单进程 IOPS
```bash
pidstat -d 1
```
| 字段 | 说明 |
| ------------------------------------ | -------------- |
| `kB_rd/s` | 每秒读 KB |
| `kB_wr/s` | 每秒写 KB |
| `kB_ccwr/s` | 每秒取消写(cache 写) |
| 可配合 `pidstat -u -d -r -h` 查看完整资源使用情况 | |
---
## ✅ 三、使用 `iotop` 查看实时 I/O 进程排名
```bash
sudo iotop
```
* 显示哪些进程在读写磁盘,按 I/O 占用率排序
* 类似于 `top`,但专注于 I/O
* 需要 root 权限或 `CAP_NET_ADMIN`
---
## ✅ 四、使用 `perf` 采样 I/O syscall(更底层)
```bash
sudo perf trace -e 'syscalls:sys_enter_read,sys_enter_write'
```
* 可查看哪些程序频繁进行读写操作
* 更适合排查 “高 IOPS 但不知源头” 的情况
---
## ✅ 五、使用 `bpftrace`/`bcc` 进行精确分析(进阶)
例如查看 I/O 延迟和频率:
```bash
# 查看 I/O 请求延迟分布
sudo bpftrace -e 'tracepoint:block:block_rq_issue { @start[args->sector] = nsecs; }
tracepoint:block:block_rq_complete /@start[args->sector]/ {
@delta = nsecs - @start[args->sector];
printf("IO latency: %d us\n", @delta / 1000);
delete(@start[args->sector]);
}'
```
或者使用内置工具:
```bash
sudo /usr/share/bcc/tools/biolatency
sudo /usr/share/bcc/tools/biotop
```
---
## ✅ 六、使用 Prometheus + Grafana 可视化(推荐持久监控)
* 使用 **Node Exporter** 收集磁盘 IOPS
* 指标:`node_disk_reads_completed_total`、`node_disk_writes_completed_total`
* 可计算如下:
```promql
rate(node_disk_reads_completed_total[1m])
rate(node_disk_writes_completed_total[1m])
```
* 可视化磁盘读写速率和 IOPS 变化趋势
---
## ✅ 七、硬件或云环境查看(补充)
* 云厂商(如 AWS、阿里云、腾讯云)提供 IOPS 实时监控图
* 存储系统(如 Ceph、LVM、RAID 控制器)也可提供精细 IOPS 统计
* 硬件 RAID 卡通过 `megacli`、`storcli` 工具查看磁盘性能
---
## ✅ 总结:选哪种方法?
| 目的 | 推荐工具 |
| ----------- | ----------------------- |
| 快速看设备 IOPS | `iostat -dx 1` |
| 看哪个进程占用 I/O | `iotop` / `pidstat -d` |
| 诊断瓶颈 | `perf` / `bpftrace` |
| 可视化监控 | Prometheus + Grafana |
| 云主机 | 云控制台监控 or `cloudmon` 工具 |
---
如你希望:
* 精确统计某块磁盘的 IOPS 上限
* 查看容器或 K8s 中的 IOPS
* 制作 IOPS 压测脚本(如使用 `fio`)
我也可以进一步帮你写脚本和配置文件。是否需要?