PASSED不代表硬盘安全,真正需盯Reallocated_Sector_Ct(>0即警惕)、Current_Pending_Sector(>0为红灯)、UDMA_CRC_Error_Count(上升多因线缆/接口问题)和Offline_Uncorrect(>0比pending更严重)四项原始值。

PASSED 不代表硬盘安全,它只是固件快照;真正要盯的是 Reallocated_Sector_Ct、Current_Pending_Sector 和 UDMA_CRC_Error_Count 这三项原始值。
确认 SMART 真实启用且能读到物理盘数据
很多服务器或带 RAID 卡的机器上,smartctl -i /dev/sda 显示 SMART support is: Disabled 或直接报 ATA device not found,不是硬盘坏了,而是访问路径被拦截了。
- 先用
lsblk或sudo fdisk -l确认设备名(比如/dev/sdb) - 再试加设备类型参数:对 LSI MegaRAID 卡,用
sudo smartctl -i -d megaraid,0 /dev/sdb(0 表示第一个物理盘);对直连 SATA 盘,加-d ata - 若仍报
Permission denied,补sudo;若报No Information,大概率是硬件层屏蔽了 SMART 通道,需换直通模式或换卡
重点看哪几项 SMART 属性值
smartctl -A /dev/sda 输出里几十行属性,90% 可忽略。只盯这四个 ID 的 RAW_VALUE 列——别信 VALUE,厂商编码逻辑不统一,有的越小越差,有的越大越差:
-
Reallocated_Sector_Ct(ID 5):已重映射扇区数。> 0就该警惕,持续增长说明坏道在蔓延 -
Current_Pending_Sector(ID 197):> 0是红灯,表示有扇区读写不稳定,下次访问可能触发重映射,或直接变硬错误 -
UDMA_CRC_Error_Count(ID 199):接口校验错误。反复上升通常不是盘的问题,是线缆松动、供电不稳或主板 SATA 接口老化,先换线再测 -
Offline_Uncorrect(ID 198):离线无法纠正的扇区数。> 0 说明有扇区在后台扫描时就失败了,比 pending 更严重
短自检和长自检到底该跑哪个
短自检(smartctl -t short /dev/sda)约 2 分钟,只扫 FAT 区、目录区等高频区域,适合日常巡检;长自检(smartctl -t long /dev/sda)遍历全部 LBA,在 HDD 上可能耗时数小时,期间 I/O 响应明显变慢甚至卡顿。
- 除非
Current_Pending_Sector > 0,否则别轻易跑长自检——它不会修复坏道,只是把 pending 扇区“逼出来”,可能让盘当场掉线 - SSD 上长自检意义不大,耗时短但基本不触发重映射,重点看
Media_Wearout_Indicator和Available_Reserve_Space - 测试中查进度用
sudo smartctl -c /dev/sda;中断后台任务用sudo smartctl -X /dev/sda - 结果必须用
sudo smartctl -l selftest /dev/sda查日志,Status列为Completed without error才算过关;出现Failed就记下 LBA 地址,那是坏道位置
为什么 smartctl -a 不适合自动化监控
smartctl -a /dev/sda 输出包含大量冗余信息(如固件版本、型号字符串),解析成本高,且部分字段格式不稳定(如温度单位在不同厂商输出中可能是 Celsius 或 degC),容易导致脚本误判。
- 生产环境建议用精简命令抓关键指标:
smartctl -A /dev/sda | awk '/Reallocated_Sector_Ct|Current_Pending_Sector|Offline_Uncorrect/ {print $1, $4}' - 注意 USB 外置硬盘盒会屏蔽大部分 SMART 属性,
smartctl -i /dev/sdX可能显示ATA device not found,此时看到的 “PASSED” 很可能是转接芯片伪造的 - SMR 硬盘在叠瓦写入边界处发生重定位失败时,
Reallocated_Sector_Ct可能不增加,但Offline_Uncorrect会上升,这种场景容易被漏掉


















