菜鸟科技网

Linux查看IO命令有哪些?

在Linux系统中,监控和分析I/O(输入/输出)性能是系统管理和性能调优的重要环节,I/O性能问题可能导致系统响应缓慢、应用卡顿甚至服务中断,通过合适的命令,管理员可以实时或历史地查看磁盘、文件系统、进程等层级的I/O活动,从而定位瓶颈并进行优化,以下是常用的Linux查看I/O命令及其详细用法,涵盖从基础到高级的场景。

Linux查看IO命令有哪些?-图1
(图片来源网络,侵删)

基础I/O监控命令

iostat - 查看CPU及设备I/O统计

iostatsysstat包的一部分,用于报告CPU利用率及磁盘I/O统计信息,安装后可通过iostat [选项] [间隔] [次数]调用。

常用选项:

  • -x:显示扩展统计,包括await、svctm、util等关键指标。
  • -d:仅显示磁盘统计信息。
  • -k:以KB/s为单位显示传输速率(默认为块/秒)。
  • -p [设备名]:指定特定磁盘(如iostat -x sda)。

示例输出:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.23    0.15    3.87    2.10    0.00   88.65
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await svctm  %util
sda               12.3     8.7    45.6    32.1   512.3    256.7    12.34     0.45   5.23   2.10   5.67

关键指标解释:

Linux查看IO命令有哪些?-图2
(图片来源网络,侵删)
  • await:I/O请求平均等待时间(毫秒),过高可能表明磁盘瓶颈。
  • %util:磁盘利用率,持续高于70%可能意味着磁盘成为瓶颈。
  • svctm:平均服务时间,若与await差距大,说明队列等待严重。

vmstat - 虚拟内存与I/O统计

vmstat报告进程、内存、分页、块I/O等统计信息,其中bo(块输出)和bi(块输入)列可反映磁盘I/O情况。

示例:

vmstat 1

输出中bibo列表示每秒读取和写入的块数,若持续高位需关注磁盘负载。

dstat - 多资源统计工具

dstat是功能强大的通用统计工具,可通过插件监控I/O。

Linux查看IO命令有哪些?-图3
(图片来源网络,侵删)

示例:

dstat -d --disk-util  # 显示磁盘使用率和I/O

输出包括磁盘读写速率、利用率等,适合快速概览。

高级I/O分析工具

iotop - 实时进程级I/O监控

iotop类似top,但专注于实时显示每个进程的I/O读写速率。

安装与使用:

sudo apt install iotop  # Debian/Ubuntu
sudo iotop -o          # 仅显示有I/O活动的进程

输出中DISK READDISK WRITE列可直观看到进程的I/O负载,适合定位高I/O进程。

pidstat - 进程级I/O统计

pidstatsysstat包的一部分,可按进程查看I/O统计。

示例:

pidstat -d -p <PID> 1  # 监控特定进程的I/O

输出包括kB_rd/s(读取速率)、kB_wr/s(写入速率)等。

nmon - 系统性能监控器

nmon(Nigel's Monitor)是交互式工具,可同时监控CPU、内存、磁盘、网络等。

使用:

nmon

进入界面后按d查看磁盘I/O,按c查看CPU,适合综合分析。

ioping - 类似ping的磁盘延迟测试

ioping用于测试磁盘延迟,类似网络ping的原理。

安装与使用:

sudo apt install ioping
ioping -c 4 /  # 测试根分区延迟

输出显示平均延迟、最小/最大延迟,适合快速评估磁盘响应速度。

文件系统与磁盘健康检查

df - 文件系统磁盘使用情况

df报告文件系统的磁盘空间使用情况,-h选项以人类可读格式显示。

示例:

df -h

输出包括已用空间、可用空间、挂载点,若某个分区使用率接近100%,可能导致I/O性能下降。

du - 目录磁盘使用量

du用于统计目录或文件的磁盘占用,-sh选项显示总大小。

示例:

du -sh /var/log

smartctl - 磁盘健康监控

smartctl来自smartmontools包,用于监控SATA/SCSI磁盘的健康状态。

示例:

sudo smartctl -a /dev/sda  # 显示磁盘详细信息

关注Reallocated_Sector_Ct(重定位扇区数)等指标,数值异常可能预示磁盘故障。

I/O性能调优建议

  1. 优化磁盘调度算法:通过echo noop | sudo tee /sys/block/sda/queue/scheduler调整调度器(noop、deadline、mq-deadline)。
  2. 文件系统选择:对高并发场景考虑XFSext4,禁用atimenoatime挂载选项)。
  3. RAID配置:使用RAID 0提升性能(无冗余)或RAID 1/10兼顾性能与安全。
  4. 分散I/O负载:将高I/O应用数据分散到不同物理磁盘。

相关问答FAQs

Q1: 如何判断磁盘I/O是否成为系统瓶颈?
A1: 通过以下指标综合判断:

  • iostat -x%util持续高于70%;
  • await值远高于磁盘平均寻道时间(如机械硬盘>10ms,SSD<2ms);
  • vmstatbo/bi列长期处于高位,且系统wa(I/O等待)占比高。
    若满足以上条件,可考虑升级磁盘、优化应用或调整调度策略。

Q2: 如何定位高I/O消耗的进程?
A2: 可通过以下步骤定位:

  1. 使用iotop -o实时查看进程I/O;
  2. 使用pidstat -d按PID筛选可疑进程;
  3. 若为数据库等应用,检查慢查询或未优化的SQL;
  4. 通过strace -p <PID> -e trace=write跟踪系统调用,确认具体I/O操作。
    必要时使用ionice调整进程I/O优先级(如sudo ionice -c 3 -p <PID>降低优先级)。
分享:
扫描分享到社交APP
上一篇
下一篇