使用smartctl检测硬盘坏道需先确认smart是否启用,通过smartctl -i /dev/sda查看,若未启用则运行smartctl -s on /dev/sda开启;2. 执行smartctl -h /dev/sda检查健康状态,passed表示正常,failed表示硬盘可能已损坏;3. 运行smartctl -a /dev/sda获取详细s.m.a.r.t.信息,重点监控reallocated_sector_ct、current_pending_sector、uncorrectable_error_count和offline_uncorrectable的raw_value值,若持续增长则存在潜在故障;4. 执行自检命令smartctl -t short/long/conveyance /dev/sda进行短检、长检或传输检,随后用smartctl -l selftest /dev/sda查看结果,失败则表明硬盘存在问题;5. 检测时避免硬盘高负载,建议多次测试比对关键参数变化,同时结合badblocks或厂商工具进一步排查坏道,nvme硬盘可使用相同命令但需注意参数差异并辅以厂商工具分析,该方法主要用于故障预警而非修复,完整检测流程可有效发现硬盘隐患,结论以综合判断为准。

用 smartctl 检测硬盘坏道是 Linux 下比较可靠的方法,它通过读取硬盘的 S.M.A.R.T. 信息来判断健康状态,虽然不能百分百直接定位所有物理坏道,但能发现潜在问题和早期预警。
先确认 SMART 是否启用
不是所有硬盘默认开启 SMART,所以第一步是检查并启用:
smartctl -i /dev/sda
查看输出中是否有
SMART support is: Enabled。如果没有,先启用:
smartctl -s on /dev/sda
查看硬盘健康状态
这是最直接的判断方式:
smartctl -H /dev/sda
输出
PASSED表示健康状态正常,
FAILED则说明硬盘很可能已经出问题,需要立即处理。
获取完整的 S.M.A.R.T. 信息
运行下面命令查看详细数据:
smartctl -a /dev/sda
重点看这几项:
Reallocated_Sector_Ct
:重映射扇区数。数值大于 0 就说明有坏道被替换,数值越大问题越严重。Current_Pending_Sector
:等待重映射的扇区。如果有数值,说明有不稳定扇区,随时可能变坏。Uncorrectable_Error_Count
:无法纠正的错误数。出现错误意味着读写失败。Offline_Uncorrectable
:离线扫描发现的不可纠正错误。
这些属性的“RAW_VALUE”列是关键,哪怕“WORST”或“THRESH”看起来还行,只要 RAW 值持续增长,就是危险信号。
执行硬盘自检
smartctl 支持几种自检方式,帮助发现潜在问题:
-
短自检(几分钟):
smartctl -t short /dev/sda
-
长自检(几小时,更彻底):
smartctl -t long /dev/sda
-
传输自检(只检查电子元件,不扫盘面):
smartctl -t conveyance /dev/sda
运行后可以用这个命令查看进度和结果:
smartctl -l selftest /dev/sda
测试结束后,结果会标明是否通过。失败的测试基本可以确定硬盘有问题。
补充建议
- 检查前确保硬盘没有在高负载运行,避免误判。
- 多次运行测试并对比结果,看关键属性是否在增长。
- smartctl 更擅长预测故障和发现隐患,如果怀疑已有坏道且需要修复,得配合
badblocks
或厂商工具做更深层扫描。 - 对于 NVMe 固态硬盘,命令基本一样,但部分参数意义不同,要结合厂商工具分析。
基本上就这些,不复杂但容易忽略细节。










