vmstat -d 显示系统所有磁盘自启动以来的累计读写总量,包括reads、writes、read_sectors等字段;-p用于指定分区(如/dev/sda1)查看其累计i/o,二者均输出累加值而非实时速率。

直接用 vmstat -d 就能查看系统所有磁盘设备的累计读写总量,它输出的是自系统启动以来的统计值,不是实时速率。
vmstat -d:看累计读写块数和字节数
执行 vmstat -d 后,你会看到类似这样的表格:
- 每行代表一个块设备(如 sda、nvme0n1)
- 列名包括:reads(完成的读请求数)、writes(完成的写请求数)、read_sectors(读取扇区数)、write_sectors(写入扇区数)、read_ms(读耗时毫秒)、write_ms(写耗时毫秒)
- 扇区大小通常是 512 字节,所以 read_sectors × 512 ≈ 实际读取字节数,write_sectors 同理
vmstat -p /dev/xxx:查指定分区的累计 I/O
如果你只关心某个分区(比如 /dev/sda1),用:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
vmstat -p /dev/sda1- 输出字段与
-d类似,但聚焦在该分区,适合确认某挂载点的历史吞吐压力 - 注意:它不显示实时速率,也不区分缓存读写,仅反映底层块层完成的 I/O 总量
别把它当实时监控工具
vmstat -d 和 -p 输出的是**累加值**,刷新间隔参数(如 vmstat -d 1)不会改变这个性质——每次输出都是从开机到现在的新总量,不是差值。想看每秒变化量,得自己做两次采样相减,或者改用 iostat -dx 1 这类真正支持速率计算的工具。
和 iostat 的关键区别
vmstat 的磁盘统计偏“结果导向”,而 iostat -dx 1 提供的是设备级每秒请求次数(r_ios/w_ios)和真实吞吐(rkB/s/wkB/s)。如果你要判断当前磁盘是否过载、IOPS 是否打满、哪个进程在刷盘,vmstat -d 帮不上忙;它更适合事后回溯“这台机器总共从磁盘读了多少数据”这类问题。










