查长期磁盘i/o历史需依赖sysstat归档的二进制文件(如/var/log/sa/sa25),先确认sysstat服务active、无错误日志、目录存在文件,再用sar -d(详细设备级)或sar -b(整体吞吐)配合-f指定文件分析,关键指标包括tps、await、%util、bread/s、bwrtn/s。

要查长期的磁盘 I/O 读写历史,关键不是实时跑 sar,而是靠它读取系统自动存档的二进制数据文件——这些文件每天生成一个,自带时间戳,天然支持回溯。
确认数据是否在持续采集
sysstat 服务必须启用且运行正常,否则不会有历史记录:
- 检查服务状态:systemctl is-active sysstat,应为 active
- 查看日志里有没有采集失败提示:journalctl -u sysstat | grep -i "error\|fail"
- 确认归档目录有文件:ls -l /var/log/sa/sa??(如 sa25 对应本月25号)
用 -d 或 -b 选项读取指定日期的磁盘 I/O
-d 显示每块设备的详细 I/O 活动(含队列、等待时间),-b 显示整体 I/O 吞吐速率(tps、bread/s、bwrtn/s)。两者互补:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 查某天各磁盘的读写详情:sar -d -f /var/log/sa/sa25
- 查某天每秒读写块数和字节数:sar -b -f /var/log/sa/sa25
- 只看特定时间段(比如下午2点到4点):sar -d -s 14:00:00 -e 16:00:00 -f /var/log/sa/sa25
识别 I/O 瓶颈的关键字段
输出中重点关注这几列:
- tps:每秒传输次数,数值高说明设备频繁被访问
- await(-d 输出中):I/O 请求平均等待+服务时间(毫秒),持续 >10ms 值得警惕
- %util(-d 输出中):设备忙时占比,接近 100% 表示磁盘已饱和
- bread/s 和 bwrtn/s(-b 输出中):每秒读/写字节数,结合设备理论带宽判断是否打满
补全长期分析的实用技巧
单看一天不够?可以批量查、对比或导出:
- 快速列出最近7天的 tps 峰值:for d in {19..25}; do echo "sa$d:"; sar -b -f /var/log/sa/sa$d | awk '$1 ~ /^[0-9]/ {if($2>max) max=$2} END{print max+0}'; done
- 把某天的 -d 数据转成易读文本:sar -d -f /var/log/sa/sa25 | sed '1,/^$/d' > io_25.txt(去掉头部说明行)
- 注意:saXX 是二进制格式,不能用 cat 或 vim 直接打开,否则会乱码










