【工作必备知识】Linux磁盘I/O故障排查分析定位 iostat 介绍

本文主要是介绍【工作必备知识】Linux磁盘I/O故障排查分析定位 iostat 介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【工作必备知识】Linux磁盘I/O故障排查分析定位 iostat 介绍

大家好,我是秋意零。

前言:今天,介绍Linux磁盘I/O故障排查时,必备命令iostat。该命令是监视系统I/O设备使用负载,它可以实时监视IO设备,从而帮助我们进行分析定位问题。

iostat 命令介绍

iostat 命令:监视系统I/O设备使用负载

语法:iostat [选项] [时间间隔 interval] [次数 count]

常用参数:

  • -c:显示CPU使用情况
  • -y:跳过不显示第一次报告的数据
  • -d:显示磁盘使用情况
  • -k:以KB为单位显示磁盘读写数据量
  • -m:以MB为单位显示磁盘读写数据量
  • -N:显示磁盘阵列(LVM)信息
  • -n:显示NFS使用情况
  • -p [磁盘]:显示指定磁盘或所有磁盘和分区的统计信息
  • -t:显示终端和CPU的信息
  • -x:显示详细信息,包括额外的设备和CPU统计
  • -V:显示版本信息

命令解析

1)iostat 默认输出

第一行:Linux 5.10.134-16.1.al8.x86_64 (blog) 06/10/2024 _x86_64_ (2 CPU)

参数解释
Linux 5.10.134-16.1.al8.x86_64 (blog)操作系统内核版本、主机名(blog)
06/10/2024统计日期(2024年6月10日)
x86_64系统是64位
(2 CPU)2个CPU核心

第二行,CPU的平均使用率(avg-cpu):avg-cpu: %user %nice %system %iowait %steal %idle

参数解释
%user用户态CPU时间占比,表示用户进程消耗的CPU时间百分比,< 60%
%nice以低优先级(nice)运行的用户进程占用的CPU时间百分比
%system内核态CPU时间占比,即操作系统内核自身消耗的CPU时间百分比,sy+us < 80%
%iowait(重要)I/O等待,表示CPU在空闲时因等待I/O操作完成所花费的时间百分比,< 30%
%steal在虚拟化环境中,被hypervisor强制其他VM占用的CPU时间百分比
%idleCPU空闲时间百分比

一般来说 %idle 持续游走在 20%以下,瓶颈出现在CPU的性能层面,%iowait 高而 %idle 在 70%以上,瓶颈出现在 I/O 设备层面

第三行,磁盘设备的I/O统计信息(Device):Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn

参数解释
Device设备名dm 是 disk mapper 的缩写 可以在 /dev/mapper下查对应谁。参数-N 可以将 dm 转换成相应的 LVM名
tps每秒传输次数(Transactions Per Second),表示每秒磁盘完成的I/O操作数量
kB_read/s每秒从磁盘读取的数据量(以KB为单位),参数-m可以以MB为单位
kB_wrtn/s每秒向磁盘写入的数据量(以KB为单位)
kB_read总共从磁盘读取的数据量(以KB为单位)
kB_wrtn总共向磁盘写入的数据量(以KB为单位)

2)iostat 详细参数输出:iostat -x -d -y 1 3

参数解释:

  • r/s: 每秒读取操作次数
  • w/s: 每秒写入操作次数
  • rkB/s: 每秒从设备读取的数据量
  • wkB/s: 每秒向设备写入的数据量
  • rrqm/s: 每秒读请求合并次数,即读操作中有多少请求被合并执行
  • wrqm/s: 每秒写请求合并次数,同理,此处也没有写请求合并,值为0.00
  • %rrqm: 读请求合并的百分比,既然没有读请求合并,所以是0.00%
  • %wrqm: 写请求合并的百分比
  • r_await: 平均每次读操作的等待时间,包括等待时间和实际服务时间
  • w_await: 平均每次写操作的等待时间
  • aqu-sz: 平均I/O队列长度,也就是平均有多少个I/O请求在等待处理
  • rareq-sz: 平均读请求大小
  • wareq-sz: 平均写请求大小
  • svctm: 平均服务时间,即I/O操作实际处理时间
  • %util: 设备利用率

%util 表示该设备有I/0非空闲的时间比率,不考虑I/0有多少。由于硬盘设备有并行处理多个I/0请求的能力,所以%util即使达到100%也不意味着设备饱和了。

r_await、w_await 多大算有问题?

一般情况下:

  • 对于机械硬盘(HDD),如果r_awaitw_await持续高于10-20毫秒,可能表明存在I/O延迟问题(机械硬盘 await=寻道延迟+旋转延迟+传输延迟rpm 10000为8.38ms)
  • 对于固态硬盘(SSD),由于其更快的读写速度,理想的r_awaitw_await应该更低,通常认为超过1-5毫秒可能需要关注

End

参考:

Linux I/O问题排查 哪个设备的问题 iostat命令详解_哔哩哔哩_bilibili

运维工程师系列-掌握iostat命令给你月薪加1000_哔哩哔哩_bilibili

这篇关于【工作必备知识】Linux磁盘I/O故障排查分析定位 iostat 介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1050144

相关文章

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期