如何使用 smartctl 检查 Linux 上的磁盘健康状况
12 分钟阅读 - 2026年5月18日

使用 smartctl 和 smartd 监控驱动器健康状况、运行 SMART 测试并在 Linux 服务器上设置自动警报。 标签:smartctl、smartmontools、SMART、磁盘健康状况、Linux、服务器监控、smartd、NVMe、SSD、HDD。
如何在 Linux 上使用 smartctl 检查磁盘健康状况
smartctl 是一款用于在 Linux 上监控存储驱动器健康状况的命令行工具。它从 HDD、SSD 和 NVMe 驱动器中读取 S.M.A.R.T.(自我监测、分析与报告技术)数据,追踪重新分配扇区、温度和错误计数等指标。如果驱动器即将发生故障, smartctl 该工具会在您丢失数据之前发出预警。本指南涵盖安装、运行健康检查和自检、理解关键 SMART 属性,以及通过 smartd.
安装 smartmontools
smartctl 是 smartmontools 软件包的一部分。您需要 root 或 sudo 权限才能安装它,并运行大部分 smartctl 命令,因为这些操作需要直接访问硬件。
| 发行版 | 发行版命令 |
|---|---|
| Debian / Ubuntu / Linux Mint | sudo apt update && sudo apt install smartmontools -y |
| CentOS / RHEL / Rocky / Alma (8+) | sudo dnf install smartmontools -y |
| CentOS / RHEL 7 及更早版本 | sudo yum install smartmontools -y |
| Arch Linux / Manjaro | sudo pacman -S smartmontools |
| Fedora | sudo dnf install smartmontools |
使用以下命令确认安装 smartctl --version.
识别硬盘并启用 SMART
在进行任何检查之前,您需要了解服务器中安装了哪些磁盘,以及它们是否支持 SMART。
列出所有块设备:
lsblk扫描支持 SMART 的硬盘:
sudo smartctl --scan这将返回设备名称、类型及协议(ATA、SCSI、NVMe)。SATA和SAS硬盘显示为 /dev/sda, /dev/sdb等形式显示。NVMe 硬盘则显示为 /dev/nvme0n1, /dev/nvme1n1.
检查特定磁盘是否支持并启用了 SMART:
sudo smartctl -i /dev/sda在输出中查找“SMART 支持状态:可用”和“SMART 支持状态:已启用”。如果支持但未启用,请将其启用:
sudo smartctl -s on /dev/sda此设置在重启后仍会保留。
对于位于 RAID 控制器后面的磁盘,请使用 -d 标志指定控制器类型。对于 MegaRAID: -d megaraid,N。对于 HP Smart Array: -d cciss,N。若未指定此标志, smartctl 将无法识别各个物理驱动器。
在 VPS 环境中的虚拟磁盘或大多数 USB 闪存盘上,无法进行 SMART 监控。虚拟化层或 USB 外置盒会阻止对硬件遥测数据的访问。
运行健康检查和自检
快速健康检查会查询硬盘固件以检测关键故障:
sudo smartctl -H /dev/sda“通过(PASSED)”结果表示硬盘尚未触发其内部故障阈值。“失败(FAILED)”结果表示硬盘预计即将发生故障。请立即备份您的数据。
如需获取完整的SMART数据(包括所有属性及错误日志):
sudo smartctl -a /dev/sda自检
smartctl 可运行三种类型的自检,所有操作均在后台进行,系统在此期间保持正常运行:
- 简短测试(1-5 分钟):检查电气和机械组件。
sudo smartctl -t short /dev/sda - 长测试(数小时):扫描硬盘上的每个扇区。
sudo smartctl -t long /dev/sda - 运输测试(约5分钟):检测运输过程中造成的物理损坏。
sudo smartctl -t conveyance /dev/sda
在开始长测试前,请查看预计完成时间:
sudo smartctl -c /dev/sda查看测试结果:
sudo smartctl -l selftest /dev/sda您希望看到“已完成,无错误”。如果测试失败,输出结果中将包含 LBA_of_first_error,该信息可精确定位磁盘上的损坏位置。
需关注的关键 SMART 属性
通过/未通过的健康检查虽有参考价值,但存在局限性。即使单个属性呈现恶化趋势,硬盘仍可能显示“通过”。以下属性最为关键:
- 重新分配扇区计数 (ID 5):硬盘用备用扇区替换的坏扇区。任何非零值都意味着物理磨损。旧硬盘上出现单个重新分配扇区未必紧急,但计数持续上升则是明确的警告。
- 当前待处理扇区数(ID 197):硬盘无法读写、等待重新映射的扇区。若该数值持续攀升,表明硬盘性能正在恶化。
- 离线不可纠正错误 (ID 198):后台扫描中发现的无法纠正的错误。表明磁盘表面受损。
- UDMA CRC 错误计数 (ID 199):数据传输错误。这通常指向 SATA 线缆故障或连接器松动,而非硬盘故障。请先检查线缆。
对于 SSD 和 NVMe 硬盘,请关注“可用备用空间”和“已用百分比”。当“已用百分比”接近 100% 时,表示硬盘已达到其写入耐用度极限。
温度同样重要。HDD 在 50°C 以上会变得不可靠。SSD 虽能耐受更高温度,但应保持在 70°C 以下。使用 smartctl -A /dev/sda,或使用 smartctl -l error /dev/sda.
使用 smartd 实现监控自动化
手动检查磁盘适用于一次性诊断。若需持续监控,请使用 smartdsmartd(smartmontools 套件中的守护进程)。该程序默认每 30 分钟轮询一次磁盘,并将属性变更记录到 syslog 中。
编辑配置文件 /etc/smartd.conf (或 /etc/smartmontools/smartd.conf 在 RHEL/CentOS 上)。与其依赖 DEVICESCAN 自动检测所有设备,请明确列出您的硬盘。这可避免因不兼容设备导致的系统卡死。
配置示例:
/dev/sda -a -m [email protected] -s (S/../.././02|L/../../6/03) -W 4,45,55
/dev/sdb -a -m [email protected] -n standby,q各参数的作用:
-a: 监控所有 SMART 属性-m: 故障时发送电子邮件警报-s: 每天凌晨 2:00 安排一次简短测试,每周六凌晨 3:00 安排一次长时测试-W 4,45,55: 记录 4°C 的温度变化,45°C 时发出警告,55°C 时触发严重警报-n standby,q: 跳过对处于待机模式的硬盘的轮询,以避免不必要的硬盘启动
对于位于 RAID 控制器后方的硬盘,请为每块硬盘指定类型:
/dev/sda -d megaraid,0 -a -m [email protected]
/dev/sda -d megaraid,1 -a -m [email protected]启用并启动服务:
sudo systemctl enable --now smartd在基于 Debian 的系统上,还需取消注释 start_smartd=yes 中的 /etc/default/smartmontools.
要测试电子邮件警报,请在 -M test 到配置行中,重启 smartd,随后将其移除。若无需重启服务即可加载配置变更,请使用 killall -HUP smartd.
每日进行的简短测试仅需1-2分钟,即可发现大多数表面级缺陷。每周进行的一次长时测试则会覆盖所有扇区。结合电子邮件警报,这能在硬盘完全故障前为您提供可靠的早期预警。

厌倦了缓慢的部署或带宽限制?FDC Servers 提供即时的专用电源、全球覆盖和灵活的计划,适合任何规模。
立即升级
Linux 服务器加固清单
15 分钟阅读 - 2026年5月8日