重要事情说三遍iowat不一定是磁盘问题

检查 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`)

我也可以进一步帮你写脚本和配置文件。是否需要?

  

posted on 2025-05-13 12:13  吃草的青蛙  阅读(40)  评论(0)    收藏  举报

导航