Linux 磁盘健康巡检:用 smartctl 读取 SMART 并运行自检

2026-10-11 / 0 评论 / 0 阅读

Linux 磁盘健康巡检:用 smartctl 读取 SMART 并运行自检 教程示意图

适用场景

这套流程适合 Ubuntu、Debian、Rocky Linux 等物理服务器,也适合能够把硬盘 SMART 信息透传给来宾系统的实验环境。它可以用于新盘验收、发现磁盘读写变慢后的初步判断,以及定期巡检。若 Linux 看到的只是 ESXi、Hyper-V、硬件 RAID 控制器提供的虚拟磁盘,来宾系统通常无法取得后方每块物理盘的完整 SMART 数据,此时应改在宿主机、阵列管理界面或带外管理平台检查。

SMART 能记录设备健康状态、错误日志、温度和自检结果,但它不是备份,也不能保证显示通过的磁盘不会突然失效。已经出现大量 I/O 错误、异响或频繁掉盘时,应先停止非必要写入并抢救数据,不要先用长时间测试反复施压。

原理

SMART 是硬盘或固态硬盘内部的自监测机制。smartmontools 项目提供的 smartctl 会向 ATA、SCSI、SAS 或 NVMe 设备查询这些数据,也能请求设备在后台执行短自检或扩展自检。短自检一般检查主要电子部件和少量介质,耗时较短;扩展自检覆盖范围更大,可能持续数十分钟甚至数小时。

不同协议输出并不完全相同。ATA 盘常见属性表、原始值和阈值,NVMe 则更关注严重警告、温度、介质错误和已用寿命百分比。不要只盯着某个十进制原始值,也不要把厂商定义不同的属性横向硬比。总体健康结果、自检日志、内核 I/O 报错和业务表现需要合并判断。

准备工作

准备具有 sudo 权限的终端、当前有效的数据备份,以及允许磁盘增加少量负载的维护时段。先安装 smartmontools。Debian 或 Ubuntu 使用:

sudo apt update
sudo apt install smartmontools

Rocky Linux、AlmaLinux 或 RHEL 系发行版使用:

sudo dnf install smartmontools

安装软件不会自动修复磁盘。若系统使用硬件 RAID、USB 硬盘盒或特殊 HBA,还要查控制器是否支持 SMART 透传;不要照抄不明来源的 -d 设备类型参数。

分步骤操作

  1. 先列出整盘、型号、容量和连接方式,避免把 /dev/sda1 之类的分区当作整盘:
lsblk -d -o NAME,MODEL,SIZE,TRAN,TYPE
sudo smartctl --scan-open

lsblk 中 TYPE 为 disk 的条目才是本教程关注的整盘。第二条命令会列出 smartctl 能打开的设备及可能需要的设备类型。记录容量和型号并与资产信息核对,不要仅凭 sda、sdb 的顺序判断,因为重启或增减硬件后名称可能改变。

  1. 把确认后的设备路径存入变量:
DEVICE='/dev/设备名'
sudo smartctl -i "$DEVICE"

/dev/设备名 是占位符,应整体替换为上一步得到的整盘路径,例如系统实际显示的 SATA 整盘或 NVMe 设备;不要填挂载目录和分区路径。-i 输出应能对应到预期型号与容量。如果显示设备不支持 SMART、无法打开或型号不符,先停止,不要继续测试。

  1. 读取总体状态和详细健康数据:
sudo smartctl -H -A "$DEVICE"
sudo smartctl -l error -l selftest "$DEVICE"

-H 查询总体健康结论,-A 显示属性或健康日志;后两项查看设备错误日志和既往自检。某些 NVMe 或 SCSI 设备不支持全部选项,smartctl 会明确说明。可再用以下命令保存更完整的只读输出供工单比对:

sudo smartctl -x "$DEVICE"

输出可能包含设备序列号,上传到公开论坛或工单前应按组织规则脱敏。

  1. 在负载可控时发起短自检:
sudo smartctl -t short "$DEVICE"

命令通常会返回预计完成时间。自检由设备执行,终端退出并不等于取消;等待所提示的时长,不要连续重复发起。然后读取结果:

sudo smartctl -l selftest "$DEVICE"

结果为完成且无错误,表示本次自检未发现问题,并不等于未来不会故障。若出现读失败、介质错误、剩余百分比长期不动或测试被主机中止,应保留完整输出并结合内核日志、控制器日志和备份状态处理。

验证方法

验证应形成一份基线记录:设备型号和容量正确;SMART 能启用或读取;总体状态没有失败提示;温度处于该设备厂商允许范围;错误计数没有在短期内持续增加;短自检日志出现新的完成记录。隔一段时间再次执行相同的只读查询,比单次截屏更有价值。如果应用仍有延迟,还要查看磁盘队列、文件系统、控制器和网络存储路径,不能因为 SMART 通过就排除所有存储故障。

常见错误

Permission denied 通常是没有使用 root 权限。Unknown USB bridge 或 SMART 不可用,多半是硬盘盒不透传命令,换接口前先查硬盘盒官方资料。RAID 下只看到逻辑卷,不代表后方物理盘健康,应使用控制器厂商工具。NVMe 没有 ATA 的重映射扇区属性是协议差异,不是命令失效。设备刚从休眠唤醒时查询会让机械盘转动,定时巡检要考虑功耗和磨损。属性名称旁出现旧错误也不一定代表正在恶化,重点是时间、错误位置和计数趋势。

安全与回退

短自检通常不改文件系统,但会增加设备工作量。关键业务先确认备份可恢复,并避开重负载时段;疑似濒临失效的盘优先复制数据。需要取消正在进行且设备支持取消的自检时使用:

sudo smartctl -X "$DEVICE"

$DEVICE 仍是前面确认过的整盘变量。取消后再次读取自检日志确认状态。本文没有修改分区、文件系统或挂载配置,因此没有配置回退;若安装包仅用于临时检查,也不必急于卸载。任何总体健康失败、不可恢复读错误或错误计数持续上升,都应转入备份验证和更换介质流程,而不是清空日志后继续观察。

参考资料与转载说明

本文依据上述公开资料进行中文原创整理,不是逐句翻译,也不替代厂商手册。操作前请核对自己的版本、型号和备份。

评论一下?

OωO
取消