sar -d 历史磁盘指标

sysstat 若启用采集,可用 sar -d 回看任意时点的磁盘 tps、读写扇区、await、util,适合事后复盘与容量趋势。

sar -d 是什么

sar -d 读取 sysstat 的历史采集文件,回看任意时点的磁盘 tps、读写扇区数、await 与 util 等指标。前提是系统启用了 sysstat 采集(多数发行版随包装好即启用)。实时采样与历史回放用同一套参数,是事后复盘与容量趋势的主力工具。

基本信息

适用平台Linux(sysstat 包)
实时采样sar -d -p 1 3
历史读法sar -d -p -f /var/log/sysstat/sa<DD>,路径按发行版调整
启用前提/etc/sysconfig/sysstat 或 /etc/default/sysstat 中采集为开启
配套命令sar -b 看整机 IO 总览,sar -u 看 CPU

典型使用场景

  • 事后复盘:报障时间已过去,用 -f 指定当天数据文件回放当时的磁盘指标
  • 容量趋势:对比多天同一时段的 tps 与吞吐,判断增长是否线性
  • 变更验证:调优或换盘前后各取一天数据,用同一口径对比
  • 定时任务影响分析:定位凌晨备份窗口内实际受压的设备
  • 多机对比:同角色机器取同一时段数据,找出异常节点

常用命令

常用命令
sar -d -p 1 3                          # 实时采样,-p 显示可读设备名
sar -d -p -f /var/log/sysstat/sa12     # 回看指定日期数据,路径按环境调整
sar -d -p -s 09:00:00 -e 09:30:00      # 只看指定时间段,缩小分析范围
sar -b 1 3                             # 整机 IO 总览行,先看趋势再看设备

输出逐列读法

列含义判读
DEV设备名-p 时显示 sdX,否则显示 major-minor 形式
tps每秒 IO 请求数与业务写入量对照判断是否合理
rd_sec/s、wr_sec/s每秒读写扇区数扇区按 512 字节换算后再与带宽比较
await平均等待毫秒明显高于该设备基线说明排队
%util设备忙时间占比接近 100% 可能饱和,NVMe 上会失真
历史数据目录因发行版而异:Debian/Ubuntu 在 /var/log/sysstat,RHEL/CentOS 在 /var/log/sa。取不到数据时先确认采集是否开启、保留天数是否覆盖目标日期。

采集配置核对

采集配置核对
systemctl status sysstat                # 确认采集服务处于运行状态
grep -E 'ENABLED|HISTORY' /etc/sysconfig/sysstat   # RHEL 系:开关与保留天数
ls /var/log/sysstat/                    # 确认目标日期的数据文件存在

复盘步骤

  • 先确认目标日期的历史文件存在且能被 sar 解析
  • 用 -s/-e 收缩到故障时间窗,避免在海量输出里翻找
  • 先用 sar -b 看整机 IO 方向,再用 sar -d 定位设备
  • 把结论与当时的业务量、变更记录对齐,形成因果链
sysstat 的历史文件按天保留,默认通常只留 7 到 30 天。需要更长回溯窗口时要提前调大保留天数,否则关键故障的原始数据会在复盘前被清理掉。

易错点

  • 采集未开启或保留天数不够,事后才发现无数据可查,应在基线部署时就核对 sysstat 配置
  • 把扇区数当字节:rd_sec/s、wr_sec/s 单位是扇区,换算错误会差一个数量级
  • 拿不同机型、不同采样间隔的数据直接比趋势,口径不一致结论无效
  • 把 await 升高全归因到硬件,忽略上游并发量变化这一常见原因
  • 只看平均值不看时段分布,把局部尖峰与持续压力混为一谈

数据来源与参考

  • sysstat 文档 sar(1)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌