磁盘分析诊断命令
大约 3 分钟运维linux
iostat
iostat主要用于输出磁盘IO 和 CPU的统计信息。安装命令:
yum install sysstat
相关参数如下:
- -c: 显示CPU使用情况
- -d: 显示磁盘使用情况
- -N: 显示磁盘阵列(LVM) 信息
- -n: 显示NFS 使用情况
- -k: 以 KB 为单位显示
- -m: 以 M 为单位显示
- -t: 报告每秒向终端读取和写入的字符数和CPU的信息
- -V: 显示版本信息
- -x: 显示详细信息
- -p:[磁盘] 显示磁盘和分区的情况
常用分析命令: iostat -xd 2
每隔2秒,显示一次设备统计信息。示例如下:
相关属性解释如下:
- tps:每秒钟发送到的I/O请求数。
- Blk_read/s:每秒读取的block数。
- Blk_wrtn/s:每秒写入的block数。
- Blk_read:读入的block总数。
- Blk_wrtn:写入的block总数。
- rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
- wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
- r/s: 每秒完成的读 I/O 设备次数。即 rio/s
- w/s: 每秒完成的写 I/O 设备次数。即 wio/s
- rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
- wkB/s: 每秒写K字节数。是 wsect/s 的一半。
- avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
- avgqu-sz: 平均I/O队列长度。
- rsec/s: 每秒读扇区数。即 rsect/s
- wsec/s: 每秒写扇区数。即 wsect/s
- **r_await:**每个读操作平均所需的时间,不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间。
- **w_await:**每个写操作平均所需的时间,不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间。
- await: 平均每次设备I/O操作的等待时间 (毫秒)。
- svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
- %util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
我们分析IO问题时,如果await大于svctm,await-svctm差值越小,则说明队列时间越短, 反之差值越大,队列时间越长,说明磁盘io有性能问题。
iotop
查看占用磁盘io最大的几个进程。
安装命令:
yum install -y iotop
相关参数:
- -o,只显示正在产生I/O的进程或线程,运行过程中,可以通过按o随时切换
- -b,非交互式下运行,一般用来记录日志
- -n NUM,设置监控(显示)次数,主要用于非交互式,默认无限
- -d SEC,设置显示的间隔秒数,支持非整数
- -p PID,只显示指定进程(PID)的信息
- -u USER,显示指定用户的进程信息
- -P,只显示进程,不显示所有线程
- -a,累积的I/O,显示从iotop启动后每个进程累积的I/O总数,便于诊断问题
- -k,显示使用KB单位
- -t,非交互模式下,加上时间戳
- -q,只在第一次监测时显示列名.
示例如下:
相关属性解释如下:
- Total DISK READ:从磁盘中读取的总速率
- Total DISK WRITE:往磁盘里写入的总速率
- Actual DISK READ:从磁盘中读取的实际速率
- Actual DISK WRITE:往磁盘里写入的实际速率
- TID:线程ID,按p可转换成进程ID
- PRIO:优先级
- USER:线程所有者
- DISK READ:从磁盘中读取的速率
- DISK WRITE:往磁盘里写入的速率
- SWAPIN:swap交换百分比
- IO>:IO等待所占用的百分比