服务器硬盘健康怎么查?SMART检测从安装到看懂结果
服务器硬盘不会突然坏,通常先出现重映射扇区、待映射扇区等预警信号。
SMART检测就是读取硬盘自带的健康数据,提前发现这些信号。
本文按零基础用户能直接照做的顺序,讲清从安装工具到看懂结果的全过程。
先确认硬盘是否支持SMART
不是所有硬盘都支持SMART,虚拟化环境中的虚拟磁盘通常也不支持。
先执行一条命令确认:
sudo smartctl -i /dev/sda
如果输出里出现 SMART support is: Available 和 Enabled,说明硬盘支持且已开启。
如果显示 Unavailable,可能是硬件不支持、RAID卡未透传,或你查的是虚拟磁盘。
查看服务器上有哪些硬盘:
lsblk -d -o NAME,SIZE,TYPE
TYPE 为 disk 的才是物理盘,比如 /dev/sda、/dev/nvme0n1。
安装smartmontools
大多数Linux发行版默认没装这个工具。
Debian/Ubuntu:
sudo apt update
sudo apt install smartmontools
CentOS/RHEL:
sudo yum install smartmontools
安装完成后确认版本:
smartctl --version
开启SMART并执行检测
先开启SMART监控:
sudo smartctl -s on /dev/sda
然后查看健康摘要:
sudo smartctl -H /dev/sda
正常输出会显示 PASSED 或 OK。
如果显示 FAILED,说明硬盘已经报告异常,需要尽快备份数据。
查看完整SMART属性表:
sudo smartctl -A /dev/sda
重点看哪几个属性
属性表有几十行,零基础用户先盯住这几个:
- Reallocated_Sector_Ct:已重映射扇区数。大于0说明硬盘已经用备用扇区替换了坏扇区,数值持续增长是危险信号。
- Current_Pending_Sector:待映射扇区数。大于0表示有扇区读取失败但还没被替换,通常意味着盘面正在劣化。
- Offline_Uncorrectable:离线不可纠正错误。大于0需重点关注。
- Raw_Read_Error_Rate:原始读取错误率。不同厂商编码方式不同,不能只看绝对值,要看趋势。
- Power_On_Hours:通电时间,用于判断硬盘使用年限。
- Temperature_Celsius:温度。持续超过50℃会加速老化。
判断原则:关注趋势比关注单次数值更重要。
如果某项数值在一周内明显上升,即使还没到阈值,也应准备更换。
常见报错和避坑
报错一:Smartctl open device: /dev/sda failed: Permission denied
原因:没用root权限。
加 sudo 或切到root再执行。
报错二:SMART support is: Unavailable
原因可能是RAID卡挡在系统和硬盘之间。
需要进RAID卡管理界面查看,或使用厂商工具(如MegaCli)读取物理盘SMART。
虚拟磁盘(/dev/vda)不支持SMART,这是正常的。
避坑提醒:
- 不要只跑一次
-H看到PASSED就放心。PASSED只代表当前没触发阈值,待映射扇区可能已经存在。建议同时看-A的属性表。 - 生产服务器上不要随意执行SMART自检(
-t long),长时间自检会占用磁盘IO,可能影响业务。 - 检测到异常后,第一步是备份数据,不是反复跑检测确认。
怎么验证检测生效
执行一次完整检查:
sudo smartctl -a /dev/sda
确认输出中同时包含 SMART overall-health self-assessment test result 和属性列表。
如果需要持续监控,可以配置smartd服务,它会定期自检并在异常时发邮件告警。
编辑 /etc/smartd.conf,把默认的 DEVICESCAN 行按需改成指定设备,例如:
/dev/sda -a -o on -S on -s (S/../.././02|L/../../7/03) -m admin@example.com
改完重启服务:
sudo systemctl restart smartd
然后用 systemctl status smartd 确认运行状态。
几个常见疑问
SMART显示PASSED,硬盘就一定没问题吗?
不一定。
SMART是预警机制,不是诊断结论。
有些硬盘故障发生前SMART数据没有明显变化,所以仍需配合定期备份。
NVMe硬盘怎么查?
命令基本一致,设备名换成 /dev/nvme0n1,例如 sudo smartctl -a /dev/nvme0n1。
NVMe的属性字段和SATA不同,重点关注 Critical_Warning、Media_Errors、Percentage_Used。
多久检测一次合适?
手动检测建议每月至少一次;
配置smartd后可以让它自动完成日常巡检,你只需关注告警邮件。
最后收一下重点,服务器SMART检测的核心是三步:确认支持、读取属性、关注趋势。
把 smartctl -a 的输出纳入日常巡检清单,比等到系统报IO错误再处理要从容得多。