dmesg日志显示磁盘故障如何修复
Linux 磁盘故障定位与修复实操指南 服务器突然变慢,或者文件系统莫名其妙变成只读,这背后十有八九是磁盘在“报警”。别慌,跟着下面这套流程走,你就能像老手一样,快速定位问题并采取正确行动。 一、快速定位与判断 第一步,别急着动手,先搞清楚状况。系统内核日志(dmesg)是故障的第一现场,从这里入手
Linux 磁盘故障定位与修复实操指南

服务器突然变慢,或者文件系统莫名其妙变成只读,这背后十有八九是磁盘在“报警”。别慌,跟着下面这套流程走,你就能像老手一样,快速定位问题并采取正确行动。
一、快速定位与判断
第一步,别急着动手,先搞清楚状况。系统内核日志(dmesg)是故障的第一现场,从这里入手最直接。
- 查看内核日志,聚焦 I/O 与设备错误:
- 先看最近的记录:
dmesg | tail -n 100 - 再精准过滤关键词:
dmesg | grep -iE “error|fail|ata|sd|IO|bad” - 这里有几个典型的“危险信号”:出现 Buffer I/O error、I/O error、Unrecovered read error,或者文件系统提示变为只读(比如EXT4-fs报“Couldn‘t remount RDWR … unprocessed orphan inode list”)。这些信息通常指向介质损坏或文件系统出了严重问题。
- 先看最近的记录:
- 检查磁盘健康状态(SMART):
- 安装体检工具:
yum/apt install smartmontools - 快速看结果:
smartctl -H /dev/sda(看整体健康状态) - 看详细报告:
smartctl -a /dev/sda - 报告里要盯紧这几个关键字段:SMART overall-health(PASSED/FAILING)、Reallocated_Sector_Ct(重映射扇区数)、Current_Pending_Sector(待映射扇区数)、UDMA_CRC_Error_Count(CRC错误计数)。如果重映射或待映射扇区数不是0,基本可以确定盘片有物理问题了;而CRC错误计数偏高,则很可能是线缆或接口接触不良。
- 安装体检工具:
- 检查是否只读挂载: 运行
mount | grep ‘ro,’。如果发现根分区都变成只读了,这往往是文件系统检测到致命错误后触发的自我保护机制。 - 实时 I/O 与负载: 执行
iostat -dx 1 5。如果看到 await(等待时间)异常飙升,或者 %util(利用率)长时间接近100%,那磁盘要么是异常了,要么就是遇到了性能瓶颈。
二、常见故障场景与处理
根据上面收集到的线索,基本可以归入下面几种场景。对症下药,效率最高。
| 场景与 dmesg 特征 | 处理要点 |
|---|---|
| 文件系统只读(EXT4-fs 报“Couldn‘t remount RDWR … unprocessed orphan inode list”) | 首要任务是备份关键数据。然后进入救援模式或单用户模式,对问题分区执行 fsck(例如 fsck -y /dev/mapper/vg0-root)。如果修复失败,可以尝试升级 e2fsck 工具版本后再试。修复完成后,再重新正常挂载。 |
| SMART 健康为 FAILING 或 Reallocated/Pending 不为 0 | 这是硬盘的“病危通知书”。立即安排全量备份,并准备更换新硬盘。如果磁盘在RAID阵列里,请严格按照阵列管理流程,将故障盘踢出并更换重建。 |
| 大量 “Buffer I/O error / I/O error / Unrecovered read error” | 同样,先备份数据。然后卸载该磁盘,运行只读坏道扫描定位问题:badblocks -s -v -o bb.log /dev/sdX。如果发现的坏道极少,可能是逻辑错误,可以在确保数据已备份且磁盘离线的前提下,尝试用 badblocks -w 命令重写扇区来修复。否则,一律视为物理坏道,该隔离就隔离,该换盘就换盘。 |
| “UnrecovData 10B8B BadCRC / READ FPDMA QUEUED / hard resetting link” | 这类错误高概率是链路问题,比如SATA线质量差、电源线松动、背板接触不良或控制器兼容性有问题。优先更换一根高质量的SATA线,检查电源接口和主板接口,更新驱动和固件。排除链路问题后,再重新评估硬盘本体的健康状况。 |
| 根分区无法卸载导致无法 fsck | 系统盘正在使用,自然无法修复。这时需要借助救援模式、LiveCD或专用的救援系统启动,在离线环境下对相应的逻辑卷或分区执行 fsck 操作。 |
三、标准修复流程
无论遇到哪种情况,遵循一个清晰的流程能最大程度避免失误和数据损失。
- 保障安全: 动手前,立即对重要数据进行全量备份。最好在离线或只读挂载状态下操作,防止修复过程造成二次破坏。
- 确认对象: 综合利用
dmesg、smartctl、mount、iostat等命令,明确问题到底是文件系统错误,还是磁盘介质/链路故障,并锁定具体的设备或分区(例如/dev/sda、/dev/mapper/vg0-root)。 - 文件系统修复(只读或异常挂载时):
- 首先卸载目标分区(如果是系统盘,需要进入救援/单用户模式)。
- 执行修复:
fsck -y /dev/sdXN;对于ext系列文件系统,也可以用e2fsck。 - 如果工具版本太旧或报错,尝试在救援模式下升级
e2fsck后再重试。
- 介质坏道处理(仅在已备份前提下):
- 只读扫描定位:
badblocks -s -v -o bb.log /dev/sdX - 逻辑坏道尝试重写: 先备份受影响的文件或扇区,然后使用
badblocks -w(注意参数顺序是 END START),修复后再次扫描验证。 - 将坏块加入文件系统坏块表(ext系列):
e2fsck -l bb.log /dev/sdXN - 必须清醒认识到,物理坏道是无法“修复”的,只能通过隔离或更换磁盘来解决。用分区或阵列策略屏蔽坏区只是权宜之计,并非长久之策。
- 只读扫描定位:
- 链路问题排查: 如果日志中间出现 BadCRC、NCQ错误或链路复位,别急着判硬盘死刑。更换SATA线、检查电源和主板接口、排除背板问题往往是更有效的办法。排除后再测试SMART状态。
- 恢复与验证: 所有修复完成后,重新挂载磁盘。在恢复业务前,建议做一次全量校验(比如用
rsync的校验模式,或对比关键文件的校验和)。之后,还需要持续观察一段时间dmesg日志和SMART数据趋势,确保问题真正解决。
四、关键命令速查
为了方便操作,这里把核心命令再整理一遍:
- 日志与状态:
dmesg | tail -n 100;dmesg | grep -iE “error|fail|ata|sd|IO|bad”mount | grep ‘ro,’;iostat -dx 1 5
- 健康检测:
smartctl -H /dev/sda;smartctl -a /dev/sda
- 文件系统修复:
fsck -y /dev/sdXN;e2fsck -y /dev/sdXN
- 坏道检测与处理:
- 只读扫描:
badblocks -s -v -o bb.log /dev/sdX - 写入修复(仅针对逻辑坏道,且必须已备份):
badblocks -s -w /dev/sdX END START - 标记坏块(ext系列):
e2fsck -l bb.log /dev/sdXN
- 只读扫描:
五、风险提示
最后,必须强调几点。数据修复和坏道重写操作本身就有导致数据丢失的风险。因此,“先备份,后操作”是铁律,尽量在离线环境下进行。对于关键业务系统,如果心里没底,建议请专业人员进行现场评估和操作。尤其要记住:当SMART报告显示FAILING,或者出现不可恢复的读错误时,最稳妥的方案是优先更换磁盘,而不是冒险继续修复。硬盘有价,数据无价。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















