首页/系统/服务器硬件与 RAID 速查/badblocks 只读坏道扫描
硬盘故障与更换68 条

badblocks 只读坏道扫描

用 badblocks 只读模式核对盘面健康(-s 进度、-v 详情);写模式 -w 会覆写整盘数据,仅限空盘或已清除数据的盘。

badblocks 只读扫描是什么

badblocks 是 e2fsprogs 里的坏道检测工具,默认按只读方式遍历盘面并报告无法正常读取的块;加 -w 参数则进入写模式,会写入测试图样并校验,代价是覆写整盘数据。生产环境应使用只读模式核对盘面健康,它可以在在用盘上执行;写模式只适用于空盘或已确认数据可弃的盘。扫描本身会占用盘的全部带宽,因此时间安排同样重要。

基本信息

适用平台Linux,随 e2fsprogs 提供,可与文件系统检查工具联动
常用参数-s 显示进度,-v 输出详情,-b 指定块大小
只读模式不写盘,可在在用盘上执行
写模式写入测试图样并校验,会覆写数据,仅限可弃盘
权限要求扫描块设备需要 root

典型使用场景

  • 到货验收:新盘上架前做一次只读扫描,排查运输与制造缺陷
  • 故障复现:SMART 属性异常但业务未受影响时,核对盘面实际可用性
  • 退役评估:确认盘面是否存在可见坏块,辅助退役判断
  • 备件复检:库存较久的备件出库前核对盘面状态
  • 测试环境复位:空盘在复用前做一轮扫描与清零

只读扫描与结果处理

只读扫描与结果处理
badblocks -sv -b 4096 /dev/sdb 2>&1 | tail -20  # 4K 块大小,显示进度并汇总结果
badblocks -sv /dev/sdb 2>&1 | tail -20  # 默认块大小,盘型较旧时可用
badblocks -sv /dev/sdb > /tmp/sdb-badblocks-$(date +%F).txt 2>&1  # 输出留档
wc -l /tmp/sdb-badblocks-$(date +%F).txt  # 检查是否有坏块记录输出
# 有数据但需修复的场景,优先用文件系统层的检查方式而不是写模式

模式与适用

模式行为适用判断
只读(默认)遍历读取并报告异常块在用盘与备件盘均可使用
写模式(-w)写入图样并校验仅限空盘或数据可弃的盘
块大小(-b)指定扫描块粒度4Kn 盘用 4096 更贴合
结果输出列出异常块号或汇总计数结合 SMART 属性判断退化
扫描占满盘带宽并加重盘负担:SMART 属性已有异常增长的盘,先备份数据再扫描,不要给它额外压力。
大容量盘的完整扫描时间很长,安排在低峰或维护窗口执行,并把输出文件按日期归档。

易错点

  • 在有数据的盘上用写模式:整盘数据被覆写,是明确的事故
  • 只看扫描结果不看耗时:大容量盘需要预留足够窗口,临时执行会与业务抢资源
  • 扫描结果不留档:之后无法证明盘面在何时出现过坏块
  • 把只读扫描当健康证明:扫描通过不代表属性趋势正常,两者要一起看

数据来源与参考

  • man 8 badblocks(e2fsprogs)
  • man 8 e2fsck(-c 联动)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌