讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux磁盘读写慢怎么办_IO调优思路完整说明【教程】

夜明君_5559

夜明君_5559

发布时间:2025-12-18 16:28:02

|

450人浏览过

|

来源于php中文网

原创

Linux磁盘读写慢需四步排查:先用iostat确认硬盘负载,再用iotop定位高IO进程,接着用lsof和strace分析具体读写文件及系统调用,最后检查IO调度器匹配性与硬盘健康状态。

linux磁盘读写慢怎么办_io调优思路完整说明【教程】

Linux磁盘读写慢,不能只盯着“换硬盘”或“加内存”,得先理清IO路径上的关键节点:是不是硬盘真忙?谁在猛写?写的是什么?调度策略配对了吗?硬件本身还健康吗?下面四步层层递进,帮你把问题从表象挖到根上。

确认硬盘是否真的处于高负载

别凭感觉判断“慢”,先看数据。运行 iostat -x 1,重点关注三列:

  • %util:持续接近或超过95%,说明磁盘基本满负荷运转;
  • await:平均每次I/O请求等待时间,超过20ms就值得警惕,超50ms大概率存在瓶颈;
  • r/s 和 w/s:每秒读/写请求数,结合设备类型看是否合理(比如机械盘随机写超100 IOPS就已吃紧)。

如果 %util 很低但 await 很高,可能是队列堆积或调度策略不匹配;如果 %util 高且 r/w 频繁,就要往下查是哪个进程在驱动这些IO。

定位高IO消耗的进程

用 iotop -o(只显示正在做IO的进程),按I/O%列排序,一眼就能揪出“IO大户”。重点关注:

  • 进程名是否合理(如 mysqld、rsync、java 应用、日志轮转脚本);
  • 读写速率(B/s)是否异常(例如一个后台脚本持续写入200MB/s);
  • 是否处于 D 状态(不可中断睡眠),这往往意味着它卡在底层IO上,需结合栈信息进一步分析。

确认PID后,别急着kill,先保留现场:记录时间点、命令行(ps -fp PID)、打开文件(下一步要用)。

java-api-doc-generator
java-api-doc-generator

分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。

下载

分析进程到底在读写哪些文件

拿到PID,执行 lsof -p PID | grep -E "(REG|DIR)",筛选出普通文件和目录。重点看:

  • 大日志文件(如 /var/log/messages、应用自定义log)是否被反复truncate或追加;
  • 数据库数据文件(如 /var/lib/mysql/xxx.ibd)或WAL日志(如 pg_wal/)是否持续刷写;
  • 临时文件(/tmp、/var/tmp)是否被频繁创建删除,可能暴露应用设计缺陷。

再配合 strace -p PID -e trace=write,open,fsync 短时抓取系统调用,能看清是写小块还是大块、是否频繁fsync——这对后续调优(如调整innodb_flush_log_at_trx_commit或禁用atime)直接有用。

检查并优化IO调度与硬件状态

这一步分两线并行:

  • 调度器是否匹配硬件:
    运行 cat /sys/block/sda/queue/scheduler,括号里标出当前生效算法。原则很明确:
    – SSD/RAID/NVMe → 选 noop 或 kyber(较新内核);
    – 机械盘跑数据库 → 选 deadline;
    – 多用户共享服务器(如Web+FTP)→ 可试 cfq 或现代替代 bfq。
    临时切换:echo deadline > /sys/block/sda/queue/scheduler;永久生效需改GRUB参数 elevator=deadline 并更新配置。
  • 硬盘本身是否可靠:
    用 smartctl -a /dev/sda 查看Reallocated_Sector_Ct、Pending_Sector等关键SMART值;
    用 badblocks -v /dev/sda1(需卸载)扫描坏道;
    若发现大量重映射扇区或读取超时,备份后换盘是唯一稳妥方案。

顺手还可调两个实用参数:
– 提高预读量(适合顺序读大文件):echo 8192 > /sys/block/sda/queue/read_ahead_kb;
– 增大队列深度(提升并发吞吐):echo 512 > /sys/block/sda/queue/nr_requests。

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2393

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1439

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

855

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3352

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

5748

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1239

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6011

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

5222

2023.08.14

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 193人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn