smartctl是唯一能直接读取物理磁盘真实健康数据的工具;需用lsblk确认设备类型,SATA盘加-d ata、RAID卡加-d megaraid,N、USB盒加-d sat、NVMe用-a,重点查RAW_VALUE而非VALUE,并盯住ID 5/197/199/233等关键属性。

smartctl 是唯一能直接读取物理磁盘真实健康数据的工具,df、iostat 或 lsblk 都不反映 NAND 擦写次数、坏块增长或固件异常——它们只管“能不能用”,不管“还能撑多久”。
怎么确认 smartctl 能读到真实 SMART 数据
很多机器(尤其是带 RAID 卡或 USB 硬盘盒的)smartctl -i /dev/sda 会显示 SMART support is: Disabled 或报 ATA device not found,这不是硬盘坏了,是访问路径被拦截了。
- 先用
lsblk -d -o NAME,MODEL,SERIAL,TRAN确认设备名和接口类型(nvme/sata/usb) - SATA 盘常见问题:加
-d ata强制走 ATA 协议 →sudo smartctl -i -d ata /dev/sda - LSI MegaRAID 卡:用
-d megaraid,N(N 是物理盘序号,从 0 开始)→sudo smartctl -i -d megaraid,0 /dev/sdb - USB 硬盘盒:大概率要加
-d sat→sudo smartctl -a -d sat /dev/sdc - NVMe 盘不用额外参数,但必须用
-a(-A会漏掉Percentage Used)
怎么看 NVMe 和 SATA SSD 的关键指标
NVMe 和 SATA 的 SMART 字段命名、方向、单位全都不一样,混看会误判寿命。比如同样叫“磨损”,SATA 盘的 Wear_Leveling_Count 原始值越大越好,NVMe 盘的 Percentage Used 原始值越大越差。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- NVMe 盘重点盯:
Percentage Used(剩余寿命百分比,100 表示耗尽)、Available Spare(剩余备用块比例)、Available Spare Threshold(低于此值即告警) - SATA SSD 重点盯:
Media_Wearout_Indicator(越接近 100 越危险)、Reallocated_Sector_Ct(非零就说明已出现物理坏块) - HDD 重点盯:
Reallocated_Sector_Ct(ID 5)、Current_Pending_Sector(ID 197)、UDMA_CRC_Error_Count(ID 199,高了先换线再查盘) - 所有盘都别信
VALUE列——它被厂商归一化过,要看RAW_VALUE;更别信“Wear_Leveling_Count = 200 就还有 200% 寿命”这种误解
为什么 smartctl -H /dev/sda 显示 PASSED 还得继续查
PASSED 只是固件当前上报的一个快照,不能代表安全。RAID 卡可能伪造这个结果,pending 扇区可能还没触发重映射,Reallocated_Sector_Ct 已涨到 3 但 -H 仍返回 PASSED 的情况很常见。
- 必须配合
smartctl -a /dev/sda查原始值,尤其盯住 ID 5、197、199、233(SSD)或 198(HDD) - 如果
Current_Pending_Sector> 0,说明有扇区读写不稳定,下次 I/O 就可能崩,比已重映射更危险 - 自检日志里出现
Completed: read failure或aborted by host是硬故障信号,哪怕-H还是 PASSED - 温度长期 > 60°C(NVMe 尤其敏感)会加速老化,
Temperature_Celsius在 SATA 盘里是标准字段,在 NVMe 里常以单行Temperature: 42 C形式出现
日常巡检该跑 short 还是 long 自检
短自检(smartctl -t short /dev/sda)约 2 分钟,扫 FAT 区、目录区等高频区域,适合每周跑一次;长自检(smartctl -t long /dev/sda)遍历全部 LBA,在 HDD 上可能卡住几小时,SSD 上意义不大。
- 除非
Current_Pending_Sector > 0,否则别轻易跑 long —— 它不会修复坏道,只会把 pending 扇区逼出来,可能让盘当场掉线 - 跑完用
sudo smartctl -c /dev/sda查进度,中断用sudo smartctl -X /dev/sda,结果必须用sudo smartctl -l selftest /dev/sda查日志,Status 列为Completed without error才算真正通过 - SSD 上 long 自检基本不触发重映射,重点还是看
Percentage Used和Available_Reserve_Space

















