症状: - "EXT4-fs error" 或类似文件系统特定的错误消息 - 系统日志中出现"I/O error"或"filesystem corruption"警告 - 文件无法读取或写入
解决方法:
# 首先卸载文件系统
umount /dev/sdX
# 运行文件系统检查修复
fsck -y /dev/sdX
# 对于ext3/ext4文件系统,也可以使用
e2fsck -f -y /dev/sdX
症状: - "Buffer I/O error" 或 "Sector not found" 错误 - 读写速度突然下降 - 系统日志中出现"S.M.A.R.T."警告
解决方法:
# 检查磁盘坏道
badblocks -v /dev/sdX > bad-blocks.txt
# 标记坏块(对于ext文件系统)
e2fsck -l bad-blocks.txt /dev/sdX
# 对于严重损坏的磁盘,考虑更换
症状: - "No space left on device" 错误 - df命令显示使用率接近100%
解决方法:
# 查找大文件
du -sh /* 2>/dev/null | sort -h
du -sh /home/* 2>/dev/null | sort -h
# 清理日志文件
journalctl --vacuum-size=100M
rm /var/log/*.gz
# 查找并删除大文件
find / -type f -size +100M -exec ls -lh {} \;
症状: - "Permission denied" 错误 - 无法创建或修改文件
解决方法:
# 检查权限
ls -la /path/to/file
# 修改权限
chmod 755 /path/to/file
chown user:group /path/to/file
症状:
- 系统响应缓慢
- top
或iotop
显示高%wa(等待IO的CPU时间)
解决方法:
# 识别高IO进程
iotop -o
# 查看磁盘IO状态
iostat -x 1
# 解决方案可能包括:
# - 优化数据库查询
# - 减少小文件IO
# - 增加RAM以减少交换
# - 考虑使用SSD
症状: - "Device or resource busy" 错误 - 无法卸载设备
解决方法:
# 查找使用设备的进程
lsof /dev/sdX
fuser -vm /mount/point
# 终止相关进程
kill -9 [PID]
# 强制卸载(谨慎使用)
umount -f /mount/point
症状: - "Input/output error" 消息 - 文件访问失败
解决方法:
# 检查dmesg获取详细错误
dmesg | tail -20
# 尝试重新挂载
umount /dev/sdX
mount /dev/sdX /mount/point
# 如果问题持续,可能是硬件故障
# 安装smartmontools
sudo apt install smartmontools # Debian/Ubuntu
sudo yum install smartmontools # RHEL/CentOS
# 检查磁盘健康状态
smartctl -a /dev/sdX
# 运行短期测试
smartctl -t short /dev/sdX
# 查看测试结果
smartctl -l selftest /dev/sdX
# 使用hdparm测试读取速度
hdparm -Tt /dev/sdX
# 使用dd测试写入速度(谨慎使用)
dd if=/dev/zero of=/tmp/test bs=1M count=1024 conv=fdatasync
# 实时监控磁盘活动
iostat -x 1
vmstat 1
# 查看IO等待
sar -u 1
定期维护:
硬件监控:
配置优化:
备份策略:
通过以上方法和工具,大多数Linux磁盘和IO问题都可以被诊断和解决。对于严重的硬件问题,建议及时更换磁盘以避免数据丢失。