sar -b看IO

[root@abc ~]#  man sar
       -b     Report I/O and transfer rate statistics.  The following values are displayed:
              tps
                     Total number of transfers per second that were issued to physical devices.  A transfer is an I/O request to a physical device. Multiple logical requests  can  be  combined into a single I/O request to the device.  A transfer is of indeterminate size.
              rtps
                     Total number of read requests per second issued to physical devices.
              wtps
                    Total number of write requests per second issued to physical devices.
              bread/s
                     Total  amount  of data read from the devices in blocks per second.  Blocks are equivalent to sectors with 2.4 kernels and newer and therefore have a size of 512 bytes.
                     With older kernels, a block is of indeterminate size.
              bwrtn/s
                     Total amount of data written to devices in blocks per second.

[root@abc ~]# sar -b 1 5
Linux 2.6.32-642.el6.x86_64 (abc) 	06/06/2018 	_x86_64_	(4 CPU)


12:12:02 PM       tps      rtps      wtps   bread/s   bwrtn/s
12:12:03 PM      2.00      0.00      2.00      0.00     64.00
12:12:04 PM      0.00      0.00      0.00      0.00      0.00
12:12:05 PM      0.00      0.00      0.00      0.00      0.00
12:12:06 PM      2.00      0.00      2.00      0.00     64.00
12:12:07 PM      0.00      0.00      0.00      0.00      0.00
Average:         0.80      0.00      0.80      0.00     25.60


[root@abc ~]# 


<think>嗯,用户之前已经问过如何查看导致过去IO升高的进程,我给出了包括sar在内的几种方法。现在用户具体询问怎么用sar命令查询历史IO,显然他们可能已经尝试了之前的建议,或者对sar特别感兴趣。我需要详细解释sar的使用步骤,确保他们能正确操作。 首先,用户可能需要安装sysstat工具,所以在回答里要包括不同系统的安装命令,比如Debian/Ubuntu和CentOS/RHEL。然后要说明如何确保数据收集已启用,因为默认情况下可能没开,用户可能会遇到没数据的情况。 接下来,用户需要知道如何查看历史数据,特别是如何找到对应的日志文件。需要指出文件路径和日期的对应关系,比如saXX的XX代表日期,可能还需要提醒使用-f参数指定文件。 然后,解释sar的输出字段,比如tps、rkB/s、wkB/s、%util,这些术语对新手来说可能不熟悉,需要用简单的语言解释清楚。特别是%util,接近100%意味着IO瓶颈,这对诊断问题很关键。 高级用法部分,用户可能需要过滤特定设备或时间范围,所以给出示例命令,比如用-s和-e指定时间,用-d和sed过滤设备。同时,生成报告可能有用,所以提到重定向到文件。 注意事项里要提到数据保存时间,默认一个月,用户如果需要更久得调整配置。还有权限问题,可能需要sudo,以及如果没有数据应该检查sysstat是否运行。 用户可能的深层需求是诊断历史IO问题,所以需要强调sar的优势和限制,比如需要预先安装和配置,如果没数据的话未来如何设置。此外,结合其他工具如iostat或iotop可能会有帮助,但当前问题聚焦在sar上,所以保持主题明确。 最后,用总结表格帮助用户快速回顾步骤,这样他们可以方便地查阅关键点。确保整个回答结构清晰,步骤详细,同时避免使用复杂术语,让不同技术水平的用户都能理解。</think>以下是使用 `sar` 命令查询历史 I/O 的详细步骤和示例: --- ### **1. 安装和配置 `sysstat`** `sar` 属于 `sysstat` 工具包,需先安装并启用数据收集: #### **安装命令**: ```bash # Debian/Ubuntu sudo apt-get install sysstat # CentOS/RHEL sudo yum install sysstat ``` #### **启用数据收集**: - 编辑配置文件 `/etc/default/sysstat`(Debian/Ubuntu)或 `/etc/sysconfig/sysstat`(CentOS/RHEL),确保 `ENABLED="true"`。 - 重启服务: ```bash sudo systemctl restart sysstat ``` --- ### **2. 查看历史 I/O 数据** #### **基本命令格式**: ```bash sar -d -p -f /var/log/sysstat/saXX ``` - **参数说明**: - `-d`:显示磁盘 I/O 统计。 - `-p`:以可读格式显示设备名称(例如 `/dev/sda` 而非 `dev8-0`)。 - `-f /var/log/sysstat/saXX`:指定历史数据文件,`XX` 为日期编号(例如 `sa15` 表示 15 号的数据)。 #### **示例输出**: ```plaintext Linux 5.4.0-80-generic (hostname) 10/15/2023 _x86_64_ (4 CPU) 12:00:01 AM DEV tps rkB/s wkB/s await %util 12:10:01 AM dev8-0 5.02 120.3 45.6 2.34 3.21 12:20:01 AM dev8-0 32.10 1500.8 1200.5 15.67 90.50 <-- I/O 高峰 ... ``` - **关键字段解释**: - `tps`:每秒 I/O 传输次数(读+写)。 - `rkB/s`:每秒读取数据量(KB)。 - `wkB/s`:每秒写入数据量(KB)。 - `%util`:设备利用率(百分比)。**接近 100% 表示 I/O 饱和**。 --- ### **3. 高级用法** #### **按时间范围过滤**: ```bash sar -d -p -f /var/log/sysstat/saXX -s 14:00:00 -e 15:00:00 ``` - `-s` 和 `-e` 指定开始和结束时间(格式 `HH:MM:SS`)。 #### **按设备过滤**: ```bash sar -d -p -f /var/log/sysstat/saXX | grep "sda" ``` - 仅显示 `/dev/sda` 的 I/O 数据。 #### **生成 CSV 报告**: ```bash sar -d -p -f /var/log/sysstat/saXX -o ioreport.csv ``` - 将数据导出为 CSV 文件,方便后续分析。 --- ### **4. 注意事项** 1. **数据保存路径**: - 默认存储位置:`/var/log/sysstat/saXX`(不同系统可能略有差异)。 - 数据按天保存,例如 `sa15` 对应 15 号的记录。 2. **数据保留时间**: - 默认保留 1 个月,可通过修改 `/etc/sysstat/sysstat` 中的 `HISTORY` 参数调整。 3. **权限问题**: - 查看历史数据可能需要 `sudo` 权限。 4. **若无数据**: - 检查 `sysstat` 服务是否正常运行:`systemctl status sysstat`。 - 确保配置文件中 `ENABLED="true"`。 --- ### **总结表** | 命令示例 | 功能说明 | |----------------------------------------|-----------------------------| | `sar -d -p -f sa15` | 查看 15 号全天磁盘 I/O | | `sar -d -p -f sa15 -s 14:00 -e 15:00` | 查看 15 号 14:00-15:00 的 I/O | | `sar -d -p -f sa15 | grep "sda"` | 仅显示 `/dev/sda` 的 I/O | --- ### **实际场景示例** **问题**:查找昨天下午 14:00-15:00 导致 I/O 高峰的进程。 **步骤**: 1. 通过 `sar -d -p -f saXX` 定位到高峰时间段(例如 `14:30`)。 2. 结合 `dmesg` 或 `journalctl` 查看该时间点的系统日志。 3. 若需进程级数据,需提前配置监控(例如 `iotop` 日志)。 --- 通过 `sar` 可有效分析历史 I/O 负载,但需注意**数据需预先记录**。若未配置监控,建议未来启用 `sysstat` + 定期 `iotop` 日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值