Linux 硬盘SMART信息与温度查询全流程操作手册
本手册适用于 Ubuntu、Debian 等主流 Linux 发行版,覆盖内置 SATA 硬盘、USB 移动硬盘、NVMe 固态硬盘全场景。内容从磁盘路径定位、工具部署、SMART 数据读取、温度检测到故障排查,全程无冗余表述,每条命令、每段脚本均附带详细解释,解决硬盘检测中设备不识别、无温度数据、SMART 读取失败等常见问题。
一、前置操作:确认磁盘设备路径
查询硬盘 SMART 信息和温度前,必须精准定位物理磁盘路径,禁止使用分区路径。以下为四种可靠的磁盘定位方法,按推荐优先级排序。
方法1:lsblk 命令(直观易用,首选)
lsblk 用于列出系统所有块设备,可快速区分物理磁盘与分区,定位效率最高。
lsblk
命令输出解读:
-
TYPE 为 disk:代表整块物理硬盘,是查询 SMART 和温度的目标对象
-
TYPE 为 part:代表磁盘分区,仅用于挂载存储,不可用于硬盘检测
-
SATA/USB 接口硬盘:路径格式为
/dev/sdX(X 为英文字母 a/b/c,按识别顺序排序) -
NVMe 固态硬盘:路径格式为
/dev/nvmeXn1(X 为数字 0/1/2,按插槽顺序排序)
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk # 物理硬盘,目标路径:/dev/sda
└─sda1 8:1 0 931.5G 0 part /mnt/hdd # 硬盘分区,不可用
nvme0n1 259:0 0 512G 0 disk # 物理硬盘,目标路径:/dev/nvme0n1
└─nvme0n1p1 259:1 0 512G 0 part / # 系统分区,不可用
方法2:fdisk -l 命令(精准识别,带硬盘型号)
该命令需管理员权限,可显示硬盘型号、容量、分区表等详细信息,适合多盘环境区分硬盘。
sudo fdisk -l
输出关键信息:开头 Disk /dev/xxx 即为物理磁盘路径,后续 Disk model 显示硬盘型号,可核对目标硬盘。
方法3:df -h 命令(按挂载点反查)
已知硬盘挂载目录时,通过挂载目录反向定位磁盘路径,快速锁定目标盘。
# 替换 /mnt/hdd 为实际挂载目录
df -h /mnt/hdd
输出示例:/dev/sda1 916G 200G 669G 23% /mnt/hdd,分区 /dev/sda1 对应的物理磁盘为 /dev/sda。
方法4:/dev/disk/by-id 目录(硬件ID绑定,无歧义)
该目录下文件为硬盘唯一硬件标识,绑定硬盘型号,适合服务器多盘场景,彻底避免路径混淆。
ls -l /dev/disk/by-id/
输出为软链接格式,链接指向的 ../../sdX 或 ../../nvmeXn1 即为最终磁盘路径。
二、安装硬盘检测必备工具
Linux 系统默认未安装硬盘 SMART 检测工具,需手动部署核心工具包,覆盖全类型硬盘检测需求。
# 1. 更新系统软件源,确保安装包为最新版本
sudo apt update
# 2. 安装smartmontools:核心SMART检测工具,支持SATA/USB硬盘读取健康度、温度数据
sudo apt install -y smartmontools
# 3. 安装lm-sensors:系统传感器工具,作为SMART读取失败时的兜底温度检测方案
sudo apt install -y lm-sensors
# 4. 安装nvme-cli:NVMe固态硬盘专用工具,读取NVMe盘SMART和温度更稳定精准
sudo apt install -y nvme-cli
三、硬盘SMART信息查询(详细命令+解释)
SMART 是硬盘自我监测、分析及报告技术,存储硬盘健康状态、通电时长、坏扇区、温度等核心寿命数据,是判断硬盘故障的关键依据。
(一)基础SMART查询命令
所有命令需替换 /dev/sda 为实际磁盘路径;USB移动硬盘/硬盘盒必须追加 -d sat 参数(部分桥接芯片可尝试 -d usb、-d ata),内置SATA/NVMe盘无需加 -d 参数。以下为常用命令及功能说明:
| 命令语句 | 命令功能详解 |
|---|---|
| sudo smartctl -a /dev/sda | |
| (USB移动硬盘需加 -d 参数:sudo smartctl -a -d sat /dev/sda) | 读取硬盘完整SMART信息,包含健康状态、属性参数、运行日志、温度、坏扇区统计等全部数据,适合全面排查 |
| sudo smartctl -A /dev/sda | |
| (USB移动硬盘需加 -d 参数:sudo smartctl -A -d sat /dev/sda) | 仅读取SMART关键属性表,精简输出,聚焦温度、通电时长、坏扇区等核心参数,查询速度更快 |
| sudo smartctl -H /dev/sda | |
| (USB移动硬盘需加 -d 参数:sudo smartctl -H -d sat /dev/sda) | 快速检测硬盘整体健康状态,仅输出PASSED(正常)或FAILED(故障),适合快速巡检 |
| sudo smartctl -i /dev/sda | |
| (USB移动硬盘需加 -d 参数:sudo smartctl -i -d sat /dev/sda) | 查看硬盘基础信息+SMART功能状态,确认SMART是否开启 |
(二)关键SMART字段含义解释
-
SMART overall-health self-assessment test result:硬盘整体健康评估结果,PASSED代表无故障,FAILED代表存在硬件故障
-
Power_On_Hours:硬盘累计通电时长,反映硬盘使用磨损程度
-
Power_Cycle_Count:硬盘开关机次数,辅助判断硬盘使用频率
-
Temperature_Celsius:硬盘当前运行温度,单位为摄氏度
-
Reallocated_Sector_Ct:已重映射坏扇区数量,数值越大代表硬盘坏道越多,故障风险越高
-
Current_Pending_Sector:待修复不稳定扇区数量,数值非零需警惕数据丢失风险
(三)开启SMART功能(必做操作)
若执行查询命令提示 SMART support is: Disabled,说明硬盘SMART功能未开启,需先启用才能读取数据。
# 启用目标磁盘SMART功能,替换/dev/sda为实际路径
# USB硬盘需加 -d sat 参数:sudo smartctl -s on -d sat /dev/sda
sudo smartctl -s on /dev/sda
# 验证SMART是否成功开启
# USB硬盘需加 -d sat 参数:sudo smartctl -i -d sat /dev/sda
sudo smartctl -i /dev/sda
四、分场景硬盘温度查询(详细命令)
场景1:内置SATA硬盘(直连主板)
SATA 硬盘直接连接主板,无需额外参数,可直接读取温度数据。
# 命令1:精准提取温度数据,过滤冗余输出
sudo smartctl -A /dev/sda | grep -i temperature
# 命令2:若上述命令无结果,查看完整SMART信息,手动查找Temperature相关字段
sudo smartctl -a /dev/sda
场景2:USB移动硬盘/硬盘盒(核心场景)
USB 硬盘通过桥接芯片连接,系统无法自动识别SMART数据,需手动指定设备类型。为避免反复测试参数,提供一键自动化脚本,自动适配各类USB桥接芯片。
第一步:创建检测脚本
# 新建脚本文件,命名为check_hdd_temp.sh
nano check_hdd_temp.sh
第二步:粘贴脚本代码(全注释详解)
#!/bin/bash
# 脚本功能:Linux硬盘SMART健康状态+温度一键检测,适配SATA/USB/NVMe硬盘
# 使用方法:sudo bash check_hdd_temp.sh 磁盘路径(例:sudo bash check_hdd_temp.sh /dev/sda)
# 判断是否输入磁盘路径,无参数则提示用法并退出
if [ -z "$1" ]; then
echo "用法:sudo bash $0 物理磁盘路径"
echo "示例:sudo bash $0 /dev/sda"
exit 1
fi
# 接收输入的磁盘路径参数
DISK="$1"
echo "==================== 硬盘检测开始 ===================="
echo "目标磁盘路径:$DISK"
# 定义USB桥接芯片兼容类型,遍历测试确保适配
DEVICE_TYPES=("sat" "usb" "ata" "scsi")
for TYPE in "${DEVICE_TYPES[@]}"; do
echo -e "\n--- 测试设备类型:$TYPE ---"
# 测试当前类型是否能识别硬盘,屏蔽错误输出
sudo smartctl -i -d "$TYPE" "$DISK" >/dev/null 2>&1
# 判断上一条命令执行结果,0代表识别成功
if [ $? -eq 0 ]; then
echo "设备类型适配成功,读取SMART数据中..."
# 输出硬盘健康状态
echo -e "\n--- 硬盘健康状态 ---"
sudo smartctl -H -d "$TYPE" "$DISK"
# 输出硬盘温度数据
echo -e "\n--- 硬盘当前温度 ---"
sudo smartctl -A -d "$TYPE" "$DISK" | grep -i temperature
echo -e "\n==================== 检测完成 ===================="
exit 0
fi
done
# 所有类型测试失败,启用兜底检测方案
echo -e "\nSMART数据读取失败,切换兜底检测方案..."
# 兜底1:系统传感器检测温度
echo -e "\n--- 系统传感器温度数据 ---"
sudo sensors-detect --auto >/dev/null 2>&1
sensors | grep -i -E "hdd|temp|drive"
# 兜底2:udisks工具读取磁盘信息
echo -e "\n--- udisks磁盘温度信息 ---"
udisksctl info --block-device "$DISK" | grep -i temperature
echo -e "\n==================== 检测结束 ===================="
第三步:脚本赋权与执行
# 给脚本添加可执行权限
chmod +x check_hdd_temp.sh
# 运行脚本,替换/dev/sda为实际磁盘路径
sudo bash check_hdd_temp.sh /dev/sda
场景3:NVMe固态硬盘
NVMe 盘协议特殊,推荐专用工具读取,数据更稳定,支持两种查询方式。
# 方式1:smartctl通用工具查询
sudo smartctl -a /dev/nvme0n1 | grep -i temperature
# 方式2:nvme-cli专用工具查询(推荐,兼容性更强)
sudo nvme smart-log /dev/nvme0n1 | grep temperature
五、硬盘温度标准参考
不同类型硬盘正常工作温度范围不同,超出警戒温度会缩短硬盘寿命、引发降速或掉盘故障。
| 硬盘类型 | 正常工作温度 | 警戒温度(需改善散热) |
|---|---|---|
| 机械硬盘(HDD) | 30℃ - 45℃ | 高于55℃ |
| SATA固态硬盘(SSD) | 40℃ - 70℃ | 高于75℃ |
| NVMe固态硬盘 | 40℃ - 75℃ | 高于80℃(易触发降速、掉盘) |
六、常见故障排查详解
1. 报错:Unknown USB bridge
问题原因:USB硬盘桥接芯片未被自动识别,缺少设备类型参数。
解决方法:直接使用上文一键脚本,自动遍历适配设备类型,无需手动修改参数。
2. 无温度数据显示
问题原因:廉价USB硬盘盒硬件不支持SMART透传、老旧硬盘无温度传感器。
解决方法:将硬盘从硬盘盒取出,直连主板SATA接口后重新检测;或更换支持SMART的硬盘盒。
3. 健康状态显示FAILED
问题原因:硬盘存在硬件故障、坏扇区过多。
解决方法:立即备份硬盘内所有数据,停止使用该硬盘,尽快更换硬盘避免数据丢失。
4. 提示SMART功能未开启
问题原因:硬盘SMART功能默认关闭。
解决方法:执行 sudo smartctl -s on /dev/sda 开启后,重新执行查询命令。
七、常用命令速查(精简版)
-
查看系统所有磁盘:
lsblk -
SATA硬盘健康状态:
sudo smartctl -H /dev/sda -
SATA硬盘温度查询:
sudo smartctl -A /dev/sda | grep -i temperature -
USB硬盘一键检测:
sudo bash check_hdd_temp.sh /dev/sda -
NVMe硬盘温度查询:
sudo nvme smart-log /dev/nvme0n1 | grep temperature -
完整SMART信息查询:
sudo smartctl -a /dev/sda
评论交流
欢迎留下你的想法