Linux

服务器坏道诊断与修复

·5 分钟阅读·1674 字

Linux 服务器磁盘坏道排查与处理:逻辑坏道修复、物理坏道隔离、smartctl/badblocks 工具使用

📋 目录

服务器坏道诊断与修复


一、先判断:逻辑坏道还是物理坏道?

1. 看系统日志(最快初判)

dmesg | grep -iE "bad sector|i/o error|error"
  • 出现 bad sector / I/O error / blkdev error → 极大概率 物理坏道
  • 只有 filesystem error / inode / superblock → 多半 逻辑坏道(文件系统损坏)

2. 用 smartctl 检查硬件健康

# 安装
# CentOS/RHEL: yum install -y smartmontools
# Ubuntu/Debian: apt install -y smartmontools

# 查看磁盘列表
lsblk
# 或 fdisk -l

# 检查磁盘健康
smartctl -a /dev/sda

关键指标(看这 3 行):

SMART 指标>0 的含义
Reallocated_Sector_Ct(重分配扇区)物理坏道(已替换)
Current_Pending_Sector(待映射)正在变坏,物理坏道
Offline_Uncorrectable物理坏道,不可修复

只要这三个有一个 > 0,就是物理坏道,不要幻想修复。

3. 用 badblocks 扫描定位坏块

# 先卸载分区(必须)
umount /dev/sdb1

# 只读扫描(安全,不破坏数据)
badblocks -v -s /dev/sdb1 > bad.log
  • 有输出具体块号 → 物理坏道
  • 无输出、但 fsck 报错 → 逻辑坏道

二、逻辑坏道:修复方法(能修好)

特征:smartctl 正常、dmesg 只有 filesystem 错误、badblocks 无坏块。

ext4 修复(最常见)

umount /dev/sdb1
fsck.ext4 -y /dev/sdb1          # 自动修复
# 或更稳:e2fsck -fy /dev/sdb1
mount /dev/sdb1 /mnt

XFS 修复(主流新服务器)

umount /dev/sdb1
xfs_repair /dev/sdb1
mount /dev/sdb1 /mnt

修复后判断:

  • 错误消失 → 逻辑坏道,已解决
  • 反复出现 → 底层物理即将坏,尽快备份换盘

三、物理坏道:只能隔离,不能修复

特征: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 指标恶化直接换盘

四、一句话总结

dmesg + smartctl 全绿、只有文件系统报错 → 逻辑坏道fsck/xfs_repair 修复

SMART 重分配/待映射 > 0、dmesg 有 bad sector → 物理坏道:备份 + 隔离 + 尽快换盘


关联文档


最后更新:2026-06-01


关联文档