vmstat是Linux虚拟内存统计工具,用于报告进程、内存、交换、I/O和CPU活动;不支持-D选项,其I/O字段bi/bo仅提供全系统块级汇总,不区分设备。

注意:vmstat -D 并不存在,vmstat 命令不支持 -D 选项。
Linux 中的 vmstat(virtual memory statistics)主要用于报告虚拟内存、进程、CPU 和 I/O 活动的总体统计信息,但它不提供块设备(如 sda、nvme0n1)的底层 I/O 统计,也不支持 -D 这个参数。
你可能混淆了以下两个常用命令:
✅ 正确查看块设备底层 I/O 统计的工具
要获取每个块设备(如 /dev/sda、/dev/nvme0n1)的详细 I/O 统计(读写次数、扇区数、合并请求数、等待时间等),应使用:
-
iostat(来自
sysstat包)——最常用、最直观 - cat /proc/diskstats —— 内核原始数据,字段含义固定但需查文档
- lsblk -I 或 findmnt —— 辅助识别活跃块设备
? 使用 iostat 查看块设备 I/O 统计(推荐)
安装(如未安装):
sudo apt install sysstat(Debian/Ubuntu)sudo yum install sysstat(RHEL/CentOS)sudo dnf install sysstat(Fedora/RHEL8+)
运行命令:
iostat -x 1 —— 每秒刷新一次,显示扩展统计(含 %util、await、r_await、w_await、svctm 等)iostat -d -x /dev/sda —— 仅显示指定设备的详细 I/O(-d 表示只显示设备)iostat -y -x 2 3 —— 跳过首行(初始平均值),每2秒输出1次,共3次
关键列说明:
- r/s, w/s:每秒读/写请求数
- rkB/s, wkB/s:每秒读/写千字节数
- rrqm/s, wrqm/s:每秒读/写合并请求数
- %util:设备忙碌时间百分比(接近100% 可能是瓶颈)
- await:I/O 请求平均等待时间(毫秒)
? 查看 /proc/diskstats(内核原始数据)
执行:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
cat /proc/diskstats
输出示例(截取一行):
259 0 nvme0n1 123456 123 4567890 12345 98765 456 789012 34567 0 12345 67890
前3列是主次设备号和设备名;后面11列按顺序为:
- 读完成次数、合并读、读扇区数、读耗时(ms)
- 写完成次数、合并写、写扇区数、写耗时(ms)
- I/O 当前处理数、I/O 总耗时(ms)、加权 I/O 耗时(ms)
该文件适合脚本解析或监控系统采集,但不适合人工快速阅读。
❌ vmstat 的正确用法(对比澄清)
`vmstat` 的 I/O 相关字段只有两列(在默认输出中):
- bi(blocks in):每秒从块设备收到的块数(即读入)
- bo(blocks out):每秒发送到块设备的块数(即写出)
这是**全系统汇总值**,不区分设备,单位是“块”(通常是 1024 字节),且不包含请求延迟、队列深度等底层指标。
例如:vmstat 1 或 vmstat -t 2(带时间戳)
⚠️ 执行 vmstat -D 会报错:vmstat: invalid option -- 'D'。
不复杂但容易忽略:确认你要的是设备级细粒度统计,就别用 vmstat —— 改用 iostat 或 /proc/diskstats。

















