场景与处置原则
磁盘故障最早的信号几乎都在日志里:内核报 I/O error、medium error、sense key、EXT4-fs error,ata 层报 failed command 或 link is slow。处置原则是数据优先——先确认影响范围并把可读数据复制出去,再评估问题出在线缆、背板、控制器还是盘体介质,最后决定修复还是换盘。反复读取同一块坏区会加速恶化,所以取证要一次性做够:日志、SMART、设备序列号、槽位全部留档,而不是原地反复重试。
基本信息
| 场景 | 日志出现磁盘 I/O 报错或读写异常缓慢 |
|---|---|
| 目标 | 评估磁盘健康并优先保住数据 |
| 处置链路 | dmesg 或 journalctl -k 取证 → smartctl 判健康 → 复制数据 → 换盘 |
| 关键指标 | Reallocated_Sector_Ct、Current_Pending_Sector、Offline_Uncorrectable、介质错误计数 |
| 风险提示 | 在已有坏道的盘上做 fsck 或重建会加重损坏 |
典型使用场景
- 系统整体变慢且 dmesg 持续刷 I/O 错误
- SMART 巡检发现重分配扇区数增长
- 数据库或应用报读写错误、事务失败
- 文件系统意外变成只读,需要判断是否硬件原因
- 换盘前抢救数据,需要选择安全的复制工具与限速策略
常用示例
常用示例
dmesg -T | grep -i -E 'I/O error|medium error|sense key|failed command' | tail -n 50
journalctl -k --since '3 days ago' | grep -i -E 'error|fail' | tail -n 50
smartctl -H /dev/sda
smartctl -A /dev/sda | grep -E 'Reallocated|Pending|Uncorrectable|Wear'
lsblk -o NAME,SIZE,SERIAL,MODEL,MOUNTPOINT # 记录序列号与槽位
rsync -aHAX --info=progress2 /data/ /backup/data-$(date +%F)/
ddrescue -n /dev/sdb /dev/sdc rescue.log # 坏盘优先用 ddrescueSMART 关键指标读法
| 指标 | 含义 | 判读 |
|---|---|---|
| Reallocated_Sector_Ct | 已重映射的坏扇区数 | 非零且持续增长说明介质在退化 |
| Current_Pending_Sector | 待重映射的可疑扇区 | 大于 0 表示存在读失败风险的区域 |
| Offline_Uncorrectable | 离线扫描中不可纠正的扇区 | 非零通常指向盘体本身的问题 |
| Wear_Leveling_Count | SSD 的磨损均衡计数 | 接近设计寿命时写入性能与可靠度下降 |
| SMART overall-health | 厂商给出的综合结论 | PASSED 不等于没有坏道,必须结合计数趋势 |
出现 medium error 或 uncorrectable 时以抢救数据为第一优先,不要在问题盘上执行 fsck、mkfs 或重建阵列。先把能读的数据复制到安全位置,再安排换盘。
虚拟磁盘的介质错误由宿主机或云平台处理,客户机内的修复意义有限;保留 dmesg 与 SMART 输出作为凭据,尽快提工单并给数据盘做快照。