atop
是一个强大的性能监控工具,可以实时监控系统资源使用情况,并记录历史数据。当磁盘 I/O 过高时,atop
可以帮助你快速定位问题。以下是使用 atop
排查磁盘 I/O 过高的步骤:
安装 atop
如果系统未安装 atop,可以通过包管理器安装:
Debian/Ubuntu:
sudo apt-get install atop
CentOS/RHEL:
sudo yum install atop
Fedora:
sudo dnf install atop
启动 atop
安装完成后,直接运行 atop 命令即可启动:
sudo atop
查看磁盘 I/O 信息
在 atop 界面中,按下 d 键可以查看磁盘 I/O 的详细信息。你会看到类似以下的输出
DSK | sda | busy 60% | read 1024 | write 512 | avio 10ms |
busy: 磁盘的繁忙程度,百分比越高表示磁盘越忙。
read/write: 读/写的次数。
avio: 平均 I/O 响应时间,单位为毫秒。
分析高 I/O 进程
按下 d 后,再按下 p 可以查看每个进程的磁盘 I/O 情况。你会看到类似以下的输出:
PID TID RDDSK WRDSK WCANCL DSK CMD
RDDSK: 进程读取的数据量(单位:KB)。
WRDSK: 进程写入的数据量(单位:KB)。
DSK: 进程占用的磁盘 I/O 百分比。
CMD: 进程名称。
通过这些信息,你可以识别出哪些进程正在大量使用磁盘 I/O。
查看历史数据
atop 会定期记录系统性能数据,默认存储在 /var/log/atop/ 目录下。你可以使用以下命令查看历史数据:
sudo atop -r /var/log/atop/atop_YYYYMMDD
其中 YYYYMMDD 是日期。通过历史数据,你可以分析磁盘 I/O 过高的时间段及其原因。
查看当天历史指标日志。
atop -r
查看昨天历史指标日志。
atop -r y
查看指定日期内的历史指标日志。示例中,指定日期为2024年11月06日。
atop -r 20241106
查看指定日期内自指定时间起的历史指标日志。示例中,指定日期为2024年11月06日,开始时间为14:00。
atop -r 20241106 -b 14:00
查看指定日期内,指定时间段的历史指标日志。示例中,指定的日期为2024年11月5日,时间段为00:04至00:08。
atop -r 20241105 -b 00:04 -e 00:08
其他有用的快捷键
g: 返回全局视图。
m: 查看内存使用情况。
c: 查看 CPU 使用情况。
n: 查看网络使用情况。
进一步分析
如果发现某个进程导致磁盘 I/O 过高,可以使用 strace 或 lsof 进一步分析该进程的行为:
strace: 跟踪系统调用。
sudo strace -p PID
lsof: 查看进程打开的文件。
sudo lsof -p PID