本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
使用Linux实例时,如果遇到实例运行卡顿或文件读写速度较慢等问题,可能是磁盘I/O 负载高导致,您可以参考本文内容排查并解决问题。
问题现象
使用Linux系统的ECS实例时,出现如下现象。
- 出现系统运行卡顿、文件读写变慢、应用性能下降或内部服务响应慢等问题。 
- 通过ECS控制台查看实例磁盘I/O负载监控时,发现磁盘I/O负载过高(参考值:当前I/O读写≥该云盘I/O性能指标的80%,可认为I/O负载过高)。 
- 收到了磁盘I/O负载超过设定阈值的告警信息。 
可能原因
引起磁盘I/O负载过高的常见原因如下:
- 异常的进程或服务占用大量磁盘I/O,导致磁盘I/O负载过高。 
- 业务程序及业务场景对实例的磁盘I/O负载要求较高,实例的磁盘I/O性能不足以支撑业务开展所需的磁盘I/O性能要求。 
排查步骤
要定位磁盘I/O负载过高的问题,您可以参见下述操作步骤进行问题的排查定位。
使用iostat查看整体磁盘I/O负载
iostat是一款Linux系统中监控I/O性能的工具,可以查看磁盘整体I/O负载情况。
- 执行如下命令,查看系统I/O负载情况。 - sudo iostat -d -m 3 5说明- -d:仅显示设备统计信息,不显示CPU使用情况。 
- -m:以MB为单位显示。 
- 3:统计时间间隔。 
- 5:统计次数。 
 - 回显结果示例如下。 - Linux 5.10.134-18.al8.x86_64 (iZbpxxxxxxxxxxxxxxxaqhZ) 04/07/2025 _x86_64_ (4 CPU) Device tps MB_read/s MB_wrtn/s MB_read MB_wrtn vda 145.67 0.00 126.81 0 380 vdb 0.00 0.00 0.00 0 0 Device tps MB_read/s MB_wrtn/s MB_read MB_wrtn vda 161.33 0.00 127.24 0 381 vdb 0.00 0.00 0.00 0 0 ......- 显示结果中各项参数说明如下。更多参数说明,请运行 - man iostat查看。- Device:磁盘名称。 
- tps:每秒I/O请求数。 
- MB_read/s:每秒文件读取速度。 
- MB_wrtn/s:每秒文件写入速度。 
- MB_read:读取的文件大小。 
- MB_wrtn:写入的文件大小。 
 
- 若检测到磁盘I/O实际性能显著低于阿里云官方公布的块存储服务性能指标,建议您优先检查磁盘分区是否完成4K对齐。通过确认分区对齐状态,可快速定位因对齐配置不当导致的性能损耗问题。 
- 关于块存储性能的更多信息,请参见块存储性能。 
使用iotop查看进程的磁盘IO负载
iotop是一个用来监视磁盘I/O使用状况的工具,可以查看单个进程的磁盘IO负载。
- 执行如下命令,安装iotop。 - Alibaba Cloud Linux / CentOS / Fedora- sudo yum install -y iotop- Ubuntu / Debian- sudo apt install -y iotop- openSUSE- sudo zypper install -y iotop
- 执行如下命令,查看磁盘I/O负载。 - sudo iotop -P -k -d 3说明- -P:显示PID。 
- -k:以KB为单位显示。 
- -d:统计时间间隔,单位为秒,默认值为1。 
 - 回显结果示例如下。如需退出程序,请按 - q键。- Total DISK READ : 0.00 K/s | Total DISK WRITE : 80373.45 K/s Actual DISK READ: 0.00 K/s | Actual DISK WRITE: 127781.85 K/s PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 17250 be/4 root 0.00 K/s 80354.87 K/s 0.00 % 95.99 % dd if=/dev/zero of=/mnt/dev_vdb/swap bs=1M count=10240 15192 be/3 root 0.00 K/s 6.64 K/s 0.00 % 60.56 % [jbd2/vdb1-8] 17152 be/4 root 0.00 K/s 0.00 K/s 0.00 % 59.55 % [kworker/u8:0 ......- 关于回显结果的参数说明如下,更多参数说明,可执行 - iotop -h查询。- PID:进程ID。 
- DISK READ:进程读操作的I/O速度。 
- DISK WRITE:进程写操作的I/O速度。 
- SWAPIN:进程等待从交换空间(Swap Space)换入(Swap In)内存页面所占用的 CPU 时间百分比。 
- IO>:进程因 I/O 等待所占用的 CPU 时间百分比(包括 Swap 换入和磁盘 I/O 等待)。 
- COMMAND:进程的命令名称。 
 
如果定位到kjournald进程占用较高磁盘I/O资源,建议修改对应分区的Journal size参数解决该问题。具体操作,请参见kjournald进程占用较高磁盘I/O资源问题处理。
处理磁盘I/O负载高的问题
常见磁盘I/O负载高问题原因及解决方案如下。
| 问题现象 | 原因 | 解决方案 | 
| 异常用户程序或进程长时间占用大量磁盘I/O资源。 | 该程序为异常程序或进程,运行时占用过多磁盘I/O资源。 | 通过在iotop工具定位到占用磁盘I/O资源较多的程序的PID,并通过 警告  在您结束进程前,请务必确保您了解该进程的相关信息,避免因误操作导致您的业务中断。 | 
| 正常用户程序或进程长时间占用大量磁盘I/O资源。 | 该程序为正常业务程序或进程,运行时占用过多磁盘I/O资源。 | 如果云盘出现磁盘I/O性能瓶颈,您可以根据实际情况选择对应的处理方案: 
 | 
| 
 | 当前实例的服务正常运行所需磁盘I/O资源性能大于实例的磁盘I/O性能。 | 
常见问题
检查磁盘分区是否完成4K对齐
kjournald进程占用较高磁盘I/O资源问题处理
相关文档
- 关于Windows系统磁盘I/O负载高的问题排查定位,请参见Windows系统磁盘I/O负载较高问题的排查与处理。 
- 关于如何使用atop工具监控Linux系统指标的更多信息,请参见使用atop工具监控Linux系统指标。