服务器坏道诊断与修复
1. 先卸载分区(必须)
umount /dev/sdb1
2. 只读扫描(安全,不破坏数据)
badblocks -v -s /dev/sdb1 > bad.log
- 有输出具体块号 → **物理坏道**
- 无输出、但 `fsck` 报错 → **逻辑坏道**
---
## 2. 逻辑坏道:修复方法(能修好)
特征:smartctl 正常、dmesg 只有 filesystem 错误、badblocks 无坏块。
### ext4 修复(最常见)
umount /dev/sdb1
fsck.ext4 -y /dev/sdb1 # 自动修复
3. 或更稳:e2fsck -fy /dev/sdb1
mount /dev/sdb1 /mnt
### XFS 修复(主流新服务器)
umount /dev/sdb1
xfs_repair /dev/sdb1
mount /dev/sdb1 /mnt
修复后判断:
- 错误消失 → 逻辑坏道,已解决
- 反复出现 → 底层物理即将坏,尽快备份换盘
---
## 3. 物理坏道:只能隔离,不能修复
特征:smartctl 重分配/待映射 > 0、dmesg 报 bad sector、badblocks 扫出坏块。
### 步骤 1:立刻备份(最重要)
物理坏道会扩散,先备份所有数据!
### 步骤 2:扫描并导出坏块列表
umount /dev/sdb1
badblocks -v -s /dev/sdb1 > bad.log
### 步骤 3:让文件系统屏蔽这些坏块(ext4)
e2fsck -l bad.log /dev/sdb1
作用:文件系统以后绝不往这些块写数据,防止扩散。
### 步骤 4:XFS/Btrfs 无法拉黑,只能分区隔离
把坏块所在范围单独分一个区,不挂载/不格式化/隐藏,系统即绕开。
### 步骤 5:最终建议
| 情况 | 处理 |
|------|------|
| 少量坏块 + 不增长 | 可临时隔离使用 |
| 坏块持续增加 / 有异响 / SMART 指标恶化 | **直接换盘** |
---
## 4. 一句话总结
> `dmesg` + `smartctl` 全绿、只有文件系统报错 → **逻辑坏道**:`fsck`/`xfs_repair` 修复
>
> SMART 重分配/待映射 > 0、dmesg 有 bad sector → **物理坏道**:备份 + 隔离 + 尽快换盘
---
*最后更新:2026-06-01*
关联文档
- Linux:Linux 运维基础
- 逻辑坏道 vs 物理坏道:概念对比
- 逻辑坏道 vs 物理坏道:坏道类型对比
- Linux:Linux 系统管理主页
