Linux 硬盘故障排查与处理文档
一、问题现象
-
系统启动后发现根分区挂载为 只读 (ro)
示例:/dev/sda2 on / type ext4 (ro,relatime,stripe=64) -
部分磁盘无法识别,
fdisk -l或lsblk没有显示 -
dmesg或/var/log/syslog中有 I/O 错误或磁盘掉线日志
二、排查流程
1. 查看磁盘挂载状态
mount | grep sd
确认是否有磁盘被挂载为 ro。
2. 检查系统日志
dmesg | egrep -i "error|fail|sda|sdb"
journalctl -xe | egrep -i "error|fail|sda|sdb"
关注是否有:
-
I/O error
-
Buffer I/O error
-
EXT4-fs error
-
硬盘掉线/重连
3. 检查磁盘分区与文件系统
lsblk -f
blkid
确认文件系统类型是否识别(ext4、xfs 等)。
如果显示 unknown 或无法识别 → 可能是分区表损坏。
4. 检查磁盘健康状态 (SMART)
安装工具:
apt-get install smartmontools # Debian/Ubuntu
yum install smartmontools # CentOS/RHEL
检测:
smartctl -a /dev/sda
smartctl -H /dev/sda
关注字段:
-
Reallocated_Sector_Ct -
Current_Pending_Sector -
Offline_Uncorrectable -
SMART overall-health self-assessment
5. 扫描坏块
badblocks -sv /dev/sda
注意:在线系统谨慎使用,可能导致 I/O 性能下降。建议在维护窗口执行。
6. 检查文件系统并修复
只读挂载时,先卸载(或在单用户模式执行):
umount /dev/sda2
e2fsck -f -y /dev/sda2
如果是 xfs 文件系统:
xfs_repair /dev/sda2
7. 检查磁盘控制器/RAID 状态
-
如果是 RAID 控制器 (megacli / storcli):检查物理盘和阵列健康
-
如果是 LSI / HBA,用
megacli -PDList -aALL或storcli /c0 show all
8. 持续监控
-
建议安装 smartd 守护进程,定期监控硬盘健康
-
结合 Prometheus + Node Exporter 采集磁盘 I/O 与错误指标
三、常见处理建议
-
临时修复
-
fsck或xfs_repair修复文件系统 -
重新挂载为读写:
mount -o remount,rw /
-
-
永久修复
-
确认 SMART 状态 → 硬盘若存在大量坏块或 Pending sector,建议 更换硬盘
-
RAID 环境下 → 替换坏盘并重建阵列
-
单盘环境 → 及时备份数据并更换硬盘
-
四、总结
-
读写变只读:通常是文件系统检测到严重 I/O 错误,自动保护机制。
-
日志检查:优先看
dmesg和journalctl。 -
SMART/坏块检测:判断硬件健康与否。
-
修复工具:ext4 →
fsck,xfs →xfs_repair。 -
最终方案:修复只能缓解,长期稳定依赖于更换硬盘。
更多推荐


所有评论(0)