Linux磁盘I/O监控怎么做?

核心命令行工具

iostat(实时磁盘统计)

功能:报告CPU和磁盘I/O的详细统计信息。
安装

sudo apt-get install sysstat  # Debian/Ubuntu
sudo yum install sysstat      # CentOS/RHEL

基础用法

iostat -dx 2 5  # 每2秒刷新1次,共5次(-d:磁盘报告,-x:扩展统计)

关键输出解读

  • r/s, w/s:每秒读写请求数
  • rkB/s, wkB/s:每秒读写数据量(KB)
  • await:I/O平均等待时间(ms)
  • %util:磁盘利用率(≥80%表示可能过载)

场景示例

iostat -dx sda  # 监控指定磁盘(如sda)

iotop(进程级I/O监控)

功能:实时显示进程的I/O占用(类似top命令)。
安装

sudo apt-get install iotop  # Debian/Ubuntu
sudo yum install iotop      # CentOS/RHEL

用法

sudo iotop -oP  # 只显示活跃I/O进程(-P:进程详情)

输出关键列

  • IO>:进程I/O优先级
  • DISK READ/DISK WRITE:进程读写速率
  • SWAPIN:交换空间使用率

交互操作

  • o:仅显示有I/O的进程
  • r:调整排序顺序

vmstat(系统资源综合监控)

功能:报告内存、CPU、I/O等整体状态。
用法

vmstat 1  # 每秒刷新1次

I/O相关输出

  • bi:每秒从磁盘读入的块数
  • bo:每秒写入磁盘的块数
  • wa:CPU等待I/O的时间百分比(>20%需警惕)

dstat(多功能资源监控)

功能:整合vmstatiostatnetstat数据,支持彩色输出。
安装

sudo apt-get install dstat  # Debian/Ubuntu
sudo yum install dstat      # CentOS/RHEL

用法

dstat -d  # 监控磁盘I/O
dstat -cdl --disk-util  # 组合监控(CPU、磁盘负载、利用率)

高级工具与日志分析

sar(历史I/O数据分析)

功能:通过sysstat收集历史数据,适合回溯问题。
查看历史记录

sar -d -p  # 显示所有磁盘历史I/O(-p:友好设备名)
sar -d -f /var/log/sa/sa10  # 查看指定日期日志(如10号)

atop(高级性能监控)

功能:记录进程级I/O历史,支持回放。
安装

sudo apt-get install atop  # Debian/Ubuntu
sudo yum install atop      # CentOS/RHEL

用法

atop -d  # 进入交互界面,按 `d` 聚焦磁盘I/O

底层文件系统分析

/proc 文件系统

  • 实时块设备I/O
    cat /proc/diskstats  # 各磁盘的读写次数、扇区数、等待时间
  • 进程级I/O
    cat /proc/PID/io     # 查看指定进程的I/O统计(需替换PID)

lsof(定位文件占用)

功能:列出被进程打开的文件,辅助定位高I/O来源。

sudo lsof +D /var/log  # 查看指定目录的文件访问进程

最佳实践建议

  1. 诊断流程
    • 先用 iostat 确认磁盘是否过载(%util)。
    • iotop 定位具体高I/O进程。
    • 结合 vmstat 检查系统整体资源瓶颈(如wa值)。
  2. 长期监控
    • 启用 sysstat 服务(默认每10分钟收集数据)。
    • 使用 sar 分析历史趋势。
  3. 性能调优
    • await过高,考虑升级SSD或优化应用I/O模式。
    • 避免频繁小文件写入,合并为顺序大文件操作。

引用说明

  • 工具文档:man iostat, man iotop, man vmstat
  • sysstat项目:https://github.com/sysstat/sysstat
  • Linux内核文档:/proc文件系统说明(内核源码Documentation/filesystems/proc.txt)

重要提示:所有监控命令需root权限或sudo执行以获取完整数据,生产环境建议结合监控系统(如Prometheus+Grafana)实现自动化告警。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6569.html

(0)
酷番叔酷番叔
上一篇 2025年7月7日 12:27
下一篇 2025年7月7日 12:48

相关推荐

  • Linux如何修改TCP最大连接数限制?

    Linux系统中的TCP最大连接数限制受多个因素制约,包括系统级文件描述符限制、内核参数配置以及进程级资源分配等,要修改这一限制,需从多个层面进行调整,同时确保系统资源充足以避免性能问题,以下将详细说明具体操作步骤和注意事项,理解TCP连接数限制的来源TCP连接数限制并非单一参数控制,而是由多个系统约束共同决定……

    2025年10月5日
    900
  • 为什么cp命令会覆盖文件?

    在Linux系统中,复制文件是最基础且频繁的操作之一,无论是日常管理、数据备份还是脚本编写,掌握高效的文件复制方法都至关重要,本文将详细解析Linux中多种文件复制方式,涵盖命令行工具(如cp、rsync)和图形界面操作,并附注意事项及最佳实践,cp(copy)是Linux内置的复制命令,语法如下:cp [选项……

    2025年7月23日
    4100
  • Linux系统如何安装deb文件?

    在Linux系统中,尤其是基于Debian或Ubuntu的发行版,deb文件是常见的软件包格式,安装deb文件有多种方法,可根据场景选择,以下是详细步骤及注意事项,使用dpkg命令安装(基础命令行方法)dpkg是Debian系系统的包管理工具,可直接安装deb文件,但需注意依赖问题,操作步骤:打开终端,进入de……

    2025年9月8日
    2200
  • Linux如何设置子目录权限

    在Linux系统中,目录权限管理是保障系统安全与文件共享的核心环节,尤其对于多用户或多项目环境,合理设置子目录权限能有效避免数据泄露或误操作,本文将详细讲解Linux中设置子目录权限的方法,涵盖基础命令、高级技巧及常见场景,帮助用户全面掌握权限管理技能,Linux权限基础:理解用户、组与权限位Linux权限管理……

    2025年9月26日
    1900
  • Linux如何高效查看日历?命令行与图形界面技巧

    命令行工具(高效快捷)cal 命令(基础日历)基本使用:终端输入 cal 直接显示当前月日历:$ cal 七月 2024日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 1314 15 16 17 18 19 2021 22 23 24 25 26 2728 29 30 31扩展……

    2025年6月16日
    4800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信