问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

iostat命令详解:监控主机硬盘故障排查利器

创作时间:
作者:
@小白创作中心

iostat命令详解:监控主机硬盘故障排查利器

引用
CSDN
9
来源
1.
https://blog.csdn.net/aaxh01/article/details/139621539
2.
https://blog.csdn.net/renduy/article/details/137262472
3.
https://blog.csdn.net/weixin_48255522/article/details/139066258
4.
https://blog.csdn.net/qq_32014795/article/details/140696639
5.
https://wenku.csdn.net/answer/1f014838dd474f96a013d1fe1ea197b5
6.
https://help.aliyun.com/zh/ecs/support/query-and-case-analysis-linux-io-load
7.
https://my.oschina.net/emacs_8740724/blog/17151291
8.
https://info.support.huawei.com/compute/docs/zh-cn/kunpeng-knowledge/typical-scenarios-1/zh-cn_topic_0000001197755593.html
9.
https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/8/html-single/8.10_release_notes/index

在IT运维工作中,监控主机的硬盘故障排查是一个常见的挑战。当系统出现性能瓶颈或异常时,如何快速定位问题根源是每个运维人员都需要掌握的技能。本文将介绍一个强大的工具——iostat命令,它能帮助你轻松搞定监控主机的硬盘故障排查。

01

iostat命令详解

iostat是Linux系统中用于监控CPU使用率和磁盘I/O状态的常用工具。它能够提供详细的系统输入输出统计信息,帮助运维人员快速定位性能瓶颈。

iostat的输出主要包含两部分:avg-cpu和Device。

avg-cpu部分

avg-cpu部分显示CPU的平均使用情况,具体字段如下:

  • %user:用户模式下运行的时间百分比。高值表示用户进程占用较多CPU资源,通常高于70%需要关注。
  • %nice:低优先级进程占用的时间百分比。通常低于5%是正常的,高于10%可能需要关注。
  • %system:内核模式下运行的时间百分比。高值表示系统调用或内核进程占用了较多CPU资源,通常高于20%需要关注。
  • %iowait:CPU等待I/O操作完成的时间百分比。高值表示系统可能存在I/O瓶颈,通常高于10%需要关注。
  • %steal:虚拟机管理程序为了服务其他虚拟处理器而花费的时间百分比。高值表示虚拟化环境中资源竞争激烈,通常高于5%需要关注。
  • %idle:CPU空闲且没有任务需要处理的时间百分比。高值表示系统处于空闲状态,通常低于20%需要关注。

Device部分

Device部分显示磁盘设备的I/O统计信息,具体字段如下:

  • 磁盘设备的名称(例如sda、sdb)。
  • tps (transactions per second):每秒钟传输到设备或从设备传输的数据块数目。高值表示磁盘I/O操作频繁,通常高于1000需要关注。
  • kB_read/s:每秒从设备读取的数据量(以千字节为单位)。高值表示读取操作频繁,通常高于100MB/s需要关注。
  • kB_wrtn/s:每秒写入设备的数据量(以千字节为单位)。高值表示写入操作频繁,通常高于100MB/s需要关注。
  • kB_read:自系统启动以来从设备读取的总数据量(以千字节为单位)。
  • kB_wrtn:自系统启动以来写入设备的总数据量(以千字节为单位)。
02

实战案例:使用iostat排查磁盘I/O瓶颈

让我们通过一个实际案例来说明iostat在硬盘故障排查中的应用。

假设我们遇到一个场景:在高并发业务环境下,系统响应变慢,处理时间延长。我们怀疑是磁盘I/O问题,决定使用iostat进行排查。

  1. 首先查看系统整体状态:
top

输出显示:

top - 19:49:05 up 10 days,  8:16,  2 users,  load average: 72.56, 40.21, 17.08
Tasks: 1288 total,   1 running, 586 sleeping,   0 stopped,   0 zombie
%Cpu(s): 19.7 us,  4.2 sy,  0.0 ni, 75.9 id,  1.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem : 53542118+total, 23667507+free, 22735366+used, 71392448 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 23128006+avail Mem 

从输出可以看出,目前一分钟负载为72.56,且呈上升趋势,同时存在I/O压力(%iowait为1.0)。

  1. 查看各个磁盘设备的I/O情况:
iostat -m -x 1

输出显示:

Linux 4.14.0-115.el7a.0.1.aarch64 (mysql-4)  01/08/2022  _aarch64_ (128 CPU)
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00 14213.00 27430.00   222.08   465.15    33.80     5.39    0.13    0.14    0.12   0.02  86.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

从输出可以看出,sda磁盘的I/O压力较大,%util高达86.00,说明磁盘使用率非常高。

  1. 进一步检查sda磁盘的I/O读写情况:
iostat -d /dev/sda -m -x 1

输出显示:

Linux 4.14.0-115.el7a.0.1.aarch64 (mysql-4)  01/08/2022  _aarch64_ (128 CPU)
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda            0.00     0.17    7.86   81.23     0.29     3.96    97.88     0.23    2.53    0.22    2.76   0.04   0.33
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda            0.00     0.00 21109.00 42839.00   329.81   710.90    33.33    19.47  

从输出可以看出,sda磁盘的tps高达63948(21109+42839),且读写速度分别达到329.81MB/s和710.90MB/s,远超过正常阈值,确认存在严重的I/O瓶颈。

03

iostat与其他监控工具的对比

在Linux系统中,常用的性能监控工具还包括sar等。与sar相比,iostat具有以下优势:

  1. 更专注于CPU和磁盘I/O的详细统计,输出信息更直观。
  2. 提供了更多的磁盘I/O相关指标,如tps、kB_read/s、kB_wrtn/s等。
  3. 实时性更好,能够更快地反映系统状态变化。
04

使用建议

  1. 在日常运维中,建议定期使用iostat检查系统I/O状态,特别是在高并发或关键业务场景下。
  2. 当发现I/O瓶颈时,可以结合其他工具(如iotop、vmstat)进一步定位问题。
  3. 注意区分正常业务高峰和异常I/O负载,避免误判。

通过掌握iostat命令的使用,运维人员可以更高效地应对监控主机的硬盘故障问题,及时发现并解决性能瓶颈,保障系统的稳定运行。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号