Linux 查察磁盘的 I/O 读写环境(随手记)

打印 上一主题 下一主题

主题 1865|帖子 1865|积分 5595

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 使用 iostat

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

在大多数 Linux 发行版中,sysstat 需要手动安装:
  1. # Debian/Ubuntu 系列
  2. sudo apt install sysstat
  3. # CentOS/RHEL 系列
  4. sudo yum install sysstat
复制代码
使用

运行以下命令查察磁盘 I/O 环境:
  1. iostat -d -x 1
复制代码


  • -d:显示设备级的 I/O 数据。
  • -x:显示扩展的统计信息。
  • 1:每秒刷新一次。
输出示例:
  1. Device            r/s     w/s     rkB/s   wkB/s  avgrq-sz  avgqu-sz   await  svctm  %util
  2. sda              12.00   5.00    1024.0   512.0    128.00     0.50    1.50   0.10   1.50
复制代码


  • r/s 和 w/s:每秒读写请求数。
  • rkB/s 和 wkB/s:每秒读写的 KB 数据量。
  • %util:磁盘的使用率,接近 100% 表示磁盘繁忙。

2. 使用 vmstat

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

  1. vmstat 1
复制代码


  • 1:每秒刷新一次。
输出示例:
  1. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
  2. r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
  3. 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。
安装

  1. # Debian/Ubuntu 系列
  2. sudo apt install iotop
  3. # CentOS/RHEL 系列
  4. sudo yum install iotop
复制代码
使用

  1. sudo iotop
复制代码
输出示例:
  1. Total DISK READ: 1.20 M/s | Total DISK WRITE: 500.00 K/s
  2.   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
  3. 1234 be/4 root      1.20 M/s    0.00 B/s    0.00 %    1.50 %  dd if=/dev/zero of=/tmp/testfile
复制代码


  • DISK READ 和 DISK WRITE:显示每个进程的磁盘读写速率。
  • COMMAND:显示正在执行的命令。

4. 使用 dstat

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

  1. # Debian/Ubuntu 系列
  2. sudo apt install dstat
  3. # CentOS/RHEL 系列
  4. sudo yum install dstat
复制代码
使用

  1. dstat -d --disk-util
复制代码
输出示例:
  1. ----disk----
  2. read  write
  3. 1.0k  500.0k
复制代码

5. 使用 sar

sar 是 sysstat 工具包中的另一个工具,用于网络和查察系统性能数据。
使用

  1. sar -b 1 5
复制代码


  • -b:显示 I/O 和传输速率。
  • 1 5:每秒采样一次,持续 5 次。
输出示例:
  1. 12:00:01 AM       tps      rtps      wtps   bread/s   bwrtn/s
  2. 12:00:02 AM      15.00    10.00     5.00    1024.00   512.00
复制代码


  • tps:每秒传输数(读写总和)。
  • bread/s 和 bwrtn/s:每秒读写的块数。

6. 使用 cat /proc/diskstats


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

  1. cat /proc/diskstats
复制代码
输出示例:
  1.   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 的工具)。
示例脚本

  1. sudo bpftrace -e 'tracepoint:block:block_rq_issue { printf("Disk %s %d bytes\n", args->disk, args->bytes); }'
复制代码
这个脚本会实时监控磁盘的读写操作。

总结



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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表