要用 sar 查看历史磁盘 I/O 状况,核心是读取 sysstat 归档的二进制 saXX 文件;需确认 /var/log/sysstat/ 下存在对应 sa 文件且 sysstat 服务与 cron 正常运行;常用命令为 sar -b -f /var/log/sysstat/saXX 查系统级吞吐,sar -d -p -f /var/log/sysstat/saXX 定位设备瓶颈,关注 await、%util 和 aqu-sz;支持按时间段筛选(如 09:00:00 11:00:00)和设备过滤(如 grep nvme0n1)。

要用 sar 查看历史磁盘 I/O 状况,核心是读取 sysstat 自动归档的二进制日志文件,并用合适选项解析 I/O 相关指标。它不依赖实时采集,而是回溯已存档的数据。
确认数据是否可用
sysstat 必须已启用且 cron 正常运行,否则没有历史记录:
- 检查 /var/log/sysstat/(或 /var/log/sa/)目录下是否存在对应日期的 saXX 文件(如今天是 7 月 29 日,就找 sa29)
- 运行 systemctl status sysstat 或检查 /etc/cron.d/sysstat 是否启用
- 若提示 Cannot open /var/log/sysstat/sa29: No such file,说明当天未成功采集,需先修复 sysstat 配置并等待下一个周期
基础命令:查看整体磁盘吞吐
sar -b -f /var/log/sysstat/sa29 是最常用组合:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- -b 显示每秒 I/O 传输速率(tps)、每秒读/写扇区数(rtps/wtps)、每秒读/写 KB 数(bread/s/bwrtn/s)
- 输出中重点关注 tps(总 I/O 操作次数)和 bread/s、bwrtn/s(实际数据量),比单纯看 CPU 更能反映磁盘负载
- 注意:该命令默认不显示设备名,仅反映系统级汇总值
深入分析:定位具体设备瓶颈
要识别是哪块盘在忙,必须加 -p 参数并配合 -d:
- sar -d -p -f /var/log/sysstat/sa29 —— 显示各块设备(如 dev8-0 对应 /dev/sda,dev253-0 常为 /dev/vda)的详细统计
- 关键列:await(平均 I/O 响应时间,单位毫秒;持续 >10ms(HDD)或 >1ms(NVMe)需警惕)、%util(设备忙时占比;接近 100% 表示饱和)、aqu-sz(平均队列深度;对 NVMe 更具参考价值)
- 若 %util 高但 await 低,可能是高并发低延迟场景,未必是瓶颈
按时间段筛选与常用技巧
历史数据默认每 10 分钟采样一次,时间点必须对齐:
- 查上午 9 点到 11 点:sar -d -p -f /var/log/sysstat/sa29 09:00:00 11:00:00
- 只看某几个设备(如 nvme0n1 和 sdb):sar -d -p -f /var/log/sysstat/sa29 | grep -E "(nvme0n1|sdb)"
- 对比多日趋势:分别执行 sar -b -f sa27、sar -b -f sa28、sar -b -f sa29,观察 tps 或 bwrtn/s 是否突增

















