当前位置:网站首页 >  百科

Linux服务器磁盘读写异常排查定位与修复全流程实操指南

时间:2026年06月01日 16:59:47 来源:易频IT社区

第一步:快速确认磁盘读写异常状态

先确认是否真的存在磁盘读写异常,通过系统工具快速定位,操作步骤如下:

1. 安装监控工具iostat

最小化安装的系统默认不带该工具,直接执行对应命令安装:

  • CentOS/RHEL 系列:yum install sysstat -y
  • Ubuntu/Debian 系列:apt install sysstat -y

2. 查看磁盘整体负载

执行命令获取5秒内的磁盘状态:iostat -x 1 5

判断异常的标准:如果输出中%util字段连续超过80%,同时rMB/s(读)、wMB/s(写)接近磁盘标称最大读写速度,即可判定存在读写异常。普通SATA机械盘最大持续读写约150MB/s,普通SSD约500MB/s,可自行对比。

第二步:定位异常来源

确认异常后,立刻定位是哪个进程、哪个目录导致的异常:

1. 定位高IO进程

先安装iotop工具:

  • CentOS/RHEL:yum install iotop -y
  • Ubuntu/Debian:apt install iotop -y

执行命令,只显示正在产生读写的进程:sudo iotop -o

输出第一列是进程ID,最后一列是进程名称,可直接看到哪个进程持续产生大量IO。

2. 定位大文件/大量小文件目录

如果进程定位后需要找到对应异常文件,直接执行以下命令找出所有大于1GB的文件:

``` find / -type f -size +1G -exec ls -lh {} \; ```

如果怀疑是大量小文件占满inode,执行以下命令找出inode占用最多的10个目录:

``` find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n | tail -10 ```

Linux服务器磁盘读写异常排查定位与修复全流程实操指南

输出最后一行就是inode占用最多的目录,直接进入清理即可。

第三步:常见异常修复实操

按照定位结果,对应不同原因执行修复:

1. 异常进程/日志占满IO修复

如果是无关异常进程,直接执行命令杀死进程:kill -9 你的进程ID

如果是业务进程因为日志过大导致的持续读写,按照以下步骤操作:

  • 第一步:清空无用大日志,禁止直接删除正在被写入的文件,直接删除会导致文件句柄不释放,磁盘空间无法回收,正确命令为:cat /dev/null > /你的日志路径/日志文件名.log,执行后立刻释放空间,不影响进程运行。
  • 第二步:配置日志自动切割,避免复发,直接新建配置文件/etc/logrotate.d/你的应用名,填入以下可直接复用的配置:
``` /opt/你的应用/logs/.log { daily rotate 7 missingok notifempty compress sharedscripts postrotate endscript } ```

该配置会每天自动切割日志,保留最近7天的压缩日志,不需要额外修改即可使用。

2. 磁盘空间/inode占满修复

先执行两个命令确认占用:df -h查看磁盘块空间使用率,df -i查看inode使用率,只要任意一项使用率达到100%,就会出现无法写入的读写异常

块空间占满通过上文的find命令找到大文件,清空或删除即可;inode占满通过上文的命令找到小文件目录,删除无用临时文件即可释放inode。

3. 文件系统损坏修复

如果读写时出现Input/output error报错,大概率是文件系统损坏,修复步骤:

  • 第一步:卸载损坏分区,如果提示device is busy,执行fuser -mv 你的挂载点找出所有占用进程,杀死后再卸载,卸载命令:umount /dev/你的分区名
  • 第二步:根据文件系统类型执行修复:
    • ext4文件系统:e2fsck -f /dev/你的分区名
    • xfs文件系统:xfs_repair /dev/你的分区名
  • 第三步:修复完成后重新挂载:mount /dev/你的分区名 你的挂载点

4. 硬件故障修复

执行命令查看磁盘硬件报错:dmesg | grep -i error,如果输出有IO error、medium error等关键词,说明磁盘存在坏道或硬件故障,云服务器直接提交工单更换数据盘,物理服务器直接更换硬盘迁移数据即可。

修复完成后验证

修复完成后执行以下步骤验证:

  1. 重新执行iostat -x 1 3,确认%util降到30%以下,读写速度恢复正常水平
  2. 执行df -hdf -i,确认使用率都低于100%
  3. 测试写入速度,执行命令:dd if=/dev/zero of=/tmp/test bs=1M count=100 oflag=direct,写入速度符合磁盘标称水平即为正常,测试完成后删除测试文件:rm /tmp/test

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图