# Linux云服务器磁盘I/O负载高怎么办？
#### 问题描述
- 出现系统运行卡顿、文件读写变慢、应用性能下降或内部服务响应慢等问题。
- 通过ECS控制台查看实例磁盘I/O负载监控时，发现磁盘I/O负载过高（参考值：当前I/O读写≥该云盘I/O性能指标的80%，可认为I/O负载过高）。
- 收到了磁盘I/O负载超过设定阈值的告警信息。
 
#### 排查步骤
本文相关操作命令以CentOS 7.9 64位操作系统为例。其它版本的Linux操作系统命令可能有所差异，具体情况请参阅相应操作系统的官方文档。
1. 使用iostat查看整体磁盘I/O负载。 
   iostat是一款Linux系统中监控I/O性能的工具，可以查看磁盘整体I/O负载情况。
   1. 登录弹性云服务器，具体操作，请参见[Linux ECS登录方法概述](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771089.html)。
   
   2. 执行如下命令，查看系统I/O负载情况。 **sudo iostat -dmxy 3 5**
      如遇到"iostat: command not found"说明命令未安装，需要先执行sudo yum install sysstat --y安装。
      ![](https://support.huaweicloud.com/ecs_faq/public_sys-resources/note_3.0-zh-cn.png)
      - -d：仅显示设备统计信息，不显示CPU使用情况。
      
      - -m：以MB为单位显示。
      
      - -x：显示扩展信息。
      
      - -y：省略自系统启动以来的第一个统计报告。
      
      - 3：统计时间间隔。
      
      - 5：统计次数。
       
      图1操作结果   
      ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002372255353.png "点击放大")
      回显结果中各项参数说明如下。更多参数说明，请运行**man iostat**查看。
      重点关注以下统计值：
      - Device**：**磁盘设备名称。
      
      - r/s：每秒读操作次数。
      
      - w/s：每秒写操作次数。
      
      - rMB/s：磁盘读速率，单位MB。
      
      - wMB/s：磁盘写速率，单位MB。
      
      - r_await、w_await：磁盘读、写时延，单位为毫秒ms。
      
      - %util：io利用率，代表磁盘的繁忙程度。 云盘性能规格详见[云硬盘类型及性能介绍](https://support.huaweicloud.com/productdesc-evs/zh-cn_topic_0014580744.html)。
        
       
   
   
   
   
2. 使用iotop查看进程的磁盘IO负载。 
   iotop是一个用来监视磁盘I/O使用状况的工具，可以查看单个进程的磁盘IO负载。
   1. 执行如下命令，安装iotop。 **HCE / CentOS / Euler：yum install -y iotop**
      **Ubuntu / Debian：apt install iotop**
      
   
   2. 执行如下命令，查看磁盘I/O负载。 **sudo iotop -Pk**
      ![](https://support.huaweicloud.com/ecs_faq/public_sys-resources/note_3.0-zh-cn.png)
      - -P：显示PID。
      
      - -k：以KB为单位显示。
       
      回显结果示例如下。输出结果默认按IO列排序，可以使用按键的左右方向键切换排序。如需退出程序，请按q键。
      图2操作结果   
      ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002338137280.png "点击放大")
      关于回显结果的参数说明如下
      - PID：进程ID。
      
      - DISK READ：进程读操作的I/O速度。
      
      - DISK WRITE：进程写操作的I/O速度。
      
      - SWAPIN：进程等待从交换空间（Swap Space）换入（Swap In）内存页面所占用的 CPU 时间百分比。
      
      - IO：进程因 I/O 等待所占用的 CPU 时间百分比（包括 Swap 换入和磁盘 I/O 等待）。
      
      - COMMAND：进程的命令名称。
       
   
   
   
   
3. 处理磁盘I/O负载高的问题。 
   表1磁盘I/O负载高问题原因及解决方案 
   | **问题现象**                                                | **原因**                                                                                                             | **解决方案**                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|:---|
   | 异常用户程序或进程长时间占用大量磁盘I/O资源。                                | 该程序为异常程序或进程，运行时占用过多磁盘I/O资源。                                                                                        | 通过在iotop工具定位到占用磁盘I/O资源较多的程序的PID，并通过**sudo kill -9 \<PID\>**来结束该进程。 注意： 在您结束进程前，请务必确保您了解该进程的相关信息，避免因误操作导致您的业务中断。 如果怀疑进程为恶意程序，您可以对其进行查杀，相关操作请参见[病毒查杀](https://support.huaweicloud.com/usermanual-hss2.0/hss_01_0583.html)。                                                                                                                                                        |
   | 正常用户程序或进程长时间占用大量磁盘I/O资源。                                | 该程序为正常业务程序或进程，运行时占用过多磁盘I/O资源。                                                                                      | 如果云盘出现磁盘I/O性能瓶颈，您可以根据实际情况选择对应的处理方案： - **变更云盘类型** ：当使用SSD云盘出现磁盘I/O瓶颈时，您可以选择更换云盘类型为ESSD，以提升云盘性能。相关操作，请参见[变更云盘类型](https://support.huaweicloud.com/usermanual-evs/evs_01_0062.html)。  - **通过LVM提升云盘性能：** 详见[如何提升云硬盘的性能](https://support.huaweicloud.com/bestpractice-evs/evs_02_0002.html)。   |
   | 收到磁盘I/O使用率高的告警，iostat查看%util值很高（\>90%）。但磁盘的iops或者吞吐量不高。 | iostat自身统计问题                                                                                                       | 查看磁盘时延await指标，如果await不高（\<1ms）则无需处理。由于磁盘支持并发IO，%util仅代表磁盘的繁忙程度，无法反应磁盘是否到达IO瓶颈。 云盘性能规格详见[云硬盘类型及性能介绍](https://support.huaweicloud.com/productdesc-evs/zh-cn_topic_0014580744.html)。                                                                                                                                                                                                                               |
   | 磁盘IO读写高，iotop输出显示jbd2进程IO列占比最高。                         | jbd2（Journaling Block Device 2）是ext3/ext4文件系统的日志管理进程，负责元数据操作的原子性和崩溃恢复。jbd2高I/O占用源于频繁的日志提交，在大量小文件写入、大量直接IO或元数据变更时触发 | jbd2进程不是引起高IO问题的元凶，需要找到实际产生高IO的进程，查看iotop的DISK READ和DISK WRITE列。                                                                                                                                                                                                                                                                                                                                                                            |
      
   
   
 
