菜鸟科技网

smartctl命令怎么用?

什么是 smartctl

smartctlSMART 自我监控、分析和报告技术 的命令行工具,现代硬盘(包括 SSD 和 HDD)内部都包含一个监控系统,可以持续监测自身的运行状态,例如温度、坏块数量、通电时间、读写错误率等。

smartctl命令怎么用?-图1
(图片来源网络,侵删)

smartctl 的作用就是与硬盘的 SMART 系统通信,读取这些数据,并以人类可读的格式展示出来,通过分析这些数据,你可以:

  • 提前发现硬盘故障:在硬盘彻底崩溃前,通过警告信息(如 Reallocated_Sector_Ct 增长)及时备份数据。
  • 监控硬盘性能:查看温度、读写错误率等,确保硬盘在良好状态下运行。
  • 获取硬盘信息:如型号、固件版本、序列号、容量等。
  • 进行硬盘测试:对硬盘进行短时间或长时间的自我测试。

前提条件:启用 SMART

在使用 smartctl 之前,必须确保硬盘的 SMART 功能是启用的,你可以使用以下命令来检查和启用。

检查当前 SMART 状态:

sudo smartctl -i /dev/sda

如果输出中 SMART support is: Enabled,说明已经启用,如果是 Disabled,则需要手动启用。

smartctl命令怎么用?-图2
(图片来源网络,侵删)

启用 SMART(需要 root 权限):

# 方法一:使用 smartctl 直接启用(推荐)
sudo smartctl --smart=on --offlineauto=on --saveauto=on /dev/sda
# 方法二:通过 hdparm 启用(传统方法)
sudo hdparm -S 126 -B 254 /dev/sda
  • --smart=on:开启 SMART 功能。
  • --offlineauto=on:允许在硬盘不忙时自动进行离线测试。
  • --saveauto=on:保存 SMART 设置,重启后仍然有效。

smartctl 常用命令及示例

smartctl 的基本语法是 smartctl [选项] 设备,设备通常是 /dev/sda, /dev/sdb, /dev/nvme0n1 等。

示例 1:显示硬盘的总体健康状态

这是最常用、最直接的命令,用于快速判断硬盘是否健康。

sudo smartctl -H /dev/sda

输出解读:

smartctl命令怎么用?-图3
(图片来源网络,侵删)
smartctl 7.2 2025-12-05 r5338 [x86_64-linux-5.15.0-78-generic] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Device Model:     Samsung SSD 870 EVO 1TB
Serial Number:    S3Z8NB0K123456
LU WWN Device Id: 5 5cd3 6e03 12345678
Firmware Version: 2B2Q
User Capacity:    1,000,203,000,192 bytes [1.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 4
SATA Version is:  SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Wed Nov 15 10:30:00 2025 CST
SMART support is: Enabled
SMART support is: Available
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
PASSED, failing now would be surprising.
  • 关键信息SMART overall-health self-assessment test result: PASSED,如果这里是 FAILED,说明硬盘已经有严重问题,应立即备份数据并更换。

示例 2:显示硬盘的详细信息

这个命令会显示硬盘的型号、序列号、固件版本、容量等基本信息。

sudo smartctl -i /dev/sda

示例 3:显示 SMART 属性表(最重要的部分)

这是 smartctl 输出中最核心的内容,列出了硬盘的各项关键指标。

sudo smartctl -A /dev/sda

输出解读(部分关键属性):

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   100   100   016    Pre-fail  Always       -       0
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       8750
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       150
194 Temperature_Celsius     0x0022   032   045   000    Old_age   Always       -       32 (Min/Max 24/42)
...

关键字段解释:

  • ID#:属性的唯一标识符,不同厂商的硬盘,相同 ID 的属性含义可能不同,但大部分是通用的。
  • ATTRIBUTE_NAME:属性的名称,如 Reallocated_Sector_Ct (重分配扇区数)。
  • VALUE:当前值,通常是 0-255 之间的整数,越大越好。
  • WORST:记录以来的最差值。
  • THRESH:阈值。VALUE 低于此值,硬盘会被标记为 "Failing"。
  • TYPEPre-fail (预失效) 表示此属性值下降预示着硬盘可能即将故障。Old_age (老化) 表示是正常磨损。
  • RAW_VALUE:原始值,这是最重要的数据,因为它不受厂商标准化影响。
    • ID 5 (Reallocated_Sector_Ct):重分配扇区数,如果这个值大于 0,说明硬盘已经有坏块并被系统替换。任何增长都值得警惕
    • ID 9 (Power_On_Hours):通电时间(小时)。
    • ID 194 (Temperature_Celsius):当前温度,硬盘温度过高会严重影响寿命。
    • ID 200 (Write_Error_Rate):写入错误率。

示例 4:运行硬盘自我测试

你可以让硬盘运行内置的测试程序来检查其健康状况。

# 1. 运行短测试 (耗时约 1-2 分钟)
sudo smartctl -t short /dev/sda
# 2. 运行扩展测试 (耗时约几十分钟到数小时)
sudo smartctl -t long /dev/sda
# 3. 运行 conveyance 测试 (运输测试,约 10 分钟)
sudo smartctl -t conveyance /dev/sda

如何查看测试状态和结果?

测试是异步在硬盘后台进行的,你可以使用以下命令来查看进度:

sudo smartctl -c /dev/sda

测试完成后,使用 -l selftest 查看详细日志:

sudo smartctl -l selftest /dev/sda

示例 5:显示错误日志

如果硬盘出现了问题,可以查看它的错误日志。

sudo smartctl -l error /dev/sda

示例 6:以 JSON 格式输出 (适合脚本)

如果你想在脚本中处理 smartctl 的输出,JSON 格式非常方便。

sudo smartctl -j -A /dev/sda

总结与最佳实践

命令 用途 示例
sudo smartctl -H /dev/sda 快速检查健康状态 PASSEDFAILED
sudo smartctl -i /dev/sda 查看硬盘基本信息 型号、序列号、容量等
sudo smartctl -A /dev/sda 查看详细的 SMART 属性 关注 RAW_VALUE,特别是 Reallocated_Sector_CtTemperature
sudo smartctl -t short /dev/sda 运行短时间自我测试 快速检查
sudo smartctl -l selftest /dev/sda 查看自我测试日志 检查测试是否通过
sudo smartctl -l error /dev/sda 查看硬盘错误日志 诊断问题

最佳实践建议:

  1. 定期检查:可以将 sudo smartctl -H /dev/sda 命令加入到 cron 定时任务中,每周或每月自动检查一次,并通过邮件或日志系统报告结果。
  2. 关注关键属性:重点监控 Reallocated_Sector_Ct, Current_Pending_Sector, Uncorrectable_Error_Cnt, Temperature_Celsius 等属性,任何非零值(尤其是持续增长)都应引起重视。
  3. 保持低温:确保硬盘通风良好,温度过高是 SSD 和 HDD 的大敌。
  4. 备份,备份,再备份smartctl 是预警工具,不是救世主,一旦发现硬盘有故障迹象(SMART 报警或出现坏块),应立即更换硬盘并从备份中恢复数据,不要依赖即将死亡的硬盘。
分享:
扫描分享到社交APP
上一篇
下一篇