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 属性已有异常增长的盘,先备份数据再扫描,不要给它额外压力。
大容量盘的完整扫描时间很长,安排在低峰或维护窗口执行,并把输出文件按日期归档。