当前位置: 首页 > article >正文

Linux 查看磁盘的 I/O 读写情况(随手记)

1. 使用 iostat

iostatsysstat 工具包中的一个工具,用于监控系统的 CPU 和磁盘 I/O 性能。

安装

在大多数 Linux 发行版中,sysstat 需要手动安装:

# Debian/Ubuntu 系列
sudo apt install sysstat

# CentOS/RHEL 系列
sudo yum install sysstat
使用

运行以下命令查看磁盘 I/O 情况:

iostat -d -x 1
  • -d:显示设备级的 I/O 数据。
  • -x:显示扩展的统计信息。
  • 1:每秒刷新一次。

输出示例:

Device            r/s     w/s     rkB/s   wkB/s  avgrq-sz  avgqu-sz   await  svctm  %util
sda              12.00   5.00    1024.0   512.0    128.00     0.50    1.50   0.10   1.50
  • r/sw/s:每秒读写请求数。
  • rkB/swkB/s:每秒读写的 KB 数据量。
  • %util:磁盘的使用率,接近 100% 表示磁盘繁忙。

2. 使用 vmstat

vmstat 是一个轻量级的系统性能监控工具,也可以查看磁盘 I/O。

使用
vmstat 1
  • 1:每秒刷新一次。

输出示例:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0  50000  20000 400000    0    0   100   150  300  400 10  5 80  5  0
  • bi:块设备的读(Block In)。
  • bo:块设备的写(Block Out)。
  • wa:CPU 等待 I/O 的时间百分比。

3. 使用 iotop

iotop 是一个交互式工具,类似于 top,专门用于监控磁盘 I/O。

安装
# Debian/Ubuntu 系列
sudo apt install iotop

# CentOS/RHEL 系列
sudo yum install iotop
使用
sudo iotop

输出示例:

Total DISK READ: 1.20 M/s | Total DISK WRITE: 500.00 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
1234 be/4 root      1.20 M/s    0.00 B/s    0.00 %    1.50 %  dd if=/dev/zero of=/tmp/testfile
  • DISK READDISK WRITE:显示每个进程的磁盘读写速率。
  • COMMAND:显示正在执行的命令。

4. 使用 dstat

dstat 是一个实时监控工具,可以同时显示多个系统性能指标,包括磁盘 I/O。

安装
# Debian/Ubuntu 系列
sudo apt install dstat

# CentOS/RHEL 系列
sudo yum install dstat
使用
dstat -d --disk-util

输出示例:

----disk----
 read  write
1.0k  500.0k

5. 使用 sar

sarsysstat 工具包中的另一个工具,用于收集和查看系统性能数据。

使用
sar -b 1 5
  • -b:显示 I/O 和传输速率。
  • 1 5:每秒采样一次,持续 5 次。

输出示例:

12:00:01 AM       tps      rtps      wtps   bread/s   bwrtn/s
12:00:02 AM      15.00    10.00     5.00    1024.00   512.00
  • tps:每秒传输数(读写总和)。
  • bread/sbwrtn/s:每秒读写的块数。

6. 使用 cat /proc/diskstats

Linux 内核在 /proc/diskstats 文件中提供了原始的磁盘统计信息。

查看
cat /proc/diskstats

输出示例:

  8       0 sda 157698 1048576 12345678 7890 123456 654321 9876543 12345 0 123456 54321 0 0 0

字段含义(部分):

  • 第 4 列:读取完成次数。
  • 第 6 列:写入完成次数。
  • 第 7 列:读取的扇区数。
  • 第 9 列:写入的扇区数。

7. 使用 bpftrace(高级方法)

如果你需要更高级的实时监控,可以使用 bpftrace(基于 eBPF 的工具)。

示例脚本
sudo bpftrace -e 'tracepoint:block:block_rq_issue { printf("Disk %s %d bytes\n", args->disk, args->bytes); }'

这个脚本会实时监控磁盘的读写操作。


总结

  • 如果需要简单快速的查看磁盘 I/O,可以使用 iostatvmstat
  • 如果需要实时监控特定进程的 I/O,可以使用 iotop
  • 如果需要详细的历史数据,可以使用 sar
  • 如果需要高级的实时分析,bpftrace 是一个强大的选择。

http://www.kler.cn/a/504140.html

相关文章:

  • 【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列
  • Open FPV VTX开源之嵌入式OSD配置
  • 【AI游戏】基于OpenAI打造自动生成剧情的 Python 游戏
  • Java语言的正则表达式
  • 典型的 package.json 文件中的
  • [ Spring ] Install MongoDB on Ubuntu24
  • 【2025 Rust学习 --- 14 迭代器创建和使用】
  • qt QLabel QPushButton 控件重写paintEvent后 控件消失
  • 【Ubuntu与Linux操作系统:六、软件包管理】
  • 忘记了PDF文件的密码,怎么办?
  • Linux操作系统分析实验一:多线程与内核模块编程
  • 【深度学习】论文画图
  • MySQL学习笔记5【SQL优化/视图/存储过程/触发器】
  • 使用Axios实现无刷新信息验证:提升用户体验
  • 基于Piquasso的光量子计算机的模拟与编程
  • 电梯系统的UML文档02
  • 62_Redis服务器集群优化
  • 从零搭建一个Vue3 + Typescript的脚手架——day1
  • Redis快速入门店铺营业状态设置
  • px、em 和 rem 的区别:深入理解 CSS 中的单位
  • 【ArcGIS初学】产生随机点计算混淆矩阵
  • 【树莓派3B】香瓜树莓派3B之语音识别机器人
  • 2025年  生活公报计划
  • 见微知著:Tripo 开创 3D 生成新时代
  • 无人机反制设备十大应用场景详解
  • 什么是IDE,新手如何选择IDE?