Linux磁盘坏块检测方法_smartctl解析【教程】

5次阅读

smartctl 不能直接修复坏块,它仅读取和报告 SMART 信息;修复需磁盘固件自动重映射或通过写入触发,但前提是扇区未硬故障且有备用空间。

Linux 磁盘坏块检测方法_smartctl 解析【教程】

smartctl 能否直接修复坏块

smartctl 本身不修复坏块,它只读取和报告磁盘的 SMART 信息,包括已重映射扇区数(Reallocated_Sector_Ct)、待处理扇区(Current_Pending_Sector)等关键指标。修复动作需由磁盘固件在写入时自动完成(如将数据重定向到备用扇区),或通过底层命令触发重新分配,但前提是扇区尚未被标记为“硬故障”且磁盘仍有备用空间。

常见误操作:运行 smartctl -t long /dev/sda 后以为能“修好”磁盘——这只是一次自检,可能让 pending 扇区暴露并触发重映射,也可能导致 I/O hang 或进一步损坏。

  • 真正触发重映射的通常是后续对该扇区的写入操作(例如 dd if=/dev/zero of=/dev/sda bs=512 seek=N count=1 conv=notrunc
  • Current_Pending_Sector 值 > 0,说明有扇区读取失败但尚未重映射,此时应立即备份数据,避免读取或写入该区域
  • Offline_Uncorrect 非零通常意味着离线扫描也未能校验通过,坏块已较严重

如何用 smartctl 判断坏块是否真实存在

仅看 smartctl -a /dev/sda 输出中的数值不够,必须结合状态、日志和实际 I/O 行为交叉验证:

  • SMART overall-health self-assessment test result: PASSED 不代表无坏块,只是固件认为当前状态可接受
  • 重点检查 Reallocated_Sector_CtCurrent_Pending_SectorOffline_Uncorrect 三项的 RAW_VALUE,非 VALUE 列(后者是归一化值,不可比)
  • 运行 smartctl -l selftest /dev/sda 查看最近自检日志,关注 Completed 状态及失败 LBA 地址
  • 配合 dmesg | grep -i "ata|sd|sector" 检查内核是否报过类似 end_request: I/O error, dev sda, sector XXXXX 的错误

为什么 smartctl -t long 有时卡住或超时

smartctl -t long /dev/sda 触发的是磁盘端全盘扫描,耗时取决于容量与转速(机械盘常需数小时),且期间磁盘响应变慢甚至拒绝其他 I/O。这不是 bug,而是设计行为。

  • 执行前确保系统无重要 I/O 负载,最好单用户模式下运行
  • 若中途中断(Ctrl+C),部分 硬盘 会保留“aborted”状态,再次运行前建议先查 smartctl -l selftest /dev/sda
  • NVMe 盘不支持 -t long,应改用 smartctl -t vendor,02 /dev/nvme0n1(具体子命令依厂商而定)
  • 某些 RAID 卡(如 MegaRAID)透传 SMART 有限,smartctl -d megaraid,0 /dev/sda 才能正确获取物理盘数据

发现坏块后该不该继续使用这块盘

只要 Reallocated_Sector_Ct > 0 或 Current_Pending_Sector > 0,这块盘就已进入不可逆老化阶段,不建议用于生产环境或存储关键数据。

  • 重映射扇区数持续增长,说明磁介质或磁头正在劣化,不是孤立事件
  • 即使当前读写正常,下次通电、温度变化或某次写入都可能引发批量坏块爆发
  • SSD 出现 Media_Wearout_Indicator 低于阈值或 UDMA_CRC_Error_Count 上升,同样需立即替换
  • 备份完成后,可用 badblocks -wsv /dev/sda 进行破坏性检测(仅限空盘),但结果仅作参考,不能替代 SMART 数据趋势分析

坏块从来不是“有没有”的问题,而是“有多少、增长多快、是否可控”的问题。盯着 RAW_VALUE 曲线看三天,比跑十次 smartctl -t short 更有用。

星耀云
版权声明:本站原创文章,由 星耀云 2026-01-05发表,共计1620字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources