1. iostat
(整体磁盘统计)
• 用途:查看磁盘整体读写速率、I/O 请求队列和 CPU 等待时间。
• 安装:包含在 sysstat
包中,默认已安装,若未安装:
sudo apt install sysstat
• 使用:
iostat -xz 1 # 每1秒刷新,显示扩展统计(包括I/O等待、吞吐量、利用率)
• 关键指标:
◦ `%util`:磁盘利用率(接近100%表示饱和)
◦ `r/s`, `w/s`:每秒读写次数
◦ `rkB/s`, `wkB/s`:每秒读写数据量(KB)
◦ `await`:I/O 平均等待时间(ms)
2. iotop
(进程级监控,推荐👀)
• 用途:类似 top
,按进程实时显示磁盘读写活动。
• 安装:
sudo apt install iotop
• 使用:
sudo iotop -oPa # 只显示活跃I/O的进程,按读写量排序
• 关键列:
◦ `DISK READ` / `DISK WRITE`:进程的读写速率
◦ `SWAPIN`:进程导致的交换区 I/O
◦ `IO>`:进程的 I/O 优先级
3. vmstat
(综合性能分析)
• 用途:监控系统整体 I/O、内存、CPU 和上下文切换。
• 使用:
vmstat 1 # 每1秒刷新
• 关键指标:
◦ `bi`(Blocks In):每秒从磁盘读取的块数
◦ `bo`(Blocks Out):每秒写入磁盘的块数
◦ `wa`(Wait):CPU 等待 I/O 的时间占比(若>20%表示I/O瓶颈)
4. sar
(历史 I/O 统计)
• 用途:记录和回溯历史 I/O 数据(需启用 sysstat
服务)。
• 安装:同 iostat
(sysstat
包)。
• 使用:
sar -d 1 3 # 每1秒采样,共3次,显示设备级I/O统计
• 关键指标:
◦ `tps`:每秒传输请求数
◦ `rd_sec/s`:每秒读取扇区数(1扇区=512B)
◦ `wr_sec/s`:每秒写入扇区数
5. dstat
(多功能实时监控)
• 用途:同时监控 CPU、内存、网络和磁盘 I/O。
• 安装:
sudo apt install dstat
• 使用:
dstat -cdlmnpy # 综合模式(CPU、磁盘、负载、内存、网络、进程)
• 磁盘 I/O 列:
◦ `read`:读取速率(MB/s)
◦ `writ`:写入速率(MB/s)
6. blktrace
(底层块设备跟踪)
• 用途:高级工具,追踪块设备 I/O 请求的完整生命周期。
• 安装:
sudo apt install blktrace
• 使用:
blktrace -d /dev/sda -o - | blkparse -i - # 实时解析sda设备的I/O请求
• 输出示例:
```
sda 队列深度、I/O 延迟、请求大小分布等详细信息
```
7. ioping
(磁盘延迟测试)
• 用途:测量磁盘的单次 I/O 请求延迟(类似网络 ping)。
• 安装:
sudo apt install ioping
• 使用:
sudo ioping -C /dev/sda # 测试sda设备的延迟
• 关键指标:
◦ `min/avg/max`:延迟的最小/平均/最大值(us)
工具选择指南
场景 | 推荐工具 |
---|---|
实时进程级 I/O 监控 | iotop |
整体磁盘吞吐量和利用率 | iostat |
综合性能分析(CPU/内存/I/O) | vmstat 、dstat |
历史 I/O 数据分析 | sar |
底层块设备调试 | blktrace (需专业知识) |
磁盘延迟测试 | ioping |
示例:诊断 I/O 瓶颈
-
查看整体 I/O 负载:
iostat -xz 1
• 若
%util > 80%
且await
较高,表明磁盘过载。 -
定位高 I/O 进程:
sudo iotop -oPa
• 找到读写量异常的进程 PID。
-
分析进程行为:
strace -p <PID> -e trace=open,read,write # 追踪进程的系统调用
通过这些工具,可以快速识别磁盘 I/O 瓶颈、定位异常进程,并优化存储性能。